Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TokenTracker

本地离线 token 用量统计工具 —— 解析 Claude Code / Kimi Code CLI 的本地会话记录、OpenAI Codex(GPT) 本地日志、千问(qwen) 本地用量日志,并导入 DeepSeek 平台 CSV 导出,按天 × 来源 × 项目 × 模型聚合,生成自包含 HTML 仪表盘。全程离线,用量数据不出本机。

功能特性

  • 多数据源统一口径:Claude Code / Kimi Code CLI 本地会话 + OpenAI Codex 本地日志 + 千问本地日志 + DeepSeek 平台导出 CSV,聚合同一套数据
  • 自包含 HTML 仪表盘:内嵌 Chart.js,无网络依赖,单文件即开即用
  • 趋势图六档时间段:近 7 天 / 近 30 天 / 近 90 天 / 上月 / 本月 / 全部(默认近 30 天),零值日期自动补齐,tooltip 隐藏零用量模型
  • 全量 CSV 导出--csv-out 输出天×来源×项目×模型粒度数据,与仪表盘同一次聚合
  • CSV 补差去重:本地已有记录的天×模型按「官方总量 − 本地已计」补差导入,不重复计也不漏计
  • 用量去重:Claude 日志同一 message.id 的重复 usage 只计首次(Kimi 侧按记录指纹),子代理(subagents/agent-N)用量单列来源计入
  • 缓存加速.cache/ 增量解析,--refresh 可强制全量
  • 零依赖:纯 Node 标准库 + 单个 vendored Chart.js(MIT),无 package.json

快速开始

node src/index.js --html dashboard.html   # 聚合并生成仪表盘
open dashboard.html                        # 在浏览器打开

macOS 日常入口:双击 更新仪表盘.command → 重新聚合 → 重建仪表盘 + 全量 CSV → 自动打开浏览器。

数据源

来源 说明
Claude Code ~/.claude/projects 下的 session 会话记录(来源 claude);subagents/*.jsonl 子代理记录单列来源 claude-subagent
Kimi Code CLI 本地会话记录(来源 kimi);agents/ 下非 main 的子代理记录单列来源 kimi-subagent
千问(qwen) ~/.qwen-usage/usage.jsonl 本地日志(qwen-vision 脚本每次成功调用追加一行,来源 qwen);辅以百炼账单 CSV 对账检查(node src/qwen_reconcile.js,不做自动补差)
OpenAI Codex(gpt) ~/.codex/sessions/<YYYY>/<MM>/<DD>/rollout-*.jsonl(三层嵌套)与 ~/.codex/archived_sessions/rollout-*.jsonl(平铺)本地日志的 token_count 事件(来源 codex,模型族统一记 openai;旧会话无计数则跳过并在 genInfo 标注;从 Claude Code 导入的会话不统计——按 ~/.codex/external_agent_session_imports.jsonimported_thread_id 整 session 排除 + total-only 事件(无分量)不统计;openai 族选中时卡片/趋势 tooltip 展示「真实消耗=未缓存输入+输出」,去继承口径——按 thread(session_meta.payload.id)首事件作继承基线、后续逐分量正增量,子代理/上下文压缩接续文件的继承累计不重复计入;毛量含缓存读取仍单独呈现)
DeepSeek 平台 导出 zip 丢入 vendor/usage_export/,自动解压导入 amount-*.csv / cost-*.csv

CLI 用法

node src/index.js [选项]

--project <glob>    按项目路径过滤(支持 * 通配)
--since <date>      起始日期 YYYY-MM-DD
--until <date>      截止日期 YYYY-MM-DD
--top <N>           明细显示前 N 条(默认 20,0 为全部)
--json              输出 JSON 而非表格
--html <out.html>   写出自包含 HTML 仪表盘
--csv-dir <path>    DeepSeek 导出目录(默认 vendor/usage_export/)
--csv-out <path>    写出全量 CSV(可与 --html / --json 组合)
--refresh           忽略缓存强制全量解析
-h, --help          显示帮助

千问对账(对比检查,不做自动补差):

node src/qwen_reconcile.js [--csv <path>] [--map 维度=列名|列索引 ...]

目录结构

src/                         解析、聚合、CLI、HTML 生成
test/harness.js              54 项回归测试(首版 49,修正后 +P8-7/P8-8 三条 + 去继承修正 P8-9 两条)
vendor/chart.umd.min.js      Chart.js v4.5.1(唯一外部依赖)
docs/assets/                 应用图标

测试

node test/harness.js

说明

  • 所有数据均在本机离线解析,不上传任何用量明细
  • Claude 日志的 uncached(未缓存输入)= input_tokens 原值:日志中 input 与 cache 字段互斥,不做减法
  • 平台 CSV 的 utc_date 按本地日期处理,时区归属偏差 ≤ 1 天
  • 个人用量原始数据与生成产物(dashboard.htmlexports/logs/ 等)不入库,见 .gitignore

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages