METR 研究发现,开发者认为 AI 让自己快了 20%。实测结果:慢了 19%。我想拿到自己使用情况的数据,于是做了一个本地的效能工具。

aide 仪表盘总览

这是什么

aide 把 Claude Code 与 Codex 的会话日志(JSONL)导入 SQLite,展示各个项目中正在发生的事:成本、token 用量、会话模式、效能趋势、待复核队列,以及反复出现的工作流摩擦。

它还会把反复出现的发现转化为候选的项目知识。你先复核并接受这些产物,它们才会成为运行手册,或是供未来的人类与智能体使用的开场简报。

零 LLM 调用。运行零成本。所有数据留在本地。

~/.claude/projects/**/*.jsonl → Claude parser → SQLite → aide
~/.codex/sessions/**/*.jsonl  → Codex parser  → SQLite → aide

问题所在

Claude Code 和 Codex 会生成详尽的本地日志:消息、工具调用、token 计数、时间戳、命令和元数据。文件就放在 ~/.claude/projects/~/.codex/sessions/ 下面。没人去看。

关于 AI 编程工具值不值,人人都有看法。但没人有数据。我是否随时间变得更高效?哪些项目吃掉的 token 最多?会话在哪些地方反复出岔子?更好的指令或运行手册真的减少了摩擦吗?

有用的视角是你全部会话的个人趋势,再加上一个反馈回路,把重复犯的错转化为更好的未来上下文。单看一份会话记录,这两者都看不到。

工作原理

数据流水线

  1. 发现 - 找出已配置的 Claude 与 Codex JSONL 数据源
  2. 解析 - 把各家特有的事件规范化为统一的会话模型
  3. 工作块 - 以 30 分钟空闲间隔为界,把每个会话切分为连续的编程时段
  4. 导入 - 以增量方式 upsert 进 SQLite,并跟踪文件的 mtime
  5. 复核回路 - 对可疑会话排序,归并重复成因,并给出可复核的产物建议

成本估算

所有成本按当前 API 价格估算。对订阅用户(Pro/Max),可用开关改为显示基于 token 的指标,而非金额。

核心功能

总览仪表盘

汇总卡片、效能指标(缓存命中率、编辑占比、压缩率、错误率)、趋势图表、每周工作块数。

带效能指标与趋势图表的总览页

效能

按项目和提供方汇总,将最近 30 天与前一个 30 天对比:每会话平均成本、活跃时长、待复核率、编辑归因、工具错误率。

行动摘要会归并反复出现的排查信号,比如无编辑的工作、项目归因薄弱、缺少前缀规则、编辑归因缺口。每条行动都可回链到引发它的会话。

会话详情

深入任一会话:token 拆解、工具用量、涉及文件及其读取/编辑/写入次数、工作块时间线、错误分类。

展示 token、工具与文件的会话详情

洞察

首条提示词的效果、成本集中度、时间模式、模型使用情况、工具调用序列、思考块分析、权限摩擦,以及排查行动。

带首条提示词分析与时间模式的洞察页

更多

  • 会话复盘 - aide autopsy <session-id> 生成单次会话的诊断报告:成本拆解、上下文窗口分析、压缩检测,以及项目指令的改进建议。
  • 产物复核 - 反复出现的发现会成为候选的语义产物。通过复核的产物会汇入运行手册和任务简报。
  • 订阅模式 - 为 Pro/Max 订阅者在 API 成本视图与基于 token 的指标之间切换。
  • 命令行统计 - aide stats 直接在终端打印快速摘要,无需打开网页浏览器。

技术细节

工作块

JSONL 里的「会话」其实就是一个终端窗口一直开着。一个从周一跨到周三、中间还睡了觉的会话,会被读成 48 小时的会话,「时长」就没意义了。

消息之间的间隔分布是双峰的:大多数间隔不到 5 分钟(活跃工作),一小簇超过 30 分钟(离开)。30 分钟的阈值能干净地把两个峰分开。

每个会话会切分为工作块,即连续的编程时段。「35 个会话里有 119 个工作块」比「35 个会话」给你的信息更多。

错误分类

工具错误会被自动归类:测试(pytest、jest)、Lint(ruff、eslint)、构建(pip、npm)、Git、编辑不匹配、文件访问。大多数「错误」都是正常迭代(编辑-测试-修复循环中的测试失败)。仪表盘会把迭代和真正的失误区分开。

效能指标

  • 缓存命中率 - 输入上下文中由缓存提供的比例(越高 = 复用越好)
  • 编辑占比 - 工具调用中属于文件编辑的比例(越高 = 产出越高)
  • 压缩率 - 触及上下文上限的会话比例
  • 读取与编辑之比 - 每次编辑对应的读取次数(越低 = 搜索越少)
  • 迭代率 - 存在文件被编辑 3+ 次的会话
  • 复核率 - 近期会话中值得人工复核的比例
  • 编辑归因 - 编辑/写入调用中能关联到文件路径的比例

AI 编程日志是一座金矿。 每一次工具调用、token 计数、时间戳和命令形态都在里面。难的是决定哪些指标真正重要。

工作块改变了一切。 原始的会话时长让每张图表都产生误导。按空闲间隔切分之后,数据才诚实起来。数据清洗比花哨的可视化更重要。

零 LLM 调用是个正确的约束。 每个指标都是启发式的。没有 API 调用,没有边际成本。想重新导入、重新构建多少次都行。

技术栈

  • Python 3.12+,搭配 Click 命令行框架
  • Flask + Jinja2 模板
  • Chart.js(CDN)实现交互式图表
  • Tailwind CSS(CDN)负责样式
  • SQLite(标准库)负责存储
  • uv 负责包管理