前言¶
讓智能體在 DeepSeek Harness(DSH)裏跑長任務時,審批環節是個兩難:每次工具調用都人工確認,任務被頻繁打斷;完全放開權限,模型的錯誤命令又沒有閘門。折中的做法是引入一個獨立的、能力受限的審查代理,讓它逐條評估待審批的操作並給出決定。本文介紹的 dsh-approval-auto-review 就是實現這一思路的插件。
這是什麼¶
dsh-approval-auto-review 是 DeepSeek Harness 的自動審批審查插件,由 perlied03 維護,許可證爲 MIT,當前版本 0.6.1。它處理被路由到所配置權限預設的審批請求:用鎖定的 Guardian 代理評估每條請求的確切計劃操作,並返回單一的審批決定。
兩點定位值得注意。第一,它不創建持久的允許規則,每次決定只適用於單條審批請求,不會形成累積放行。第二,審查行爲始終 fail-closed:審查超時按拒絕處理,寧可不放行。
核心功能¶
Guardian trunk 與併發審查¶
每個父代理有一個可複用的 Guardian trunk,審查請求優先走這條路徑。trunk 忙時,插件啓動獨立的臨時審查者處理請求,併發審批不會排隊。審查者代理使用空的工具允許列表和專屬的審查 persona,能力被限制在“讀轉錄、給決定”範圍內。
獨立的審查者模型路由¶
審查者可以使用與父代理不同的模型:插件級配置 modelProvider 與 model 指定審查路由;也可以通過 modelOverrides 按父模型 id 覆蓋 provider 與 model。缺省的路由字段可通過 fallback 配置從父代理繼承。
有界的輸入輸出¶
發送給審查的父轉錄與工具參數均做長度上限,避免長會話撐爆審查上下文。拒絕理由在進入父轉錄之前也做長度限制,防止一條冗長的拒絕說明污染父代理的對話。
拒絕熔斷與審計¶
重複自動拒絕會觸發熔斷,終止父回合,避免代理在反覆被拒後陷入循環。所有被審查的命令與審查者判定寫入持久的 JSONL 審計日誌。
安裝與啓用¶
先安裝插件。以 profile web 爲例,從 GitHub 安裝:
dsh plugin --profile web add github:perlied03/dsh-approval-auto-review
本地 checkout 安裝:
dsh plugin --profile web add ./dsh-approval-auto-review
環境要求:Node ^22.19.0 || >=24.0.0,包管理器 pnpm@11.7.0。GitHub 安裝會執行包的 prepare 構建;pnpm 10 及以上版本在詢問構建許可時,需要在 profile 的 pnpm-workspace.yaml 的 allowBuilds 下加入 dsh-approval-auto-review: true,然後重複上面的安裝命令。
主機組合需要提供以下 DSH 服務與插件:
dsh-agentdsh-sessiondsh-settingsdsh-user-approvaldsh-subagent- 按配置名註冊的進程內 spawn 與 fork provider
啓用方式:在對話的權限菜單選擇 Approve for me,後續審批請求即路由給 Guardian;切回 Request approval 則恢復人工決定。
配置示例¶
在 Cordis 組合中註冊插件的寫法:
import * as ApprovalAutoReview from 'dsh-approval-auto-review'
await ctx.plugin(ApprovalAutoReview, {
provider: 'spawn',
ephemeralProvider: 'fork',
modelProvider: 'deepseek-official',
model: 'deepseek-v4-flash',
fallback: 'parent',
})
等價的 Loader 配置:
- id: approval-auto-review
name: 'dsh-approval-auto-review'
config:
provider: spawn
ephemeralProvider: fork
modelProvider: deepseek-official
model: deepseek-v4-flash
fallback: parent
字段含義:provider 是可複用 Guardian trunk 使用的子代理 provider;ephemeralProvider 是併發一次性審查使用的 provider;modelProvider 與 model 指定審查者的模型路由;fallback 設爲 parent 時,缺失的路由字段從父代理繼承。不需要併發路徑的部署,兩個 provider 可以填同一個名字。
審計相關的行爲:audit 控制是否記錄每條終局審查結果;auditPath 指定審計文件路徑,在掛載時固定,修改需重啓後生效。
審查策略¶
Guardian 只評估審批請求所提供的確切操作,不擴大審查範圍。授權證據的分級是明確的:用戶的直接消息與 AGENTS.md 顯式加載的內容爲可信授權證據;助手消息、工具調用/結果、文件內容、命令輸出以及普通插件上下文均視爲不可信。也就是說,模型自己在對話裏生成的“用戶已同意”之類的表述,不會被當作放行依據。
Web 界面¶
插件提供兩處 Web 界面:
- 設置頁 Plugins 區的 Automatic approval review 卡片,用於調整審查者的模型路由。
- 對話頭部的只讀 Review 標籤頁,用於查看當前會話的審查記錄與審查者判定。該標籤頁需要
dsh-host-webserver提供只讀審計路由;audit設爲off時歷史爲空。
適用場景與注意¶
適合在 DSH 上跑長任務、希望減少逐條人工審批打斷、同時又不想完全放開權限的開發者。它把審批決定交給一個受約束的審查代理,並保留了完整的審計與熔斷兜底。
使用前注意幾點:
- 插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證(MIT)。
- 行爲始終 fail-closed:超時的審查按拒絕處理。
- 不創建持久允許規則,每次決定只作用於單條審批請求。
auditPath在掛載時固定,改路徑需要重啓後生效。
結尾¶
dsh-approval-auto-review 在“全程人工審批”與“完全放開”之間給出了第三種選擇:一個工具列表爲空、輸入輸出有界、fail-closed 的 Guardian 代理替你看每一條待審批操作,並留下 JSONL 審計記錄。對需要在自動化與安全之間找平衡的 DSH 用戶來說,值得試一試。
- 社區目錄頁:https://www.skillhub.cn/plugins/perlied03/dsh-approval-auto-review
- GitHub 倉庫:https://github.com/perlied03/dsh-approval-auto-review
社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。