用 Claude Code,经常同时开好几个会话、跑不同项目,很好奇每轮会话、每个项目到底用了多少时间,烧了多少 token。cc-reports 把它显影成一张点击就重算的日历:今天、这周、这个月,一眼看清。
这像是一本工作日历。
全站配图与动图均为演示数据(项目名
01-saas-web之类都是编的)。你自己的报告只在本机生成,不经过任何服务器。
日报
- 四个里程碑:最长专注(最长的单段 session)· 投入时长(各 session 活跃时长之和,标出它占今天跨度多少)· 今日穿梭(碰了几个项目、切换几次)· 连续开工(到今天没断几天)
- 时段 token 消耗:24 根柱子按模型堆叠,背后那层斜纹是你近 7 日同时段的常态——今天是高出常态还是塌下去,一眼可读。右边跟着一栏解析:上午/下午/晚上/深夜占比、峰值时段、今天总量是日均的几倍。点柱子看那一小时的模型分布。
- 各项目用量:先一条时间占比条(今天的时间怎么分给了几个项目、有没有主线),再是项目卡——主指标是活跃时长(时间=心思落在哪),卡上那张便签是这个项目最近一次 session 的标题。
- 今日 Sessions:每个 session 的标题、时长、token;实时模式下点开可以下钻看这轮到底做了什么。
- 等效 API 成本:
≈ $xxx可以点开,按模型列出四类 token 的「量 × 单价 = 小计」。这是按官方价目表折算的等效成本,不是订阅实付(订阅制下拿不到真实账单),所以永远带一个≈。
周报 / 月报
- 时段图升级成 天 × 24 小时的热力图,点格子看那个时段的模型分布;右边一栏解析你的作息节奏(时段分布、单日峰值、爆发型还是平稳型、最长连续活跃)。
- 里程碑变成"这段时间之最":最长专注在周几、最晚的一晚熬到几点、哪天穿梭了最多项目。
跨天的长 session(有时候会不关窗口连着用好几天)会被按日切开,每天的数字是"那天做了什么",不是"这个 session 从哪天开的"。所以它是一本工作日历,不是一份 session 流水账。
token 总量里约 90% 是 cache_read——每轮对话重读上下文产生的,随会话变长而 N² 膨胀。拿它当"你干了多少活"会严重误导:一个开着不关的长会话,看着比谁都高产。
所以这里分两把尺子:项目卡按活跃时长排序、量指标用产出(output + cache_creation),总量只作小字附注;时段柱子画的是当小时的总消耗(含 cache_read)——那是真实流过的量,也是折算成本的依据。哪个数字是什么,页面上都标着,不混着说。
市面上的工具大多在拼"多少"——token、成本、燃烧率。cc-reports 只认一件别人不太管的事:你怎么用。
| 查额度 / 用量的工具 | cc-reports | |
|---|---|---|
| 核心问题 | 花了多少 token、还剩多少额度 | 每天用它做了什么 |
| 时间粒度 | 当前周期 / 累计总量 | 按天切片的工作日历 |
| 项目归属 | 一般没有 | 自动认出每天在哪个项目干活 |
| 跨天长 session | 整段算在起始那天 | 按日切开,每天各算各的 |
| 时段节奏 | 一般没有 | 24 小时 × 模型 分布 |
| 运行 | 视工具而定 | 100% 本地、不联网、纯 Python 标准库 |
最适合:
- 每天重度用 Claude Code、想知道时间和 token 花在哪的人
- 同时开好几个项目、想看每个项目各占多少的人
- 想留一份"我用 AI 做了什么"的可回看记录的人
不太适合:
- 只想看"还剩多少额度"——官方
/usage更直接 - 想要实时燃烧率加限额预测——有专门工具(如 Claude-Code-Usage-Monitor)
git clone https://github.com/pxx-design/cc-reports
cd cc-reports
python3 cc-reports.py serve
# 打开终端里提示的 http://localhost:8765git clone https://github.com/pxx-design/cc-reports
cd cc-reports
python cc-reports.py serve
# Windows 上命令是 python,不是 python3Windows 逻辑上跑得通,但暂未在真机验证过。
装好后,在任意目录对 Claude Code 说一句「看我的 cc 日报」,它自己启服务、开页面。
# macOS / Linux:软链进 skills 目录,以后 git pull 就更新
ln -s "$(pwd)" ~/.claude/skills/cc-reports
# Windows:把整个文件夹复制进 %USERPROFILE%\.claude\skills\cc-reports\不想装也行:对着 clone 下来的目录说「读 ./SKILL.md,帮我生成 cc 报告」,一样能跑。
不想开落地页、只想随时瞟一眼今天的用量?menubar/ 里有一台常驻桌面的迷你终端——复古 CRT 设备造型,琥珀磷光屏,原生 Swift 编写,零第三方依赖。
| WORK · 比产出 | TIME · 分时间 | 24H · 作息节奏 |
|---|---|---|
![]() |
![]() |
![]() |
- 三视图(右侧物理按键切换):WORK 项目分段 LED 电平表 · TIME 总时长+频谱分配条+近7天折线 · 24H 雷达图看今天几点在干活
- 口径诚实:主数字是「产出」(output + cache_creation),不是被缓存重读灌水的 total
- 交互:
⌥⇧R全局开关浮窗 · 拖上下丝印带移动(位置记住) · 抽屉把手收起按键列只留屏幕 · 点 LED 熄屏 · 丝印带右键退出 - 数据同源:
cc-reports.py glance出精简 JSON,和 dashboard 一个内核,同样不联网
浮窗顶沿坐着一个像素小人。她不是装饰动画——状态由你真实的 token 流驱动:
- 猛干(≥30 万产出/小时)→ 埋头敲电脑
- 回血(刚忙完那阵)→ 端着奶茶歇着
- 闲置(20 分钟没动静)→ 趴着睡,头上飘 Zz
- 里程碑(当日产出跨过 1M / 2M / 5M / 10M / 20M)→ 起身欢呼,火星雨落屏
奶茶会随时间喝完,双击她可以续杯。切换状态时她会下蹲、起跳、落地扬起尘土,不是硬切帧。
上面三张视图截图摄于桌宠上线之前——现在窗口顶沿多了这位小人,其余不变。
cd menubar
./run.sh # 构建并启动
./install-login-item.sh # 可选:装成开机自启每个 session 的文件路径都相对它的**启动目录(launch anchor)**解析——就算你中途 cd 进某个子目录直接改文件,也照样算回那个子目录所属的项目,不会掉进 "root files"。/tmp、scratchpad 等临时产物不参与归类。在此之上按五层优先级判定:
session_overrides(最高):把某个 sessionId 钉死成项目名(应付跨天在多个项目间跳的会话)cwd_overrides:把某个绝对路径映射成项目名(先查 anchor,再查当前 cwd)- 单项目根:anchor/cwd 里有
package.json/Cargo.toml/pyproject.toml等构建清单,就用目录名当项目名(.git单独存在不算,很多 workspace 也用 git) - 多项目 workspace:看这个 session 里 Edit / Write 最多的真实项目第一级子目录;兜底桶(root files / claude-config 等)不参与竞选,只在真项目零票时垫底
- 完全没有文件操作 → "general"
默认体验够用——大多数布局第 2/3 步就认对了。想自定义就把 config.example.json 复制成 config.json,改完在浏览器点「刷新」即可生效,不用重启。
如果浮窗顶部亮起 ⚠ N% 产出未归类,或你觉得某天数字不对,跑一条命令自查:
python3 cc-reports.py doctor # 近 7 天,列出落进兜底桶的大额会话
python3 cc-reports.py doctor --days 30 --min-tokens 500000它会指出哪些会话疑似漏归类、猜出真实项目,并直接吐出可粘进 config.json 的 cwd_overrides / session_overrides 规则行——不用手翻日志。
- 100% 本地:只读
~/.claude/projects/*.jsonl和你 clone 的模板 - 不联网:服务只监听
127.0.0.1,不对外开放 - 数据不离开你的电脑:除非你自己截图分享,或把生成的 HTML 发出去
- 你的
config.json(含项目别名,可能透露内部代号)默认在.gitignore里,不会被提交
cc-reports/
├── README.md 你正在看的这份
├── SKILL.md Claude Code 自动化协议
├── cc-reports.py 主脚本(build + serve)
├── cc-reports.html dashboard 模板(数据通过 fetch 加载)
├── cc_usage_core/ 内核:jsonl 扫描 + 模型/定价注册表(纯标准库)
├── menubar/ cc-glance 桌面浮窗(macOS · Swift · CRT 终端造型)
├── assets/ README 配图
├── config.example.json 配置模板
├── .gitignore
└── LICENSE
运行后会生成 config.json(你的私有别名表)和 cc-reports-data.json(数据快照),两者都已 gitignore。
- Python 3.10+
- macOS / Linux:实测可用
- Windows:可用,命令用
python;装 skill 用复制而非ln -s(未在真机验证) - 浏览器:Chrome / Safari / Edge / Firefox
MIT License · 自由使用修改分享,保留署名即可





