dsh-write-protect:工作區路徑只讀保護

DeepSeek Harness (DSH) 的官方沙箱通常只有“整個工作區可寫”和“全只讀”兩檔策略。這意味着開發者很難在允許模型正常開發的同時,精細地保護工作區內的特定路徑(例如 .git 目錄)不被意外修改。dsh-write-protect 插件接管了沙箱策略,允許在 workspace-write 模式下對工作區內的指定路徑進行只讀保護,同時支持配置額外的可寫根目錄和會話級授權。

插件由 azazo1 維護,開源 MIT 許可證。它填補了 DSH 在路徑級權限控制上的空白,適合需要精細管理模型文件寫入行爲的場景。

核心能力

插件攔截並限制了以下行爲:

  1. 工具攔截:攔截 write 和 edit 工具對受保護路徑的寫入。
  2. 命令沙箱:在 Linux / macOS 上攔截命令沙箱(bwrap / Landlock / Seatbelt)對受保護路徑的訪問。
  3. 外部目錄放行:在 workspace-write 模式下,支持放開某些外部目錄的寫入,而無需開啓 danger-full-access。
  4. 規則文件:支持在工作區根目錄放置只讀規則文件(默認名爲 .readonly),與插件頁配置同語義。
  5. 會話授權:模型可申請本會話內的臨時可寫權限,權限僅限當前會話內存,不寫入配置文件。

安裝

在 Web 端安裝進 web profile:

dsh plugin --profile web add azazo1/dsh-write-protect

固定版本安裝:

dsh plugin --profile web add azazo1/dsh-write-protect#v0.2.0

安裝後需重啓應用或刷新窗口以生效。該插件依賴 DSH 引擎版本不低於 0.2.0-rc.1。

配置保護路徑

保護路徑支持 gitignore 語義的通配符和錨定規則,用於定義哪些路徑是隻讀的。

  • 不包含 / 的條目(如 .git, vendor):在工作區內任意層級匹配。
  • 以 / 開頭的條目(如 /.git, dist/a.txt):錨定到工作區根。
  • // 開頭的條目:表示文件系統絕對路徑。
  • 尾部 /:表示只匹配目錄。

在插件頁配置卡片或部署級 patch 中設置 readOnlyPaths。例如,保護 .git 和所有日誌文件:

.git
*.log

若需排除特定文件(如示例配置中的 secrets/example.pem),可使用 ! 開頭的排除規則,按最後匹配生效。

配置額外可寫根

額外可寫根用於在 workspace-write 模式下允許模型寫入工作區外的目錄,但不需要放開整個沙箱。

每行一條字面路徑,支持以下展開方式:

  • ~ / ~/...:展開爲當前用戶家目錄。
  • $NAME / ${NAME}:展開爲環境變量。
  • // 前綴:表示文件系統絕對路徑。
  • 相對路徑:支持含 .. 的相對當前會話工作區的路徑。

在插件頁配置 writablePaths。例如,允許寫入共享緩存目錄:

../shared-scratch
~/scratch
$HOME/scratch
/tmp/dsh-extra

注意:工作區內的路徑會被忽略並告警,文件系統根(/)會被拒絕。

工作區規則文件

工作區根目錄可以放置一份與保護路徑同語義的規則文件(默認 .readonly)。插件會逐行讀取該文件並追加到保護路徑中。

示例內容:

secrets/
/vendor
!vendor/public/**
**
  • 這份文件本身是唯一的硬保護,任何授權都無法覆蓋它。
  • 它只認工作區根這一份,每個會話各讀一份。
  • 超出工作區、符號鏈接、超限條目會被拒絕。

會話級寫入授權

當任務需要反覆寫入同一片受保護區域時,模型可以調用工具申請本會話的可寫授權。

申請工具:request_writable_path
參數:
* path:申請的路徑(支持 ~、$VAR、//、相對路徑含 ..)。
* justification:申請理由。

授權機制:
* 批准後,該路徑(及其後代)在本次會話內可被 write/edit 工具和命令沙箱訪問。
* 授權只在本會話內存裏,不寫配置文件,條數受 maxGrants 限制(默認 8)。
* 批准後的路徑在會話區的“寫入權限” tab 中可見,可手動撤回。

已知限制

  1. Windows 平臺:Windows 上的 bash 或 pwsh 既擋不住 .git 的寫入,也無法獲取額外可寫根。讀取不受影響。
  2. 引擎版本:需要 DSH 引擎 @deepseek-ai/dsh-* 不低於 0.2.0-rc.1。
  3. 危險模式:在 danger-full-access 模式下,本插件不會介入。

生態信息

  • 插件目錄:https://www.skillhub.cn/plugins/azazo1/dsh-write-protect
  • 源碼地址:https://github.com/azazo1/dsh-write-protect
羽毛球分组比赛记分
小程序二维码

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

小夜