DeepSeek Harness 子代理怎么用?DSH plugin 的 subagent 委派与提供方
DeepSeek Harness 的 subagent seam 让一个 agent 把工作委派给子 agent——它是可选能力、不属于 agent loop,而且同一上下文可以共存多个提供方、按名称注册在 ctx.subagents,所以你能为不同任务挑不同后端(来源)。
DeepSeek Harness 子代理是什么:把工作委派出去
子代理就是把一块相对独立的工作外包给另一个 agent;与 bash 那种「只允许一个执行器」的接缝不同,subagent 可在同一上下文共存多个实现(来源)。 要点:
- 它是可选能力 — 不属于 agent loop,因此类型定义不在 core 里。预期:不用它也能正常工作,用了才需要相应提供方。
- 按名称注册、可多实现共存 — 注册表遵循 LLM 适配器注册表的方式。预期:你可以同时挂多个后端,按名字选。
- 面向模型的 Consumer 有两类 —
dsh-tool-subagent负责按提供方委派;dsh-tool-subagent-control可选地提供全局的send_message、interrupt_agent与list_agents控制工具。预期:前者发起委派,后者做控制。 - 父子关系可被发现 — 同一个
ctx.subagents服务通过 parent 目录发现直接 child,并通过父目录递归发现后代。预期:能追踪一个委派树,而不只是单层。
DeepSeek Harness 有哪些 subagent 提供方可以选
官方给出六个兄弟包作为 Service Provider,覆盖进程内派生、fork,以及面向 ACP / Codex / Claude Code / DeepSeek Harness SDK 的后端(来源)。 逐个认识:
dsh-subagent-spawn-in-process— 进程内派生。预期:轻量、启动快,适合短委派。dsh-subagent-fork-in-process— 进程内 fork,继承当前目录上下文。预期:想沿用当前工作目录与状态时用。dsh-subagent-acp— 面向 ACP 后端。预期:接入支持 ACP 的 agent。dsh-subagent-codex— 面向 Codex。预期:复用 Codex 作为子代理。dsh-subagent-claude-code— 面向 Claude Code。预期:复用 Claude Code 作为子代理。dsh-subagent-dsh-sdk— 面向 DeepSeek Harness SDK。预期:与其他 DeepSeek Harness 集成打通,注册后可像其他后端一样按名调用。
要挂某个后端,通常意味着相应插件进入你的配置树。想找社区里的 subagent 相关插件,可以先进 DSH Plugin Hub 浏览。
DeepSeek Harness 一次性与可继续子代理、能力对不上会报错
提供方通过一个能力描述符声明启动时功能,服务在委派给 start() 之前即行校验——请求依赖提供方不具备的功能会被明确拒绝,而不是接受后静默忽略(来源)。 关键点:
- 区分两条路径 — 一次性委派走
SubagentProvider.start(),由提供方组合子 agent;可继续子代理由继续性执行管理器自行组合,走prepareContinuable。预期:要能接着聊就用可继续路径。 - 五个能力开关 —
SubagentCapabilities含agentOptions、outputSchema、depthLimit、toolFilter、persona,与启动请求选项一一对应。预期:选提供方前先看它支持哪些。 - 不支持就报错 — 需要的能力缺失时会抛
SubagentError('UNSUPPORTED_CAPABILITY')。预期:遵循「fail loud、不静默降级」,问题早暴露。 - 查看现有子代理 —
subagentCatalog投影会从会话事件流提取SubagentCatalogEntry[],每条含子级 id、创建时间、模式与标签;无法判断模式的历史条目标为mode: 'unknown'。预期:能列出一个会话里派出去的子代理。
注意事项与常见问题
- 能力要先对齐:不同提供方支持的能力不同,先看
SubagentCapabilities再发请求,能省掉一次报错。 - 一次性别当可继续用:需要后续追问就要走可继续路径,否则子对话接不上。
- 历史条目可能未知模式:
mode: 'unknown'是保身份展示、但不保证可继续执行,别据此重试。 - 子代理也会产生会话与任务:长委派同样涉及后台任务与会话记录,见《DeepSeek Harness 长任务怎么办》与《DeepSeek Harness 会话记录在哪、怎么查》。
- 控制工具是可选的:
send_message、interrupt_agent、list_agents来自可选的dsh-tool-subagent-control,没装就没有这几个工具。
常见问题
DeepSeek Harness 的 subagent seam 让一个 agent 把工作委派给子 agent。它是可选能力、不属于 agent loop,因此类型定义不在 core 里;你可以把它理解成「把一块相对独立的工作外包出去」。
DeepSeek Harness 的 subagent 与 bash 最大的不同是复用方式:bash 只允许一个执行器,而 subagent 在同一上下文里可以共存多个提供方实现,并按名称注册在 ctx.subagents,注册表的行为更像 LLM 适配器注册表。
DeepSeek Harness 官方提供的 subagent 兄弟包包括 spawn-in-process、fork-in-process、acp、codex、claude-code 与 dsh-sdk 六种,分别对应进程内派生、继承目录的 fork,以及面向 ACP、Codex、Claude Code 与 DeepSeek Harness SDK 的后端。
DeepSeek Harness 的 subagent 服务会在委派给提供方之前校验能力标记:请求需要而所选提供方不具备的能力会被明确拒绝(SubagentError('UNSUPPORTED_CAPABILITY')),而不是接受后静默忽略,遵循「fail loud,不静默降级」的规则。
可以通过 DeepSeek Harness 的 subagentCatalog 投影查看:它会从会话事件流里提取 SubagentCatalogEntry[],每条含子级 id、创建时间、模式与由模式确定的标签;无法判断所属模式的历史条目会标记为 mode: 'unknown'。
相关术语
- subagent seam
- subagent seam 是 DeepSeek Harness 中把工作委派给子 agent 的可选能力接缝;它不属于 agent loop,类型定义独立在子系统页面中。— DeepSeek Harness 官方文档 - Subagent
- ctx.subagents
- ctx.subagents 是子代理服务,允许同一上下文共存多个按名称注册的提供方实现,并通过内部激活管理器处理可继续子代理的编排。— DeepSeek Harness 官方文档 - Subagent
- SubagentCapabilities
- SubagentCapabilities 描述某个提供方在启动时支持哪些能力(agentOptions、outputSchema、depthLimit、toolFilter、persona);服务在委派前校验,缺能力的请求会被明确拒绝。— DeepSeek Harness 官方文档 - Subagent
- continuable subagent(可继续子代理)
- 可继续子代理由继续性执行管理器自行组合,通过 SubagentProvider.prepareContinuable 路径开启,与一次性 start() 路径不同;它让子 agent 的对话可以被接续。— DeepSeek Harness 官方文档 - Subagent
来源
- DeepSeek Harness 官方文档 - Subagent· deepseek-harness
- DeepSeek Harness 官方文档 - 工具 Schema 目录· deepseek-harness