DeepSeek Harness 的插件生態允許自定義行爲,但若沙箱配置寬鬆,智能體仍可能執行危險操作。dsh-approval-gate 通過註冊 tools.guard,在工具執行前進行攔截。它將無法完全檢查的命令路由到 DSH 的原生審批流程,並阻斷已識別的危險操作。
插件簡介¶
這是 GooDAnDReaY 維護的 DeepSeek Harness 原生命令審覈插件。它是一個基於 MIT 許可的開源工具,旨在爲 bash 命令和文件寫入工具提供安全攔截。
安裝與啓用¶
通過 npm registry 安裝插件。安裝後需在對應 profile 中保持 gate 啓用。
dsh plugin --profile web add @goodandready/dsh-approval-gate@0.1.3
核心功能¶
插件通過註冊 tools.guard 在工具體運行前拒絕調用。其核心能力包括:
- 命令預處理與阻斷:使用
lib/bands.js進行快速兩頻段預過濾(Band 0 硬阻斷,Band 1 安全檢查)。對於已知危險的操作(如rm -rf、DROP TABLE),直接返回阻斷字符串。 - 不確定命令路由:對於無法完全檢查的命令(如未閉合引號、管道、heredoc),路由至 DSH 原生審批流。
- 文件寫入防護:按路徑而非正則文本分類文件寫入工具(如
write,edit,str_replace),防止寫入敏感文件(如.env,id_rsa,/etc/shadow)。 - 環境與憑證保護:通過
lib/inspect-env.js防止環境變量泄露、procfs 讀取和密鑰轉儲。通過lib/redact.js在審計消息中脫敏敏感信息。 - 熔斷機制:通過
lib/breaker.js防止因安全阻斷導致的無限智能體重試循環。
配置¶
插件支持通過 cordis.patch.yml 配置。可選字段包括:
| 字段 | 類型 | 默認值 | 說明 |
|---|---|---|---|
toolName |
string | bash |
指定要檢查的 tool 的 command 參數 |
fileWriteTools |
string[] | write, edit, Write, Edit, str_replace, apply_patch |
按路徑分類的文件寫入工具 |
示例配置:
- insert:
- id: dsh-approval-gate
name: @goodandready/dsh-approval-gate
config:
toolName: bash
fileWriteTools:
- write
- edit
- Write
- Edit
- str_replace
- apply_patch
典型用法¶
插件對命令行爲的分類如下:
- 阻斷:
rm -rf /tmp/x,sudo rm -r ...:阻斷。chmod/chown修改.env/id_rsa:阻斷。mysql << EOF DROP TABLE...:阻斷。curl ... \| python3:阻斷。bash -c "rm -rf /tmp/x":阻斷(嵌套 shell)。kill/pkill/killall作爲主命令:阻斷。
- 請求審批:
source script.sh,. script.sh:請求審批。- 帶有未閉合引號、
$IFS、$(...)或 heredoc<<的命令:請求審批。
注意事項與適用場景¶
- 非完整解析器:它不是完整的 bash 解析器。未知或不完整的語法會請求審批。如果審批不可用或配置爲
approval=never,DSH 會拒絕該調用。 - 文件掃描限制:對於先前創建並稍後執行的腳本文件,插件不會打開並掃描該文件(僅檢查執行命令本身)。
- 非系統沙箱:它僅攔截 DSH 工具調用。
cron和systemd從不經過tools.guard。 - 權限要求:插件以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證。
結語¶
該插件通過命令前攔截和不確定命令路由,爲 DSH 提供了輕量級的命令安全層。