Blog · 指南
DeepSeek Harness 子代理:不离开 dsh 的多 Agent 玩法
2026 年 8 月 14 日 · dshbase
DeepSeek Harness 内核上是一个单 Agent 循环。但一个只能跑一个大脑的 harness 很快就施展不开,官方仓库的讨论——外加一波社区插件——一直在悄悄补全多 Agent 的故事。最终成形的不是一个死板的「spawn 子代理」API,而是一套可以自由组合的预设、fork 与消息通道。下面是这些零件到底怎么拼,全部对照 dsh 0.1.0-rc.6 和当下真实发货的插件验证过。
Agent 预设:按角色拆子代理
最干净的入口是预设(preset)。dsh 不是只有一个臃肿的助理,而是允许插件声明一个独立的 Agent 角色,自带工具与指令。插件目录里的具体例子是 dsh-data-agent,它「定义了一个专用的 Data Agent 预设,让 AI 替你查询、更新、分析数据」。你不是把数据技能硬塞给编程 Agent,而是拿到第二个专精的 Agent,遇到数据型任务时切过去。这就是子代理最朴素的样子:靠预设做专业化,而不是堆一个万能人设。
基于 fork 的侧会话
要做轻量的并行活儿,得认识 dsh-sidechain。它加了 /side 持久侧会话和 /btw 一次性侧问,两者都「在临时 fork 里运行,不写入主会话历史」。这有两点意义:主会话的只追加日志保持干净(你的轨迹依旧可审计),同时 fork 继承了父会话的上下文,侧任务能看到你停在哪。这是我们实测里最接近原生「为这点小事 spawn 个子代理」的能力——在 dsh 0.1.0-rc.6 上是 git-build 状态,也就是从源码构建而非 npm。
跨会话与跨实例消息
一旦有了不止一个 Agent,它们就得能对话。两个插件覆盖两个尺度:
- dsh-crosstalk——「本机上任意会话可互相列出、互发消息,Claude Code 风格」。同机本地扇出。
- dsh-interconnect——「跨实例消息 / 事件交接」,靠 interconnect 服务 + 工具实现。这是能跨进程、跨机器的那一个。
两者加起来,能把一群 dsh 实例变成能派活、能回传的协作体——监督者把工作发给工人,工人贴回结果,全程不用在浏览器标签之间复制粘贴。
跨 Agent 共享记忆
消息在 Agent 之间搬任务;记忆让它们保持一致。dsh-sgme 就是那个「通过 HTTP 实现多 agent 共享长期记忆」的桥。如果每个子代理只记得自己的会话,那每次交接都会丢上下文。有了共享的 SGME 存储,Agent A 学到的东西,Agent B 就能查到。它还很早期(星数低),但在 dsh 0.1.0-rc.6 上验证为 ok,而且是唯一一个直接瞄准多 agent 场景的记忆插件。
模型切换:另一个「多」的杠杆
子代理不只是「几个 Agent」的问题,也是「每个 Agent 跑哪个模型」的问题。dsh 的模型选择器天生与供应商无关,所以最自然的多 Agent 打法是:路由用便宜/快的模型,重活用强模型,按会话或按任务切换。因为模型在 dsh 里是一等公民、可随意换(选择器是核心功能而非插件),「子代理」既可以指「同一个 harness、换模型」,也可以指「同一个模型、换角色」。把它跟预设一结合,就是一套实用的分工:小模型跑路由 Agent,中模型跑数据 Agent,大模型跑编程 Agent。
拼起来
目前还没有一条命令能给你一个成型的子代理系统——零件仍是社区长出来的、参差不齐。但在 dsh 0.1.0-rc.6 上这套打法已经能跑通:
- 用预设定义角色(
dsh-data-agent)。 - 用fork跑一次性并行活(
dsh-sidechain)。 - 用消息把 Agent 串起来(本机
dsh-crosstalk,跨实例dsh-interconnect)。 - 给它们共享记忆(
dsh-sgme)与按角色的模型。
这些都不需要 fork 内核——全是 Cordis 内核之上的插件,这正是它出现得这么快的原因。要看这些及相关插件当前、实测过的阵容(含安装命令),从插件目录开始。