更新日志 / Changelog
August 29, 2026 · View on GitHub
@feiyang666/dsh-usage-plugin — DeepSeek Harness 用量与消耗插件
本文件按版本记录每一次更新的详细内容(新功能 / 优化 / 修复 / 界面 / 性能)。每次发布到 GitHub 时,请据此填写「版本发布」(GitHub Releases)的更新说明。
版本规范:本插件按「语义化版本」递增,
主.次.补丁。功能新增/界面变化 → 升次版本(x.y.x → x.y+1.0);仅 bug 修复 → 升补丁。
v1.14.1 (2026-08-29)
修复 / Fixed
- 中断调用兜底记录,使「调用次数」与 DeepSeek 官方后台对齐(
lib/index.js):harness 在流被中断(aborted / error / timeout / 用户停止生成)时不会产出usagechunk(usage 只在收到[DONE]哨兵后才由 adapter yield),导致这类调用此前完全不被插件记录——而官方后台仍会把该次请求计入「API 请求次数」并按实际 token 计费,于是插件统计的调用次数长期低于官方(如 8 月 27 日 985 vs 1033)。现在无 usage 但确为真实模型调用(通过isRealCall,排除内部dsh2shell-*/fake)的流,会在observe()的finally里补记一条 0-token 的「中断调用」(新增interrupted: true字段,finishReason如实标记aborted/error/timeout)。token 与费用均为 0,不会虚增消耗;调用次数与官方口径一致。 - 面板透明展示中断调用(
lib/client.js):- 概览「调用次数」卡片新增
· 中断 N(未计费)提示; - 缓存命中列表与用量日历当日明细中,中断调用行在模型名旁显示红色「中断」徽标、结束原因红色标注、消耗列显示
—; - PNG 导出报告同样在模型名旁标注「中断」、消耗列显示
—; - 结束原因新增
aborted → 已中断 / Interrupted、timeout → 超时 / Timeout映射(中英双语)。 - 用量面板顶部新增「本地统计与官方后台的差异」提示横幅:说明本面板统计的是插件本地捕获的调用(官方价格 + 峰谷时段),与官方后台(platform.deepseek.com 用量页)相比金额可能更低——① 中断/出错/超时的调用官方仍按实际 token 计费而插件按 0 记录;② 账号下其他 API Key(其它应用/脚本)的调用不经过 DeepSeek Harness,官方包含而插件不包含;③ 精确对账可导出官方月度账单 CSV 对比。检测到中断调用时额外显示「当前记录中有 N 次中断调用(未计费)」红字提示。
- 概览「调用次数」卡片新增
- 持久化与 API 透传
interrupted(lib/index.js):normalizeRecord/projectRecord均保留该字段,重启恢复、/usage/apilist 输出、JSON 导出一致。
测试 / Tests
- 新增
test/interrupt.test.js:验证中断兜底仅记录真实模型调用(DeepSeek 官方 / 第三方真实 provider),内部fake/dsh*占位调用永不兜底记录。 - 全部 30/30 通过。
v1.14.0 (2026-08-27)
新增 / New
- 消息底部「本轮 token」弹窗(两层统计):多轮完成后,助手消息底部操作行(复制 / 点赞 / 点踩 / 回复 那一排)新增「本轮 token」按钮,点击弹出
Token 明细:- 对话累计:整场对话(当前会话)的 总 token / 总消耗 / 耗时 / 缓存命中率;
- 本轮明细:本次输出 / 本轮 token / 本轮消耗 / 本轮耗时 / 本轮缓存命中率 / 缓存命中长条图(命中部分单独绿色渲染 + 百分比)/ 按模型卡片(每模型:模型名 + 总成本,一行 输入·未命中 / 缓存命中 / 输出(+推理),有费用再一行 峰 / 谷);
- 时长统一按「X分Y秒」(英文
Xm Ys)显示;本轮窗口取该消息实际产出所在 step 的起止,本轮命中率与对话累计各自独立统计。
- 宿主记录带会话标识:
llm/stream捕获每条记录时新增sessionId(优先options.sessionId,缺失回退当前 agent 会话);新增tokenForMessageAPI——按「会话 + 时间窗」返回本轮明细与对话累计两层聚合。 - 内部/工具调用单独分组:
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 通过。
v1.13.0 (2026-08-23)
新增 / New
- 英文界面(i18n 层)(社区贡献,@ayleen,PR #7):Web 面板全部 UI 文案接入轻量 i18n——以原中文文案为键、内置英译词典;按浏览器语言自动选择(中文浏览器保持中文,其余默认英文),「用量与消耗」头部新增切换按钮,即时生效并保存于 localStorage。余额查询改为语义化字段(host 不再返回中文展示文案),缺失凭据错误不再泄漏内部键;日期 / 星期本地化(中文
2026年8月22日,英文Aug 22, 2026与 Mo–Su 表头);瞬态提示与客户端校验错误渲染时翻译。 - 百炼(Qwen)Token Plan 配额查询(社区贡献,@wuhuqif176,PR #8):「剩余余额查询」新增「百炼 Token Plan」子页签——复用百炼 CLI(
bl)的控制台 OAuth token(~/.bailian/config.json),无需阿里云 AccessKey;展示本周配额已用百分比(进度条 +已用 xx.x%)与本周开始 / 结束日期(连续线段,今天节点随日期动态移动)。新增依赖undici。 - 本地改进:消耗明细表顶部与底部各渲染一份分页条(长列表翻页更顺手);DeepSeek 系 provider 未单独上报
cacheWriteTokens时,「缓存写入」列改用未命中 token 数(inputTokens)兜底显示,避免长期为空。
文档 / Docs
- 补全贡献者名单(
package.jsoncontributors):新增 @ayleen(PR #7 英文界面)与 @wuhuqif176(PR #8 百炼配额)。 - 新增
.mailmap:把 PR #7 提交作者Ruslan R. Musakalimov <gitlab@letsweb.me>映射到 GitHub 账号 @ayleen,使仓库 Contributors 图与 git blame 正确归属历史提交。
致谢 / Acknowledgements
- @ayleen:实现英文界面与响应式语言切换(PR #7)。
- @wuhuqif176:实现百炼 Token Plan 配额查询(PR #8)。
v1.12.2 (2026-08-23)
修复 / Fixed
- 移动端宽表仍会逐字竖排(兜底加固)(
lib/client.js):v1.12.1 的修复依赖运行时向document.head注入全局样式表(.dsh-usage-table{min-width:720px}+@media (max-width:540px)折叠中间列)。在部分移动端运行环境(如经 mobile-remote 进出的手机页面)下该样式表因加载时序 / CSP 未生效,导致 9–11 列宽表每列被压到约 1 字符宽、标题与单元格逐字竖排、数据无法阅读。本版把min-width:720px直接写进表格的内联样式(内联样式必然生效),窄屏时表格保持 720px、外层overflow-x容器横向滑动,彻底不再依赖样式表注入;原有注入样式表与 ≤540px 折叠逻辑保留,作为进一步优化的增强项。
v1.12.1 (2026-08-23)
修复 / Fixed
- 修复移动端「消耗表」「消耗明细」等宽表列标题逐字竖排的问题(
lib/client.js):窄屏下 9–11 列宽表每列被压到极限宽度,word-break把「调用」「API 服务商」「输入·未命中」等表头拆成单字竖排。现为所有用量表格注入响应式 CSS:表格强制min-width: 720px,外层overflow-x容器正常横向滚动、不再逐字换行;极窄屏(≤ 540px)下对宽表自动隐藏第 4 列至倒数第 2 列,只保留「模型 / 服务商 / 调用 / 总消耗」等主标识列与合计列,价格表等窄表不折叠、保留横向滚动。
v1.12.0 (2026-08-23)
新增 / New
- SSE 实时推送端点(
lib/index.js):新增GET /usage/api/events事件流端点,数据变化(新调用记录写入 / 导入 / 清除等,即persistNow落盘成功)时向订阅者推送data: {"type":"changed","at":<时间戳>}。桌面端数据中心等客户端订阅该流即可即时感知用量更新(毫秒级),不再依赖轮询。无订阅者时零开销,插件独立使用完全不受影响。
开源贡献基础:合并 PR #6(@Martin-soaring-dev,2026-08-20)
本期(以及后续 v1.9.2 / v1.9.3)建立在社区贡献分支
Martin-soaring-dev/prepare_for_contribution之上。该分支由用户上传、经你合并(GitHub Pull Request #6,合并 commit12a52be),是插件转向对外开源贡献的形态基础。
该分支带来的主要改动
- 多服务商余额查询(
lib/balance.js新增 +205 行,新增余额适配器BalanceProviderAdapter):将原先仅 DeepSeek 的/user/balance查询扩展为可对接多个服务商的余额查询框架,新增 DeepSeek / SiliconFlow / DigitalOcean / AMD GPU Cloud 等 Provider 适配器。 - 按服务商展示余额与价格(
lib/client.js+258 行):客户端新增「剩余余额查询」Tab 的多服务商 UI,可分别展示各服务商的「总余额 / 充值 / 赠送」并切换查看。 - Provider 化计费(
lib/index.js+399 行重构):注入settings服务用于服务商查找,调用计费改为 provider-aware,支持按不同服务商分别统计与计价。 - 插件装配与测试:新增余额适配器单测(
test/balance.test.js,+130 行)、scripts/wire.js手动装配兜底、cordis.patch.yml插件注册条目。
致谢
- @Martin-soaring-dev:提交并筹备了上述开源贡献分支(PR #6),是后续公开发布版本的功能与结构基础。
v1.11.1 (2026-08-23)
- 修复:数据加载后页面空白:加载动画三目分支误用逗号表达式,只返回最后一个表达式值(
null),导致加载完成后各子视图全部不渲染;改为将四个子视图作为容器div的并列子元素,加载完成后正常显示。 - 计费说明改为面板级固定显示:「高峰 / 空闲时段说明」固定在用量面板子页签下方,概览、用量日历、缓存命中列表、价格表四个页面切换时始终可见(含数据加载期间)。
- 当前时段精确显示:用量面板顶部徽标与价格表页顶部新增「当前 · 工作日高峰时段 / 工作日空闲时段 / 周末空闲时段」动态状态并附说明文字;周末(自 2026-08-23 起)全天按空闲价计费,规则生效前仍按原规则区分。
v1.11.0 (2026-08-23)
- 高峰 / 空闲时段说明:概览、用量日历、缓存命中列表、价格表四个页面顶部统一新增「高峰 / 空闲时段说明」,清楚区分工作日高峰(周一至周五 9:00–12:00、14:00–18:00)、工作日空闲(其余时间)与周末全天空闲(自 2026-08-23 起按空闲价,此前仍按原规则)。
- 加载动画:用量面板首次进入、数据仍在加载时显示转圈加载动画与提示文字,避免白屏无反馈;余额查询加载中同步使用加载动画。
- 表格适配:所有表格改为宽度自适应容器(
width:100%),单元格内容按需换行,不再因内容超宽出现横向滚动条;极窄窗口下容器保留横向滚动兜底。窗口缩放、不同分辨率下查看更舒适。
v1.10.0 (2026-08-23)
- 新增 DeepSeek 官方模型
deepseek-v4-flash-vision-exp(DeepSeek-V4-Flash-Vision-Exp):官方价格表、概览「按模型」表、按 API 服务商 × 模型明细、用量日历、缓存命中列表与 PNG 报告均自动按该模型计价;「价格表」页新增该模型一行,modelKey识别优先匹配vision(避免被误归入deepseek-v4-flash)。 - 价格(元 / 百万 tokens,与官方最新公布一致):空闲时段 缓存命中 0.05 / 输入未命中 1.5 / 输出 4.5;高峰时段 缓存命中 0.10 / 输入未命中 3.0 / 输出 9.0(与
deepseek-v4-flash同价)。 - 核对确认:
deepseek-v4-flash/deepseek-v4-pro的峰谷价与官方最新公布完全一致,无价格变动;发送给该模型的图片按其尺寸换算成 token,与文本 token 一并计费。 - 周末统一按空闲(低谷)价计费(2026-08-23 00:00 起):新规则生效后,周末(周六、周日)全天不再区分峰谷时段,统一按空闲价计费;工作日仍按北京时间 9:00–12:00、14:00–18:00 高峰分段。新规则生效前的调用仍按原规则结算。插件的高峰时段判定、面板「当前时段」徽标、概览 / 日历 / 缓存列表的高峰与空闲分列统计、PNG 报告均按新规则自动判断。
v1.9.4 (2026-08-20)
- 持久化不再落到工作目录(修复「数据又进了工作区」的反馈):之前插件的落盘走的是模型侧沙箱化的
fs服务,在workspace-write模式下会被限制只能写工作区;当系统/用户目录因沙箱不可写时,数据会兜底写进<工作区>/dsh-usage,于是切换工作区又出现「数据没了」的现象(即 issue #4 的本质)。 - 改动:持久化改为由插件宿主进程自身的
node:fs直接完成,完全绕过workspace-write沙箱约束。数据根解析优先级变为DSH_USAGE_DATA_DIR>%LOCALAPPDATA%\dsh-usage-plugin(或%APPDATA%)>~/dsh-usage-data,工作区降级为绝对最后的兜底,正常桌面环境下数据稳定落在 AppData / 用户主目录,与当前工作区无关,切换工作区不再丢失历史。导出、价格表、.keep等写操作同样改为宿主进程node:fs,不再依赖受沙箱子进程。 - 数据迁移:原有 4558 条历史记录位于
<工作区>/dsh-usage/usage-records.json,首次以新版本启动时会被自动去重合并进新的固定数据根(%LOCALAPPDATA%\dsh-usage-plugin\dsh-usage\usage-records.json),无需手动处理。
v1.9.3 (2026-08-20)
- 概览支持日期筛选:概览 Tab 顶部新增筛选栏,可按「今天 / 近 7 天 / 近 30 天 / 全部」快速切换,或自定义起止日期区间;所有聚合统计(按模型表、服务商 × 模型明细、总计)均按所选范围实时计算,并展示当前范围的记录数与总消耗。
- 文档:新增「如何更新插件」章节——桌面端 / 命令行 / 手动三种更新方式、版本锁定、已装版本校验,并提示勿手改
node_modules下文件(每次更新会被 npm 覆盖)。
v1.9.2 (2026-08-20)
修复 issue #4:持久化路径随会话工作区漂移,导致历史用量数据"消失/统计为 0",且 UI 显示路径与实际落盘路径不一致。
背景(症状与根因)
- 症状:切换会话工作区、或用不同工作区重开桌面端后,统计页的「历史用量 / 总消耗」变成 0、仿佛数据丢失;同时统计页顶部显示的「数据持久化」路径,与磁盘上真实写入的文件路径对不上。
- 根因:旧版持久化根按
agent.session.cwd/sandboxPolicy.workspaceRoot推导——无会话启动时常解析到用户主目录,插件激活后又切到当前工作区,且不同根之间不会互相合并,于是历史被「切走」到另一个目录而读不到;写盘还会受工作区沙箱策略约束。
修复
- 固定专用数据目录:持久化根不再跟随
agent.session.cwd/sandboxPolicy.workspaceRoot漂移。解析顺序为:环境变量DSH_USAGE_DATA_DIR> 系统应用数据目录%LOCALAPPDATA%\dsh-usage-plugin(仅 Windows;macOS/Linux 下该分支不生效,因LOCALAPPDATA/APPDATA未定义)> 用户主目录下专用文件夹~/dsh-usage-data(Windows 为%USERPROFILE%\dsh-usage-data,macOS/Linux 为~/dsh-usage-data)。该目录独立于桌面端安装目录、~/.dsh主目录与任何会话工作区,删除工作区或卸载 APP 都不会丢失数据。 - 启动时合并去重:首次初始化与会话激活时,自动把散落在用户主目录、
.dsh、各工作区旧路径里的usage-records.json按time去重合并进固定根(复用现有normalizeRecord),不再只读当前根的那一份。 - UI 路径一致:统计页顶部显示的「数据持久化」路径恒等于真实落盘路径;写入不再绑定工作区沙箱策略,固定目录可正常写入。
- 数据迁移:切换根目录时对旧根记录做真正合并(非复制/分裂),重启后自动恢复全部历史。
影响
- 旧版本落在
%USERPROFILE%\dsh-usage、.dsh\dsh-usage、各工作区dsh-usage下的历史记录,会在首次启动本版本时自动合并到固定目录,无需手动迁移。
v1.9.1 (2026-08-16)
- 文档: README 改为英文优先(
README.md英文 + 新增README.zh.md中文);补充「npm 包名已更换」醒目通知(旧包名@feiyang666/deepseekharnessdesktop→ 新包名@feiyang666/dsh-usage-plugin),并移除发布教程等无关内容;修正 tarball 测试命令为新包名文件名。
1.9.0 — 2026-08-16 · 面板宽度自动适配(最终方案)
解决「不同窗口/屏幕大小下,宽表最右列与合计列被窗口右缘裁掉、卡片只剩半张」的问题。该问题的根因是:会话视图容器没有宽度约束,面板被宽表格/卡片撑到 max-content 宽度(约 1300px+),超出窗口右缘后被窗口本身裁掉,因此表格内部也不会出现滚动条。
新增
- 面板宽度以视口封顶:页签容器
max-width: min(1200px, calc(100vw - 24px)),任何窗口/屏幕大小下面板都不会超出窗口右缘。- 大窗口下仍保持 1200px 水平居中;
- 窄窗口下跟随视口宽度收缩。
- 宽表在容器内横向滑动:表格保持自然宽度(
width: max-content),容器overflow-x: auto兜底展示完整列。
修复
- 修复「按模型」「按 API 服务商 × 模型」等宽表最右列(空闲消耗 / 总消耗、合计列)显示不全的问题——表格超出可视区时出现横向滚动条,不再被窗口裁掉。
- 修复顶部统计卡片行第 6/7 张卡片只有一半的问题(卡片网格随面板宽度自动换行)。
优化 / 界面
- 撤掉 1.8.0 引入的「整体 CSS zoom 缩放」方案:不再把表格缩到看不清,保持默认可读字号。
- 根容器 / 页签容器增加
width:100% + max-width:100% + min-width:0 + box-sizing:border-box,彻底打破 flex 宽度链导致的溢出。 - 设置页保留原有的「底部横向滑动条」交互;工作区「用量与消耗」同样采用滑动条方案。
1.8.0 — 2026-08-16 · 宽表自适应(中间方案,已被 1.9.0 取代)
首次尝试解决宽表被裁问题:引入
FitTable自适应容器,表格超过容器宽度时用 CSSzoom按比例缩小,配合ResizeObserver监听窗口尺寸。该方案在设置页被证明「缩小得太多、字体过小、不便于阅读」,未符合预期,因此在 1.9.0 中被废弃并改为「面板宽度视口封顶 + 宽表容器内横向滚动」。此版本不建议用于正式发布,仅保留过程记录。
新增
FitTable组件:测量容器宽度与表格自然宽度,超宽时按比例缩放(下限 0.35),并监听ResizeObserver/窗口resize自动恢复。- 所有宽表(概览两表、日历两表、缓存列表、价格两表)套用 FitTable。
已知问题
- 设置页在网页缩放后表格显得很小,阅读体验差。
1.7.0 — 2026-08-16 · 价格表官方标注 + 服务商 × 模型明细钻取
新增
- 价格表标注为「DeepSeek 官方 API 价格表」:明确说明本表为 DeepSeek 官方 API 价格(单位:元 / 百万 tokens),仅涵盖官方模型
deepseek-v4-flash与deepseek-v4-pro,价格按官方公布固定、不可编辑。 - 概览「按 API 服务商」升级为「按 API 服务商 × 模型」钻取明细表:
- 每个服务商为一组(灰底加粗组头行),显示该服务商小计:调用数、高峰/空闲次数、各 token 合计、高峰消耗、空闲消耗、总消耗;
- 组头下逐行列出该服务商每一个模型的详细数据(调用、高峰/空闲、输入·未命中、缓存命中、输出、推理、高峰消耗、空闲消耗、总消耗),按消耗从高到低排序;
- 服务商按消耗降序排列(deepseek-official → opencode-go → deepseek-modlens …);
- 表尾为「总费用合计」行。
- PNG 导出报告的「按服务商」一节同步升级为「按 API 服务商 × 模型」分组表(组头行 + 缩进模型行 + 总费用合计行)。
- 面板顶部新增全局计价说明:各模型与 API 服务商的消耗统一按 DeepSeek 官方 API 价格计费(因各厂商定价数据不完整,不按第三方另行计价;无 DeepSeek 官方价格的模型消耗按 0 统计)。
优化 / 界面
- 概览「按模型」表保留并继续分组展示;新增组头行样式(
tdGroup/tdGroupR)。 - 模型名与 API 服务商均以请求参数为准如实显示。
1.6.0 — 2026-08-16 · 区分 API 服务商 + 总费用合计 + 缓存列表性能优化
新增
- 按 API 服务商统计消耗:概览新增「按 API 服务商」表,显示每个服务商(deepseek-official、opencode-go、deepseek-modlens…)的调用次数、高峰/空闲次数、高峰消耗、空闲消耗、总消耗,按消耗降序;空服务商显示「未知服务商」。
- 总费用合计:
- 概览服务商表底部「总费用合计」行(含高峰/空闲/总消耗合计);
- 缓存命中列表表尾新增「总费用合计」行:整段筛选范围内的调用数、各 token 合计、命中率、高峰 + 空闲 + 总消耗。
- 用量日历当日明细:每行的模型列下方补充该条调用的 API 服务商小字。
- PNG 报告新增「按 API 服务商」一节。
性能(缓存命中列表卡顿优化)
- 分页渲染:每页 100 条,上一页 / 下一页 + 页码指示,不再一次性渲染上千行 DOM(卡顿主因)。
- 自动刷新 3 秒 → 10 秒:原每 3 秒全量拉取所有记录并整表重渲染;现仅 10 秒拉取一次并增量显示。
- 切换筛选 / 日期区间 / 清除区间时自动回到第 1 页;汇总与表尾合计仍按整个筛选范围计算,不受分页影响。
验证
- 实测 2700+ 条记录 → 28 页;即使接近 10 万条上限仍保持流畅。
- 已校验「各服务商消耗之和 == 总费用合计」「高峰 + 空闲 == 总消耗」恒成立。
1.5.0 — 2026-08-16 · 真实模型名 + 高峰/空闲分列消耗 + 界面字号自适应
新增 / 修复(用量)
- 非 DeepSeek 模型不再显示「未知模型」:模型名改为以请求参数里的真实模型名为准如实显示(
modelName助手);概览、用量日历、缓存命中列表、PNG 报告均以真实模型名分组。- 修复前:kimi-k3、qwen3.6-plus、glm-5.2、grok-4.5、minimax-m3 等全部合并显示为「未知模型」。
- 修复后:各自成行、如实显示;无 DeepSeek 官方价格的模型消耗按 0 统计。
计价(高峰 / 空闲分列)
- 服务端
buildDays每日聚合新增高峰 / 空闲消耗拆分字段(按base/peakValley/auto三档各记一桶:basePeakCost、pvOffPeakCost、autoPeakCost等共 6 个),作为单一天数据源;前端有「按记录回退计算」兜底,旧 host 未升级时也能正确显示。 - 概览:新增「高峰消耗」「空闲消耗」卡片,总消耗卡注明「高峰 + 空闲」;模型表新增高峰/空闲调用次数、高峰消耗、空闲消耗、总消耗列与合计行。
- 用量日历:月份卡片新增高峰消耗/空闲消耗;每日统计表改为「高峰消耗 | 空闲消耗 | 总消耗(自动)」三列(替换原 消耗(自动/峰谷/基础) 三列,列数更少更不挤);悬停详情与当日明细都列出高峰/空闲的条数与消耗。
- 缓存命中列表:汇总行区分「高峰消耗 X · 空闲消耗 Y · 总消耗 Z」;每行消耗金额按峰谷着色(高峰橙 / 空闲蓝)。
- PNG 报告:头部与卡片新增高峰价/空闲价消耗;模型消耗表新增高峰消耗 / 空闲消耗 / 总消耗列;模型名用真实名称;底部注明按 DeepSeek 官方价格统一计价。
界面(显示大小自适应 + 去拥挤)
- 面板全部字号改为 em 相对字号(
fs()辅助),随宿主「显示大小」设置的字体基准自动缩放。 - 表格内边距加大(6px → 7px/10px)。
- 模型列允许换行(
tdWrap),卡片网格加宽防挤压。 - 月份导航文字 / 日期标题同步 em 适配。
1.4.0 及更早(基线,未逐版本拆分)
本项目自本日志撰写时起有记录的版本为 1.4.0。1.0.x–1.3.x 为早期迭代,未保留逐版本改动记录,以下为 1.4.0 时的完整功能基线(也是后续各版本迭代的起点):
插件主体
- Host 半(
lib/index.js):监听llm/stream瀑布事件,捕获每次模型调用的 token 用量与缓存命中(输入·未命中 / 缓存命中 / 缓存写入 / 输出 / 推理 / 结束原因),写入<会话工作区>/dsh-usage/usage-records.json,实时落盘、上限 100000 条、重启自动恢复。 - Client 半(
lib/client.js):在 WebUI「对话」「轨迹」之后提供「用量与消耗」「剩余余额查询」两个 tab;设置页亦有对应入口。
计费
- DeepSeek 峰谷 / 基础价格表(
deepseek-v4-flash/deepseek-v4-pro),支持在面板内编辑价格并持久化到pricing.json,可一键恢复默认。 - 峰谷价生效时间:北京时间 2026-08-17 00:00;生效前按基础价,生效后按高峰/空闲时段(高峰 = 北京 9:00–12:00、14:00–18:00)。
auto / base / peakValley三档计费,导出中每行带三档费用与period标记。
界面
- 概览(总消耗卡片 + 按模型消耗表);用量日历(月度热力图,按消耗或调用数着色,悬停详情、点击某天看明细 + 每日统计表);缓存命中列表(今天/近7天/近30天/全部 + 自定义日期区间);价格表(自动/峰谷/基础三档)。
- 剩余余额查询:用
DEEPSEEK_API_KEY调/user/balance显示总余额/充值/赠送。
数据与导出
- CSV / JSON / PNG 长图导出(最新在前,最多 2000 条,超出提示),支持自定义导出目录(原生目录选择器)与「打开所在目录」。
- JSON / CSV 导入合并,按时间去重。
- Windows / macOS / Linux 跨平台路径与原生操作适配;启动诊断日志
dsh-usage-boot.log。