前言¶
在 DeepSeek Harness (DSH) 中,为子代理选择模型通常有三种常见做法:依赖模型自身调用的工具、基于规则的自动路由,或手动输入命令。这些方法要么结果不可预测,要么缺乏可见的状态反馈。dsh-subagent-model-picker 插件提供了一个确定性的替代方案:通过一个可视化的下拉菜单,允许你手动控制每个会话中所有子代理的模型选择和推理努力,且状态持久化。
插件介绍¶
这是一个 DeepSeek Harness (DSH) 的 Web 插件,由开发者 ringoage 维护。它的核心功能是在 Web 界面中,于主模型选择器旁边提供一个子代理模型选择器。你可以在会话级别决定子代理使用的模型和推理努力,从而实现对子代理路由的精确控制。
核心功能¶
- 手动选择:你可以直接指定子代理使用的模型及其推理努力(如 off / high / max)。
- 可视化 UI:在 Web Composer 的主模型选择器旁边显示下拉菜单。
- 确定性路由:选择与会话绑定,重启后依然生效,每个子代理都会严格遵循你的选择。
- 全局覆盖:通过主机端的
agent/request监听器,覆盖subagent、subagent_fork以及工作流扇出产生的子节点。 - 推理努力支持:为支持推理努力的模型提供对应的菜单选项。
- 默认继承:默认行为是子代理继承主模型的配置。
- 本地化:支持中英文界面。
安装与启用¶
使用官方的插件市场兼容命令安装,或者手动编辑配置文件。
官方命令(推荐)¶
dsh plugin --profile web add github:ringoage/dsh-subagent-model-picker
手动安装¶
在 Web 使用的 Profile 目录(如 .dsh/profiles/web/package.json)中添加依赖并声明 bundle:
{
"dependencies": {
"dsh-subagent-model-picker": "^1.0.0"
},
"dsh": {
"profile": {
"bundles": ["dsh-subagent-model-picker"]
}
}
}
典型用法¶
在 DeepSeek Harness 的 Web 界面中,你会在主模型选择器的左侧看到 Subagent Model(或 子代理模型)下拉框。
1. 点击下拉框,选择一个具体的模型。
2. 如果该模型支持推理努力,下拉框中会显示 Thinking effort 选项,选择对应的级别。
3. 一旦选择,该会话下生成的所有子代理都会使用该模型和推理努力。
4. 若要恢复默认行为,选择 Inherit main model 即可。
适用场景与注意¶
- 适用场景:需要严格控制子代理成本、速度或特定模型行为的场景。例如,希望子代理使用更便宜但推理能力稍弱的模型,而主代理保持高性能。
- 运行范围:该插件仅对 DSH 驱动的进程内子代理生效,包括
subagent、subagent_fork和工作流扇出节点。外部 CLI 代理(如 claude-code、codex)由其自身管理模型选择,不受此插件影响。 - 编辑方式:路由逻辑在主机端运行,即使 Web GUI 未打开,路由也会生效;但选择器的 UI 编辑必须在 Web Composer 中进行。
技术实现¶
插件通过两个协作部分实现功能:
1. Host 端 (lib/index.js):注册一个 agent/request 监听器,通过 subagentDepth 判断子代理请求,并向上遍历父会话链覆盖模型配置。
2. 持久化服务:使用 Typert Remote 服务 (subagent-model-picker) 存储 sessionId 到模型配置的映射,避免依赖 apiProxy 的白名单配置。
结语¶
dsh-subagent-model-picker 并非要取代自动路由插件,而是提供了一种手动覆盖的确定性手段。它将子代理的路由决策权交还给你,适合在需要精确控制子代理行为时作为自动路由策略的补充。更多详情可查看 GitHub 仓库。