dsh-devspace:在 DSH 里统一管理 DevSpace 节点与远端镜像工作区

前言

在 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 补丁,见下文),浏览远端目录树并选定目录后,插件会:

  1. 在远端对该目录调用 open_workspace,取得远端 workspace_id;
  2. 在本地创建 <mirrorRoot>/<节点名>/<路径>(默认 ~/DevSpace/...),并写入 AGENTS.md,说明项目本体在远端、本地目录用途;
  3. 将该本地目录注册为 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 里区分本地会话目录与远端执行面。

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

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

小夜