前言¶
DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在构建智能体应用时,沙箱机制通常能限制写入操作,但读取权限往往保留。dsh-fs-deny-policy 插件填补了这一空白,它通过文件系统根目录的拒绝列表,在模型发起读取、搜索或 Shell 调用之前进行拦截,防止模型触碰敏感目录。
插件介绍¶
这是一个由 vladlearns 维护的 DSH 插件,旨在提供部署级的文件系统访问控制。它不依赖复杂的沙箱配置,而是直接在工具执行前对路径进行校验。
核心功能¶
- 全类型拦截:在
tools/pre-execute钩子处拦截读取、写入、搜索和 Shell 工具调用。 - 根目录拒绝列表:一旦工具调用的路径解析结果落在被拒绝的根目录内,该调用将被阻断。
- 前置告知:插件会将拒绝列表作为系统提示的一部分发送给模型,使其在调用前就知晓限制,避免无效对话。
安装与启用¶
安装前需确保环境满足 Node.js 22.19 或更高版本,并已安装 dsh CLI。
使用 npm 包安装:
npx @deepseek-ai/dsh plugin --profile main add dsh-fs-deny-policy
如需从 GitHub 安装以使用特定版本:
npx @deepseek-ai/dsh plugin --profile main add github:vladlearns/dsh-fs-deny-policy
注意:添加或移除插件需要重启 DSH 进程。
配置方法¶
配置文件位于 ~/.dsh/profiles/YOUR_PROFILE/cordis.patch.yml。以下示例将禁止访问 SSH 目录和许可证文件:
- id: fs-deny-policy
config:
deniedRoots:
- C:/Users/you/.ssh
- C:/Users/you/Desktop/license-dongle
注意:
- 路径必须为绝对路径。相对路径或重复条目会在加载时报错。
- 插件安装后再编辑此配置文件,修改会实时生效。
- 若只需禁止写入而允许读取,可设置 fenceReads: false(写入侧始终开启)。
验证配置¶
安装并配置完成后,使用以下命令验证配置是否正确写入:
npx @deepseek-ai/dsh --profile main --dump-config
适用场景与注意事项¶
- 适用场景:需要保护特定敏感目录(如 SSH 密钥、许可证文件、生产配置)不被模型读取或修改的场景。
- 安全性:该插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
- 局限性:Shell 检查仅读取命令文本,不实际执行 Shell,因此间接路径(如
$VAR、$(...)、重定向符)可能绕过拦截。 - 防御纵深:建议将其与沙箱配合使用以获得硬 guarantee,而非替代它。