前言¶
DeepSeek Harness 的默认 subagent / subagent_fork 工具强制子代理继承父级预设。本插件替换了这一行为,提供了一个自定义的子代理提供者,该提供者的异步子设置调用 agentPresets.mount(childCtx, <preset>),使子代理完全采用目标预设的完整配置:身份、提示部分、技能目录和工具。
简介¶
这是一个全局 DeepSeek Harness 插件,允许从任何会话调度一次性的子代理,完全挂载在任何代理预设上。它支持按调用模型/提供者覆盖,并提供模型可用性预检。
核心功能¶
- 后台默认运行,并行分派:调用立即返回任务 ID;对话可继续执行其他工作或并行调度更多子代理;中止对话不会取消子代理(需使用
job_kill停止)。 - 完全预设挂载:子代理运行在目标预设的完整配置下,而非身份的简单复制。
- 按调用模型/提供者覆盖:通过
model/provider参数将子代理的 LLM 调用路由到与当前会话不同的模型。 - 模型可用性预检:无效模型会快速失败,并返回提供者的候选列表,而非模糊的子代理失败。
- 官方子代理生态系统:支持一次性的生命周期事件、UI 行和轨迹。
- 幂等的提供者注册:多个预设可以挂载同一行;宿主机平面提供者注册表不会重复。
- 外部引擎支持:除了默认的
dsh内核,还支持codex、claude、codebuddy。
安装与启用¶
该插件是纯 ESM 包,通过挂载包目录安装。
- 挂载包目录
插件静态导入@deepseek-ai/*包,这些包通过 Node ESM 从包位置解析。需要在插件目录中创建指向 Harness 安装的node_modules符号链接。
Windows (BAT):
mklink /J "<plugin-dir>\node_modules" "<harness>\resources\host\node_modules"
POSIX (Linux/macOS):
ln -s "<harness>/resources/host/node_modules" "<plugin-dir>/node_modules"
- 添加到配置文件
将包添加到配置文件的dsh.profile.bundles列表中(例如<dshHome>/profiles/web/package.json)。
{
"dependencies": { "dsh-routed-subagent": "link:<plugin-dir>" },
"dsh": { "profile": { "bundles": ["...", "dsh-routed-subagent"] } }
}
cordis.patch.yml 文件在包内,注册插件;当包列在 bundles 中时,该层会自动应用。
典型用法¶
subagent_routed 是主工具。
后台一次性运行(默认):
subagent_routed(prompt="Use the dev engineer standard to review this repository", preset="dev", description="dev review")
分叉(继承当前会话的已完成回合):
subagent_routed(prompt="Continue the review", preset="dev-reviewer", description="follow-up", fork=true)
可继续(持久化子代理 ID,稍后恢复):
subagent_routed(preset="dev", prompt="Audit this repo", description="audit", continuable=true)
参数行为:
- preset 无效/无法解析:报错,并附带可用预设 ID 列表。
- model / provider:按调用模型/提供者覆盖(快速失败时会列出候选)。
- max_tokens:子代理 LLM 调用的输出/Token 限制。
- tool_filter:在预设工具之上进行拒绝掩码({ deny: string[] })。
- fork + continuable:支持(可继续的分叉会播种父级已完成的回合)。
注意事项¶
- 仓库:仅限 GitHub,未发布到 npm。
- 兼容性:目标 DeepSeek Harness rc.7+(该插件依赖的异步子设置是较新的 Harness 行为)。
- Codex 引擎:需要登录 (
codex login) 和approval_policy: never。 - CodeBuddy 引擎:需要安装,且默认模型为
hy3(可通过config.codebuddyModel/$CODEBUDDY_MODEL覆盖)。 - Claude 引擎:
continuable功能取决于官方 Anthropic API。如果 Claude CLI 配置了自定义后端(例如指向第三方/本地端点的AnthropicBaseURL),sessionId + persistSession可能会挂起或不可用。可靠的恢复需要将AnthropicBaseURL指向官方 API。
结语¶
该插件为 DeepSeek Harness 提供了灵活的子代理调度能力,允许在保持 DSH 插件化架构的同时,通过外部引擎(如 codex、claude、codebuddy)扩展子代理能力。