dsh-rule-guard:在副作用動作執行前按規則與目標複覈

前言

在 DeepSeek Harness(DSH)裏跑長任務時,Agent 常會改到未點名的文件、順手重構,或把試探性話術當成執行指令。Harness 本身不會替你在每次寫盤、跑 shell 前做「是否仍在當前目標內」的獨立判斷。社區插件 dsh-rule-guard(維護者 yunling-bionic,分類 admin-security)掛在 tools/pre-execute 鉤子上:對有副作用的工具調用先做一次 fail-closed 複覈,不在目標內則拒絕執行,並把違反點與修正建議回給模型。下面介紹其定位、送審範圍、安裝方式與規則來源。

這是什麼

dsh-rule-guard 是 DSH 的護欄插件(當前版本 0.4.3,MIT 許可,依賴 DeepSeek Harness ≥ 0.2.x)。判據只有一條:這一動作是否在當前目標之內;是否寫文件、技術風險、代碼風格差異均不作爲單獨判據。複覈輸入爲項目規則、本會話用戶最近一條指令,以及待執行動作(工具名、參數與腳本正文開頭 4 KiB)。插件不含硬編碼項目規則,規則由工作區與插件數據目錄中的 Markdown 文件提供;中英雙語文檔見 GitHub 倉庫。

核心功能

Fail-closed 判決

情形 處理
明確不在目標內 拒絕
複覈失敗(模型調用異常) 拒絕
複覈輸出不可解析 拒絕
多路判決衝突 拒絕

本版本無 fail-open 放行分支,亦無豁免開關;表述模糊的指令會被直接拒絕,這是設計取捨。

送審與免審

送審(有副作用的動作)包括:文件寫入與編輯(write / edit / str_replace_editor 及腳本內落盤);shell 非只讀命令(重定向、裝包、起服務等);網絡請求、子代理、定時任務、桌面與 office 落盤;未知工具默認送審;讀取工作區外路徑。

免審:工作區內純讀取;只讀 shell 白名單(如 Get-Content、git log)。

工作原理概要

有副作用的動作 / 未知工具 / 讀取工作區外
        │
        ▼
   rule-guard 複覈(temperature=0)
        │
   ┌────┴─────┐
   ▼          ▼
 allow      deny
   │          │
 正常執行   返回錯誤(違反的目標 + 修正建議)

拒絕判決按會話緩存 10 分鐘;僅複用「拒絕」,不緩存放行。

規則來源(0.4.1 起三者按順序拼接)

  1. <工作區>/AGENTS.md
  2. <工作區>/.dsh/rules.md(與①二選一即可)
  3. 插件數據目錄 RULES.md(首次安裝生成,用戶改過則不覆蓋)

未提供規則文件時,僅按當前目標判斷。示例見倉庫內 examples/AGENTS.md。

數據目錄(與 dshHomePath('rule-guard') 等價):

  • Linux / macOS:~/.dsh/rule-guard/
  • Windows:%APPDATA%\dsh-desktop\harness\rule-guard\

其中含 RULES.md、INSTALL-NOTICE.txt、rule-guard.log 等。首次加載時客戶端橫幅提示可關閉(只彈一次);升級插件不會覆蓋用戶對 RULES.md 的改動。

安裝與啓用

官方安裝命令(來自 README):

dsh plugin add dsh-rule-guard

從本地源碼目錄安裝:

dsh plugin add ./dsh-rule-guard

安裝前請自行查看 源碼與許可證;插件以當前 DSH 進程權限運行,屬於軟約束,不應視爲安全邊界。已在 DSH Desktop 0.11.1(Harness 0.2.1-rc.2)實測加載。Node.js 要求 ≥ 20。

社區目錄頁(與 DeepSeek / 幻方無官方從屬關係):https://www.skillhub.cn/plugins/yunling-bionic/dsh-rule-guard

典型用法

指令裏寫清「做什麼、在哪裏、爲什麼」

允許示例:

把 E:\SK\視覺\vision_mem_raw.py 的 --win-sec 默認值改爲 60,
因爲瞬時層窗口按 60 秒計算。

拒絕示例:

繼續 / 優化一下 / 看着辦

臨時放寬授權範圍(無配置開關,靠指令說明)

本輪允許修改 視覺/ 目錄下的任何文件,無需逐條確認。
本輪僅執行只讀操作,無需複覈。

維護項目規則

在工作區根目錄維護 AGENTS.md 或 .dsh/rules.md,例如:

# 項目規則

- 只修改用戶明確要求的文件,不做順手重構
- 不改動 dist/、build/ 等產物目錄
- 依賴變更必須先說明理由
- 提交前必須通過 npm test

也可直接讓 Agent 修改規則文件,例如:「把”提交前必須通過 npm test”加進 AGENTS.md 的項目規則裏」。

被拒絕時會話中會顯示原因;詳細記錄見數據目錄下 rule-guard.log,event=deny 含 reason、fix 等 JSON 字段。

適用場景與注意

適合:希望 Agent 改文件、跑命令前多一道與項目規則、用戶最近指令對齊的檢查;團隊把約束寫進版本庫裏的 AGENTS.md。

成本與限制(README 說明):每次送審約增加 2–5 秒延遲與少量 token;複覈用當前會話模型;模糊指令會被拒;模型可能被措辭誤導。

注意:安裝前閱讀源碼與 MIT 許可證;不要指望插件替代權限隔離或審計體系。

結尾

dsh-rule-guard 在副作用動作落盤前插入模型複覈,規則來自 AGENTS.md、.dsh/rules.md 與數據目錄 RULES.md,判決 fail-closed。安裝使用 dsh plugin add dsh-rule-guard 即可接入 Harness 0.2.x 生態。

  • 目錄頁:https://www.skillhub.cn/plugins/yunling-bionic/dsh-rule-guard
  • GitHub:https://github.com/yunling-bionic/dsh-rule-guard
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜