dsh-file-shield:屏蔽文件访问的 DeepSeek Harness 插件

在 DeepSeek Harness (DSH) 中,agent 需要频繁访问文件系统以执行任务。如果文件中包含敏感词或违规内容,provider 的内容审核机制可能会直接拒绝请求(HTTP 400)。一旦这些内容进入对话历史,后续每一轮请求都会携带该内容,导致整个会话被阻断。dsh-file-shield 插件通过在工具执行前拦截对指定文件或目录的访问,从源头防止敏感内容进入对话。

功能与原理

dsh-file-shield 是一个由 Yazzyk 维护的插件。它屏蔽 agent 对指定文件或目录的读取、编辑、搜索和写入操作。当 agent 试图访问被屏蔽的路径时,工具调用会在执行前被拒绝,模型会收到权限错误,而不是文件内容。

  • 拦截点:插件在 tools/pre-execute 阶段介入,返回 deny,导致工具主体不执行。
  • 错误反馈:模型会收到类似 Error: Access to "/path/to/file" is blocked by deployment policy 的错误。
  • Shell 命令处理:插件通过静态分析 shell 命令文本,解析出其中的路径参数进行拦截。它支持拦截 bash 和 pwsh 工具的 workdir 和 command 参数,并会剔除搜索结果中的被屏蔽路径。
  • 输出过滤:对于 grep、glob 等工具,插件会剔除结果中命中规则的路径,仅返回未屏蔽的内容。

局限性

  • Shell 混淆:插件通过静态分析命令文本进行防御,无法拦截所有混淆手段。例如,变量拼接(cat $p)、base64 -d、命令替换($(...))等利用语义差异的操作可能绕过静态检查。
  • Host 侧读取:不拦截不经过工具层的 host 侧读取操作,例如技能加载、@文件 引用等。
  • 大小写敏感性:默认 matchCase 为 false,对于大小写不敏感的文件系统,短相对规则可能产生误伤。
  • 额外工具:本插件不认识的读文件工具需要通过配置 extraPathArgs 和 extraCommandArgs 来支持。

安装

使用官方安装命令将插件添加到指定的 profile 中:

dsh plugin --profile <profile> add github:Yazzyk/dsh-file-shield

配置方式

Web GUI 配置

  1. 进入 Web GUI 的 Plugins 页面。
  2. 点击 Installed。
  3. 找到 dsh-file-shield 并进入其配置页面。
  4. 在页面中选择文件或目录,或直接输入路径和 glob 模式。
  5. 点击 保存,规则会写入 profile 的 config.deny 字段。

cordis.patch.yml 配置

也可以在 profile 的 cordis.patch.yml 中配置 deny 规则列表。支持 glob 模式(如 **/*.pem)或字面路径。

- insert:
    - id: file-shield
      name: dsh-file-shield
      config:
        deny:
          - '**/.env'
          - '**/.env.*'
          - '**/*.pem'
          - '~/.dsh/.credentials.yaml'
        matchCase: false
字段 默认值 说明
deny [] 规则列表,空列表表示不屏蔽任何内容。
matchCase false 是否区分大小写。
extraPathArgs {} 为其他插件的自定义读文件工具指定路径参数名。
extraCommandArgs {} 为其他插件的自定义 shell 工具指定命令参数名。

生态与链接

该插件遵循 MIT 许可证。DSH 生态强调“一切皆插件”,本插件为社区贡献。

  • GitHub 仓库:https://github.com/Yazzyk/dsh-file-shield
  • 社区目录:https://www.skillhub.cn/plugins/Yazzyk/dsh-file-shield
羽毛球分组比赛记分
小程序二维码

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

Xiaoye