前言¶
在 DeepSeek Harness(DSH)里做多模型、多工作区开发时,官方界面往往只能看到当前会话或粗粒度的活动信息。若你想按 provider/model、按天、按工作区(cwd)汇总历史用量,又希望数字与计费语义一致、且不依赖额外上报通道,就需要从 Harness 自己落盘的 session 日志里重算一遍。dsh-usage-replay 走的就是这条路:只统计 Token,不做费用估算,也不发起网络请求。
这是什么¶
dsh-usage-replay 由社区维护者 Eclipse-NotFound 发布,分类属于模型推理相关插件。它回放 $DSH_HOME/sessions(默认 ~/.dsh/sessions)下已持久化的 session 日志,把 provider 上报的 usage 按模型、按日、按工作区聚合,并在 UI 与本地只读 HTTP 接口中展示。数字全部来自 Harness 既有日志,不在旁路记账;卸载插件不会丢历史,安装前已有的会话同样计入。
核心功能¶
用量面板 Tab¶
在右侧边栏注册「用量 / Usage」Tab,依赖可选同伴插件 dsh-better-sidebar ≥ 0.28。未安装 better-sidebar 时,该 Tab 不会注册,但 Composer 坞区的分模型入口仍可用。
面板包含三块:
- Models — 按 provider/model 列出 sessions、requests、uncached input、output、cache read、cache write、total。
- By day — 最近 30 天;可在堆叠柱状图与分模型平滑曲线间切换,悬停显示日期、当日合计与各模型明细。曲线视图按单日最大单模型用量缩放纵轴;可对长尾数据开启 Log-scale。柱状图按真实 Token 占比堆叠。
- Workspaces — 按 session 的
cwd排序用量,并展示各工作区内的模型构成。
Composer 坞区分模型芯片¶
在原生 activity/usage 芯片旁增加中性标签「分模型 / Per-model」。点击可打开当前会话的 per-model 表格(model、requests、input、output、cache read、cache write、total)。坞区一行不重复展示合计。
本地只读 HTTP 路由¶
通过 Host 的 Connection 服务(与 0.2.1 起其他插件路由相同的 loopback/trusted-host 准入)暴露:
GET /usage-replay/api/summaryGET /usage-replay/api/session?sessionId=…
返回内容仅为分模型 Token 数字,无额外敏感字段。插件不向模型注入 prompt、tool 或 schema。
可选:会话范围内的变更文件¶
原生 changed-files 卡片基于 git 工作树快照,多会话共享工作区时可能列出本会话未改动的文件。在插件配置中开启 sessionScopedEdits: true 后,卡片仅保留本会话 file tools 实际触达的文件(跟踪 fs/write-intent / fs/edit-intent,与录制器同源事件)。Subagent 的文件工具编辑计入父会话对应 turn。仅通过 shell 改动的文件在此模式下不会被归因。默认关闭,因会改变其他插件可观察行为。
- id: usage-replay
config:
sessionScopedEdits: true
统计方式与隐私¶
回放逻辑概要如下:
- 扫描
session[.vN].jsonl[.zstd],逐帧解码 multi-frame Zstandard 容器(容忍尾部损坏)。 - 将
assistant/message的 usage 事件归并到最近一次request/header信封对应的 provider/model。 - 针对完整 session 日志(非可见/压缩窗口),被 prune 或 compact 的 turn 仍计入。
- 按文件
size + mtime缓存解析结果,未变更文件不重复读取。 - Retry/attempt 在 provider 上报 usage 处计数,语义与官方 token meter 的计费形态一致。
隐私方面:仅读本地 session 日志;无网络请求、无遥测、无上传。
安装与启用¶
需要 DeepSeek Harness 0.2.1+(使用 0.2.1 Connection 服务)。package.json 中 engines.dsh 为 >=0.2.1-rc.1 <0.3.0;当前包版本 0.2.0,许可证 MIT。
社区市场或 npm 安装:
dsh plugin --profile <profile> add dsh-usage-replay
或指定本仓库:
dsh plugin --profile <profile> add https://github.com/Eclipse-NotFound/dsh-usage-replay
桌面应用由应用内 Plugins 页管理 profile:用包路径/spec 安装,而非上述 CLI。新增 host 侧能力需重启应用;仅 client 更新可在硬刷新后生效。
典型用法¶
- 安装插件;若需要右侧「用量」Tab,再安装 dsh-better-sidebar ≥ 0.28。
- 日常使用 Harness 后,打开侧边栏「用量 / Usage」查看跨会话模型、按日曲线或工作区排名。
- 在当前会话 Composer 坞区点击「分模型 / Per-model」查看本会话分模型明细。
- 若需在脚本或本地工具中读取聚合结果,向 Host 请求上述两个 GET 路由(须满足 Host 的 trusted 连接策略)。
开发自检(无构建步骤,Node 22.19+ / 24):
node test/offline-check.mjs
适用场景与注意¶
适合需要跨会话、分模型、分工作区核对 Token、且只要 Token 不要价目表的场景。与「实时侧路上报」类方案不同:这里的一切数字都可追溯到本地 jsonl/zstd 日志,卸载插件后日志仍在,重装可继续回放。
安装前请自行审阅 GitHub 源码 与 MIT 许可证。插件以当前 DSH 进程权限运行,能读取 ~/.dsh/sessions 下日志;多用户或共享机器上应确认目录权限是否符合预期。DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-usage-replay 把 Harness 已落盘的 session 日志重放为可浏览、可查询的 per-model 用量视图,并明确限定为 Tokens only。目录与文档:
- 社区目录:https://www.skillhub.cn/plugins/Eclipse-NotFound/dsh-usage-replay
- GitHub:https://github.com/Eclipse-NotFound/dsh-usage-replay