前言¶
在 DeepSeek Harness(DSH)里做智能体开发,常见情况是:代码和命令跑在另一台机器或另一套环境里,远端通过 DevSpace 一类执行器把目录暴露成 MCP 工具(read、apply_patch、exec_command 等),而本地 DSH 仍需要独立的工作区、会话 cwd 和可管理的 MCP 端点。若每个远端节点单独配、远端目录与本地 Workspace 脱节,节点一多就难以维护,文件往返也容易和「项目本体在远端、本地只是镜像」这一模型混淆。
下面介绍社区插件 dsh-devspace(维护者 lifecoder1988),它在 DSH 内集中管理多个 DevSpace 节点,并把选定的远端目录「领养」为本地镜像工作区,配合双向文件传输工具,让会话挂在真实 Workspace 下,同时远端操作仍走对应节点的 MCP 工具。
这是什么¶
dsh-devspace 是 DSH 的工作流类插件:一个插件内统一管理 N 个 DevSpace 节点(每个节点对应一个 MCP 端点),支持将远端目录映射为本地镜像 Workspace,并通过 devspace_pull / devspace_push 在远端与本地镜像之间传文件。插件包名为 @local/dsh-devspace,许可证 MIT,当前仓库版本 1.0.0。
远端仍然是远端:远端代码与命令只通过该节点的 mcp__<节点名>__<工具> 调用,本地镜像目录不会自动同步。
核心功能¶
节点管理¶
一个节点等于一个 MCP 端点。节点配置持久化在 $DSH_HOME/devspace-nodes.json(可通过配置项 nodesFile 覆盖)。启用节点时通过 @deepseek-ai/dsh-mcp-client 热挂载,不需要重启 DSH;工具名形如 mcp__<节点名>__<工具>。节点的增删改、启停、重连可通过设置页或模型工具 devspace_admin 完成。
远端目录 → 本地镜像工作区¶
在工作区选择器中使用「Add Remote…」(需打上游 client 补丁,见下文),浏览远端目录树并选定目录后,插件会:
- 在远端对该目录调用
open_workspace,取得远端workspace_id; - 在本地创建
<mirrorRoot>/<节点名>/<路径>(默认~/DevSpace/...),并写入AGENTS.md,说明项目本体在远端、本地目录用途; - 将该本地目录注册为 DSH 真实 Workspace,侧栏
Workspaces可见,会话归属与cwd均指向镜像目录。
镜像关系记录在 $DSH_HOME/devspace-mirrors.json(默认路径,可用 mirrorsFile 配置)。
文件传输¶
- devspace_pull:远端文件 → 本地镜像(可指定落盘路径,默认镜像内同名相对路径);
- devspace_push:本地 → 远端(可指定远端落点,默认按镜像内相对路径)。
传输为二进制安全、分块进行,双向带完整性校验。受远端 Express 请求体约 100 KB、Windows 命令行约 32 KB 等限制,默认下载块 48 KiB(pullChunkBytes)、上传块 16 KiB(pushChunkBytes);写后文件长度与已发送字节不一致时会整份重传(最多 3 次)。
模型工具与技能¶
| 工具 | 说明 |
|---|---|
devspace_admin |
节点:status / add / update / remove / enable / disable / retry;镜像:mirrors / open / unmirror / mirrorRoot |
devspace_target |
按本会话 cwd 返回远端目标(节点、远端路径、workspace_id、本地镜像目录);无目标时 null |
devspace_pull |
远端 → 本地 |
devspace_push |
本地 → 远端 |
插件还会发布全局技能 devspace-nodes,从当前节点列表渲染,提示模型远端与本地镜像的区别及调用顺序。
界面与作用域¶
插件向多个 Cordis 槽位注入 UI:设置页分区 devspace、工作区菜单「Add Remote…」、远端目录对话框,以及镜像工作区的侧栏徽章与会话 chip 等。MCP / 技能 / 项目密钥面板中的「远端节点(DevSpace)」分区会按当前工作区收敛:当前为镜像工作区时只显示对应节点;非镜像时整块不显示,Host 不发起无关远端命令。
安装与启用¶
推荐在对应 profile 目录下用 pnpm 安装(会配合 cordis.patch.yml 写入 composition):
cd "$DSH_HOME/profiles/<profile>"
pnpm add github:lifecoder1988/dsh-devspace
也可手工在 profile 的 cordis.patch.yml 中加入:
- insert:
- id: devspace
name: '@local/dsh-devspace'
安装完成后,若改动涉及 host 半边,需重启 DSH;仅 client 半边时刷新页面即可。
插件以当前 DSH 进程权限运行,安装前请自行查阅 GitHub 仓库 源码与 MIT 许可证。
上游 client 补丁(可选)¶
完整 UI(工作区菜单「Add Remote…」、列表节点图标、Hero chip 节点名)依赖两份上游补丁,需在 DSH 检出目录打补丁并重建 client 包:
git apply /path/to/dsh-devspace/patches/upstream-workspace-action-slot.patch
git apply /path/to/dsh-devspace/patches/upstream-workspace-remote-badge.patch
pnpm --filter @deepseek-ai/dsh-client-ui-workspace run bundle
pnpm --filter @deepseek-ai/dsh-client-ui-conversation run bundle
pnpm run build:web
未打补丁时,节点管理、HTTP 路由与模型工具仍可用;只是工作区菜单无「Add Remote…」,列表与 chip 无远端标记,可通过设置页节点管理与模型工具操作。
典型用法¶
1、安装插件并重启(或刷新)¶
按上一节完成 profile 安装与 composition 接入。
2、添加并启用 DevSpace 节点¶
在设置页「DevSpace」分区或通过 devspace_admin 的 add / enable 配置 MCP 端点 URL 与 headers(支持 ${VAR} 引用,避免 token 明文落盘)。启用后工具以 mcp__<节点名>__* 出现在模型侧。
3、领养远端目录为本地 Workspace¶
在已打补丁的客户端:工作区选择器 → 「Add Remote…」→ 浏览远端目录 → 确认。插件执行 /devspace/open 流程,本地出现镜像目录并注册为 Workspace。
无 UI 补丁时,可用 devspace_admin 的 open 等等价能力(以 README 与工具 schema 为准)。
4、在镜像工作区下开会话并传文件¶
会话 cwd 落在镜像目录。用 devspace_target 确认当前会话绑定的远端节点与路径;需要同步文件时调用 devspace_pull 或 devspace_push。远端编辑与执行仍通过该节点的 MCP 工具,而非假设本地目录已与远端实时一致。
5、自检(可选)¶
仓库提供离线自检脚本:
node test/local-check.mjs # host:节点存储、挂载、路由
node test/mirror-check.mjs # 镜像流程与双向传输(内置模拟远端,20 项断言)
配置项¶
可在插件 config 中覆盖以下字段(括号内为默认行为):
config:
dshHome: /path/to/.dsh # 默认 $DSH_HOME 或 ~/.dsh
nodesFile: …/devspace-nodes.json
mirrorsFile: …/devspace-mirrors.json
mirrorRoot: ~/DevSpace
pullChunkBytes: 49152
pushChunkBytes: 16384
也可用 transferChunkBytes 或分方向键覆盖块大小。
Host 侧行为变更(如 /remote 按工作区提前返回、标题迁移规则)需重启 DSH;client 侧标记轮询等为刷新即可。
适用场景与注意¶
适合:已在或多台机器上使用 DevSpace MCP,希望在 DSH 内统一挂载节点;需要把远端项目目录登记为正式 Workspace,并在本地镜像目录存放下载数据、待上传产物或本地脚本;需要在远端与本地镜像之间可控、可校验地搬文件。
注意:
- 镜像目录不是自动同步盘;远端 truth 仍通过 MCP 操作。
- 完整「Add Remote…」与徽章 UI 依赖自行打上游补丁并重建 web client。
- 插件与 DSH 社区目录(如 SkillHub 插件页)为社区生态,与 DeepSeek / 幻方无官方从属关系;目录信息与 GitHub README 冲突时以仓库文档为准。
结尾¶
dsh-devspace 把 DevSpace 的「多 MCP 端点 + 远端目录 + 本地 Workspace」收成一条工作流:节点热挂载、镜像工作区注册、分块双向传输与按工作区收敛的设置面板,便于在 DSH 里区分本地会话目录与远端执行面。