dsh-subagent-models:为 DSH 子代理指定模型与思考强度

前言

在 DeepSeek Harness(DSH)里,主会话往往通过 subagent 等委托工具把任务交给子代理执行。子代理的模型与 reasoning effort 通常由 agent-plane preset 里的静态 agentOptions 决定,插件无法直接改写那层组合。若你希望「全局默认用一套模型,某次对话临时换另一套」,又不想改 preset、也不给工具 schema 加参数,就需要在更底层介入请求配置。

下面介绍社区插件 dsh-subagent-models(维护者 Garybot126,分类:模型推理):在设置页配置 profile 级默认,在输入框旁的「⤳ 子代理」胶囊按对话覆盖 provider、model 与 reasoning effort。

这是什么

dsh-subagent-models 用于在 DSH 中自由切换子代理使用的模型及强度。实现上分为 Host 侧(路由存储 + agent/request 覆盖,见 index.js)与 Web 侧(设置页、composer 芯片、全宽编辑卡片,见 client.js);运行时不依赖 dsh 包,无需构建步骤。当前版本为 0.1.0,许可证 MIT(© Gary Gai)。

核心功能

两处配置入口

位置 作用
Settings → 子代理 当前 profile 下,委托子代理使用的全局默认路由
Composer → 「⤳ 子代理」芯片 当前会话的覆盖;「重置为全局」可清除会话级设置

两个选择器都基于运行时的 LLM 目录(ctx.llm):模型按 provider 分组;effort 列表来自该模型在 resolveModelInfo().reasoning.efforts 中声明的档位,不会提供模型不支持的强度。

如何生效

委托工具 subagent 写在 agent-plane preset 中,自带静态 agentOptions,插件不能改写 preset 组合。本插件在下一层通过 agent/request 瀑布规则「替换冻结的调用配置」:

  • 监听器只改写由其他 live Agent 拥有的子 Agent,顶层 Session 不会被改动。
  • 与官方 subagent 工具配合,无需改 preset、无需给工具加模型选择参数。
  • 在子代理下一次请求时生效,无需重启或新开对话。
  • subagent、subagent_fork 以及 Agent Teams 成员均视为委托子代理。

优先级

生效顺序(从高到低):

session preset route → session default → global preset route → global default → no override

未配置任何覆盖时(no override),子代理保持 preset 创建时的组合,行为与未安装插件一致。README 说明:presets[...] 层级已实现并持久化,但当前 shipped preset 尚未向委托工具传入 agentPreset,因此实践中主要生效的是两个 default 层级。

持久化数据

数据文件:$DSH_HOME/plugin-data/subagent-models.json(亦可落在 ~/.dsh/plugin-data/),按 mtime 热加载,手工编辑同样有效。结构示例:

{
  "version": 1,
  "global": {
    "default": { "provider": "deepseek-official", "model": "deepseek-flash", "effort": "low" },
    "presets": {}
  },
  "sessions": {
    "<sessionId>": { "default": { "provider": "...", "model": "...", "effort": null }, "presets": {} }
  }
}

能力披露:仅读写上述 JSON;除 Web UI 使用的 loopback HTTP 前缀 /plugin/subagent-models 外不额外绑定端口;不读取会话内容、凭证或其他文件。

安装与启用

在目标 profile 下执行(命令来自仓库 README):

# npm
dsh plugin --profile <profile> add dsh-subagent-models

# 或直接从仓库安装
dsh plugin --profile <profile> add github:Garybot126/dsh-subagent-models

若插件行未被热加载,安装后需重启 dsh 一次。

插件以当前 dsh 进程权限运行;安装前建议查看 GitHub 源码 与 MIT 许可证,自行评估是否纳入你的环境。

典型用法

  1. 安装并必要时重启 dsh。
  2. 打开 Settings → 子代理,选择 provider、model 与 effort,作为本 profile 下子代理的默认路由。
  3. 在需要临时换模型的对话中,点击 Composer 旁的 「⤳ 子代理」,为该会话设置覆盖;不需要时选「重置为全局」。
  4. 照常使用 subagent 等委托能力;子代理在下一次请求时使用你选定的路由。

README 在 dsh 0.2.1-rc.2(desktop profile)上验证过:无效 model id 会导致子代理失败,清空存储后恢复;使用 deepseek-v4-pro + max 等不同模型可成功;GET /plugin/subagent-models/state 与 POST /plugin/subagent-models/route 返回 200 并更新磁盘 JSON;设置区与 composer 芯片均注册为活跃槽位。

适用场景与注意

适合谁:需要在不改 agent-plane preset、不扩展 subagent 工具参数的前提下,为委托子代理统一或按对话切换模型与 reasoning effort 的 DSH 用户。

与同类插件的关系(README 列举):市场上已有 dsh-subagent-custom(任务类路由)、dsh-subagent-model-picker(按会话选择器)、dsh-subagent-default-model(settings.yaml 默认)、dsh-model-settings(设置面板)、dsh-orquestrator(固定强制路由)等。本插件刻意保持小表面:无任务分类、无额外模型参数、无 preset 编辑,仅 profile 与 conversation 两层、实时目录与一个覆盖点。

限制(务必知晓):

  • subagent_fork 子代理也会被覆盖;fork 与父级共享前缀,换模型会损失 KV cache 复用——若在意性能,可不对 fork 覆盖或保留 preset 自带 agentOptions。
  • 所选模型不支持的 effort 会在适配器校验阶段失败,插件不会静默降级。
  • 覆盖按请求生效;上下文窗口与计量元数据跟随有效路由,子代理创建选项仍保留 preset 中的值。

结尾

dsh-subagent-models 用设置页全局默认加 Composer 会话芯片,在 agent/request 层为委托子代理注入 provider、model 与 effort,与官方委托工具兼容且无需改 preset。社区目录与 DeepSeek / 幻方无官方从属关系,属独立插件生态。

  • 目录页:https://www.skillhub.cn/plugins/Garybot126/dsh-subagent-models
  • 仓库:https://github.com/Garybot126/dsh-subagent-models
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜