dsh-multi-workspace:DSH 多工作区文件写入插件

DeepSeek Harness (DSH) 的默认文件沙箱限制写入权限仅限于会话的工作目录(cwd)。如果需要在已注册的其他工作区目录下写入文件,通常需要通过沙箱提升权限。这增加了开发智能体或操作工作区时的配置负担。

dsh-multi-workspace 是一个为 DeepSeek Harness 设计的插件,由维护者 somnusovis 开发。它的核心作用是自动赋予已注册的所有工作区文件写入权限。

核心功能

该插件通过两层机制实现多工作区写入:

  1. 扩展沙箱策略:在每次沙箱策略检查时读取实时的工作区注册表,将每个已注册工作区的路径注入到 sandboxPolicy.resolve() 中。
  2. 文件系统重试:包装 fs.writeText 和 fs.editText,在遇到写入拒绝时,尝试使用目标工作区的根路径进行静默重试。

安装与启用

使用官方插件安装命令添加该插件:

dsh plugin --profile web add github:somnusovis/dsh-multi-workspace

安装完成后,需要重启 DSH Web 服务并刷新浏览器。

典型用法

在 DSH UI 中添加一个工作区后,直接使用文件写入工具(如 fs.writeText 或 editText)即可对该工作区进行操作,无需额外的配置步骤。

注意事项与限制

  1. Shell 命令范围受限
    该插件仅扩展了文件系统工具的写入范围。底层的命令沙箱(@deepseek-ai/dsh-sandbox-local)仍只读取单一的 policy.workspaceRoot。因此,pwsh 或 bash 等命令在会话目录外执行写入仍会被拒绝。

  2. 静默重试与信任机制
    文件写入失败时,插件会在 workspace-write 权限下静默重试,跳过审批流程。这意味着插件以当前 DSH 进程的权限运行。使用前,请务必确保已注册的工作区是可信的。

  3. API 返回值要求
    被包装的 resolve() 函数必须返回一个纯对象(Plain Object),包含 mode、workspaceRoot 和 sessionId 等自有属性。如果返回值依赖原型链继承,执行器在展开对象时可能会丢失这些关键键,导致运行时错误(如 SANDBOX_UNAVAILABLE)。

总结

dsh-multi-workspace 解决了 DSH 默认沙箱仅支持单工作区写入的限制。对于需要频繁在多个工作区之间切换并直接写入文件的开发场景,该插件通过自动注入路径和静默重试机制简化了操作流程。

羽毛球分组比赛记分
小程序二维码

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

小夜