dsh-switchboard
给 DeepSeek Harness 的每个子智能体和队友,接通各自的模型
主 Agent 用一个模型,派出去的活换一个:贵的活给强模型,琐碎的活给便宜的
为什么 · 怎么工作 · 能力 · 安装 · 界面 · 边界
成员模型面板
对话头部点「模型」打开的成员面板,每一行标出该成员当前的生效状态与实际模型
为什么需要它
原生工具做不到这件事:
| 工具 | 模型字段 | 问题 |
|---|
spawn_teammate | 无 | 队友一律继承主 Agent 的路由 |
subagent | 有 | 每次调用手写参数,且要过白名单 |
这个插件把它变成一块接线板:一个对话里的成员都在板上,每人接一条线路,点一下就换。
怎么工作
每个成员实际用哪个模型,按这张表从前往后找,命中即止:
| 顺序 | 来源 | 命中条件 |
|---|
| 1 | 点名指定 | members[队友名],或 members['#<子会话 id>'] |
| 2 | 本对话默认 | sessions[<本对话 id>] |
| 3 | 规则 | 队友名精确 → 队友名包含 → 委派描述包含 |
| 4 | 全局默认 | defaultRoute |
| 5 | 继承 | 主 Agent 当前的路由 |
命中的是哪一层,界面会直接写出来,不用猜。
能力
| 能力 | 说明 |
|---|
| 点成员换模型 | 头部「模型」入口列出全部队友与子智能体,点一行即换 |
| 按规则批量指定 | 一条规则命中多个成员,匹配名字或任务描述,子串、不区分大小写 |
| 按模型选档位 | 规则和全局默认都能指定推理档位,选项来自模型自己声明的档位;换模型时自动调和,新模型不认的档退回「自动」 |
| 按对话设默认 | 首次派活问一次,之后整个对话沿用,不再打扰 |
| 运行时生效 | 运行中的成员下一步就换,不需要重启 Harness |
| 一键全换 | 本会话所有成员切到同一模型,或一键退回继承;批量操作要二次确认,成功后 5 秒内可撤销 |
| 点名表清理 | 面板底部列出点名表全部键(含已结束、列表里看不见的成员),可单条恢复继承或整表清空 |
| 面板内新建 | 直接创建队友或子智能体,首个请求就跑在所选模型上 |
| 规则试算 | 规则行尾填个成员名或任务描述按「试算」,下发前就看它会命中哪一层、用哪个模型,未命中直接说「将继承主 Agent」 |
| 失败可见 | 换不成时面板顶部红条讲清「谁、想换成什么、为什么没成」,可展开看历史,可关掉 |
| 失败不误伤 | 档位不兼容时保留继承路由,子会话照常用原模型跑;子会话不会被打死 |
安装
dsh plugin --profile web add "<本插件目录>"
首次安装后重启一次 Harness,浏览器端界面才会加载。此后改代码不需要重启。
配置
配置写在 $DSH_HOME/storages/dsh-switchboard/rules.json,保存即时生效。
{
"rules": [
{ "match": "cheap", "provider": "cpa-trae", "model": "trae/deepseek-v4.1-flash" }
]
}
成员点名以设置文件为准;patch 里的 members 仅作初始值,界面或 /spawn 写过之后就只认文件。要增删成员请走面板或接口,别改 patch。
完整字段与 HTTP 契约
字段表与写入语义、规则结构、路由对象、九个 HTTP 端点、创建路径的接口差异、
模型档位元数据、规则试算、失败可见性,全部在 docs/ARCHITECTURE.md。
界面
| 入口 | 位置 | 用途 |
|---|
| 「模型」按钮 | 对话头部操作区 | 点成员换模型、批量换、本对话默认、新建成员 |
| 「子智能体模型」卡片 | 插件详情页 | 规则编辑与试算、生效范围、最近委派与操作记录、失败红条、点名表管理 |
成员状态分三种,界面直接标出来:运行中(下一步生效)、待唤醒使用(下次唤醒生效)、未运行(下次创建生效)。
更多截图
设置卡片
插件详情页的规则卡片:每条规则显示匹配词、目标模型、推理档位,以及最近命中的成员
模型下拉
渠道下拉按内容自适应宽度,长渠道名不截断
首次询问
一个对话里第一次派活时问一次,选完就是本对话默认
生效时机
换模型不需要重启 Harness。三种状态各自的生效点:
| 成员状态 | 何时用新模型 |
|---|
| 运行中 | 本轮后续步骤 |
| 空闲驻留 | 下一次请求 |
| 已回收 | 下次被唤醒 |
只有两种情形需要重启:首次安装,或改动 package.json 的 dsh.client 段。
边界
- 只管本地子会话。外部后端(Codex、Claude Code、ACP)没有本地 Agent,管不到。
- 主 Agent 不受影响。
- 换模型不改 provider 的输出上限,
maxTokens 仍由 provider profile 决定。
- 与 monkey-patch
spawnTeammate 的同类插件互斥,只启用一个。
许可
MIT,见 LICENSE。
维护者文档(架构、脚本、决策记录)从 AGENTS.md 的文档地图进入。