前言¶
在 DeepSeek Harness(DSH)裏跑 Agent 時,工具調用會落到本機 shell、文件寫入和各類 Host 工具上。任務一長、人不在電腦前,事後很難回答兩件事:Agent 到底調用了什麼,有沒有碰到不該碰的路徑或命令。社區裏已有記憶釘、任務板、側邊欄等插件,各自管偏好、調度或界面;工具管線的審計與按規則攔截,需要單獨掛一層 guard。下面介紹維護者 yanliao66 的 dsh-sentinel(工具哨兵),分類爲 admin-security,倉庫 yanliao66/dsh-sentinel,目錄頁見 SkillHub 插件頁。DSH 生態是「一切皆插件」;SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。
這是什麼¶
dsh-sentinel 是掛在 Host 工具管線上的插件:在調用真正執行前評估「這次要做什麼」,結果寫入本地審計日誌,並在輸入框工具行用盾牌徽標與展開面板展示。在攔截模式下,災難性 shell 與受保護路徑寫入會被拒絕,模型收到可解釋的拒絕理由。它不存筆記、不調度任務、不統計 token,也不與同類插件共用數據文件。
三種模式¶
模式屬於用戶權限:只能在面板裏切換,或改 settings.json;Agent 側的 sentinel 工具不能改模式。切換即時生效,隻影響之後的調用。
| 模式 | 行爲 | 適用 |
|---|---|---|
audit 審計 |
全部記錄,從不阻止 | 先觀察 Agent 工作方式,收集自己的規則 |
enforce 攔截(默認) |
阻止高危命中 | 日常默認值 |
strict 嚴格 |
在高危之外再阻止中危命中 | 無人值守長任務 |
enforce 起會攔例如根目錄刪除、--no-preserve-root、fork bomb、磁盤格式化、關機重啓、curl \| sh 類遠程直執行、關閉安全防護、寫入 .ssh / .aws / ~/.dsh/credentials、.git/ 內部及插件自身數據目錄等。strict 額外攔遞歸刪除、git reset --hard、強制推送、提權、強殺進程、DROP TABLE 等。規則爲大小寫不敏感的正則啓發式匹配;內置規則可逐條關閉,面板可添加自定義規則(≤40 條,單條最長 200 字符)。
面板與 Agent 工具¶
輸入框工具行有盾牌按鈕:徽標顯示今日攔截數(無攔截時顯示高危數),顏色隨模式變化。面板內可切換模式、看今日調用 / 高危 / 已攔截 / 失敗統計、瀏覽並篩選審計事件、管理規則、對 shell 命令或寫入路徑做試運行檢測(只匹配規則,不執行)。
Agent 只讀工具 sentinel 支持 status、check、events、rules。被攔截時,模型會看到類似:
Blocked by dsh-sentinel (mode=enforce): shell.disk-format [high] 格式化或重寫磁盤.
Target: mkfs.ext4 /dev/sda1. Nothing was executed. Do not retry this call ...
在 enforce / strict 下,插件還會向系統提示貢獻一小段說明,要求被攔時不要重試、不要繞開監視器;audit 下不佔 token。
數據與隱私¶
數據目錄默認 $DSH_HOME/dsh-sentinel/,可用 cordis.patch.yml 裏 dataDir 改。settings.json 存模式與規則;events-YYYY-MM-DD.jsonl 按日追加每次已結算的工具調用。日誌不寫 write/edit 的文件內容,憑據類片段會打碼後落盤;規則匹配仍用原始命令。HTTP API 只接受本機迴環請求;插件不發起外網請求。日誌爲本地明文,保留期默認 30 天。
安裝與配置¶
官方 README 給出的安裝方式是 clone 後通過 GUI 安裝 bundle,不是憑名稱拼接 dsh plugin add。
git clone https://github.com/yanliao66/dsh-sentinel.git
在 DSH GUI「插件」頁用 install_bundle,target 填 clone 目錄的絕對路徑。裝好後應看到 工具哨兵 / Tool Sentinel,輸入框出現盾牌按鈕。運行測試需 Node ≥22:
cd dsh-sentinel
node --test test/
部署默認值寫在 cordis.patch.yml;面板保存的用戶選擇優先:
- id: dsh-sentinel
config:
mode: enforce # audit | enforce | strict
retentionDays: 30
captureArgs: true
maxMemoryEvents: 2000
卸載:GUI 移除插件,或刪掉 profile package.json 裏對應依賴與 bundles 後重裝;數據目錄可手工刪除。許可爲 MIT,當前 package 版本爲 1.0.0。
適用場景與注意¶
適合需要留痕、並在默認下攔「明顯不該由 Agent 自己做」操作的 DSH 用戶。插件以當前 DSH 進程權限運行,安裝前應自行查看源碼與許可證;它是一道保險絲,不替代沙箱、審批策略或 OS 權限。README 如實列出的限制包括:啓發式可能誤報/漏報;只檢查經 Host 管線的那條命令文本,不逐條檢查 shell 內派生命令;相對路徑寫保護有限;guard 同步且 fail-open(插件自身出錯時放行並記 warn)。
結尾¶
dsh-sentinel 讓每次工具調用有據可查,並在 enforce / strict 下爲高危與中危操作按下保險絲。更多信息見 GitHub README 與 SkillHub 目錄頁。