前言¶
DeepSeek Harness(DSH)采用插件化架构。在智能体开发中,工具调用可能意外泄露敏感文件(如 .env、.git 目录或 SSH 密钥)。dsh-guard-sensitive-paths 旨在通过在执行前强制审批来拦截这些操作,确保敏感数据不会未经授权地被读写或执行。
核心功能¶
该插件是一个 DSH bundle,通过前置注册 tools/pre-execute 策略来拦截操作。它默认开启,零配置即可生效。
主要拦截以下场景:
1. 写/改/执行操作:拦截 write、edit、str_replace_editor、bash 对敏感路径的调用。
* 敏感路径集合:.env 文件、.git 目录、.ssh 目录、SSH 私钥文件、.pem 证书文件。
2. 读操作:仅拦截对 密钥类 文件的读取,即 SSH 私钥和 .pem 证书。读取 .env、.git、.ssh/config 等文件保持放行。
工作机制:
* 优先级:通过 PREPEND 方式注册,优先于其他 tools/pre-execute 监听器执行。
* 行为:纯审批策略。命中时返回 ask 决策,理由中包含敏感路径类别(如 environment-file、key-material)。未命中则原样委托。
* Bash 扫描:支持扫描 Bash 命令文本,检测命令中是否包含敏感路径(如 .env、id_rsa、*.pem 等)。
安装与启用¶
插件遵循 DSH bundle 规范,安装后随 profile 重启生效。
从 GitHub 安装:
dsh plugin --profile web add github:TARS-snail/dsh-guard-sensitive-paths
验证安装:
dsh --profile web --dump-config
生成的配置中应包含 name: dsh-guard-sensitive-paths 的条目。
配置¶
默认零配置即开启。若需关闭,可在 profile 的 cordis.patch.yml 中覆盖配置:
- id: sensitive-paths
name: dsh-guard-sensitive-paths
config:
sensitivePaths: false
适用场景与边界¶
该插件通过观察工具调用的参数进行拦截,不修改会话行为。
覆盖范围:
* 拦截 write、edit、str_replace_editor、read、bash 工具对敏感路径的参数。
不覆盖范围(威胁模型边界):
* 宿主级 sidecar / 运行时行为:不经过工具循环的读取、打包、加密、上传(如智谱 ZCode 事件中通过宿主进程打包上传 .git 历史),本插件无法拦截。
* 网络出口:文件 sandbox 管文件访问,不管主机进程把数据发往哪里。
* 模型推理端点:任务相关的上下文仍会发送给 LLM provider。
结尾¶
该插件确保工具调用命中敏感路径时,必须先获得批准。它无法防止宿主进程绕过工具循环的操作,如需覆盖这些面,需要文件 sandbox、进程隔离与网络出口策略。