Repository navigation
Releases
Releases · Elysia11451/dsh-auto-model-router
v0.8.7.1-preview
v0.8.7.1 (2026-10-11)
修复
- 首轮选 Chat 不立即切换模型(隐私泄露问题):新会话选 Chat 后首轮请求已用 Work 档模型发出,改为 pre-step 返回 reject + 答案落定后 steer 重发,首轮零请求、零泄露。
- 极端情况下首轮消息可能丢失:@deepseek-ai/dsh-llm 动态加载失败时仅真切不重发,已在 README 已知限制中诚实写出,缓解方式为重发消息。
v0.8.7
v0.8.7(预发行版,2026-10-08)
产品理念
平时闲聊和干活对模型的要求完全不同:闲聊要便宜、快;干活要强、能深度推理。手动换模型又麻烦又容易忘,切错了要么浪费钱、要么干不好活。这个插件帮你自动分流——你只管说话,它按会话判断该走哪个档;只做路由注解,不改工具参数、不打断干活;你手动选过的模型一律让路不覆盖。
实际功能(已验证)
- 双档路由:IM 闲聊 → Chat 档(light,自填便宜模型);主界面直用 / IM 明确干活(装插件/跑命令/写代码) → Work 档(deep,免费池最强)。
- 三层判定:会话状态机 → 关键词兜底 → 默认 chat;状态机在位直接用,连 3 轮闲聊才从 work 降回 chat。
- 首轮弹窗(仅 DSH 主界面):新会话首轮弹 Chat/Work 选择;选 Chat 承诺本会话永不自动升 Work。
- 方向性冷却:chat→work 升档直通;work→chat 降档受
switchCooldownMs(默认 5s)约束。 - 手动绝对优先:你亲手选过的模型(durable 选择),路由一律不覆盖,只注解
kept。 - Chat 档干活只问一次:Chat 会话调到生产型工具(写文件/跑命令)弹窗一次,同意切 work 并翻承诺,拒绝/超时则本会话粘住 chat 不再问。
本版修复:同类判定升级为 (provider, model, effort) 三元组;pickWorkModelFromChain 返回清单真实 id;群聊提示只写诊断日志不发消息;peerDependencies 移除 dsh-our-free-model;warmup 句柄 + 每用例独立 DSH_HOME + fetchImpl 注入根治 flaky;IM 首轮 ask 缺席时用 classifyTask 定初始模式;refreshFreeList 仅取 available 模型;lastSwitch/cooldown/hint 全部 BoundedMap;route-log 三键 + save-guard 收窄。
测试:153 用例全绿(router 53 / session-mode 7 / crash 51 / leaderboard 31 / first-turn 11),EXIT=0。
已知限制(用前必读)
- IM 首轮弹窗未触发:QQ/微信新会话弹不出选择窗,降级为静默 chat、次轮关键词纠正;IM 往返整体留后续版本。
- 首轮选 Chat 不立即切换:选 Chat 后首轮仍继承 Work 档模型(
first-turn-pending分支短路),发第二条消息才纠正;计划 v0.9.0 主打修复。 - Work 档手选 Chat 档 API 模型被覆盖:Work 会话里手动指定的 Chat 档模型会被路由盖掉;尚未诊断,待排查。
- 首轮承诺无独立测试用例:initialMode 承诺无独立断言,只靠集成测试;后续版本补单测。
- 3 条边界关键词仍误判:
查一下当前目录/跑一下测试/调用工具试试仍判 chat(NTR 4);本版未修。 - IM 往返未实现:只写诊断日志、不实际发消息(缺 dsh-im 运行环境);留后续版本。
v0.8.6.1-preview (2026-10-07,底线降级版)
v0.8.6-preview
v0.8.6-preview (2026-10-07)
预发布版本。本版聚焦首轮语义正确性、IM 通道可观测性与设置页 UI 修复。
新增
- 三层判定逻辑:状态机 → 关键词兜底 → 默认 chat,降低单点误判导致的档位漂移。
- 首轮 Chat/Work 弹窗:新会话首轮可选择 Chat 或 Work 档(DSH 主界面已验证可用)。
- deepseek provider 声明修复:provider 声明与实际模型链对齐。
- chatModelPriority 默认改为空数组:不预设 provider,由用户自行配置。
- 空数组回退:chat 链为空时回退到 workModelFallback,日志标注 reason=chat-chain-empty。
修复
- issues NTR 1 首轮手选被覆盖:首轮弹窗已派出但答案未回时,本轮仅注解不真切(keepReason=first-turn-pending),不再用默认 chat 覆盖用户手选的 work 档模型;弹窗答案落定后下一轮自然纠正。
- issues NTR 2 首轮可观测性:新增 IM session 就绪探针与 asked/settled 双落盘(first-turn/probe、first-turn/prompt-asked、first-turn/prompt-settled);ask 悬挂无视 AbortSignal 时自超时兜底(timeout+1s,先落定者赢);NO_PROVIDER 显式 warn,IM 桥吞日志时也可一眼定位。
- 冷却机制按方向区分:升档放行,降档冷却。
- decision 日志补 switchError 字段。
- 重复路由条目:清理 profile patch 中重复的 auto-model-router 行。
- 设置页表单缺失:client 半侧补注册 plugins.row.config(key=dsh-auto-model-router#auto-model-router),设置 → 插件页面恢复配置表单。
- 降级链输入框可拖动:模型优先级 textarea 锁定 resize:none。
测试
- 140 用例全绿:router 46 / session-mode 7 / crash 49 / leaderboard 30 / first-turn 8,含新增 issues NTR 1 annotate-only 与 issues NTR 2 probe/asked 落盘断言。
已知问题
- issues NTR 2(部分修复):IM 通道(QQ/微信/TG)首轮 Chat/Work 弹窗端到端未通。根因为 DSH 框架层缺陷——ask_user_question 在非 Web 通道永久挂起(dsh-host-apiproxy 唯一 provider 无超时/离线检测,Discussion #2544、#4708),非本插件逻辑问题。主界面弹窗正常。dsh-ask-guard 因 peerDeps 不兼容未安装,fan-out 方案(dsh-ask-router)留待 v0.8.7。
- issues NTR 3(待修复):Chat 链头已从 GLM 改为 DeepSeek(GLM 赠送额度已耗尽)。
- issues NTR 4(待修复):关键词覆盖不足,3 条边界消息误判(查一下当前目录 / 跑一下测试 / 调用工具试试),本版未处理。
v0.8.5-preview
新增
- 三层判定逻辑(状态机 → 关键词兜底 → 默认 chat)
- 首轮弹窗选择 Chat/Work 档(DSH 主界面已验证,IM 通道待 v0.8.6)
- deepseek provider 声明修复
- chatModelPriority 默认改为空数组,不预设 provider,用户自行配置
- 空数组时回退到 workModelFallback,日志 reason=chat-chain-empty
修复
- 冷却机制按方向区分(升档放行,降档冷却)
- decision 日志补 switchError 字段
测试
- 138 用例全绿
已知问题
- ISSUE-T1 / ISSUE-T9b / ISSUE-W1 / ISSUE-P3-1(详见 CHANGELOG)