JianTG/dsh-auto-model-router
JianTG★ 0JavaScript最后同步: 2026-08-16
根据问题复杂度自动切换模型
README 摘要
dsh-auto-model-router DSH(DeepSeek Harness)cordis 插件:按任务复杂度在 deepseek-v4-flash (基线)与 deepseek-v4-pro (升级)之间 自动路由 ,只升不降,绝不回合中途切换模型。 效果 - 简单问题(寒暄/单点问答/短消息)→ flash (便宜、快) - 复杂任务(代码/架构/重构/长任务/关键词命中)→ 自动升 pro (不干砸重活) - 拿不准的"中间态"消息 → 让 flash 分类器确认一次(3s 超时兜底,失败=不升级) - 你手动 /model 选 pro → 永远终局 ,插件绝不覆盖 - 路由决策全自动,回合内锁定,重启/恢复后可重放 安装 卸载/更新: dsh plugin --profile web remove update dsh-auto-model-router 。 本机注意:npm/pnpm 联网需 NODE OPTIONS=--use-system-ca (本机 Node 自带 CA 证书过旧)。 配置( /.dsh/settings.yaml 的 auto-model-router 段,热更新) 原理(摘要) 两个 prepend 瀑布监听器 + 自有 sidecar(完整设计见 DESIGN.md ,红队评审留痕见 docs/red-team-review.md ): 关键语义: - 排序 :插件以 { prepend: true } 注册在最外层;内置模型选择层( installModelSelection )恒在内层——插件返回值生效,且绝不覆盖你的手动选择(只认"默认模型=flash"时回落)。 - 痕迹 sidecar : /.dsh/plugins/auto-model-router/ .jsonl ( withFileLock 串行写 + 原子替换)。 绝不写 session 日志 ——DSH 的事件类型是封闭白名单,写未知类型会让会话重启后无法加载。 - 可重放 :决策按 (sessionId, turn) 幂等重算,HMR/重启后回合内决策不变。 - 失败安全 :插件任何异常 → 透传原配置,主请求照常;下游异常原样传播。 已知边界(文档化) 1. agentDefaultModel 服务缺失的 profile(理论上)→ 只升级不回落。 2. 手动 /model 选 pro 时若"保存为默认"失败(低概率)→ 下一回合可能被回落覆盖;重启后此边界消失。 3. 分类器调用是 真实计费 但不进界面 token 统计(meter 只统计会话事件);分类调用账本 = sidecar 中 source: classifier 的记录。 4. subagent/后台任务同样按各自消息自动路由(重活自动上 pro)。 5. 启发式是 强信…
在 GitHub 查看完整 README →