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
羽毛球分组比赛记分
小程序二维码

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

小夜