dsh-subagent-bridge:在 Codex 与 DeepSeek Harness 之间搭 Subagent 桥

前言

在 DeepSeek Harness(DSH)里跑多会话、多模型并不稀奇;难点往往出在「外面还有一个主智能体」——例如 Codex CLI 或 Claude Code——你希望它像派发 subagent 一样把活交给 DSH,等一轮结束只拿最终答复,而不是自己轮询 UI 或拼 HTTP。反过来,DSH 里的 agent 有时也要把一段工作交回 Codex 或 Claude,并能在同一线程里续写。若没有统一桥接层,两边各写一套集成,权限和会话状态也很难对齐。

下面介绍社区插件 dsh-subagent-bridge(维护者 Dogtiti,分类:工作流)。它在 Harness 宿主内运行,通过本机 loopback 上的 MCP 端点,把「一次工具调用、一次答案」和并行 worker 等模式暴露给外部 CLI;同时向 DSH agent 注册反向派发工具。插件使用 Harness 公开的宿主服务(如 sessionController、sessions、workspaceRegistry、userQuestions),不依赖凭据文件或伪造 cookie。

这是什么

dsh-subagent-bridge 的定位是:在 Codex / Claude Code 与 DeepSeek Harness 之间提供 Subagent 形态的桥。Codex 可通过 MCP 在 DSH 上拉起 worker 并取回最终 assistant 文本;DSH 侧 agent 也可通过 codex_dispatch、claude_dispatch 把任务交给 Codex 或 Claude Code(README 强调可恢复线程)。仓库许可证为 MIT;package.json 中当前版本为 0.21.0,要求 DeepSeek Harness ^0.2.1-0。反向能力需要 codex 和/或 claude 在 PATH 中。

核心功能

MCP 与一次调用一次答案

插件启动后在 127.0.0.1:47821 监听,并将端点信息写入 ~/.dsh/bridge/endpoint.json(目录权限 0700,文件 0600)。文件形如:

{
  "url": "http://127.0.0.1:47821/mcp/<token>",
  "port": 47821,
  "token": "<token>",
  "pid": 12345,
  "startedAt": "2026-10-22T12:30:00.000Z"
}

对外侧 agent 而言,dsh_task 会打开会话、投递消息、阻塞到本轮结束,只返回最终 assistant 文本(并附带 operationId、requestId、usage 以及 worker 实际使用的模型)。

并行 worker 与跟进

  • dsh_spawn:异步派发,立即返回 task_name 与 sessionId。
  • dsh_wait:阻塞直到指定 worker 中任一进入终态;可设 timeoutMs。
  • dsh_followup:在已有 worker 上继续一轮,复用上下文。
  • dsh_close:关闭 worker 并释放槽位(会话本身仍保留)。

README 还提供更低层的 dsh_dispatch / dsh_read_result(长轮询 assistant 文本)以及 dsh_list_workers、dsh_list_sessions(仅元数据,不含消息内容)。

按调用指定模型与工作区

每次调用可指定 provider/model;省略 provider 时沿用当前默认 provider。可选 reasoningEffort(视模型而定)。切换发生在首条 prompt 之前,不修改 profile 默认模型。

工作区与 DSH 项目分组一致:可通过 cwd 与 workspace(布尔或命名)把新会话挂到已有项目或新建项目;缺失目录会先创建。工作区相关失败不会导致整次派发失败。

排队与 steer

DSH 在「会话忙时发消息」只有两种行为,由 mode 控制:

mode 行为
queue(默认) 等当前 turn 结束,再作为新 turn 投递
steer 插入当前 turn,模型在下一步看到

文档注明:steer 不会打断正在执行的工具调用;也不会新开 turn,桥接层会等当前 turn 结束。对已在运行的会话,dsh_task 除非带 mode: "steer" 否则会拒绝。

无人值守默认

委派给 worker 的任务默认追加一段 standing instruction:缺少信息或需要选项时,选最合理默认、完成任务,并用一行说明假设,不要 ask_user_question。可用配置关闭或改写(见下文 assumptionPolicy)。若 worker 仍提问,dsh_wait 可能报告 pendingQuestion,可用 dsh_answer 批量提交;README 说明 DSH 的 userQuestions.answer() 对仍在工具调用内阻塞的问题能力有限,更推荐依赖 assumeDefaults 策略。

反向派发与循环防护

DSH 部署内的 agent 可使用 codex_dispatch、claude_dispatch 把活交给 Codex 或 Claude Code。插件还带 loop guard(深度与速率限制),避免两个 agent 互相委派形成环。

安装与启用

依赖:DeepSeek Harness ^0.2.1-0;反向功能需要 Codex CLI(codex)和/或 Claude Code CLI(claude)在 PATH 中。

安装步骤(与 README 一致,获取源码方式请自行从 GitHub 仓库 取得本地目录):

  1. 在 DSH 中打开 Plugins → Add,选择插件所在目录。
  2. 启动后插件监听 127.0.0.1:47821,并写入 ~/.dsh/bridge/endpoint.json。

连接 Codex

codex mcp add dsh-bridge --url "$(node -p "require(process.env.HOME+'/.dsh/bridge/endpoint.json').url")"
codex mcp list                # verify
codex mcp remove dsh-bridge   # remove

桌面端与 CLI 共用 ~/.codex/config.toml。token 在 URL 路径中,无需额外环境变量;也支持 Authorization: Bearer <token>。

连接 Claude Code

claude mcp add --transport http dsh-bridge "<the url above>" --scope user

将 <the url above> 替换为 endpoint.json 中的 url 字段。

可选配置示例(中文假设策略):

config:
  assumptionPolicy: "如果缺少必要信息,直接采用最合理的默认做法做完,并在结果里用一行说明你的假设。"

(assumeDefaults: false 可关闭默认 standing instruction;若 prompt 已提及 ask_user_question 则跳过追加。)

典型用法

同步:等一轮结束再拿答案:

dsh_task({ prompt: "Review the error handling in src/bridge.ts", cwd: "/repo" })

异步:先派发多个 worker,再统一等待:

dsh_spawn({ task_name: "audit_api", message: "…", cwd: "/repo" })
dsh_spawn({ task_name: "audit_ui",  message: "…", cwd: "/repo" })
dsh_wait({ targets: ["audit_api", "audit_ui"], timeoutMs: 240000 })

在已有 worker 上追加约束(steer):

dsh_followup({ worker: "w1", message: "Only touch files under src from here", mode: "steer" })

指定模型:

dsh_task({ prompt: "…", model: "zai-coding-cn/glm-5.3", reasoningEffort: "max" })
dsh_spawn({ task_name: "review", message: "…", model: "opencode-go/deepseek-v4.1-flash" })

适用场景与注意

适合谁: 已在 DSH 上跑 Harness、同时用 Codex 或 Claude Code 作为主控的开发者;需要「主 agent 派发子任务到 DSH、只读最终结果」,或需要在 DSH 内把一段工作交回 Codex/Claude 并控制并行与跟进。

务必注意:

  • 插件在 当前 DSH 进程权限 下运行,安装前请自行审阅 源码 与 MIT 许可证。
  • MCP 仅本机 loopback;端点 token 写在 URL 或 Bearer 头中,请按本机安全习惯保护 ~/.dsh/bridge/。
  • 社区目录 skillhub.cn 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系;DSH 生态本身是「一切皆插件」的扩展模型,本文事实以仓库 README 与 package.json 为准。

结尾

dsh-subagent-bridge 把 DSH 会话能力收成 MCP 工具面:同步 dsh_task、并行 dsh_spawn / dsh_wait、可指定模型与工作区,并支持向 Codex / Claude 反向派发与循环防护。若你在搭「CLI 主控 + Harness worker」的双向工作流,可从目录页与仓库 README 对照工具表逐项接入。

  • 目录页:https://www.skillhub.cn/plugins/Dogtiti/dsh-subagent-bridge
  • GitHub:https://github.com/Dogtiti/dsh-subagent-bridge
羽毛球分组比赛记分
小程序二维码

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

小夜