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