Bundle
dsh-delegation-suite
Ranked subagent delegation for DeepSeek Harness: role-based model routing with failover, per-route reasoning effort, fork delegation, transparent model labels, and a visual route editor in Settings.
- Source
- wenheguo2
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 10 days ago
Readme
# dsh-delegation-suite
**DeepSeek Harness 智能委派套件**:按任务角色给子代理分配最强模型、失败自动互备切换、每个子代理可独立设置思考强度、名字里直接看到用的什么模型——全部可视化配置,不用改文件。
## 能力一览
| 能力 | 说明 |
|---|---|
| **角色路由 + 失败互备** | `delegate_ranked` 工具按任务类型从路由表选最强模型;遇到欠费、限流、鉴权失败、传输错误、跑崩,自动换下一个模型继续,并返回完整尝试日志 |
| **fork 委派** | `fork: true` 让子代理继承当前对话上下文(追问分析、基于本线程的 review),同时仍然按角色路由模型——不再绑死会话模型 |
| **模型透明** | 每个委派的子代理名字自动带 `[provider/model] 角色 委派` 标签,子代理树里一眼看清谁在用哪个模型(见下图) |
| **行内思考强度** | 路由表每行第三列直接配置思考强度(off/low/medium/high/max,留空不指定)——同一个模型在不同角色可以用不同强度 |
| **可视化编辑** | 设置 → 预设工作室:路由表每行 provider/模型/强度三列输入框,↑↓ 调优先级、✕ 删除、+添加、保存即生效(无需重启);还能编辑自定义预设的名称/描述/人格 |
| **委派策略提示** | 内置精简策略段,引导主 agent 在合适时机委派、委派后汇报所用模型 |
| **图片转写(视觉委派)** | 纯文本模型收到图片时,自动派 vision 角色子代理把图片完整转写成文字再继续(走路由表 vision 行 + 失败互备);在插件设置里可关、可指定专用转写模型、可调超时 |
| **Token 用量统计** | 自动记录每个 provider/模型 的 token 消耗(本周/本月/年度),与路由联动——路由表分配了哪些模型、各烧了多少一目了然;数据存本地 |
| **余额与配额(plan 用量)** | 账户余额、各 plan 用量/配额尽力查询:DeepSeek 余额、Kimi Code 计划用量(5小时/周/月/年窗口)、GLM Coding Plan 配额、CodeBuddy 积分(OAuth 登录)、MiMo 本地统计;每 60 秒自动刷新 |
## 设计特点
- **失败自动换下一个模型**:路由表里列了多个候选,第一个不行(欠费、限流、报错)就自动换第二个,不用你盯着。
— 就像找装修队:第一个师傅说干不了,马上换下一个,不会傻等。
- **委派的孩子记得前面的对话**:需要接着当前上下文干活的子代理(追问分析、回顾本线程),也能按角色路由到合适的模型。
— 就像让"老熟人"接手续聊,他记得前面聊到哪,而且还按活儿类型派给最合适的人。
- **路由表可视化编辑**:设置页里一张表格,每行选 provider、模型、强度,上下拖动调优先级,增删改存,保存立即生效。
— 就像填表格选人干活,不用碰任何配置文件。
- **同一个模型可以分角色定强度**:比如同一个模型干编码用最高强度、干杂活用中等强度。
— 就像同一个师傅:干精细活时慢慢做,干粗活用点心就行,省力气也省时间。
- **子代理名字带模型标签**:每个委派的子代理直接显示 `[provider/model] 角色 委派`,谁在用什么模型一眼看清。
— 就像每个干活的小工都挂着名牌:谁在干、用的什么机器,扫一眼就知道。
- **鼓励主 agent 多把活儿分出去**:内置策略提示引导主 agent 优先把独立任务包委派给子代理(而不是自己全干),委派后还自动汇报用了哪个模型。
— 就像主事的养成习惯:能分给合适小工的活就分下去,自己专心盯大局,干完还有人跟你汇报。
- **安装开箱即用**:纯 JavaScript、无构建步骤,git 安装不用额外构建授权;也提供预打包 tarball。
— 就像装个软件点"下一步"就行,不用敲命令、不用给额外权限。
- **纯文本模型也能"看"图**:主模型看不了图时,自动派一个能看图的子代理把图片内容转成文字,再接着干活。
— 就像你眼神不好,身边有个"看图员"把图里的字和内容念给你听。
- **用量自动记账**:每个模型用了多少 token(输入/输出/缓存/推理)自动记录,按周/月/会话查看。
— 就像每个小工干了多少活都有记账本,月底一翻就知道谁干得多、钱花在哪。
## 截图
**委派路由编辑器**(设置 → 预设工作室)——每行 = 角色下的模型优先级,第三列是思考强度,保存后即时生效:

**子代理树模型透明**——每个委派的子代理带 `[provider/model] 角色 委派` 标签,状态、token 消耗、耗时一目了然:

## 工具使用指南
### 概述
委派(Delegation)允许主代理将复杂的、可并行的或需要特定专业能力的任务,分派给不同模型和角色的「子代理」执行。子代理根据「角色」和路由配置,自动选择最合适的模型完成工作。
### 基于角色的委派
主代理在 `delegate_ranked` 工具调用中指定一个「角色」,系统按该角色在路由表中定义的模型优先级列表,自动选择最强模型启动子代理;首选模型失败则按列表顺序换下一个。
**角色定义**:
| 角色 | 适用场景 |
|---|---|
| `frontend` | 前端、UI、CSS、TS 开发 |
| `backend` | 后端逻辑、API、基础设施 |
| `reasoning` | 复杂分析、推理、架构设计 |
| `review` | 独立代码审查(与编码者不同模型) |
| `adversary` | 挑刺、红队测试 |
| `vision` | 图像理解 |
| `bulk` | 批量、机械性文件编辑 |
| `analysis` | 大仓库/文档审查 |
| `general` | 通用默认 |
### 路由配置(routes.json)
- **文件位置**:`$DSH_HOME/data/dsh-delegation-suite/routes.json`(首次运行自动生成默认表)
- **格式**:每个角色一个列表,每行 `[provider, model, effort]`(第三列可选:off/low/medium/high/max,留空不指定);列表顺序 = 模型优先级(从上到下递减)
- **生效**:Web GUI「预设工作室」可视化编辑或直接改 JSON,修改后**即时生效**,无需重启
```json
{
"frontend": [
["kimi-coding", "k3-256k", "max"],
["zai-coding-cn", "glm-5.3", "max"],
["deepseek-official", "deepseek-v4-flash", "high"]
],
"backend": [
["zai-coding-cn", "glm-5.3", "max"],
["deepseek-official", "deepseek-v4-flash", "high"]
]
}
```
### 子代理执行与监控
子代理面板实时显示所有已启动子代理:状态(运行中/已完成)、`[provider/model] 角色 委派` 标签、token 消耗、耗时、任务摘要。
### 最佳实践
1. **匹配角色**:按任务性质(编码/审查/分析/批量修改)选对角色,确保调用最合适的模型
2. **配置优先级**:把最强最稳的模型放对应角色列表顶部
3. **思考强度分级**:深度推理任务(reasoning)用 `max`;简单机械任务(bulk)用 `off` 或留空提速
4. **监控状态**:用子代理面板盯进度和消耗,及时发现异常(耗时过长/报错)
5. **独立审查**:重要代码改动完成后,用 `review` 角色子代理独立审核(自动用不同模型)
### 多步编排:与 DSH 原生能力配合
本套件负责「选对模型、失败换人、看得清楚」;复杂编排(多步流水线、并行 fan-out 汇总)交给 DSH 原生能力即可:
- **串行多步**(A 产出 → B 依赖 A):后台委派得到子代理 id 后,用 `send_message` 让它继续下一步,结果在对话里流转。
- **并行聚合**:用 `workflow` 工具声明式编排(pipeline / parallel 阶段),每个阶段里再用 `delegate_ranked` 选模型。
- **状态追踪**:子代理树 + `list_agents` 随时看进度;失败时 `delegate_ranked` 已自动换过模型,无需额外重试逻辑。
## 安装
推荐:预构建 tarball(免 `allowBuilds` 构建授权):
```powershell
dsh plugin --profile web add https://github.com/wenheguo2/dsh-delegation-suite/releases/download/v1.0.0/dsh-delegation-suite-1.0.0.tgz
```
或从 GitHub 源码安装(本包是纯 JavaScript、无构建步骤,源码安装同样开箱即用):
```powershell
dsh plugin --profile web add github:wenheguo2/dsh-delegation-suite
```
> **注意**:如果你之前手动在 `profiles/web/cordis.patch.yml` 里添加过 `delegation-ranker` / `policy-hint` / `preset-studio` 行,请先删除这些行再安装本包(同名工具/服务重复注册会冲突)。
### 从源码安装的构建说明
本包是纯 JavaScript(无 TypeScript 构建步骤),`lib/*.js` 即发布产物,因此 **git 安装不需要 `prepare` 脚本、也不触发 pnpm 的 `allowBuilds` 授权**——装完即可用。运行时依赖(`@deepseek-ai/dsh-tools` 等)以 peerDependencies 声明,解析到 harness 自身安装,不会产生独立副本。
## 默认路由表
默认使用 deepseek-official 官方模型(flash / pro),装完在 UI 里改成你自己的 provider 即可。支持任意在「设置 → 模型」里配置过的 provider。
### 图片转写(vision)配置
要让纯文本模型能处理图片,需要在路由表的 **vision 角色**里配置一个**支持图像输入**的模型(如支持多模态的模型/转接服务)。流程:
1. 打开 设置 → 模型,添加一个支持图像的模型(如你的多模态 provider);
2. 打开 设置 → 预设工作室 → 委派路由,给 `vision` 角色加一行 `[provider, model]`(强度可不填);
3. 保存路由表。之后纯文本模型收到图片时,会先派 vision 子代理转写图片内容再继续。
插件设置(设置 → 插件 → dsh-delegation):可关闭转写(`transcribeEnabled`)、指定专用转写模型(`transcribeModel`,指定后不回退到 vision 表)、调整超时(`transcribeTimeoutMs`)。
### Token 用量统计与余额/配额
设置 → Token 统计:

- **用量**:本周/本月/年度三个视角,每行一个 provider/模型(请求数、输入、输出、缓存命中、推理 tokens、最后使用时间),顶部合计;可一键清零。数据自动记录(监听每次模型调用),保存在 `$DSH_HOME/data/dsh-delegation-suite/token-stats.json`,升级不丢。
- **账户余额与配额**:仅显示已配置 API Key 的模型商,每 60 秒自动刷新——

- DeepSeek:总余额/充值余额/赠送余额;
- Kimi Code:计划用量(5小时/周/月/年窗口);
- GLM/ZAI:Coding Plan 配额与标准余额;
- CodeBuddy:积分需网页 OAuth 登录授权(API Key 查不了积分),页面提供一键登录;
- MiMo 等无公开配额 API 的厂商:显示本地用量统计。
- 查询失败不影响本地用量统计(best-effort)。
## 常见问题
**Q:委派报 "all models failed"?**
A:路由表里所有候选都挂了。看返回的尝试日志确认原因(欠费/限流/网络),到设置 → 模型检查对应 provider 的 key 和余额。
**Q:思考强度填错会怎样?**
A:该模型不支持的档位会让请求报 `UNSUPPORTED_REASONING_EFFORT`(响亮报错,不会静默)。改回支持的档位即可。
**Q:会影响我的主会话吗?**
A:不会。强度注入只作用于子代理;主会话的思考强度由 /model 选择器控制。
**Q:第三方/私有网关(中转站)上强度会生效吗?**
A:分三种情况(子代理强度经 DSH 以标准 `reasoning_effort` / `thinking` 参数发出):
- **官方端点**(DeepSeek / Kimi / ZAI·智谱):生效。实测 DeepSeek `reasoning_effort` 产生 reasoning tokens;Kimi 走 thinking budget(K3 恒思考、budget 微调);ZAI GLM 的 `thinking` 参数开关灵(enabled 有思考输出 / disabled 无)。
- **私有网关兼容 OpenAI 格式**:字段会送达,是否生效取决于网关是否透传/解析该字段。腾讯 CodeBuddy 网关实测**忽略 thinking 参数**(GLM 恒定思考)——字段送达但强度档位无效,属网关行为。
- **网关拒绝 `developer` role**:部分网关(如腾讯 CodeBuddy)的审计会拒绝 OpenAI 的 `developer` role 消息。若你的模型在 DSH 里声明了 `reasoningEfforts`(成为 reasoning 模型),DSH 默认把 system prompt 发为 `developer` role,此类网关会报 `content_filter`。解法见随包附带的转发器脚本 [tools/codebuddy-developer-role-forwarder.js](tools/codebuddy-developer-role-forwarder.js):`node tools/codebuddy-developer-role-forwarder.js` 在本机 8790 端口起一个 developer→system 改写转发器(其余字段原样透传),然后把该网关 provider 的 `baseURL` 指向 `http://127.0.0.1:8790` 即可;或改用支持透传的网关(LiteLLM / pi2dsh 路线)。
## 许可
MIT
Install
dsh plugin --profile web add github:wenheguo2/dsh-delegation-suite
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-delegation-suite from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.