DeepSeek Harness (DSH) 的官方沙箱通常只有“整個工作區可寫”和“全只讀”兩檔策略。這意味着開發者很難在允許模型正常開發的同時,精細地保護工作區內的特定路徑(例如 .git 目錄)不被意外修改。dsh-write-protect 插件接管了沙箱策略,允許在 workspace-write 模式下對工作區內的指定路徑進行只讀保護,同時支持配置額外的可寫根目錄和會話級授權。
插件由 azazo1 維護,開源 MIT 許可證。它填補了 DSH 在路徑級權限控制上的空白,適合需要精細管理模型文件寫入行爲的場景。
核心能力¶
插件攔截並限制了以下行爲:
- 工具攔截:攔截
write和edit工具對受保護路徑的寫入。 - 命令沙箱:在 Linux / macOS 上攔截命令沙箱(bwrap / Landlock / Seatbelt)對受保護路徑的訪問。
- 外部目錄放行:在
workspace-write模式下,支持放開某些外部目錄的寫入,而無需開啓danger-full-access。 - 規則文件:支持在工作區根目錄放置只讀規則文件(默認名爲
.readonly),與插件頁配置同語義。 - 會話授權:模型可申請本會話內的臨時可寫權限,權限僅限當前會話內存,不寫入配置文件。
安裝¶
在 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 中可見,可手動撤回。
已知限制¶
- Windows 平臺:Windows 上的 bash 或 pwsh 既擋不住
.git的寫入,也無法獲取額外可寫根。讀取不受影響。 - 引擎版本:需要 DSH 引擎
@deepseek-ai/dsh-*不低於0.2.0-rc.1。 - 危險模式:在
danger-full-access模式下,本插件不會介入。
生態信息¶
- 插件目錄:https://www.skillhub.cn/plugins/azazo1/dsh-write-protect
- 源碼地址:https://github.com/azazo1/dsh-write-protect