# 更新日志(CHANGELOG) **月汐(kimi-tide)**是 DSH 的「每一步自动选模型」插件。 > DSH(DeepSeek Harness)是 DeepSeek 官方开源的 AI 编程智能体框架——在网页里跟 AI 助手对话干活,模型、工具、界面都以插件形式装卸(官方口号:Everything is a Plugin)。 装上月汐后:贴截图自动切到能看图的模型,写代码自动切到编码模型,闲聊翻译自动走便宜的模型——每次选了谁、为什么,面板上看得见。 ## 项目演进 - **第一段(自研接入,0.1.x)**:当初 DSH 没有 Kimi 通道,自研 OAuth 适配器把 Kimi Code 订阅接了进来。 - **第二段(路由与评分,0.2.x–0.3.x)**:接进来之后,真正的痛点变成「哪个任务该用哪个模型」——于是有了双模型路由、能力评分和图像护栏。 - **第三段(收敛聚焦,0.4.x 起)**:官方生态原生支持 Kimi 接入后,自研接入层果断退役。月汐只做官方没有的事:路由、护栏、编排、观测——规则你来写,决策看得见。 > 本文件是版本历史的**唯一事实源**(用户视角)。维护者证据链(commit 锚点、验收记录)见 [docs/release-evidence.md](docs/release-evidence.md)。 --- ## v1.3.0(2026-09-15) 面板配额条改为**剩余**语义:条与数字终于同向。 - **配额条不再「反着画」**:原来条画的是「已用比例」(越用越长)、旁边数字却是「剩余量」(越来越少)——两套相反的语义并排,于是**剩得多时条几乎是空的(看着像快没了)、快耗尽时条反而最满(看着很充裕)**。现在条与数字同源于剩余:剩得多条就长、剩得少条就短,快耗尽时是**短红条**。 - **数字改用百分比**:`剩90%`(原来是亿/万级绝对量,撑行且需要心算);绝对量(`剩 15.0亿 / 共 20.0亿`)移入悬浮提示。 - **警示色覆盖条身**:剩余 ≤20% 黄、≤10% 红,颜色同时作用于条身、图标与文字(原来只有图标/文字变色,条身恒为品牌紫)。 - **窗口无数据不再谎报满额**:某窗 `limit=0`(该窗未开或数据缺失)时该槽显示 `—` 并置灰,而不是被算成「剩余 100%」。 - 无障碍文案同步:「周配额已用比例」→「周配额剩余比例(+绝对量明细)」。 - **设置页的错误横幅与保存提示不再被页签藏住**:测试场页签此前会把错误横幅一起 `display:none`,协作流页签则连「已保存」也藏(只豁免了错误)——被隐藏的 `role="status"` 不在无障碍树里,**保存确认既不显示也不播报**。现在两类提示在任何页签都可见。 - **文档措辞纠偏**:README 双语把「首条命中生效」改成真实语义——规则按**特异度**排序(命中词多者优先、带图恒第一、平手按列表序),排序后**首条目标可用者**生效。 - **新增「说明」页签(设置 → 月汐 → 说明)**:把面板每个元素是什么、设置里每个字段什么意思讲清,共八个分区(面板速览 / 常见疑问 / 路由语义 / 关键词与匹配 / 协作流 / 用量与余额 / 术语表 / 命令清单)。关键条目带**当前值**——例如「触发方式:当前=手动 ⇒ 关键词命中不会触发评审」,一眼对上自己的配置;另有一张**症状 → 原因**表(配了评审模型却没评审 / 面板没有决策原因条 / 配额槽显示 `—` / 路由没按预期切模型)。说明页只读,无任何可写控件。 - **设置页页签无障碍补齐**:四个页签现在都有完整的 `tab` / `tabpanel` 语义(`aria-controls` / `aria-labelledby`),支持 `←` `→` `Home` `End` 键盘切换;页签可见性改由容器 + `hidden` 驱动,取代原先的 `:not()` 选择器链——那套写法正是「测试场藏错误横幅 / 藏已保存提示」两起 bug 的成因,改结构后此类问题不再可能发生。 - **新增「语义命中确认闸」(默认关闭,需在配置里开启)**:开启后,关键词命中不会立刻改道——先让**当前预设的打底模型**确认一次「这是本轮的真意图吗」。判否就跳过该条规则、继续匹配后续规则(全被否才走打底)。它的用途是治「提到某类词但其实不是这个意思」的误命中:例如「这个做完做交叉评审」被 `review` 组整轮劫持。 - **问不到就不过闸**:判官超时(默认 1.2 秒)/ 模型不可用 / 输出解析失败,一律按原来的关键词结果走——语义层永不制造比现状更坏的结果。 - **零无效调用**:显式 `@` 轮(规则链根本轮不到)与「带图规则已排首位」的轮**不发判官调用**;同一句话 + 同一判官命中缓存不重复问。 - **判词写在决策原因里(2026-09-15 实机验收修订)**:判否 / 确认 / 无结论现在会**前置**到面板的决策原因串,形如「语义闸判否「引用语境」」「语义闸无结论 1200ms(code-kfc)」。此前判词只写进程 stdout;更要命的是**判否会让规则出链、最终落打底,而打底按既有取舍不上报面板**——于是「判否」这个最该被看见的结果反而完全不可见。两种失败形态措辞不同(**无结论** = 判官没在预算内返回;**判词不可解析** = 返回了但格式不合法)并各带耗时,凭这一行即可定位闸门为什么没生效。 - **判词不可解析时附上判官原文摘要**(同上实机验收修订):只报「不可解析」时看不到模型到底吐了什么,修提示词还是修解析器只能靠猜。现在会把原文压平、截断 60 字附在注记尾部(`…(code-kfc)· 原文「…」`)。 - **判官按目标能力关掉思考(2026-09-15 实机验收根因修复 + 复验通过)**:这道闸只给判官 64 token,而判官是**推理模型**——不关思考时它会先把整个预算花在思考上,`finish_reason=length`、**正文一个字都没有**(实测 64 与 256 两个预算都一样,reasoning token 全计入 `max_tokens`)。于是判词必然不可解析 ⇒ **闸门静默失效**(问不到就不过闸,看起来和「没开这个功能」完全一样)。现在判官目标声明支持「off」档位时显式关掉思考(同预算下实测 450–850ms 拿到合法判词);目标不支持(如 k3)则不下发档位——**绝不硬塞一个它不认的档位**,那会换来另一种静默失效。实机复验:提及式「引用」⇒ 判否、**不改道**;「帮我重构这段代码」⇒ 判确认、**照常改道**;同一句话第二次耗时骤降(命中判词缓存)。 - 配置:**设置 → 月汐 → 路由**里勾选「语义命中确认」即可(`preset.hitConfirm = { enabled, timeoutMs?: 1..10000, maxTokens?: 1..256 }`);也可直接写配置。 - **页签 id 改为实例级(2026-09-15 UI 评审遗留项)**:页签与面板的 id 原先写死为 `kt-tab-*` / `kt-panel-*`——同一页面挂两张卡时 id 撞车,`aria-controls` 会指向**另一张卡**的面板(读屏定位到错的面板)。现在按实例生成,方向键切换也不再从 id 字符串反推键名。 - **用量/余额全覆盖**:额度槽不再只认 Kimi 与 Z.ai——现在按**源注册表**工作,并跟随当前命中的目标自动切换形态:code plan(订阅)显示**用量窗**,API 计费源(如 DeepSeek)显示**余额**(`¥110.00`,赠送/充值进悬浮提示;余额不足以调用 API 时会明确标注「余额不足」,而不是让你自己猜)。 - **新增「用量总览」**:dock 第二行的总览按钮一屏列出**全部**已注册的源——用量、余额,以及某个源为什么没有数据。三种「没数据」不再混为一谈:**该套餐无公开 API**(如阿里 Token Plan,实测无可用端点,如实标注)/ **key 未配置** / **取数失败**,逐行写明原因。 - **配额源按你配置的 `apiKeyEnv` 名取凭据(2026-09-15 实机验收修复)**:此前配额源只认插件内置的默认 key 名,而 `settings.get('llm-pi-ai')` 又**恒为 undefined**——`dsh-settings` 的 `get(ns)` 只查**已注册**的命名空间,而 provider 插件都不注册它。两者叠加的后果是:凭据库里存的是 `ZAI_CODING_CN_API_KEY` / `KIMI_CODING_API_KEY`,代码找的却是 `ZAI_API_KEY` / `KIMI_API_KEY` ⇒ **切到 GLM 或 Kimi 时配额槽永远是空的**(只有 `DEEPSEEK_API_KEY` 恰好同名才正常显示余额)。现在按「settings 服务 → `settings.yaml` 文件里的 `apiKeyEnv` → 内置兼容名」取候选链、命中即止;你给 provider 起的自定义 key 名也能跟随。 - **新增 `balancePollMs` 配置**(默认 300000 = 5 分钟):余额接口是计费端点,60 秒轮询过于激进;余额源的取数超时固定 15 秒,不再沿用「0.8 × 轮询周期」(那会让 5 分钟周期挂起长达 4 分钟)。 - 说明页同步补上三种「没数据」的区分,以及一个真实踩过的坑:**面板显示还有额度、服务端却报「已达上限」**——面板显示的是周/5h 窗,账号若另有月度上限,不在这个窗里。 - **显式 `@` 精确寻址**:新增 `@provider/model` 写法,把请求直接钉到某个模型;`@provider` 简写的池内选择改为**确定化**——优先「你预设里已配置过的目标」,并在决策原因里写明实际模型与依据,不再受候选池枚举顺序摆布。(实机教训:`@qwen-token-plan-cn` 曾落到池内首个 MiniMax-M2.5,该套餐未购买 ⇒ 403 整轮失败,而原因里连选了谁都看不出来。) - **`@` 误判面收窄**:`@` 后面不是本插件认识的 provider 时**不再当指令**。`@README.md`(工作区路径引用)、`node_modules/@deepseek-ai/…`(scoped 包名)、路径片段里的 `@xxx` 此前都会被当成显式指令,而显式指令在候选池为空时返回 `keep` 并**整条跳过关键词规则链**——同一判定还连带跳过语义确认闸、关掉评审流武装,界面上完全看不出规则被跳过。现在这类文本照常走规则链,决策原因里写明「`@x` 非本路由器已知 provider(已忽略)」。真指令(`@kimi`、`@deepseek-official`、`@qwen-token-plan-cn/qwen3.8-max`)语义不变;**已知 provider 但当前无可用候选仍保持 `keep`**(点了名就不静默改道)。 - **一处有意的行为变更**:`@一个本机没有的 provider`(如 `@anthropic`)以前返回 `keep`(保持上一轮的模型——取决于上一轮是谁,对用户不可预测),现在落预设打底,并在原因串里说明该 `@` 被忽略。理由见「`@` 误判面收窄」:词法上它与 `@README` 完全同形,二者不可区分,必须在「误判时静默短路」与「真指令但 provider 未知时落打底」之间选一边。 ## v1.2.1(2026-09-11) 设置页模型下拉修复:目录通道跟上宿主升级,名称与官方叫法对齐。 - **修复:设置页模型下拉缺 DeepSeek 模型**:dsh 0.1.5-rc.1 起 `llm` 远端命名空间不再提供 `models` 方法,设置卡目录通道取数失败后静默降级为「仅已配置目标」——DeepSeek 通常只出现在辅助请求目标(不进扫描),于是整组从下拉里消失。目录通道换道宿主官方模型目录 RPC(`session/modelCatalog`,与模型选择器同款),旧通道保留作回退;顺带修复旧宿主上返回信封被二次包装、目录同样失效的隐患。 - **模型名称显示与官方一致**:设置页模型下拉改为按提供方分组(组头 = DeepSeek / Kimi / Z.ai 等官方显示名),选项显示模型友好名(如 `deepseek-flash` → DeepSeek-V41-Flash),与「模型」设置页和模型选择器叫法一致;悬停可见完整 `provider/model` 键,目录未收录的配置目标仍显示原键,写入与配置格式零变化。 [Release v1.2.1](https://github.com/tafcear/kimi-tide/releases/tag/v1.2.1) ## v1.2.0(2026-09-10) 会话事件解耦:面板数据彻底退出会话日志,dock 取数换上不落日志的安静通道;并修复升级期两个实机回归。 - **面板数据不再写会话日志**:dock 的快照改经内置只读路由按需现算直读(轮询零持久化),彻底停止日志膨胀(旧方案全库累计 12 万条 / 200+ MB);对话时间线也不再被面板刷新刷屏。 - **历史会话照常可读**:事件类型注册与写入解耦——停写不停注册,带着历史面板/评审事件的会话重启后照常打开(修复升级期「历史加载失败:unknown event type」整卷拒载)。 - **dock 取数稳定**:命令回包信封剥壳修正,dock 不再永久卡「面板数据加载中」;取不到数据时明确显示降级文案而非假加载态。 - **dock 动作失败可见**:刷新配额 / 切预设 / 手动评审失败时上浮原因,不再静默吞掉。 - **评审事件保留**:`kimi-tide/review` 仍写入会话日志(评审卡片唯一锚点),手动操作在时间线留可审计记录。 - **新增启动级 E2E**:隔离启动真 dsh web,自动验证「带自定义事件的会话重启后可读」,正例 + 自动反例双跑(`scripts/e2e/`)。 - **项目规则两条(维护者)**:Release 页双语四段式、README 双语对同步——均带机器门禁。 [Release v1.2.0](https://github.com/tafcear/kimi-tide/releases/tag/v1.2.0) ## v1.1.0(2026-09-04) 评审流落地:把「评审」从「一句话切走整轮模型」变成「本轮照常干,干完自动请评审」。 - **关键词组可被评审流认领**:把 review 流的触发方式从「手动」改成「关键词认领」并指定一组关键词后,这组词的命中不再把整轮路由到评审模型——本轮照常按你的规则执行,轮末自动请评审模型出意见(每轮至多一次,60 秒有界,不拖慢本轮)。 - **评审意见以卡片上屏**:会话流里直接出现评审卡(标注评审模型与触发的流);评审失败也有灰态兜底卡,不会无声消失。 - **`/kimi-tide review` 手动评审**:想评上一轮就发这条命令;没有可评的上一轮时会明说。 - **设置页配套提示**:被认领组对应的路由规则行置灰并注明「该组已被评审流认领,不再参与路由」;「试一句」预演会显示「轮末触发评审流」而不是切模型。 - **校验加固**:评审流不允许给评审模型配推理力度档位(评审调用恒不带 effort),保存这类配置会被拒绝。 - 已知边界:评审模型暂不可用时,认领组照常抑制对应规则,但那一轮不会自动评审——「试一句」会显式标注「评审流已认领但评审模型不可用」,不留无声盲区。 [Release v1.1.0](https://github.com/tafcear/kimi-tide/releases/tag/v1.1.0) ## v1.0.1(2026-08-31) 纯文档版本:安装与路由行为零变化。 - 项目文档全面重写:全新中文主文档 + 独立英文文档——3 秒看懂「这是什么」,10 秒看懂「对你有什么用」,快速开始全程白话。 - 新增本更新日志(版本历史单一事实源)与维护者证据链文档;README 路线图瘦身为当前版本一行,版本史与证据链各归其位。 - 新增两道文档门禁进 CI:版本三方一致性(CHANGELOG / README / 包版本)+ 全库文档链接检查。 - 经 Kimi 双轮独立评审闭环(存档 `docs/audit/2026-08-31-zero-basis-docs-review-round1.md`)。 [Release v1.0.1](https://github.com/tafcear/kimi-tide/releases/tag/v1.0.1) ## v1.0.0(2026-08-29) 首个大版本:关键词匹配升级 + 规则体系补全 + 品牌主题化 + 多 plan 配额合流发布。 - **关键词匹配更准**:英文关键词按「整词」匹配(`decode`、`barcode` 不再误中 code 规则),命中规则按特异度排序(命中词多者优先、带图恒最优先),还可配「最少命中词数」避免一句话误触发。 - **规则覆盖面扩到 7 组内置关键词**(代码/审查/写作/翻译/长文/数学/闲聊),词表可改、可自建新组。 - **推理力度(effort)可配置**:规则目标、预设默认、转述流视觉模型三处可选档位;模型不支持时自动剥离,不会报错。 - **设置卡片新增「试一句」测试器**:输入一句话,实时预演命中哪条规则、路由到哪个模型。 - **决策更好懂**:面板决策理由带命中词数(如「规则 code 命中 2 词」);dock 布局重构为两行加三页签,决策区常驻。 - **多 plan 配额**:额度槽跟随当前命中的模型自动切换——Kimi 显示周配额/5 小时窗,GLM 显示 5h token 窗/7 天周窗;没有套餐的目标自动置灰。 - **辅助请求可改道**:会话标题等后台请求可指定模型,不再跟随主路由误打思考模型撞超时。 - **月汐品牌视觉**:紫主题贯穿明暗双主题,设置页月牙图标。 [Release v1.0.0](https://github.com/tafcear/kimi-tide/releases/tag/v1.0.0) ## v0.6.1(2026-08-23) 稳定性修复波。 - 多图消息的转述并发处理,等待时间不再按图数叠加。 - 配额轮询带超时与去重,配额接口挂起不再拖垮面板。 - 面板推送去重,会话日志不再按分钟膨胀。 - 路由决策与流事件按会话隔离,多会话互不串台。 - 新增 CI(push/PR 自动构建与测试)。 [Release v0.6.1](https://github.com/tafcear/kimi-tide/releases/tag/v0.6.1) ## v0.6.0(2026-08-23) 协作编排。 - 规则目标可以是「协作流」:预置图像转述流——能看图的模型先把图转成文字,便宜的文本模型接力作答,读图只付视觉那一次的钱。 - 带图会话不再整场锁死多模态模型:每张图独立跟踪(原生处理/已转文字/当无图)。 - 预设级带图兜底三态可选:锁存 / 盲答(当无图)/ 懒转述。 [Release v0.6.0](https://github.com/tafcear/kimi-tide/releases/tag/v0.6.0) ## v0.5.0(2026-08-21) 规则驱动路由。 - 命名预设(省钱/能力/可自建)+ 有序规则(带图/关键词组):命中即路由,未命中走预设默认模型打底。 - 六维能力评分引擎退役——路由依据变成你能读懂、能改动的规则。 - 候选池即 DSH「Models」页挂载的全部模型,不限 Kimi/DeepSeek;未接入的目标自动跳过并在面板置灰。 - 旧版配置升级时自动迁移。 [Release v0.5.0](https://github.com/tafcear/kimi-tide/releases/tag/v0.5.0) ## v0.4.0(2026-08-20) 接入方式转正。 - 一把 Kimi Console API Key + DSH 官方「Models」页配置即可使用,不再需要 Kimi CLI 与 OAuth 登录态。 - 路由配置搬进 DSH「设置 → 月汐」,重启保持。 - 新增 GitHub Actions 自动发版(打 tag 即出 Release)。 - 此前 0.2–0.3 的双模型路由器与能力评分能力随本版首次正式发版。 [Release v0.4.0](https://github.com/tafcear/kimi-tide/releases/tag/v0.4.0) ## v0.1.3(2026-08-15) - 初代 Kimi 接入通道:凭据门控 + OAuth 加固(该自研接入方式已被 0.4.x 官方路径取代)。 [Release v0.1.3](https://github.com/tafcear/kimi-tide/releases/tag/v0.1.3) ## v0.1.1(2026-08-15) - 项目首个发布版本:Kimi Code 订阅接入 DSH。 [Release v0.1.1](https://github.com/tafcear/kimi-tide/releases/tag/v0.1.1)