mcpField
D
dsh-baton

dsh-baton

本地服务
github.com/JialaoLiuAI 与智能体80今天更新

关于 dsh-baton

dsh-baton 将 Claude Code、Codex 等 MCP 客户端连接到 DeepSeek Harness,以便在 Harness 会话中委派和调整编码任务。它提供工作区与会话控制及命令行工具,并可回退到 Harness 无界面模式。

主要功能

  1. 01列出并创建 Harness 工作区
  2. 02发送任务并调整正在运行的任务
  3. 03查看会话、运行记录和活动
  4. 04等待结果或取消工作
  5. 05通过命令行管理工作区和会话

适用场景

  1. 01从 Codex 将编码任务委派给 Harness
  2. 02通过另一个客户端继续或调整运行中的会话
  3. 03检查进度并停止会话任务

MCP 相关

MCP 服务向 MCP 客户端提供 Harness 工作区、会话、任务、状态、等待和取消工具。其插件会为 Claude Code 和 Codex 注册该服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jialaoliu-dsh-baton": {
"command": "npx",
"args": [
"-y",
"dsh-baton-mcp"
]
}
}
}
启动命令npx -y dsh-baton-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmdsh-baton-mcp0.6.2

工具

12

收录的工具列表 · 更新于 今天

此工具无需参数。

详细介绍

dsh-baton:将接力棒从 Claude Code 或 Codex 交给 DeepSeek Harness,实时观看运行过程,并在完成后接回任务

English | 中文

macOS · Windows(指南)· 无需 Node.js · 零依赖 · MIT

Claude Code 和 Codex 各自将一项任务交给 DeepSeek Harness,其子 Agent 用 1 小时 41 分钟(40 秒,打开声音)搭建了这条雨夜街道:

https://github.com/user-attachments/assets/72e2fdff-275e-48bc-8e5a-39ffb025a0a8

创建工作区和会话,继续会话,在标注发送者的 Harness UI 中实时运行,完成后收到唤醒通知,无需额外的 API 密钥,macOS 和 Windows 均为零依赖

典型工作流:创建工作区,发送任务,在后台等待,在同一会话中继续跟进

查看运行过程

一个 Codex 对话启动任务、排队发送后续请求、引导正在运行的轮次,并等待三项任务全部完成:

左侧的 Codex 启动 DeepSeek 任务、排队发送后续请求、引导正在运行的轮次并等待;右侧的 DeepSeek Harness 实时运行每项任务

Codex 和 Claude 在同一个 Harness 会话中轮流发言,每条消息都会标注发送者:

Harness 聊天中 Codex 和 Claude 交替发送消息,每条消息都标注为由另一个聊天中的 ChatGPT 或 Claude 发送

查看更多演示 →

快速开始

步骤 1:在 Harness 中打开 Plugins,选择 Add plugin,输入 dsh-baton-host,点击 Install、Enable now;它会为 Claude Code 和 Codex 注册 dsh-baton。步骤 2:在新对话中请求调用 dsh_list_workspaces

需要 DeepSeek Harness ≥ 0.2.1-rc.2(已登录)以及 Claude Code 或 Codex。除此之外不需要任何东西:无需 Node.js,也无需终端。macOS 和 Windows 的步骤相同。

1. 在 Harness 中添加插件: Plugins(插件)→ Add plugin(添加插件)→ 输入 dsh-baton-host → Install(安装)→ Enable now(立即启用)。

启用后,该插件会为所有文件夹中的 Claude Code 和 Codex 注册 dsh-baton,Harness 也会对此进行提示。

2. 检查: 在 新的 Claude Code 或 Codex 对话中,请求它调用 dsh_list_workspaces。它会列出你的 Harness 工作区。

就这么简单。如果 Harness 提示无法注册,请在终端中运行 npx -y dsh-baton-mcp setup(需要 Node.js ≥ 22.15);它会执行相同的注册操作。更新、移除和 Windows 相关详情请见下文。

工作原理

MCP 客户端通过 stdio 调用 dsh-baton-mcp;它通过仅限所有者访问的本地套接字连接到 Harness 内的 dsh-baton-host 插件;该插件实时驱动 Harness 会话,并在必要时回退到 dsh headless

插件与 headless 对比:只有插件会在 Harness UI 中实时显示运行、继续桌面会话并使用桌面 Agent 预设;两者都会复用桌面登录

各客户端的等待方式(无需配置):

  • Claude Code 会在后台等待运行结束(dsh_send 返回的 wait_command),并在运行结束时被唤醒一次。
  • Codex 会在 dsh_wait 内等待,每次调用最长 270 s,略低于其 300 s 工具超时时间。等待尚未结束时,只会返回状态,因此 Codex 会再次调用,而不会进行总结。Codex 不会收到 wait_command:它的终端无法唤醒它,因此它只能轮询。
  • Codex 会要求你批准 MCP 工具调用:请批准 dsh-baton 工具。对于无人值守的 codex exec 运行,请添加 --approve-for-me。

工具

工作区:列出、创建、重命名。会话:列出、读取、查看活动、重命名。运行:发送、查看状态、等待、取消、列出运行

运行状态:已排队、运行中、等待中、已完成、失败、已取消,以及 Harness 在运行期间重启时的已中断。忙碌的会话会接收后续(已排队)或引导(插入消息)消息

完整工具参考
工具功能
dsh_list_workspaces列出 Harness 侧边栏中的工作区
dsh_create_workspace将文件夹注册为工作区(如果文件夹不存在则创建);如果已注册,则返回现有工作区
dsh_list_sessions按时间从新到旧列出会话,并显示标题、文件夹和运行状态;可按文件夹或文本筛选。不会列出已归档的会话
dsh_read_session读取某个会话最近的提示词和回复(含工具名称);对于已归档的会话,返回 archived: true
dsh_send发送消息:session_id 用于继续该会话;cwd 或 workspace_id 用于启动新会话(如果 cwd 尚未注册为工作区,则会先注册)。立即返回 run_id。在 Harness 中,该消息会标记为“由 Claude / ChatGPT 从另一个聊天发送”。已归档的会话会被拒绝:请在 Harness 中取消归档,或启动新会话
dsh_status查看运行进度:状态、最近的文本和工具调用、最终回复;当轮次已结束但子 Agent 或任务仍在运行时,显示 waiting_on;有人在运行期间于 Harness UI 中输入内容时,显示 human_interjections;运行因 Harness 重启而中断时,状态为 interrupted
dsh_wait等待运行结束:Codex 每次调用最长等待 270 s,其他客户端为 50 s。若仍在运行,则返回仅包含状态的 timed_out;请再次调用。可在后台等待的客户端应改用 dsh_send 的 wait_command。dsh_status 仅用于查看一次状态,不能用于等待
dsh_session_activity查看会话当前正在执行的内容:运行中的轮次、任意深度的子 Agent、后台任务;对于已归档的会话,返回 archived: true
dsh_cancel通过 run_id 或 session_id 停止会话正在执行的所有内容:轮次、子 Agent、任务(已排队的消息会保留)
dsh_rename_session重命名会话
dsh_rename_workspace重命名工作区(仅更改侧边栏标题;不会移动文件夹)
dsh_list_runs列出最近的运行

CLI

dsh-baton workspaces
dsh-baton new-workspace ~/code/new-app --title "New App"
dsh-baton sessions --cwd ~/code/new-app
dsh-baton send --cwd ~/code/new-app "Scaffold the project"
dsh-baton send --session session-xxxx "Next: add tests"
dsh-baton send --session session-xxxx --mode steer "Interjection: don't change the API"
dsh-baton wait hrun-xxxx              # blocks, prints the final reply; exit 0 on success
dsh-baton status hrun-xxxx
dsh-baton activity session-xxxx       # running turn, sub-agents, background jobs
dsh-baton cancel --session session-xxxx
dsh-baton rename session-xxxx "New title"
dsh-baton rename-workspace ~/code/new-app "New name"

配置

变量默认值含义
DSH_BATON_BACKENDautoauto、host 或 headless
DSH_BATON_HOME~/.dsh-baton套接字和无头模式运行记录
DSH_BATON_SOCKET$DSH_BATON_HOME/host.sock插件套接字路径(两端必须一致);在 Windows 上映射为每用户命名管道
DSH_BATON_WAIT_SCodex 为 270,否则为 50一次 dsh_wait 调用的等待时长;仅在调高客户端的工具超时时设置此值,并确保该值低于超时时长
DSH_BINmacOS 应用内的 dsh,否则为 PATH无头模式的 Harness CLI
DSH_HOME~/.dshHarness 数据文件夹(无头会话读取此文件夹)
DSH_BATON_ACCOUNT10 表示无头模式使用 API 密钥路线
DSH_BATON_PATCHES空额外的无头 --patch 覆盖项,以 : 分隔
无头模式回退详情

当插件无法访问时,MCP 服务会回退到 Harness 的 dsh headless 命令。它只能继续由自身创建的会话(无头模式不会加载 standard 等 Agent 预设),并且新会话不会显示在桌面侧边栏中。默认情况下,patches/account.patch.yml 会复用桌面应用的 DeepSeek 账号登录,因此无需 API 密钥。

## 安装详情

开启插件后会执行的操作。 它会将 MCP 服务复制到 ~/.dsh-baton/app,这是一个固定位置的文件夹;并直接将 MCP 条目写入 ~/.claude.json 和 ~/.codex/config.toml,同时为每个文件保留一个 *.bak-dsh-baton 备份。如果在 PATH 中找到你自己的 Node.js ≥ 22.15,就使用它启动服务;如果没有,则使用 Harness 自带的运行时(Harness 应用的 Node 模式,即 ELECTRON_RUN_AS_NODE=1),因此无需安装其他内容。无论哪种方式,只要安装了桌面应用即可使用,即使 claude / codex 不在你的 PATH 中也没问题。每次 Harness 启动时都会再次运行:如果条目已经正确,或已有可用条目且会启动另一个 dsh-baton 实例,就不会改动它。在 Harness 中,输入软件包名称后,源会自动切换为 npm 注册表(“Official npm registry”,「npm 官方源」),无需重启。如需关闭自动注册,请为 Harness 设置 DSH_BATON_AUTO_REGISTER=0。

npx -y dsh-baton-mcp setup 会在终端中执行相同的注册操作,适用于插件无法注册的情况,或你从 MCP 目录前来安装的情况。如果插件已注册,则不会进行任何更改;如果缺少插件,则会引导你安装。

更新。 Harness 只有官方插件才有更新按钮,因此请依次选择:Plugins → dsh-baton-host → Uninstall,然后选择 Add plugin → dsh-baton-host。发布后的一段时间内,Harness 可能会安装旧版本(pnpm 的 minimumReleaseAge 会暂缓安装刚发布的版本,安装对话框会说明这一点);如需立即获取新版本,请输入版本号:[email protected]。再次开启插件后,它会将 MCP 服务更新到相同版本;新对话会使用该版本。如果两者版本不一致,首次发现问题的工具调用会提示你。

移除。 依次选择 Harness → Plugins → dsh-baton-host → Uninstall,然后运行 npx -y dsh-baton-mcp setup --remove。插件无法区分卸载操作和 Harness 退出,因此会将 MCP 条目留给该命令处理;该命令也会删除 ~/.dsh-baton/app。运行记录会保留在 ~/.dsh-baton 中,直到你将其删除。

从 dsh-bridge 升级。 在 Harness 中,先卸载 dsh-bridge-host,然后添加 dsh-baton-host;开启后,它会替换旧的 dsh-bridge MCP 条目。DSH_BRIDGE_* 变量和已有的 ~/.dsh-bridge 文件夹目前仍可继续使用。工具会改用新的前缀(mcp__dsh-baton__…),因此请更新任何权限允许列表。通过粘贴 ~/.dsh-baton/app/host 添加的 0.4 之前的插件仍可运行,但不会通过 npm 更新:请卸载它,然后按名称添加 dsh-baton-host。

从源代码安装(用于跟进 main 或修改代码):运行 git clone https://github.com/JialaoLiu/dsh-baton.git,然后在 Harness 中从克隆仓库的 host 文件夹添加插件(Add plugin → 粘贴路径)。开启后,它会注册克隆仓库本身,因此代码发布前的更改即可生效。运行 git pull 即可更新。运行 node dsh-baton/src/cli.mjs setup 可在终端中注册该克隆版本。

Windows。 步骤相同;WINDOWS.md 介绍了不同之处(使用命名管道而非套接字文件),以及修复 Plugins 页面无法安装或卸载的问题的方法。

手动注册和 Claude 桌面应用

插件和 setup 会写入与以下命令相同的条目(使用 node 的绝对路径,因为桌面应用启动 MCP 服务时不会使用 shell 的 PATH):

claude mcp add dsh-baton -s user -- "$(command -v node)" "$PWD/dsh-baton/src/server.mjs"
codex mcp add dsh-baton -- "$(command -v node)" "$PWD/dsh-baton/src/server.mjs"

-s user 很重要:如果不使用它,Claude Code 只会为当前项目文件夹注册该服务。

Claude 桌面应用(可选):如需使用聊天应用的连接器(与 Claude Code 分开),请将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json,然后重启应用。它会显示为“Local dev”连接器。

{ "mcpServers": { "dsh-baton": { "command": "/absolute/path/to/node", "args": ["/absolute/path/to/dsh-baton/src/server.mjs"] } } }
## 安全性与限制

仅所有者可访问的通道(macOS 和 Linux 上的 socket 权限为 0600,Windows 上为每用户命名管道),无网络端口,适用 Harness 沙箱和审批机制

须知:运行期间在界面中输入的消息会在运行记录中标记为人工插话,运行记录在 Harness 重启后仍会保留(提前结束的运行会显示为已中断),运行结束时会唤醒一次 Claude Code,而 Codex 每次调用最多等待 270 s

任何以你的操作系统用户身份运行的进程都可以通过 socket 驱动 Harness,效果与直接运行 dsh 相同。dsh-baton 依赖 Harness 0.2.1 系列的内部服务 API,因此 Harness 的主要版本更新可能需要后续发布新版本。

查看更多演示 →

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。