前言¶
DeepSeek Harness(dsh)是 DeepSeek AI 開源的 agent harness,目前仍處於開發者預覽階段。它的核心設計是「一切皆插件」:模型、工具、會話、沙箱、UI 都可以在不改框架源碼的前提下掛載或替換。官方倉庫在 deepseek-ai/deepseek-harness。
社區裏已經有獨立站點在收錄這類插件,例如 DeepSeek Harness 插件目錄。需要先說清楚:該目錄是社區站點,與 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。安裝任何第三方插件前,都應該自己覈對源碼和許可證。
用 dsh 跑長任務時,主模型一邊執行一邊自檢,很容易漏掉「和用戶指令矛盾」「原地打轉」「方向已經偏了」這類問題。dsh-advisor 做的事情比較剋制:再掛一個獨立的評審模型,只看主會話記錄,按嚴重度往會話裏塞一條建議。它不批准動作,也不代替主 agent 發命令。
這是什麼¶
dsh-advisor 是社區維護的「模型與提供方」類插件,維護者是 omdsh-dev,許可證 MIT,主要語言 TypeScript。GitHub 倉庫當前版本爲 0.2.1(package.json,2026-08-17),Node 要求爲 ^22.19 || >=24。目錄頁於 2026-08-09 收錄該插件。
倉庫 README 寫明:它把 omp(oh-my-pi)裏的 advisor 子系統,移植成獨立的 dsh 插件組合包。每個會話有一個獨立評審模型,觀察主 transcript,用顯式配置的 provider 與 model 評審每個已完成的 stepped turn,再把按嚴重度排序的建議(nit / concern / blocker)注入回去。advisor 自己的消息會被排除在後續 delta 之外,因此它不會遞歸評審自己。
插件以純掛載方式安裝:bundle 插入、Web 設置頁的 Advisor 卡片、自有 gateway 通道,以及 /advisor 指令。不打 dsh 補丁,也沒有 postinstall 改宿主。兩個前端都可以用:
- web profile:設置 → 插件配置 → Advisor 卡片
- dsh-tui 終端 profile:
/advisor與/advisor config;TUI 的/settings裏編輯 Advisor 分節需要 dsh-tui ≥ v0.8.0
README 也強調了能力邊界:僅作建議。advisor 從不批准或否決主 agent 的動作,也絕不會像主 agent 那樣發出命令。行爲異常的評審者會受到 emission guard、immuneTurns 冷卻和 failure policy 約束,避免卡住或污染主循環。當前 MVP 有意沒有做到與 omp advisor 完全對等,下文會單獨列出已公開的差距。
核心功能¶
根據倉庫 README 與 docs/configuration.md,已經覈實的能力如下。
1、每個會話一個獨立評審者
評審走獨立的模型調用,只觀察主 transcript,並在每個 stepped 主 turn 結束後評審增量。advisor 消息不會被渲染進後續 advisor delta,因此它讀不到自己剛寫的建議。
2、三級嚴重度,每次評審最多一條 note
送達的消息帶 [advisor:{severity}] 前綴,內容是自我描述的 advisory 文本,例如:
[advisor:concern] extract the helper into a module and unit-test it
三個等級的含義和送達方式不同:
nit:輕微的樣式、清晰度或質量建議。經非喚醒的agent.inject送達,在下一個 pre-step 邊界消費。concern:繼續之前值得權衡的重大風險,或明顯更優的方向。經喚醒的agent.steer送達,並受immuneTurns冷卻約束。blocker:繼續下去明顯是在浪費工作,例如與顯式用戶指令矛盾、原地打轉、根本性不可行。同樣經agent.steer送達。
immuneTurns 默認是 3:一條 concern / blocker 真正 steer 過之後,接下來若干個已完成的主 turn 必須走完,另一條打斷性 note 才能再次 steer;窗口內的打斷性 note 會降級爲 inject。
3、顯式模型門禁
enabled 默認是 false。打開之後,provider 與 model 都是必填。只寫 enabled: true、卻缺其中一個時,插件不會發起任何模型調用,狀態會報告帶原因的禁用(disabled-with-reason)。未知配置鍵會被拒絕。
4、零工具、失敗不卡主循環
評審者只是一次獨立的模型調用,沒有 advisor tools,除了 advisory 消息之外不能對會話做別的事。失敗或額度耗盡時,它只丟棄自己有界的 backlog,不會把主循環停住。額度耗盡(quota_exhausted)沒有自動恢復定時器,需要 /advisor on 手動恢復;永久性模型錯誤(例如憑據無效)會把該會話的 advisor 標爲 halted,再用 /advisor on 重建。
5、會話級開關不改持久化配置
/advisor on|off|toggle 只翻轉當前會話的 override,不會改磁盤上的配置。持久化配置走 Settings 卡片、TUI /settings 或 $DSH_HOME/settings.yaml。
安裝與啓用¶
目錄詳情頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行即可:
dsh plugin add github:omdsh-dev/dsh-advisor
如需可復現安裝,目錄頁建議固定 commit 哈希:
dsh plugin add github:omdsh-dev/dsh-advisor#2ee9844dd1920d024dbcc85c2fa4dc96a45ce698
上面的哈希對應倉庫 main 在 2026-08-17 的提交(發佈說明爲 v0.2.1)。使用前請再到 GitHub 覈對是否仍是你想鎖定的版本。
倉庫 README 另外給出了按 profile 安裝的寫法,適合已經分好 web / 終端前端的環境:
dsh plugin --profile web add dsh-advisor # web profile(設置 → Advisor 卡片)
dsh plugin --profile dsh-tui add dsh-advisor # dsh-tui 終端 profile
registry 安裝可以釘版本,例如 dsh-advisor@0.2.1。安裝文檔說明:registry 拉取的是已發佈 tarball,自帶 lib/ 與 cordis.patch.yml,目標機不必再構建;運行時依賴聲明爲 peerDependencies,由當前 dsh 安裝解析。
安裝完成後,可用下面的命令確認插件層已經出現:
dsh --profile web --dump-config
輸出裏應能看到帶 advisor 配置行的 # == dsh-advisor 層。web profile 安裝後需要重啓 dsh 會話;啓動後,Web 設置頁的「插件配置」會渲染 Advisor 卡片。
卸載對應爲:
dsh plugin --profile web remove dsh-advisor
dsh --profile web --dump-config
dsh-tui profile 把上面的 --profile web 換成 --profile dsh-tui 即可。卸載後同樣需要重啓會話。
配置與典型用法¶
advisor 默認關閉。要真正跑起來,需要在全局設置文檔(默認 $DSH_HOME/settings.yaml,跨 profile 共享)裏寫 advisor: 分節,並顯式打開開關。README 中的示例如下:
advisor:
enabled: true # 總開關(默認 false)——需顯式打開後生效
provider: deepseek-official # enabled: true 時必填
model: deepseek-v4-flash # enabled: true 時必填
systemPrompt: "" # 可選;空字符串表示使用內置評審 prompt
immuneTurns: 3 # 整數 ≥ 0,默認 3
maxDeltaMessages: 60 # 整數 ≥ 0,默認 60;0 表示不截斷
provider 與 model 必須改成你當前 dsh 環境裏已經配置好的供應商和模型。Web 卡片的下拉框只會列出系統內已配置的 provider 及其模型;上面 YAML 裏的 deepseek-official / deepseek-v4-flash 只是文檔示例,不是所有環境都自帶。
同一組鍵有三條編輯路徑,後一層覆蓋前一層:
- 插件行 config:profile 補丁層(例如
$DSH_HOME/profiles/web/cordis.patch.yml)裏id: advisor那一行,這是合成的 base。 - Web「插件配置」頁的 Advisor 卡片,或 dsh-tui ≥ v0.8.0 的
/settings→ Advisor 分節。這兩處都寫入同一個 user layer($DSH_HOME/settings.yaml),保存後對新會話立即生效,不必重啓。TUI 裏不能編輯systemPrompt(單行控件會截斷多行文本),需要改 prompt 時走 Web 卡片或直接改 yaml。 /advisor指令:只改當前會話,不寫回磁盤。
Web 卡片在 enabled: true 且必填字段爲空時會阻止保存。TUI /settings 沒有這項跨字段校驗,有可能寫出「已啓用但 provider/model 爲空」的配置;運行時門禁仍會把它解析成 disabled-with-reason,不會發起模型調用。用 /advisor status 或 /advisor config 可以看到原因。
安裝並啓用後,在已經組合 command registry 的會話裏可以用:
/advisor 切換當前會話的 advisor
/advisor on 爲當前會話啓用
/advisor off 爲當前會話關閉
/advisor status 查看狀態、模型、運行狀態、待處理數量、最近活動
在 dsh-tui 裏還有隻讀的 /advisor config,用來回讀合成後的配置,並提示真正的寫路徑。這些指令會出現在 TUI 的 / 菜單裏,並帶子命令補全(需要隨 dsh-tui 組合包提供的 dsh-tui-command-trees 行)。
適用場景與注意事項¶
比較適合這些情況:
- 長會話編碼或重構,主 agent 容易偏離用戶原話,需要另一側模型在旁提醒。
- 希望審查意見進入主 transcript,而不是另開一個互不通信的評審窗口。
- 同時使用 Web UI 和 dsh-tui,希望同一套
advisor:配置跨 profile 共享。
不適合、或目前做不到的事情,以倉庫「限制與路線圖」爲準,不要按完整 omp advisor 去預期:
- 每個會話只有一個 advisor,沒有並行評審組,也沒有 WATCHDOG 式文件發現。
- 評審者沒有工具,不能自己讀文件、跑測試來覈驗主張。
- 沒有會話內 advisor 面板;建議只以帶標籤的注入消息出現。Web Advisor 卡片是配置面,不是會話視圖。
- 沒有 transcript 持久化,也沒有成本統計。
maxDeltaMessages會截斷長會話窗口,compaction 之後早期上下文可能丟失。- 落後很多的 advisor 不會追趕等待主循環,積壓有界且會被丟棄,note 有可能在下一輪主 turn 已經開始之後纔到達。
安全方面有兩點必須單獨說。
第一,插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查 源代碼倉庫 和 MIT 許可證;如需可復現安裝,請固定 commit 哈希或 registry 版本號。
第二,README 寫明:delta 內容目前沒有密鑰混淆,transcript 裏出現的 secrets 可能到達 advisor 模型;請只配置你信任的評審模型。另外,行爲異常的 note 可能攜帶指令性文本,插件不會隔離不安全輸出,JSON 幀校驗和 advisory-only 框架是目前僅有的緩解手段,note 會原樣送達主 transcript。
小結¶
dsh-advisor 給 DeepSeek Harness 加的不是第二個執行者,而是一個默認關閉、必須顯式指定模型的旁觀評審者。它按 nit / concern / blocker 往會話裏注入建議,失敗時丟掉自己的積壓,不打斷主循環。當前仍是 MVP:沒有工具、沒有會話內面板、也沒有和 omp 的完整對等。若你已經在用 dsh 跑長任務,又希望多一雙只說話、不下手的眼睛,可以按目錄頁命令安裝後再打開配置。
- 目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-advisor/
- GitHub:https://github.com/omdsh-dev/dsh-advisor
- DeepSeek Harness 官方倉庫:https://github.com/deepseek-ai/deepseek-harness