前言¶
在 DeepSeek Harness (DSH) 的开发中,子代理委派是提升任务复杂度的常见手段。默认情况下,这种委派往往涉及对模型 ID 的透传,这可能导致非预期的 Provider 选择或推理强度失控。dsh-routed-subagent 插件旨在解决这一问题,它要求每个委派调用必须显式选择一个通过 model 参数配置的模型策略,以及一个通过 reasoning_effort 参数配置的精确推理努力。该插件强制执行白名单路由,拒绝任意 Provider 或 Model 的透传。
功能¶
该插件主要提供以下能力:
- 白名单模型与推理路由:允许调用者基于本地策略动态选择模型和推理强度。
- 调用验证:在创建子代理前,插件会根据本地策略和
ctx.llm.resolveCallConfig()验证model与reasoning_effort的组合。 - 执行模式支持:支持前台和后台执行,通过
run_in_background参数控制。 - 深度与权限控制:支持配置最大委派深度 (
maxDepth) 和模型策略,未跟踪的代理在深度大于零时将不接收模型权限。 - 配置界面:提供完整的路由器配置设置卡片。
安装与启用¶
安装插件需要指定目标 Profile。
dsh plugin --profile <your-profile> add github:leonardoxr/dsh-routed-subagent#v0.3.0
也可以使用本地打包文件进行安装:
dsh plugin --profile <your-profile> add C:/path/to/dsh-routed-subagent-0.3.0.tgz
安装后,插件会注册为 routed_subagent 工具。
配置方法¶
配置通过 Profile Patch 的 routed-subagent 行进行。启用委派功能需要同时配置 rootModels 和 models。未配置完整策略时,插件仅暴露设置卡片,不注册委派工具。
- id: routed-subagent
config:
toolName: routed_subagent
maxDepth: 2
rootModels: [codex-mini, codex-sol]
models:
codex-mini:
provider: openai-codex
model: gpt-5.4-mini
reasoningEfforts: [low, medium]
maxTokens: 16384
description: 'Mechanical edits, lookups, and summarization.'
codex-sol:
provider: openai-codex
model: gpt-5.6-sol
reasoningEfforts: [medium, high, xhigh]
maxTokens: 65536
description: 'Architecture, multi-step reasoning, and hard debugging.'
spawnableModels: [codex-mini]
在应用界面中,可以通过 Settings → Plugins → Routed subagent 来编辑路由器配置。所有的更改在点击 Save changes 前都会暂存;成功保存后,工具会热重载,并使之前设置的递归权限失效。点击 Reset to composition 可清除所有路由器覆盖。
工具契约¶
注册的 routed_subagent 工具接受以下参数:
| 字段 | 必填 | 说明 |
|---|---|---|
description |
是 | 短显示标签 |
prompt |
是 | 完整的独立子任务提示词 |
model |
是 | 当前调用者上下文中允许的配置模型策略 ID |
reasoning_effort |
是 | 该策略允许的精确努力 ID |
run_in_background |
否 | 通过 Harness Jobs 服务运行 |
前台和后台执行都会回显有效的 { id, provider, model, reasoningEffort } 选择,用于审计。
配置参考¶
配置项及其默认值与含义如下:
| 键 | 默认值 | 说明 |
|---|---|---|
toolName |
routed_subagent |
注册的工具名称 |
enableRunInBackground |
true |
暴露 run_in_background 参数 |
maxDepth |
1 |
正整数绝对委派深度上限 |
rootModels |
必填 | 顶层代理可用的非空策略 ID 列表 |
models |
必填 | 非空的配置模型白名单 |
models.*.provider |
必填 | 已注册的 LLM 提供商路由 |
models.*.model |
必填 | 提供商拥有的精确模型 ID |
models.*.reasoningEfforts |
必填 | 非空的精确努力 ID 白名单 |
models.*.maxTokens |
— | 正数输出 Token 上限 |
models.*.description |
— | 显示给调用者的短路由权衡说明 |
models.*.spawnableModels |
[] |
此模型上的子代理允许调用的策略 ID |
配置是严格的:未知字段、重复 ID、空白名单、不安全的数值以及未知引用都会导致加载或保存失败。
注意事项与安全¶
- 严格配置:不满足上述严格校验规则时,插件将无法正常加载或保存。
- 权限与递归:深度大于零的未跟踪代理不会获得模型权限;子代理仅能调用其选定策略
spawnableModels中列出的模型。 - DNS-rebinding 防御:Harness 的
/api信任围栏旨在防御 DNS-rebinding,而非提供身份认证。任何能访问服务器的人都可以发起其代理可用的任务。请勿将昂贵路由配置在models中,除非你愿意承担该成本。 - 版本差异:README 文档提及
v0.3.0,而package.json显示版本为0.3.1。安装时请参考官方提供的安装命令。
结语¶
dsh-routed-subagent 为 DeepSeek Harness 提供了细粒度的子代理控制能力,通过强制白名单路由和推理努力校验,确保了任务执行的确定性。该插件遵循 MIT 许可证,维护者 leonardoxr。