DeepSeek Harness(dsh)外掛疑難排解:安裝錯誤、cordis.patch.yml 衝突與 Profile 設定無效修復指南(2026)

DeepSeek Harness(dsh)外掛安裝與設定常見問題排錯手冊:pnpm workspace allowlist 錯誤、dsh bundle 格式問題、cordis.patch.yml 衝突、Profile 設定無效、外掛裝了卻沒載入,逐項說明原因與修復指令。

最近更新: 2026-08-26

何時使用本指南

在「找到外掛」與「外掛正常運作」之間出問題時使用本頁:dsh plugin add 失敗、monorepo 裡奇怪的 pnpm-workspace allowlist 報錯、cordis.patch.yml 改了沒反應、Profile 載入了錯誤的外掛組合。每個小節都依同一結構展開——症狀原因修復指令

還沒走到安裝步驟?先讀安全安裝外掛指南;不確定自己在改哪一層設定?先看設定教學

動手之前先記住一條鐵律:每次修改設定後都要重新啟動 dsh。外掛樹在啟動時由 Cordis 容器組裝,「什麼都沒發生」的案例裡有一半只是改了設定忘了重新啟動。

一、安裝時提示找不到外掛(Plugin not found)

症狀dsh plugin add dsh-some-tool 報解析錯誤,或安裝成功但外掛始終沒有出現。

原因:CLI 依精確套件名稱從 npm registry 解析。常見原因:套件名稱拼寫錯誤、少了 @scope/ 前綴、外掛只透過 GitHub 發行(npm 上沒有項目)、或 --profile <name> 與之後啟動的 Profile 不一致——項目加進了你從未啟用的 Profile。

修復步驟

  1. 先用 npm view dsh-some-tool 核對套件的確切名稱。外掛的詳情頁與倉庫 README 會給出可用的安裝指令——社群外掛的安裝方式由外掛自己維護。
  2. 外掛只在 GitHub 發行時,用原始碼位址安裝並鎖定分支:dsh plugin add github:owner/repo#main
  3. 讓參數與啟動方式一致:用 dsh plugin --profile web add <package> 安裝的,就用 dsh --profile web 啟動,不要直接執行 dsh
  4. 本機開發時直接連結目錄:dsh plugin add ./path/to/my-dsh-plugin

二、安裝卡住或失敗:pnpm workspace allowlist

症狀:在 pnpm monorepo 中安裝外掛時卡住,或報 pnpm-workspace allowlistmodule not found、ESM & CJS 解析錯誤——尤其是從 git 或本機建置安裝時。

原因:pnpm 嚴格限制依賴邊界。從 GitHub 安裝的外掛實際上進入了工作區,如果套件沒有在邊界內宣告,pnpm 不會連結它,執行時就無法解析外掛或其依賴。

修復步驟

  1. 把套件宣告進邊界:在根目錄 package.json 的 dependencies(或 pnpm-workspace.yaml 的允許清單/目錄)中加入該外掛,然後在工作區根目錄執行 pnpm install
  2. 重新安裝並重新啟動:dsh plugin add <package>,再啟動 dsh 讓重建後的外掛樹生效。
  3. 有 npm 發行版時優先使用發行版:發行套件自帶依賴,天然避開工作區邊界問題。
  4. 確認執行環境:node -v 應輸出 20.0.0 及以上。

三、cordis.patch.yml 衝突(覆蓋順序問題)

症狀:兩個外掛功能重疊——兩個側邊欄、兩個 OCR 引擎、同一個服務的兩套實作——其中一個的設定被靜默忽略;dsh 可能提示 Profile patch collision / Override order issue

原因:patch 是覆蓋層,疊加在 bundle 與 profile 之上,後寫的項目勝出。當兩個項目註冊同一服務或同一 UI 面板時,宣告順序決定結果。YAML 裡重複的鍵或縮排錯誤,也可能悄悄改寫項目。

修復步驟

  1. 開啟你實際使用的檔案:cat ~/.dsh/profiles/<name>/cordis.patch.yml,工作區內則是 <專案根>/.dsh/cordis.patch.yml
  2. 調整順序:把希望生效的外掛移到 plugins: 列表末尾——後面的項目覆蓋前面的。
  3. 或保留兩者、解除衝突:把其中一個項目的 enabled 設為 false
  4. 最乾淨的長期方案:把衝突外掛拆進不同 Profile,用 dsh --profile <name> 分別啟動。
  5. 重新啟動前先驗證 YAML——一次縮排錯誤就會改變項目的含義:yq eval . cordis.patch.yml

四、dsh bundle 格式錯誤

症狀:dsh 能啟動,但外掛組合與文件描述完全不同;或從別處複製來的設定檔不斷報衝突、載入失敗。

原因:三個設定層各有分工:bundle 是隨 dsh 發行的官方外掛集合,profile 是你自訂的「bundle + 外掛」組合,patch 只針對單一外掛項目做外科手術式覆蓋。如果 cordis.patch.yml 把整套 bundle 重新宣告了一遍——幾十條外掛外加本應屬於 profile 層的設定——格式就混了,這些覆蓋項目開始與 bundle 自帶內容互相衝突。

修復步驟

  1. 讓 patch 保持精簡——每個外掛一個項目,只有 enabledoptions
# ~/.dsh/profiles/default/cordis.patch.yml
plugins:
  dsh-vision-toolkit:
    enabled: true
    options:
      ocrEngine: 'default'
  1. 想一次啟用整套外掛?那是 profile 層的職責:在 profile 裡設定組合,而不是把每條外掛都貼進 patch。
  2. 刪掉重複項目、儲存並重新啟動 dsh。此時外掛的工具/面板應正常載入,不再印出衝突訊息。

五、Profile 設定無效

症狀:改了 cordis.patch.yml,重新啟動後沒有任何變化;或為某個 Profile 安裝的外掛無處可尋。

原因:三選一的經典失誤:改錯檔案(設定檔有兩處,且專案級覆蓋全域級)、啟動時用的 Profile 名稱與修改的目錄不一致、或根本沒重新啟動。

修復步驟

  1. 先看兩處檔案是否都存在:ls ~/.dsh/profiles/*/cordis.patch.yml 2>/dev/null,以及專案根目錄下 ls .dsh/cordis.patch.yml 2>/dev/null
  2. 記住優先權:兩者都存在時 <專案根>/.dsh/cordis.patch.yml 覆蓋 ~/.dsh/profiles/<name>/cordis.patch.yml
  3. 讓參數與目錄一致:改了 ~/.dsh/profiles/web/cordis.patch.yml,就用 dsh --profile web 啟動——不是 dsh,也不是 dsh --profile headless
  4. 重新啟動驗證:dsh --profile web,檢查外掛的工具或面板是否出現。還是沒有?看下一節。

六、外掛裝上了卻載入不了(failed to register)

症狀:安裝成功、設定看起來沒問題,但啟動時 dsh 報 Plugin failed to register / Lifecycle timeout——或外掛無聲無息地沒載入。

原因:通常是執行環境太舊(Node.js 低於 20)、依賴缺失(git 安裝需要自己建置)、宣告順序與別的外掛衝突,或項目被留成了 enabled: false。還有一個相關的失敗模式是沙箱:dsh 預設 read-only 執行,需要讀寫磁碟或存取網路的外掛可能在載入時就被攔下,報 Permission denied / Sandbox security policy violation

修復步驟

  1. 檢查執行環境:node -v——升級到 20.0.0 及以上(推薦 Node 22 LTS)。
  2. 原始碼安裝需要建置:進入外掛目錄執行 pnpm install && pnpm build,然後重新啟動。
  3. 乾淨重裝:dsh plugin remove <package>,確認 cordis.patch.yml 中的項目,再 dsh plugin add <package>
  4. 確認項目處於啟用狀態:dsh plugin add 會寫入 enabled: true;如果手改過 YAML,檢查它還在不在。
  5. 如果報錯與沙箱有關且外掛可信任,啟動時放行:dsh --sandbox workspace-write(詳見安全沙箱指南)。
  6. 透過 dsh-market Web UI 安裝的?去 Settings → Plugin Market 看外掛狀態——後端會套用設定並熱載入,失敗狀態會顯示在那裡。

還是沒解決?

  • 安全安裝外掛指南——安裝方式、Profile 與 CLI 速查
  • 設定教學——bundle、profile、patch:你改的到底是哪一層?
  • 提交外掛——如果外掛 README 描述的行為與你的實際情況不符,去它的倉庫開 issue,附上你的 dsh --profile 指令和完整報錯,維護者解決得最快;若是你維護的外掛,修正 README 後把它提交進目錄。

DSH Plugins 是獨立的 DeepSeek Harness 外掛市集,與 DeepSeek 官方無關,也不代表官方背書。第三方外掛未經安全稽核,安裝前請審查原始碼。

每週取得最新的 DeepSeek Harness 外掛,絕不濫發。