前言¶
DeepSeek Harness (DSH) 的核心設計理念是「一切皆插件」。在實際開發和使用中,Agent 往往容易在輸出承諾上誇大其詞,或在工具調用時執行危險操作。dsh-agent-governor 是一個安裝在 DSH 上的自定義插件,它通過增加兩層可獨立開關的攔截層,降低 Agent 的錯誤率。
插件定位¶
- 名稱:dsh-agent-governor
- 倉庫:https://github.com/kxdyh/dsh-agent-governor
- 作者:kxdyh
- 類別:工作流
- 許可證:MIT
核心功能¶
該插件包含兩個獨立的攔截層:
- DOL 層(通信語義治理):管理 Agent「說什麼」。將道義規則(許可/禁止/義務/豁免)注入系統提示,並審計可見輸出。對於沒有證據的完成性斷言、憑據外泄、絕對化承諾進行標記,並要求模型在下一步進行自我糾正。
- Sentinel 層(工具執行治理):管理 Agent「做什麼」。在工具調用執行前校驗參數。對於破壞性命令和無依據的數值參數進行攔截,並將結構化的重試反饋交還給模型。
安裝與啓用¶
插件是一個聲明瞭 bundle 的 npm 包,使用 DSH 自帶的安裝器即可安裝。
# 使用本地絕對路徑安裝
dsh plugin add /absolute/path/to/dsh-agent-governor
安裝後,插件會寫入當前 profile 的 bundle 列表並立即生效。客戶端部分需要刷新頁面(F5)以加載新的頭部控件。注意:改動宿主規則(index.js)後必須重啓應用才生效。
使用方式¶
插件的開關和統計信息位於會話標題欄右側。
控件說明¶
- 盾牌圖標:收納兩個攔截層的開關。
- 狀態指示:灰=全關,橙=只開一層,綠=兩層都開。攔截髮生時圖標會短暫脈衝。
- 攔截總數:自本次啓動以來的攔截總數(Sentinel 攔截 + DOL 標記)。
- 面板交互:點擊盾牌圖標展開面板(帶縮放、淡入、上浮動畫)。點擊面板外或按 Esc 收起。
- 影子模式:該層只記錄、不攔截,用於在正式啓用前校準規則。
- 統計行:顯示該層真實計數(如 Sentinel 的檢查/攔截/證據條數;DOL 的審計/標記/糾正)。
- 清零統計:只清計數,不改變開關和證據緩存。
刪除防護¶
在 Sentinel 層的詳情中,刪除防護有三個強度檔位:
* 關注:只記錄,不攔截。命中的記錄帶影子標記。
* 攔截:攔截未被點名、也不是本會話自己創建的遞歸強制刪除(如 rm -rf)。單文件刪除不受限。
* 嚴格:連單文件刪除也要先有點名或屬於自己創建。保留對 tmp/cache 等臨時目錄的豁免。
日誌與狀態¶
- 攔截記錄:點擊盾牌右側的賬本圖標查看。每行包含時間、層標籤、規則名、步驟。支持篩選(全部/工具攔截/輸出標記),最多保留 80 條。日誌文件位於
<dsh-home>/storages/agent-governor-log.json。 - 狀態持久化:開關狀態保存在
<dsh-home>/storages/agent-governor.json。
規則詳解¶
Sentinel 層(工具調用執行前)¶
sentinel.destructive-delete(禁止):攔截rm -rf /、mkfs、diskpart等破壞性刪除。sentinel.system-control(禁止):攔截關機、重啓、註銷本機等系統控制命令。sentinel.history-rewrite(禁止):攔截git push --force、git reset --hard等歷史重寫操作。sentinel.data-destroy(禁止):攔截DROP TABLE、TRUNCATE TABLE等數據銷燬操作。sentinel.pipe-to-shell(禁止):攔截curl ... | bash、iwr ... | iex等管道到 Shell 的命令。sentinel.unrequested-delete(義務):根據強度控制刪除操作的權限。sentinel.evidence-gap(義務):攔截參數中未出現在本會話已驗證證據中的具體數值(≥100 且非整十)。sentinel.repeat-loop(義務):同名同參數的成功調用超過閾值後拒絕(默認閾值 0 = 關閉)。
DOL 層(消息/輸出側)¶
dol.credential-leak(禁止):攔截輸出中的私鑰、sk-key、AWS/GitHub/Slack/Google 令牌、JWT。dol.completion-claim(義務):攔截本回合沒有任何成功工具結果卻聲稱”已完成/已通過/已修復”的輸出。dol.absolute-claim(禁止):攔截 “100%/絕對/保證” 等無法兌現的表述。dol.number-grounding(義務):攔截輸出中缺乏證據來源的具體數值。
配置與豁免¶
可以在 profile 的補丁層中配置規則覆蓋和豁免:
- id: agent-governor
name: '@kxdyh/dsh-agent-governor'
config:
dol: true
sentinel: true
repeatLimit: 5
ruleOverrides:
dol.absolute-claim: true
sentinel.evidence-gap: false
dispensations: ['sentinel.history-rewrite']
注意事項¶
- 攔截範圍:插件不攔截每一個 LLM 請求。請求側僅將治理規則追加進系統提示。真正能硬阻斷的是工具調用(
tools/pre-execute)和Agent 步驟(agent/pre-step)。 - 輸出側機制:輸出側的治理主要依靠“下一步糾正”,而非硬阻斷。
- 依賴重啓:修改宿主規則(
index.js)後必須重啓應用,否則配置不生效。 - 生態歸屬:該插件爲社區維護項目,與 DeepSeek / 幻方無官方從屬關係。