前言¶
在 DeepSeek Harness 项目里,核心工作区通常指向一个 primary workspace。实际开发中,源码仓库、测试仓库和文档仓库可能需要同时处理。如果不借助插件,常见做法是在多个工作区之间切换,或在不同会话中分别打开这些目录。
dsh-multi-folder 提供另一种做法:在同一个 DSH 项目中配置 secondary working directories,让智能体不离开 primary workspace,也能对已配置的次要目录进行读写和执行。
这是什么¶
dsh-multi-folder 是一个 DeepSeek Harness 插件,由 AngelosZou 维护,许可证为 MIT。
它给一个 DSH 项目增加一组次要工作目录。智能体的核心 cwd 和其他核心属性仍指向 primary workspace,但已配置的 secondary directories 可以按当前权限模式参与会话。
核心功能¶
- 保持 primary workspace 为核心工作目录,同时提供 secondary working directories。
- 在
workspace-write模式下,已配置的次要目录可获得与 primary workspace 相同的 read / write / edit / execute 权限。 - 权限模式语义保持不变:
read-only仍然拒绝写入,workspace-write允许,danger-full-access允许。 - 将已配置的目录列表注入 system prompt,并在每次 session assembly 时重新渲染。
- 当目录集合实际变化时,通过 non-interrupting message queue 在下一个 message boundary 通知智能体。
- 支持在会话开始前配置目录:session header panel 和 session-creation page 都可以通过 sessionless
multiFolderremote API 操作。 - 不新增工具;它使用 framework-level tool-pipeline interception,并提供 session-scoped UI header entry。
- 支持通过 native picker 添加目录,支持立即 remove / refresh,支持按 session 切换,并复用 per-session cache。
- 支持
/multi-folder的list、add、remove、setslash commands。 - 当目标路径或
workdir位于已配置 secondary directory 内时,write、edit、pwsh、bash调用会被 re-root 到该目录。
安装与启用¶
先确认环境满足要求:
- Node.js
>= 20 - 一个由
@deepseek-ai/dsh-base+@deepseek-ai/dsh-web-app组成的 DSH profile
安装命令:
dsh plugin --profile web add dsh-multi-folder
安装后,需要重启 DSH backend,再刷新浏览器页面。
版本兼容关系如下:
- DeepSeek Harness 0.1.1 or earlier:使用
dsh-multi-folder@0.1.7 - DeepSeek Harness 0.1.2-alpha or later:使用 latest
dsh-multi-folder
典型用法¶
- 打开面板。可以在 session header 使用 Multi-folder 按钮,也可以在 session-creation page 使用对应入口。
- 使用 native directory picker 添加目录;remove / refresh 会立即生效。
- 面板会按 session 切换,并使用 per-session cache。
- 也可以直接使用 slash commands:
/multi-folder list
/multi-folder add "D:\path\to\repo"
/multi-folder remove "D:\path\to\repo"
/multi-folder set "D:\a" "D:\b"
- 对需要创建文件的命令,把
workdir设为命令要写入的目录。 - 对 git,从仓库内部运行命令,而不是从 primary workspace 使用
git -C。 - 读取操作不受这些限制,也不需要
workdir。
权限边界¶
每条受限制命令一次只能运行在一个 writable root 下。
- 如果命令的 cwd 留在 primary workspace,它不能创建文件到 secondary directory。
- 如果命令被 re-root 到某个 secondary directory,它在同一次调用中不能写入 primary workspace,也不能写入另一个 secondary directory。
- 直接对 per-workspace config file 的 write / edit 尝试会被拒绝。
- 智能体不能 self-grant directories;目录配置由用户管理。
工作原理(简要)¶
插件在 framework level 拦截 write、edit、pwsh、bash 调用。当解析后的路径或 workdir 落在已配置 secondary directory 内时,插件会基于该目录重新确定命令执行根目录,并保持原权限模式的语义。
目录列表会进入 system prompt,让智能体知道当前会话可用的目录。配置变化只在实际变化时通过消息队列通知,避免重复提示。
适用场景与注意¶
适合需要在同一个 DSH 项目里同时处理源码、测试和文档的开发者,也适合希望在会话开始前就固定一组可用目录的场景。
注意:该插件随 DSH 运行,使用当前 dsh 进程具备的权限,并且会改变会话可用的目录范围和命令执行根目录。安装前建议检查源码,并确认 MIT 许可证符合你的使用要求。
小结¶
dsh-multi-folder 解决的是“一个项目需要多个目录同时可写”的问题。它保留 primary workspace 的核心属性,同时把已配置的 secondary directories 纳入同一个会话,并通过权限边界保持每个命令只在一个 writable root 下运行。
仓库地址:
https://github.com/AngelosZou/dsh-multi-folder
已核实资料未提供可确认的目录页地址,因此本文不列目录页链接。社区目录属于独立站点,与 DeepSeek / 幻方无官方从属关系,不应视为官方应用商店。