DeepSeek Harness (DSH) 的默认文件沙箱限制写入权限仅限于会话的工作目录(cwd)。如果需要在已注册的其他工作区目录下写入文件,通常需要通过沙箱提升权限。这增加了开发智能体或操作工作区时的配置负担。
dsh-multi-workspace 是一个为 DeepSeek Harness 设计的插件,由维护者 somnusovis 开发。它的核心作用是自动赋予已注册的所有工作区文件写入权限。
核心功能¶
该插件通过两层机制实现多工作区写入:
- 扩展沙箱策略:在每次沙箱策略检查时读取实时的工作区注册表,将每个已注册工作区的路径注入到
sandboxPolicy.resolve()中。 - 文件系统重试:包装
fs.writeText和fs.editText,在遇到写入拒绝时,尝试使用目标工作区的根路径进行静默重试。
安装与启用¶
使用官方插件安装命令添加该插件:
dsh plugin --profile web add github:somnusovis/dsh-multi-workspace
安装完成后,需要重启 DSH Web 服务并刷新浏览器。
典型用法¶
在 DSH UI 中添加一个工作区后,直接使用文件写入工具(如 fs.writeText 或 editText)即可对该工作区进行操作,无需额外的配置步骤。
注意事项与限制¶
-
Shell 命令范围受限
该插件仅扩展了文件系统工具的写入范围。底层的命令沙箱(@deepseek-ai/dsh-sandbox-local)仍只读取单一的policy.workspaceRoot。因此,pwsh或bash等命令在会话目录外执行写入仍会被拒绝。 -
静默重试与信任机制
文件写入失败时,插件会在workspace-write权限下静默重试,跳过审批流程。这意味着插件以当前 DSH 进程的权限运行。使用前,请务必确保已注册的工作区是可信的。 -
API 返回值要求
被包装的resolve()函数必须返回一个纯对象(Plain Object),包含mode、workspaceRoot和sessionId等自有属性。如果返回值依赖原型链继承,执行器在展开对象时可能会丢失这些关键键,导致运行时错误(如SANDBOX_UNAVAILABLE)。
总结¶
dsh-multi-workspace 解决了 DSH 默认沙箱仅支持单工作区写入的限制。对于需要频繁在多个工作区之间切换并直接写入文件的开发场景,该插件通过自动注入路径和静默重试机制简化了操作流程。