dsh-subagent-model-director
DeepSeek Harness plugin: smart subagent model assignment - model profiles (intelligence/speed/tags), tag-first matching, load balancing
- Stars
- 0
- Language
- JavaScript
- Created
- Oct 4, 2026
- Updated
- Oct 7, 2026
Introduction
dsh-subagent-model-director
DeepSeek Harness 插件:按智能分级与并发数为每个 subagent 挑选模型。
产生 subagent 的那个会话(父会话)的当前模型负责判断任务复杂度;本插件把「模型档案表(智能分级 + 并发数)+ 复杂度判据 + 分配策略」注入父会话的系统提示词,并提供 subagent_assign_model 工具做批量、并发感知的分派。
安装
要求:DeepSeek Harness ≥ 0.1.7-rc.1(依赖宿主的 settings 桥、tools API 与 subagent 组合)。
方式一:DSH 插件管理器(推荐)
-
打开侧栏 插件 页 → 点击 安装(Install bundle);
-
输入仓库地址:
github:fred-chen/dsh-subagent-model-director(或完整地址
https://github.com/fred-chen/dsh-subagent-model-director.git) -
确认安装后插件默认启用;若宿主提示兼容性,按界面指引处理。
方式二:CLI
dsh plugin --profile <你的profile名> add github:fred-chen/dsh-subagent-model-director
方式三:手动 pnpm
cd ~/.dsh/profiles/<你的profile名>
pnpm add github:fred-chen/dsh-subagent-model-director
然后编辑该 profile 的 package.json,把包名加入 bundle 列表:
"dsh": {
"profile": {
"bundles": [
"...",
"dsh-subagent-model-director"
]
}
}
安装后配置
- 重启 DSH(新 bundle 建议重启一次确认加载);
- 确认侧栏 插件 页出现 subagent-model-director 且已启用;
- 前置条件:先到 设置 → 插件 → Subagent → Model selection 启用并勾选允许子代理使用的模型——本插件的模型档案只能从这个全局允许列表中选择;
- 打开 插件 → subagent-model-director → Configure:
- 添加模型档案:从下拉框选择 provider/model,标注智能程度(高/中/低)与并发数(该模型可同时运行的任务数),可选填 reasoning effort;
- 可选:添加关键词规则(强信号:命中关键词优先指定该档案)、切换提示词注入模式(简洁/详细/关闭);
- 用页面底部的 分派测试 验证规则链(纯代码模拟,不调用大模型;一行一个任务,可加
high:/medium:/low:复杂度前缀); - 保存后,新会话即生效——父会话的系统提示词会出现档案表与分配策略,父模型据此为每次
subagent委派填写路由。
从旧版(tag/速度/负载均衡)升级:旧的
tags/speed/requireTagMatch/loadBalancing/defaultProfileId字段会被自动忽略,档案保留(并发数默认 1),在设置页点一次保存即可把过时字段从配置里清掉。
卸载 / 更新
- 卸载:插件页删除该 bundle,或
pnpm remove dsh-subagent-model-director(profile 目录内); - 更新:
pnpm add github:fred-chen/dsh-subagent-model-director#main后重启;发布 npm 后可直接pnpm add dsh-subagent-model-director@latest。
分派模型(v0.3.2)
模型只按智能程度分级(高 / 中 / 低),每个模型声明并发数(可同时运行的任务数):
- 高级优先:高级模型能做低级模型的任何任务——任务默认交给"仍有空位的最上级模型";
- 难者先占高级算力:批量并行任务时,会话主模型按复杂程度判断(高/中/低),难的先占高级空位、简单的顺延到下一级。任务多到把高级都占满时,简单任务自然落到低档;
- 满载顺延:某级模型并发数满 → 顺延下一级;
- 全部满载:任务数超过所有模型并发总数 → 按难度与各模型并发份额(负载/并发比例)分配剩余任务;
- 关键词规则(可选强信号):任务文本命中关键词 → 优先指定目标档案(该档案有空位时;多条命中按优先级)。
模型档案
| 属性 | 说明 |
|---|---|
| Provider / Model | 只能从全局允许列表中选择,保存与运行时都会校验 |
| 智能程度 | 高(深度推理/计划/设计/创造)· 中(代码分析/审查/推断)· 低(检索/整理) |
| 并发数 | 该模型可同时运行的任务数量;满载后顺延下一级模型 |
| Reasoning effort | 可选;留空 = 使用所选模型的默认档 |
| 启用 | 关闭的档案不参与分配 |
复杂度判据(注入父会话)
- 需要深度推理 / 创造性 / 计划设计的任务(架构方案、复杂代码设计、创造性写作、跨源综合)→ 复杂度:高。
- 需要分析、审查与推断的任务(代码审查、根因排查、多源比对核验)→ 复杂度:中。
- 检索、事实核对、格式化、机械性整理等常规任务 → 复杂度:低。
分派是怎么决定的(三层)
| 层 | 谁决策 | 在哪里发生 |
|---|---|---|
| 1. 主路径 | 大模型(父会话当前模型) | 会话内:模型读到注入的档案表(分级+并发)+ 复杂度判据 + 分配策略,自行判断复杂度并填写 provider/model/reasoning_effort |
| 2. 会话内兜底 | 大模型判断 + 代码分配 | 会话内:模型先调用 subagent_assign_model 一次性传入全部计划委派(任务+复杂度),工具按"高级优先→难者先占→满载顺延→溢出按难度与并发份额"返回每个任务的路由,并更新并发计数;模型原则上采纳 |
| 3. 设置页"分派测试" | 纯代码(无模型) | 设置页:与第 2 层相同的分配内核做规则模拟,用于预览规则链效果(不计入并发统计) |
统计口径(诚实说明):并发计数 = subagent_assign_model 的分配次数(30 分钟半衰,进程内存活,重启清零)。分配策略会指示父模型批量委派前先调用该工具,使工具成为记账点;未走工具的直接委派不会计入——计数不足只会削弱均衡效果,不会分错路由。实时并发数刻意不写入系统提示词(避免每次委派都打断 KV 前缀复用),由工具按需返回。
组成
- 设置页(侧栏 插件 → subagent-model-director → Configure):档案/规则增删改、全局开关、提示词注入模式、批量分派测试;通过
/api/dsh-subagent-model-director/*桥接读写,revision 乐观锁防覆盖。 - 系统提示词段落(
subagent-model-director:profiles):档案表(分级 + 并发)+ 复杂度判据 + 分配策略 + 关键词规则(按优先级排序;停用/失配目标的规则不渲染);guidanceMode可选 简洁/详细/关闭。 subagent_assign_model工具:批量分派——传入全部计划委派,返回每个任务的路由与理由,并更新并发计数。lib/core.js:纯逻辑核心(无依赖),53 项场景单测覆盖。
注意
subagent_fork不能选择子模型路由(继承父会话以复用 KV 前缀),分派只对subagent(spawn 等支持agentOptions的后端)生效。- 全局允许列表变更后,失配档案会在设置页标黄并在运行时跳过。
- 档案的 reasoning effort 会自动归一化为小写(如
Max→max):宿主各模型适配器对 effort 的校验是大小写敏感的。 - 提示词段落是动态的:修改配置会改变父会话请求前缀(与 free-search 等动态段落同样的权衡)。
开发
git clone https://github.com/fred-chen/dsh-subagent-model-director.git
cd dsh-subagent-model-director
npm test # 纯逻辑核心测试(无需 DSH 运行时)
零构建、零运行时依赖:lib/core.js 是纯函数核心,lib/index.js 是宿主插件(依赖宿主提供的 dsh-settings / dsh-tools / schemastery),lib/client.js 是浏览器端设置页。