deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:IZRINO/dsh-token-stats
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
English: DeepSeek Harness token usage statistics plugin — all sessions, hourly / daily / weekly / monthly aggregation, and a multi-series line chart for input, cache read, cache write, output, and total tokens.
中文:DeepSeek Harness 的 Token 用量统计插件 —— 统计全部会话,按小时 / 天 / 周 / 月聚合,折线图同时展示输入、缓存读、缓存写、输出和总 token。
DeepSeek Harness(DSH)的 Token 用量统计插件。在设置面板新增一个「Token 统计」页面,统计全部会话的模型调用 token 用量,提供小时 / 天 / 周 / 月四种粒度和自绘 SVG 折线图。
第一版范围:
需要 DSH web profile 和可用的 dsh plugin:
dsh plugin --profile web add <本目录的路径或 npm/GitHub 地址>
然后重启 dsh web,打开 设置 → Token 统计。
本地目录安装示例:
dsh plugin --profile web add /home/izrino/code/dsh-token-stats
在 profile 的 cordis.patch.yml 中给 token-stats 行加 config(不要新增重复插件行):
- insert:
- id: token-stats
name: dsh-token-stats
config:
timezone: Asia/Shanghai
weekStart: monday
retainDays: 365
dataDir: ''
inject:
- webServer
- sessions
- sessionPersistence
| 配置 | 默认值 | 说明 |
|---|---|---|
enabled |
true |
为 false 时插件不激活 |
dataDir |
'' |
缓存目录。空值使用 $DSH_HOME/storages/dsh-token-stats;相对路径基于 $DSH_HOME 解析;也接受绝对路径 |
timezone |
system |
天/周/月边界时区。system 表示宿主机时区,也可写 IANA 名称,例如 Asia/Shanghai、UTC |
weekStart |
monday |
周统计的起始日:monday 或 sunday |
retainDays |
365 |
小时桶保留天数,7–3650 |
配置错误会在插件加载时拒绝启动,不会静默忽略。
DSH session log(真源)
│
│ session/event(实时) + sessionPersistence.readFrom(历史/增量)
▼
usage-fold.js:每个 session 一个折叠状态
│ usage chunk 与 assistant/message 同 (turn,step) 替换,不重复计数
▼
cache.json:原子 JSON 快照,可随时删除重建
│
▼
host API:/api/token-stats/summary|series|breakdown|health
│ loopback-only + GET-only
▼
lib/client.js:settings.section「Token 统计」页面 + 多序列 SVG 折线图(输入/缓存读/缓存写/输出/总量,图例可开关;打开时每 60 秒自动刷新)
llm/streamdsh-token-meter 对齐:同一 (turn, step) 先出现的流式 usage chunk 会被最终 assistant/message usage 替换,而不是累加。inputTokens:未缓存输入;outputTokens:输出;cacheReadTokens / cacheWriteTokens:缓存读 / 缓存写;totalTokens = 上述四项之和,reasoning 不计入;calls:最终采用的 usage 样本数;cacheHitRate = cacheReadTokens / (inputTokens + cacheReadTokens + cacheWriteTokens),无 prompt token 时为 null。所有接口只接受来自 127.0.0.0/8 或 ::1 的 GET 请求。
| 接口 | 参数 | 返回 |
|---|---|---|
/api/token-stats/series |
granularity=hour\|day\|week\|month,metric,fromMs,toMs,可选 timezone |
折线图数据点,缺失周期补零 |
/api/token-stats/summary |
fromMs,toMs,可选 timezone |
范围汇总、调用数、缓存命中率、活跃天数 |
/api/token-stats/breakdown |
groupBy=model\|provider,fromMs,toMs,limit |
按模型/供应商分组的聚合行 |
/api/token-stats/health |
无 | 时区、weekStart、已缓存 session 数 |
示例:
curl 'http://127.0.0.1:3080/api/token-stats/series?granularity=day&metric=totalTokens'
无需安装依赖:
npm test
npm run check
lib/usage-fold.js:纯折叠与聚合逻辑;lib/cache-store.js:原子缓存读写;lib/index.js:host Cordis 插件 + HTTP API;lib/client.js:零构建步骤的浏览器 bundle(window.__ModuleLoader__.load),只从 DSH 客户端模块表 require react。cache.json 是纯派生数据,删除后下次请求会从 session 日志重建。
/series 为控制折线图点数设有范围上限:小时 90 天、天 730 天、周 1825 天、月 3650 天;页面默认范围远小于上限。0.1.0-rc.x 的 settings.section、session/event、sessionPersistence 契约实现。session/flush 时落盘。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。