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 提供了轻量级的命令安全层。