dsh-grantwrite-patch
在终端中运行以下命令:
dsh plugin install 0-v-0/dsh-grantwrite-patch
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在 DeepSeek Harness 中执行 dsh plugin install 0-v-0/dsh-grantwrite-patch,或从源码安装时先克隆 https://github.com/0-v-0/dsh-grantwrite-patch 并运行 pnpm build 后再安装。
插件介绍
在 Windows 上,DeepSeek Harness 的 workspace-write 沙箱会在每次执行命令前向工作区根目录 DACL 写入写权限。若路径上任一目录缺少有效的 WRITE_DAC/WRITE_OWNER,SetNamedSecurityInfoW 会以 Win32 错误 5(拒绝访问)失败,导致该工作区内所有受限命令在启动前就中断。本插件专门拦截这类 grantWrite 失败,自动修复权限并静默重试,让你不必手动折腾 ACL。
插件按工作区规模选择策略:普通工作区在内存中拦截错误并重试,不改动文件权限;对象数超过阈值(默认两万)时,会一次性对工作区做完整授权,避免每次重启 DSH 都重复付出写授权成本;若前两种路径不适用,则运行诊断脚本修复后重试,脚本不可用时回退到 icacls 授权。三条路径按需叠加,互不冲突。
安全设计上,patch 路径不碰系统 ACL、不留下持久副作用;repair 路径由脚本的 -AllowRoot 限定范围,拒绝重解析点与受管应用树,不删拒绝 ACE,变更前备份并校验,失败可回滚。grant 回退会硬拒绝盘符根目录,仅面向真实工作区。仅匹配 grantWrite 上下文中的 SetNamedSecurityInfoW 失败,重试次数可配置且上限为一次修复循环,避免死循环。
适合在 Windows(NTFS)上使用 DSH workspace-write 沙箱、且曾遇到 grantWrite 或错误 5 的开发者。只读与 danger-full-access 策略不需要此插件;非 Windows 平台插件会自动禁用。需 DSH >= 0.1.7-rc.1,完整诊断脚本修复需 >= 0.2.0-rc.2。
使用场景
- 工作区 grantWrite 报 SetNamedSecurityInfoW 错误 5,所有受限命令无法启动
- 大型工作区每次重启 DSH 都要等待重复的写授权开销
- 诊断脚本不可用时需要安全的 icacls 回退授权
适合人员
- 在 Windows NTFS 上使用 DSH workspace-write 沙箱的开发者
- 曾因 DACL 链缺少写 DAC/写所有者而整工作区命令失败的团队
- 需要自动修权限且不想手动改 ACL 的 Harness 用户