前言¶
在 DeepSeek Harness(DSH)里做全栈或组件库联调时,会话通常只绑定一个工作区根目录。组件库、后端服务或参考仓库若在别的路径,模型要么看不到,要么只能靠你反复粘贴路径和片段。下面介绍社区插件 dsh-linked-workspaces(维护者 NingTiAn-byte):为主项目配置关联目录,在同一会话里按别名搜索和读取,并保留文件来源与会话级配置快照。
这是什么¶
dsh-linked-workspaces 是 DSH 的客户端类插件(当前版本 0.3.0)。它为单个 DSH 项目设置主工作区,并关联本机上的其他目录(例如组件库、后端或参考项目)。关联关系保存在 DSH 存储域中,不向用户仓库写入配置文件。插件通过 bundle patch 安装,无需手改 DSH 源码;支持本机文件系统与 DSH Web 客户端(桌面端复用同一 Web 客户端)。
兼容 DeepSeek Harness 0.2.1-alpha.4 与 0.2.1-rc.2,需要 Node.js 22.19+。许可证为 MIT。
核心功能¶
关联目录与别名¶
- 最多关联 16 个本机目录;不支持 SSH、容器路径或远端文件系统后端。
- 别名以小写字母开头,可含小写字母、数字、下划线和连字符,最多 32 字符(例如
components、server)。 - 路径经
realpath规范化;拒绝重复、别名冲突和父子目录重叠。配置的根目录目标变化后需要重新关联。
项目右键菜单(快捷入口)¶
在 DSH 左侧项目名称上右键,可 添加关联工作区… 或 管理关联工作区。从已有工作区选择、或 选择本机目录… 后,会自动生成别名并保存,无需再进管理页填写。新会话自动继承项目配置;已有会话保留旧快照,可在管理页 同步到所选会话。侧栏「关联工作区」管理页仍可用于改别名、移除关联和面板内搜索。
面板搜索与预览¶
在管理面板中可按文件名或文本搜索,结果以 components/src/Button.tsx 这类带别名前缀的路径展示。点击结果可预览带行号的文本,并加载适用目录链上的 AGENTS.md(不额外加载 CLAUDE.md 或跨目录规则继承)。
模型工具(只读)¶
| 工具 | 功能 |
|---|---|
linked_workspace_list |
列出当前会话快照里的主目录、关联目录和可用状态 |
linked_workspace_search |
在指定别名或全部目录进行不区分大小写的字面文件路径/文本搜索 |
linked_workspace_read |
按相对路径读取带行号文本,并返回根目录至文件父目录的 AGENTS.md |
工具不提供写入、删除、依赖安装或命令执行。「关联工具只读」仅指上述工具;不限制原有 shell、文件工具或其他插件,DSH 现有 sandbox 与权限模型继续生效。关联目录清单也不是整台机器的读取白名单。
会话快照¶
项目配置变更后,已有会话保留旧快照;在面板选择空闲会话并点击 同步到所选会话,下一次模型请求才采用新快照。快照以 plugin:linked-workspaces/snapshot 形式由宿主 projection 恢复;继续会话与分叉会继承已记录的快照。
安装与启用¶
从 GitHub Release 安装预构建包。将 web 换成你实际使用的 profile:
dsh plugin --profile web add https://github.com/NingTiAn-byte/dsh-linked-workspaces/releases/download/v0.3.0/dsh-linked-workspaces.tgz --ignore-scripts --config.auto-install-peers=false
Windows 桌面发行版启动器未加入 PATH 时,可先定位 CLI 再执行同样参数:
$dshCli = Join-Path $env:LOCALAPPDATA 'Programs/DeepSeek Harness/resources/runtime/cli/bin/dsh.cmd'
& $dshCli plugin --profile web add https://github.com/NingTiAn-byte/dsh-linked-workspaces/releases/download/v0.3.0/dsh-linked-workspaces.tgz --ignore-scripts --config.auto-install-peers=false
按宿主提示重新启动相应 profile 并刷新页面。同一安装包适用于 alpha.4 与 rc.2;安装时保留 --ignore-scripts --config.auto-install-peers=false。
典型用法¶
右键快速关联¶
- 在左侧项目名称上右键,选择 添加关联工作区…。
- 从已有工作区选 添加此工作区,或 选择本机目录… 选中目录。
- 别名自动生成并保存;新开会话继承配置。
管理页与对话¶
- 添加主项目工作区后,在左侧进入「关联工作区」并选中该项目。
- 从「从已有工作区添加」或「添加目录」(本机绝对路径)加入关联,设置别名与用途后保存。
- 在主工作区开始会话;模型首次处理请求时继承当时配置并获得目录清单。
- 可对模型说:「从 components 中找到 Button 的实现,阅读它的使用约束,再在主项目中复用。」
关联目录不会自动成为主项目的包依赖;复制源码、本地包链接和改构建配置仍由任务本身决定。会话仍属于原主工作区;切换主工作区请通过 DSH 工作区入口新建或打开会话。
搜索、读取与存储¶
搜索会跳过符号链接与 junction;读取拒绝最终指向目录外的符号链接。搜索排除隐藏项(.github 除外)、.env、常见私钥与凭据文件,以及 .git、node_modules、dist 等目录;当前不解析 .gitignore。文本工具不支持二进制文件;达到遍历、时长、大小或结果上限时可能返回 truncated。
项目配置保存在 DSH storageDomain 的 local_linked_workspaces 域(JSON 后端下为 local_linked_workspaces.json),按工作区 ID 索引。管理与搜索 HTTP 接口挂在 DSH 已认证的 Connection exact Fetch route 上,仅 owner Peer 可调用;插件不另开监听端口。
可在插件配置中覆盖读取与搜索相关的整型上限,例如 readMaxBytes(默认 65536)、searchMaxResults(默认 40)、searchTimeoutMs(默认 5000)等,详见仓库 README 配置表。
适用场景与注意¶
适合:主仓与组件库/后端分目录存放、需要在一次会话里按别名检索并只读阅读多仓代码与 AGENTS.md 的 DSH 用户。
注意:
- 插件以当前 DSH 进程权限访问本机路径;安装前请阅读 GitHub 源码 与 MIT 许可证。
- 第一版不统一各仓 Git 操作、不安装依赖、不建立构建联动,也不增加跨目录写权限。
- 不要让多个独立 DSH 进程同时写同一 JSON 存储目录;多窗口同一实例内有版本冲突检测,冲突后需刷新再保存。
- 项目右键菜单通过
shell.overlay识别data-row-key="workspace:…"实现;后续 DSH 若改动项目行结构,需重新验证,管理页入口可独立使用。
DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区收录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-linked-workspaces 把「主项目 + 多个本机关联目录」收进同一会话的清单、快照和只读工具里,并用右键菜单降低配置成本。需要细节、配置项与开发验收步骤时,以仓库 README 为准。