-
Notifications
You must be signed in to change notification settings - Fork 121
Supported AI Tools zh CN
Rynn edited this page Apr 24, 2026
·
1 revision
English · 简体中文
TokenTracker 通过三种方式采集 11 款 AI 工具 的用量:hook(工具主动调我们)、插件(我们交付一个插件,工具加载它)、被动读取(直接读工具自己产生的文件)。本页深入到实现层面,讲每个集成写了什么到哪、怎么验证、怎么调试。
任何时候跑 tokentracker status 都能看当前机器上各工具的接入状态。
这类工具会在每次会话/轮次结束时调用 TokenTracker。我们往它们自己的配置文件里写一两行。
-
Hook 位置:
~/.claude/settings.json的hooks.SessionEnd -
Hook 脚本: 一个 shim,调用
node ~/.tokentracker/app/hooks/notify.cjs claude - 解析的日志: Claude 的 JSONL 会话日志
-
验证: 下次 Claude Code 会话后,
tokentracker status应显示claude: configured且会话数非零
-
Hook 位置:
~/.codex/config.toml的notify数组 - 解析的日志: Codex rollout JSONL
-
坑: Codex 原始的
input_tokens已经包含了 cached tokens。我们的 normalizer 会减掉cached_input_tokens,否则高缓存命中的会话成本会虚高 6–7 倍 -
验证:
grep tokentracker ~/.codex/config.toml应看到一条 notify 记录
和 Codex 结构一样 —— Every Code 配置里的 TOML notify 数组。同样的坑同样处理。
-
Hook 位置:
~/.gemini/settings.json的hooks.SessionEnd - 解析的日志: Gemini 的 turn 日志;由于 Gemini 上报的是累计值,我们通过会话间差值计算增量,而不是直接累加
这类工具有插件系统。插件随 npm 包分发,存在 ~/.tokentracker/app/,由工具自己的 CLI 软链接到其插件目录 —— 不用手动拷贝。
-
插件:
~/.tokentracker/app/opencode-plugin/→ 通过opencode plugins链接 -
日志: OpenCode 自己的 SQLite(
~/.opencode/db.sqlite),插件也会直接发出 token 事件
-
插件:
~/.tokentracker/app/openclaw-plugin/→ 通过openclaw plugins install --link …+openclaw plugins enable链接 - 日志: session 插件以 rollout 风格的 JSONL 输出
-
旧 hook: 老版 OpenClaw 用的是 SessionEnd hook —— 作为 fallback 仍然支持,代码在
src/lib/openclaw-hook.js
这类工具本身就会产生我们能读的文件,不动它们的配置。
-
数据源: Cursor 的 auth token(SQLite,macOS 在
~/Library/Application Support/Cursor/,Linux 在~/.config/Cursor/)+ 用这个 token 调用 Cursor 的用量 CSV 接口 - 隐私说明: auth token 绝不上传,只用于代表你给 Cursor 自己的接口发 HTTP 请求
- macOS 权限: Cursor 数据在 App Support 下,macOS 用 App Management 权限保护。macOS App 首次启动会弹一次权限请求
- 数据源: Kiro 的 SQLite sessions 表 + JSONL 会话文件
-
位置:
~/.kiro/(所有平台)
-
数据源: Hermes 的 SQLite sessions 表,路径
~/.hermes/state.db -
Normalizer:
parseHermesIncremental—— 跟踪每个 session 已读的行 id,避免重复计数
- 数据源: OpenTelemetry 文件导出(Copilot 自带)
-
怎么开启: 把
COPILOT_OTEL_FILE_EXPORTER_PATH设到一个你选的目录(如~/.copilot-otel),重启 VS Code。如果 Copilot 已安装但 OTEL 没配,tokentracker activate-if-needed会提示对应环境变量 - 解析的日志: OTEL JSON spans,由 rollout parser 标准化
-
数据源:
~/.kimi/sessions/**/wire.jsonl—— Kimi 把每次 wire 请求/响应都写在这里 -
Parser:
parseKimiIncremental—— 跟踪文件字节偏移量,恢复解析时不用重读
tokentracker status # 各工具状态(configured / skipped / error)
tokentracker doctor # 更深的健康检查 —— 路径、权限、队列大小
tokentracker diagnostics # 完整 JSON dump(可以直接贴到 issue 里)如果某个工具显示 skipped,detail 列会解释原因 —— 常见的几种:
- 工具 CLI 不在
PATH上 - 配置文件不存在或无法读取
- 工具没装(这种没关系,直接忽略即可,不会同步它)
装了新工具后想重新探测:
tokentracker activate-if-needed大多数新集成就一个 parser 文件的事。把工具的日志格式(或一份样本文件)贴到 新 Issue 里,通常就足够立项了。