Releases
v1.14.0
Compare
Sorry, something went wrong.
No results found
v1.14.0 (2026-08-27)
新增 / New
消息底部「本轮 token」弹窗(两层统计) :多轮完成后,助手消息底部操作行(复制 / 点赞 / 点踩 / 回复 那一排)新增「本轮 token」按钮,点击弹出 Token 明细:
对话累计 :整场对话(当前会话)的 总 token / 总消耗 / 耗时 / 缓存命中率;
本轮明细 :本次输出 / 本轮 token / 本轮消耗 / 本轮耗时 / 本轮缓存命中率 / 缓存命中长条图 (命中部分单独绿色渲染 + 百分比)/ 按模型卡片 (每模型:模型名 + 总成本,一行 输入·未命中 / 缓存命中 / 输出(+推理),有费用再一行 峰 / 谷);
时长统一按「X分Y秒」(英文 Xm Ys)显示;本轮窗口取该消息实际产出所在 step 的起止,本轮命中率与对话累计各自独立统计。
宿主记录带会话标识 :llm/stream 捕获每条记录时新增 sessionId(优先 options.sessionId,缺失回退当前 agent 会话);新增 tokenForMessage API——按「会话 + 时间窗」返回本轮明细与对话累计两层聚合。
内部/工具调用单独分组 :list 同时返回 toolCalls(model 为 fake/unknown/空 或 dsh* 内部路由,如 dsh2shell-*/fake),概览「消耗明细」下方新增可折叠的「工具调用(内部)」分组(默认收起,显示 服务商·模型 / 调用数 / 总消耗),与真实模型调用分开。
语言跟随系统设置 :移除「用量与消耗」头部的中英文切换按钮,语言完全跟随宿主「通用设置 → 语言」,切换即时生效(locale 服务 subscribe + locale/change);不再写 localStorage(dsh-usage-lang),旧残留值不再覆盖系统语言;「会话 / 设置」标签页名改为按渲染时读取的 thunk,随语言切换实时更新。
移动端适配 :表格在 ≤900px 贴合屏宽(min-width:0 !important)、不再出现横向滑条;宽表折叠中间列;弹窗统计卡与按模型卡片随宽度自适应;弹窗滚动条外观隐藏(仍可滚轮滚动)。
英文适配补全 :「高峰 / 空闲时段说明」整块与 19 个遗漏键(当前 · 工作日/周末时段、工作日高峰卡片提示、用量日历悬停提示、价格表两段长说明等)补上英译。
修复 / Fixes
弹窗不可见 :对话树祖先的 transform 会破坏 position: fixed,改用 react-dom 平台种子的 createPortal 把弹窗挂到 document.body。
整场会话聚合 :按 messageId 查找消息完成时间改为读取 data.finalNode.messageId / data.closing.finalNode.messageId,时间窗正确生效(不再把整场对话圈进来)。
语言切换失效 :不再持久化语言选择,宿主设置切回中文即时恢复、无需刷新。
表格显示 :宽表 width:max-content,列按内容撑开、外层容器横向滚动,数字不再被压到换行/重叠。
测试 / Tests
周末计费规则回归测试(issue #9 ):宿主 isPeakAt(新增 test/period.test.js)+ 客户端 isPeakNow / periodNow(test/client-i18n.test.js),覆盖 issue 的 5 个时刻向量、生效时间边界、峰段窗口左右端点。
i18n 测试改为覆盖「跟随宿主语言服务实时切换」「旧 localStorage 值不再覆盖宿主语言」。
全部 27/27 通过。
You can’t perform that action at this time.