DeepSeek Harness Hub
← 返回列表

全机用量统计satan9394/dsh-usage-unified

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

汇总全机调用日志,看趋势明细并导出数据

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/13 · 已提供中文文档

Machine-wide DeepSeek Harness (dsh) token usage statistics — trends, a custom date range, per-model bucket splits, call details, CSV/JSON export. 全机 DSH 用量统计:趋势 / 自定义区间 / 模型四桶 / 调用明细 / 导出,中英双语、浅深色。

综合分
29.7
GitHub 分
29.7
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add satan9394/dsh-usage-unified
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-host-webserver@deepseek-ai/schemastery@deepseek-ai/dsh-client-runtime
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-usage-unified

一个 DeepSeek Harness(dsh)插件,把两个上游插件合并为一个,消灭「一个有这个功能、另一个没有」:

| 上游 | 贡献 |
| --- | --- |
| lanlandeli/dsh-usage-stats | 界面强:侧边栏 + 全屏浮层、按天 Token 趋势、模型环图、Token 构成卡、逐调用明细表(筛选 + 分页)、CSV/JSON 导出、工作区/任务范围筛选、中英双语、主题自适应。 |
| zoyluoblue/deepseek-harness-token | 数据强:发现全部 dsh home(~/.dsh、~/.dsh_desktop/、$DSH_HOME)、直接读取原始会话日志(zstd 多帧容器)、纯函数可续算折叠、增量持久索引、全部/7 天/30 天、当前与最长连续天数、高峰时段、模型四桶拆分、覆盖度披露、设置页。 |

两者是在数据层合并的(不是并排两套):一份全机索引同时喂一个仪表盘,所以各处数字一致。

功能对照(合并后)

| 功能 | 上游 #1 | 上游 #2 | 本插件 |
| --- | :---: | :---: | :---: |
| 全机(所有 dsh home / 旧 Desktop 版本) | ✗ | ✓ | ✓ |
| 两种日志格式(session.jsonl.zstd、session.v3.jsonl.zstd) | n/a | ✗(仅 v0) | ✓ |
| 侧边栏入口 + 全屏浮层 | ✓ | ✗ | ✓ |
| 设置 → 使用统计 | ✗ | ✓ | ✓ |
| Token 总量(含缓存读) | ✓ | ✓ | ✓ |
| 7 天 / 30 天 / 全部 趋势 | ✓ | ✓ | ✓ |
| 自定义时间段 | ✗ | ✗ | ✓ |
| 平滑多序列趋势(总 / 输入 / 输出 / 缓存读) | ✗ | ✗ | ✓ |
| 当前连续天数 | ✓ | ✓ | ✓ |
| 最长连续天数 | ✗ | ✓ | ✓ |
| 高峰时段 | ✗ | ✓ | ✓ |
| 缓存命中率 + 调用次数卡片 | ✗ | ✗ | ✓ |
| 模型环图 + 占比 | ✓ | ✗ | ✓ |
| 单模型 输入/缓存读/缓存写/输出 拆分 | ✗ | ✓ | ✓ |
| 逐调用明细(时间、耗时、Token、缓存率、模型、思考程度) | ✓ | ✗ | ✓ |
| 工作区 + 主任务/子任务筛选 | ✓ | ✗ | ✓ |
| CSV / JSON 导出 | ✓ | ✗ | ✓ |
| 覆盖度 + home + 跳过日志披露 | ✗ | ✓ | ✓ |
| 中英双语、浅色/深色 | ✓ | ✓ | ✓ |

两个上游都带的活跃热力图在本插件里被移除——它与趋势图重复。

安装

直接从 GitHub(运行产物已随仓库提交,安装时不构建):
dsh plugin --profile web add github:satan9394/dsh-usage-unified

从 npm 发布版(发布后):
dsh plugin --profile web add dsh-usage-unified

从本地检出:
dsh plugin --profile web add E:\path\to\dsh-usage-unified

重启 Web profile。仪表盘会出现在侧边栏底部的「使用统计」,以及设置里的一个分区。所有数据留在本机;接口仅响应回环(loopback)调用。

兼容范围见 docs/COMPATIBILITY.md,权限/依赖/失败边界见 docs/SECURITY.md。

架构

src/
index.ts          宿主入口:Config、挂载索引 + 路由 + 刷新循环
homes.ts          发现全部 dsh home(按 sessions realpath 去重)
reader.ts         遍历会话日志;两种磁盘格式都能解码(不依赖私有 API)
zstd-frames.ts    扫描拼接的 zstd 帧(续读游标按帧对齐)
fold.ts           纯函数可续算折叠:会话 → 总量、按天/小时切片、调用
aggregate.ts      快照 + 调用行 + 连续天数/高峰时段 + CSV
index-store.ts    增量索引,缓存在 DSH_HOME 下的文件
transport.ts      /snapshot、/calls、/export.csv、/export.json(仅回环)
types.ts          两半共享的传输契约
client/
index.tsx       侧边栏 + 浮层 + 设置三处注册,仪表盘
i18n.ts         合并后的中英词典
source.ts       唯一传输层
styles.ts       仪表盘样式

关键设计(完整论证见 PLAN.md):

- 读取层与 harness 版本无关。 旧格式是 JSONL 存储记录,流式内容被打包(text-chunks 等)且没有 seq;新格式是纯事件。计费只需要带序号的 assistant/message,所以读取层保留「字符串 type + 数字 seq」的行、跳过打包块——不依赖会改名的私有 decodeStorageRecord。
- 每个 (turn, step) 一条调用。 用量每步上报两次(流式 assistant/chunk + 最终 assistant/message),折叠采用替换而非累加,并为明细表保留每步一条;compaction 单独成条。
- 全部 vs 有界区间。 全部时间读会话的权威计数器(时间戳被判为异常的用量也计入);有界区间由按天切片求和(因此可能更小——这是诚实的行为)。
- 文件缓存。 索引原子写入 $DSH_HOME/usage-unified/index-v1.json,不依赖可选的 ctx.storageDomain,保证面板始终能加载。

开发

npm install          # .npmrc 设 legacy-peer-deps(dsh 依赖树)
npm run typecheck    # tsc --noEmit
npm run test         # vitest(46 项)
npm run build        # tsdown → lib/index.js + lib/client.js
npm run check        # typecheck + test + build
npm run verify:realdata   # 只读扫本机真实 dsh home
npm run smoke:local       # 本地起 HTTP 路由跑真实数据自测(不装载)
npm run smoke:serve       # 同上并常驻,打印查看器 URL
npm run report            # 生成静态自包含报告(30 天)并打开
npm run report:all        # 同上,全部时间

smoke:local 就是「在工作区里跑、指向真实数据」的路径:不碰 DSH profile。它用普通 Node 服务器把同一批宿主路由挂到空闲回环端口、索引指向真实 ~/.dsh,跑 7 项 HTTP 断言(snapshot 7d/all、main scope、calls、CSV、JSON、404);配 smoke:serve 还会提供一个内置查看器,不用 DSH UI 也能看到真实数字。首次冷扫需数分钟;索引缓存在 .smoke-cache/(已 gitignore),之后数秒。

verify:realdata 遍历每份真实会话日志、折叠,并把折叠总量与独立编码的用量重建逐位核对;打印发现结果、两种格式、总量、模型、工作区、覆盖度、calls 接口与持久化往返。

兼容性

- 面向 dsh 0.1.5-rc.1 插件 API(peerDependencies),并同时读取旧/新两种日志布局,不局限于某一代 harness。
- 浏览器半侧对注入的运行时缝隙自带最小结构类型(src/client/runtime.d.ts),不 import @deepseek-ai/dsh-client-runtime(其公开发布线已与 harness 实际提供的偏离)。@deepseek-ai/* 客户端模块仍是 peerDependencies,由 harness 在加载时提供。

跨 Agent 排行榜(可选,opt-in)

本仪表盘只统计 DSH,且完全离线——安装插件不联网、不上传任何东西。把机器上所有 Agent(DSH、Claude Code、Codex、OpenCode……)汇成一个数字并提交到 tokscale 排行榜是可选的,只有你从仓库克隆后运行引导脚本才会发生(插件本身永远不需要):

git clone https://github.com/satan9394/dsh-usage-unified && cd dsh-usage-unified
npm install
npm run leaderboard:setup     # 引导:安装/登录 tokscale、导出、首次提交
npm run leaderboard:off       # 撤销:删除每日任务、停止提交

leaderboard:setup 遵循 docs/LEADERBOARD.md,其中逐条说明离开本机的数据,并在上传前征求确认。该文档也覆盖两个导出器(scripts/tokscale-export.mjs 处理 DSH 的版本化日志、scripts/ccswitch-export.mjs 处理 CC Switch 代理侧的 Claude 用量)、定价表(scripts/custom-pricing.mjs)与每日刷新任务。

隐私速览

一次提交只带聚合数据——按天的 Token 桶、估算成本、消息数、client 名与模型名、MCP server 名、会话时长指标、随机设备键 dev_…、CLI 版本。绝不带提示词、回复、源码或工作目录/文件路径。有两项在上传端无法脱敏:模型/provider 名 与 MCP server 名(介意就改 MCP 配置里的名字)。在 npm run report 前设 TOKSCALE_USERNAME 可内嵌你的个人卡片;不设则报告保持匿名。

许可证

MIT —— 见 LICENSE。衍生自两个 MIT 许可的插件;其源码见 _upstream/。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群