前言¶
在 DSH(DeepSeek Harness)裏跑智能體時,主模型往往一邊推理一邊執行工具調用。對話越長,越容易出現遺漏邊界條件、忽略安全約束、或在多步操作裏偏離目標的情況。常見做法是事後人工回看 transcript,或在 system prompt 裏堆疊審查規則——前者滯後,後者會擠佔主模型的上下文窗口,且難以按輪次給出結構化反饋。
dsh-advisor 走另一條路:爲每個會話掛一個獨立的審查模型,被動觀察主對話 transcript,在每輪主模型 stepped turn 結束後發起一次獨立推理,把按嚴重級別分級的建議注入會話。審查內容不會回灌給審查模型自身,也不會替主模型做批准或拒絕。
這是什麼¶
dsh-advisor 是 omdsh-dev 維護的 DSH 插件,將 omp 生態裏的 advisor 子系統移植爲獨立插件包。它在 npm 上以 dsh-advisor 發佈,當前版本 v0.2.4,MIT 許可證,GitHub 倉庫約 13 stars。
插件定位是「純建議(Advisory only)」:審查模型只輸出自描述的 advisory 內容,不會對主智能體的動作做批准或拒絕,也不會以主智能體身份下發命令。誤行爲的審查輸出受 emission guard、immuneTurns 冷卻和 failure policy 約束,避免阻塞或污染主循環。
核心功能¶
每會話獨立審查模型¶
每個會話各自擁有一個審查模型實例。它觀察主 transcript,對主模型的每個 stepped turn 發起審查調用;審查消息會從後續 delta 中排除,審查模型不會讀到自己的歷史建議。
按嚴重級別分級的建議¶
審查輸出按嚴重級別標註,README 中列出的級別包括 nit、concern、blocker,並以 inject/steer 語義寫回會話,供主模型或開發者參考。
雙前端支持¶
同一插件包同時適配 DSH web 前端和 dsh-tui 終端前端:
- web:Settings → 插件配置 → Advisor card
- dsh-tui:
/advisor命令族,以及/settings裏的 Advisor 配置段(dsh-tui ≥ v0.8.0)
多層配置與運行時門控¶
配置項在三個層面可組合(後層覆蓋前層):profile patch 層、$DSH_HOME/settings.yaml 全局設置、會話級 /advisor on|off|toggle 覆蓋。啓用時 provider 和 model 爲必填;缺任一項時審查模型不會發起調用,狀態會顯示 disabled-with-reason。
安裝與啓用¶
下面以官方 README 中的安裝命令爲準。web 與 dsh-tui 使用同一插件包,僅 --profile 不同:
dsh plugin --profile web add dsh-advisor # web profile
dsh plugin --profile dsh-tui add dsh-advisor # dsh-tui terminal profile
需要固定版本時,在包名後加 @<version>,例如 dsh-advisor@0.2.4。registry 安裝會拉取已構建的 tarball(含 lib/ 與 cordis.patch.yml),目標機器無需本地編譯。
安裝後,在全局 DSH 設置文件(默認 $DSH_HOME/settings.yaml)加入 advisor: 段。審查功能默認關閉,需顯式啓用:
advisor:
enabled: true # 主開關,默認 false
provider: deepseek-official # 啓用時必填
model: deepseek-v4-flash # 啓用時必填
systemPrompt: "" # 可選,空字符串使用內置審查 prompt
immuneTurns: 3 # 投遞建議後的冷卻輪數,默認 3
maxDeltaMessages: 60 # delta 窗口上限,0 表示不限制,默認 60
也可通過 web Settings 的 Advisor card 或 dsh-tui /settings 編輯上述字段;web card 會在必填項爲空時阻止保存,TUI 則允許保存但運行時門控會拒絕啓動模型調用。
驗證安裝是否寫入 profile patch:
dsh --profile web --dump-config # 輸出中應出現 "# == dsh-advisor" 層
典型用法¶
會話內控制¶
安裝並配置後,在支持命令註冊的會話裏使用 /advisor:
/advisor # 切換本會話審查開關
/advisor on # 本會話啓用
/advisor off # 本會話禁用
/advisor status # 查看狀態、模型、運行時信息、待處理數、最近活動
/advisor on|off|toggle 僅影響當前會話,不修改持久化配置。若全局配置缺少 provider/model,/advisor on 不會發起模型調用,/advisor status 會顯示門控原因。配額耗盡(quota_exhausted)或模型永久性錯誤後,可用 /advisor on 手動恢復。
在 dsh-tui profile 下,/advisor config 以只讀方式回顯組合後的配置,並提示真實寫入路徑(TUI /settings、profile patch、settings.yaml)。
配置優先級示例¶
- 在
settings.yaml裏設置enabled: true和provider/model,作爲全局默認。 - 某次調試會話執行
/advisor off,僅該會話關閉審查,不影響其他會話。 - 調試結束後
/advisor on恢復,或開新會話沿用全局配置。
適用場景與注意¶
適合誰
- 需要在長鏈路 agent 任務裏做輪次級代碼/方案審查,又不想把審查邏輯全塞進主 system prompt 的 DSH 用戶。
- 希望用第二個模型(可與主模型不同 provider/model)做旁路觀察,並按 nit/concern/blocker 分級反饋的場景。
- 同時使用 DSH web 與 dsh-tui,需要在兩個前端用同一套 advisor 配置的團隊。
使用前注意
- 插件以當前 dsh 進程的權限運行,安裝前應閱讀 源碼 與 MIT 許可證,確認審查模型所用 provider 的憑據與配額策略。
- 審查模型每次 stepped turn 都會額外發起一次 LLM 調用,會增加延遲與 token 成本;
immuneTurns和maxDeltaMessages可用於控制頻率與上下文窗口。 - 依賴 DSH 0.1.1-rc.2 及對應 peer 包;Node 要求
^22.19 || >=24。web Advisor card 需要當前 dsh web build 聲明settings.plugin.itemcard slot 並加載聲明dsh.client的包。 - SkillHub(skillhub.cn)是社區插件目錄,與 DeepSeek / 幻方無官方從屬關係;插件信息以 GitHub README 與 npm 發佈頁爲準。
結尾¶
dsh-advisor 把「每輪旁路審查」做成可插拔的 DSH 插件:獨立模型、分級建議、會話級開關,且明確 bounded 爲 advisory-only。若你已在用 DSH 跑 agent,值得把它當作第二層模型審查管線來評估。