dsh-sentinel:DSH 工具調用審計與安全攔截

前言

在 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 目錄頁。

羽毛球分组比赛记分
小程序二维码

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

小夜