Chuyển đến nội dung chính

dsh-delegate-router

Đã xác minh

dsh-delegate-router · v0.4.0 · MIT · Giao diện web

Delegate light subagent tasks to cheaper models: automatic Flash/Pro routing for DeepSeek Harness subagent calls, with /delegate overrides, budget caps, and a routing-ledger panel.

Cài đặt

dsh plugin add dsh-delegate-router

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Thẻ

Readme

dsh-delegate-router

中文 · English

给 DeepSeek Harness 的子代理调用做 Flash/Pro 自动分派。

主对话保持跑强模型(如 V4 Pro);当 agent 派子代理干活时,本插件对任务做 复杂度分类:轻任务自动用便宜模型(如 V4 Flash),重任务留在强模型—— 确定性分派,不靠模型自觉。每次决策都记入账本,侧边栏点 ⚡ 分派记录 随时可查。

  • 自动路由 — 轻任务走 Flash、重任务留 Pro
  • 规则可 DIY — 全部规则在 ~/.dsh/dsh-delegate-router.json: 关键词表、短任务阈值、预算上限、北京时间峰谷降级
  • 手动覆盖subagent/subagent_fork 工具新增 per-call provider/model 参数,任何一次调用都可强制指定模型
  • /delegate 命令 — 会话级模式切换:/delegate auto | off | flash-all
  • 决策账本 — ⚡ 分派记录面板列出当前会话每一次分派(任务、目标模型、 触发原因)

为什么做这个

DeepSeek V4 Flash 每一档价格都恰好是 V4 Pro 的三分之一(2026-08-17 生效的官方定价;峰谷只是整体缩放,比例不变)。而 DSH 原生的子代理 默认继承父模型——Pro 会话里派一个搜索任务也要按 Pro 计价。用真实会话 实测:4 次已路由的子代理,共 ~156K tokens,实际花费 ¥0.32(Flash), 同样的量全走 Pro 要 ¥0.96 ——每次分派省 66.7%。在你自己机器上跑 node scripts/measure-savings.mjs 即可复现。

判定规则(按顺序)

  1. 调用显式指定 provider/model → 直接用(manual
  2. /delegate off → 继承;/delegate flash-all → 全走 Flash
  3. 会话累计 token 超过 budgetCapTokens → Flash(budget
  4. 关键词权重计分:重词打平获胜,但「明显偏轻」的任务能压过个别意外重词
  5. 任务文本长度 ≤ shortTaskMaxChars → Flash(auto-short
  6. 未命中任何规则 + 北京时间高峰段(默认 9–12、14–18)→ Flash(peak
  7. 未命中 + unknownToFlash: true(可选项、激进)→ Flash(auto-unknown
  8. 其余 → 继承父模型

任务文本 = 子代理调用的 description + prompt。匹配是精确的:纯英文字母 关键词按词边界匹配(list 永远不会误中 specialistdesign 不会误中 designer);少于两个字符的中文关键词会被忽略。

与 dsh-routing-suite 是绝配

dsh-routing-suite 负责 思维模式/人格层;本插件负责子代理模型成本层。两者叠加:轻任务子代理 被本插件送到 Flash,然后在路由预设的 flash 专属人格下运行。routing-suite 自己的实验(P11/P24)证明最优 weak 人格是 flash 专属的、且 spec 式人格在 Flash 上反而有害——所以「Flash + 该路由预设」是廉价派发的最佳组合,而本插件 就是为它提供自动 Flash 分流的那个齿轮。

诚实的测量口径

相对价格由官方价目表保证(每档 Flash = Pro 的 1/3,2026-08-17 峰谷定价)。 绝对金额取决于一次运行干了多少活——LLM 运行不确定,所以请比较单价 (或同任务),不要比原始总额。scripts/measure-savings.mjs 用官方价格表对 你的真实会话日志计价,引用数字前先读它的口径。

安装

dsh plugin --profile web add dsh-delegate-router

配置

所有配置项均可选,写在 ~/.dsh/dsh-delegate-router.json

{
  "flashProvider": "opencode-go",
  "flashModel": "deepseek-v4-flash",
  "proProvider": "opencode-go",
  "proModel": "deepseek-v4-pro",
  "mode": "auto",
  "lightKeywords": ["search", "搜索", "查找", "总结", "summarize", "list", "列出"],
  "heavyKeywords": ["refactor", "重构", "implement", "实现", "debug", "调试"],
  "shortTaskMaxChars": 120,
  "peakDemoteUnknown": true,
  "unknownToFlash": false,
  "peakHours": [[9, 12], [14, 18]],
  "budgetCapTokens": 0
}
  • shortTaskMaxChars: 0 关闭短任务规则;peakDemoteUnknown: false 关闭 峰谷降级;unknownToFlash: true 把一切未命中任务送去 Flash(激进,默认 保持 false);budgetCapTokens: 0 关闭预算上限。
  • 模型路由也可用环境变量 DSH_DELEGATE_ROUTER_FLASH_PROVIDER / DSH_DELEGATE_ROUTER_FLASH_MODEL / DSH_DELEGATE_ROUTER_PRO_PROVIDER / DSH_DELEGATE_ROUTER_PRO_MODEL 提供。
  • 改完文件需重启 DSH;运行中可用 /delegate <mode> 切模式。

开发

npm install
npm run smoke              # 清单自检
node scripts/test-routing.mjs   # 确定性规则单测
node scripts/measure-savings.mjs # 基于 ~/.dsh/sessions 的真实省钱测算
node scripts/e2e-panel-loop.mjs  # 针对测试实例的浏览器 E2E

许可证

MIT

致谢

为 DeepSeek Harness 插件生态而作——感谢 LINUX DO 社区的反馈与测试。