npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tokentracker-cli

v1.5.1

Published

Local-first AI coding token usage and cost tracker for 47 tools, with a dashboard, desktop pet, widgets, achievements, and native macOS/Windows apps.

Readme

Token Tracker

English · 简体中文 · 日本語 · 한국어 · Deutsch

跨所有 CLI,看清你到底在 AI 上花了多少钱

自动采集 47 款 AI 编码工具 的 token 用量,全程本地聚合,用一套漂亮的 Dashboard 看真实成本与趋势。不需要云账号、不需要 API Key、不需要任何配置 —— 一条命令搞定。

npm version npm downloads Homebrew License: MIT Platform GitHub stars 阮一峰周刊 #393 收录 作者 tokens

⭐ 如果 TokenTracker 帮你省了时间,欢迎 在 GitHub 上 Star —— 可以让更多开发者发现它。

ko-fi


⚡ 快速开始

环境要求:Node.js 20+(CLI 支持 macOS / Linux / Windows;原生桌面 App 提供 macOS 菜单栏版、Windows 系统托盘版与 Linux AppImage 托盘版;Cursor 的 SQLite 读取仅限 macOS)。

npx tokentracker-cli

就这一行。首次运行会自动安装 hook、同步数据,并在 http://localhost:7680 打开 Dashboard。

30 秒能看到什么:

  • 📊 本地 Dashboard(localhost:7680)—— 用量趋势、模型明细、成本分析
  • 🔌 自动识别并挂接你电脑上所有已安装的 AI 工具
  • 🏠 本地优先 —— 直接在本地机器解析日志,无需账号或 API Key
  • 🧩 可选: Skills 面板——浏览 250+ 公开 skill,并在 Claude · Codex · Grok · Antigravity · Gemini · OpenCode · Hermes 之间同步

想要原生桌面 App?

  • macOS —— 下载 TokenTrackerBar.dmg → 拖入「应用程序」即可。包含桌面小组件、菜单栏状态图标,以及同一套 Dashboard(跑在 WKWebView 里)。
  • Windows —— 下载 TokenTracker-Setup.exe → 运行免管理员的单用户安装包即可。系统托盘 App,Dashboard 跑在 WebView2 里。便携版 zip 见发布页。
  • Linux —— 下载 TokenTracker-linux-x86_64.AppImage → chmod +x 后直接运行。托盘 App,Dashboard 跑在 WebKitGTK 窗口里。AppImage 自带 GTK/WebKit,除了较新的 glibc 之外不依赖发行版的库;GNOME 上托盘图标仍需装 AppIndicator 扩展。发布页同时提供 .deb 与 .rpm 安装包,它们改用发行版自带的 webkit2gtk-4.1、gtk3 与 appindicator;其中 .deb 依赖 libappindicator3-1,Debian 12 已改为 libayatana-appindicator3-1 而不再提供它,因此 Debian 12 请用 AppImage。

全局安装可以少敲字:

npm i -g tokentracker-cli

tokentracker              # 打开 Dashboard
tokentracker sync         # 手动同步
tokentracker status       # 查看 hook 挂接状态
tokentracker status --json   # 机器可读 JSON(pipe 到 jq、给 AI agent 喂数据)
tokentracker status --light  # 纯 ASCII 表(CI / SSH 用,无 spinner)
tokentracker doctor       # 健康检查

🍺 Homebrew(macOS)

用惯 brew 的话可以直接装,无需额外 tap:

# macOS 菜单栏 App(DMG)
brew install --cask xiufengsun/tokentracker/tokentracker

# 只装 CLI
brew install xiufengsun/tokentracker/tokentracker

升级:brew upgrade --cask xiufengsun/tokentracker/tokentracker。每次新版本发布后,tap 会在一小时内自动跟上。


✨ 特性

  • 🔌 开箱即用支持 47 款 AI 工具 —— Claude Code、Codex CLI、AStudio、Cursor、Gemini CLI、Kiro、OpenCode、OpenSquilla、OpenClaw、Every Code、Hermes Agent、GitHub Copilot、Kimi Code、CodeBuddy、WorkBuddy、Grok Build、oh-my-pi、OmO、pi、Dots、Prime Agent、Craft Agents、Reasonix、Muse Code、Kilo CLI、Kilo Code、Roo Code、Antigravity、Zed Agent、Goose、Droid、Mimo Code、DuMate、ZCode、Qoder、AnythingLLM Desktop、Claude Science、DeepSeek Harness、TRAE Work CN、LM Studio、Unsloth Studio、Devin CLI、Cline、MiniMax Code、Command Code、TRAE
  • 🏠 本地优先 —— 跑在本地。直接在本地机器解析日志,无需账号或 API Key。
  • 🚀 零配置 —— 首次运行自动安装所有 hook。30 秒从零到 Dashboard
  • 📊 漂亮的 Dashboard —— 用量趋势、按模型的成本分解、GitHub 风格活跃度热力图、按项目归因
  • 🖥️ 原生桌面 App —— macOS 菜单栏(含桌面小组件)与 Windows 系统托盘,各自内嵌服务 + 原生 WebView Dashboard
  • 🎨 4 种桌面小组件 —— 用量 / 热力图 / 热门模型 / 使用限额 直接钉桌面
  • 📈 实时限额追踪 —— Claude / Codex / Cursor / Gemini / Kimi / Kiro / Grok / Copilot / Antigravity / ZCode / OpenCode Go / Qoder / Qoder CN / Command Code / Ark Coding Plan / Ark Agent Plan / Devin / WorkBuddy 的配额窗口;本地 provider App 暂时退出时保留 last-good 缓存
  • 🟢 服务状态页 —— 直接汇总 8 家 provider 官方状态页的实时运行与事故状态
  • 💰 成本引擎 —— 内置 70+ 模型定价表,精确到 USD
  • 🌐 可选排行榜 —— 与全球开发者对比;列可拖拽排序,聚焦你关心的 provider(需登录参与)
  • 🔄 跨设备账户视图 —— 开启云同步后,Dashboard 会把你在每台机器(笔记本 + 台式机 + 服务器)上的用量合并成一个视图——总量、趋势、热力图、模型明细全部跨设备聚合(可选,需登录)
  • 🧩 可选 Skills 面板 —— 浏览 250+ 公开 skill(来自 anthropics/skills、ComposioHQ/awesome-claude-skills、skills.sh 以及你自己添加的任何 GitHub 仓库),在 Claude / Codex / Grok / Antigravity / Gemini / OpenCode / Hermes 之间同步,目标 Agent 文字可见、可单独管理、一键撤销
  • 🔒 隐私优先 —— 仅记录本地用量指标(token 数量、时间戳与模型名称)。Prompt、模型回复和代码绝不离开你的机器。

🖼️ 截图

Dashboard —— 用量趋势、模型分布、成本分析

桌面小组件 —— 把用量钉在桌面

菜单栏 App —— 带动画的 Clawd 小伙伴 + 原生面板

全球排行榜 —— 和世界各地开发者比一比

Skills 管理器 —— 浏览 250+ 公开 skill(GitHub 仓库 & skills.sh),一次安装,同步到 Claude / Codex / AStudio / Grok / Antigravity / Gemini / OpenCode / Hermes。每个 Agent 单独开关,一键撤销,再也不用手动复制文件夹。

桌面宠物 —— 悬浮在桌面上的像素小伙伴,实时响应你的 token 消耗:你写代码它也写,连击时庆祝,休息时打盹。粘贴 codex-pets.net 链接或 .codex-pet.zip 即可导入社区宠物,V2 宠物还能 16 方向转头追随你的鼠标。macOS / Windows / Web 三端支持。


🔌 已支持的 AI 工具

| 工具 | 识别方式 | 接入方式 | |---|---|---| | Claude Code | ✅ 自动 | 写入 settings.json 的 SessionEnd hook | | Codex CLI | ✅ 自动 | 写入 config.toml 的 TOML notify hook | | AStudio | ✅ 自动 | 写入 config.toml 的 TOML notify hook | | Cursor | ✅ 自动 | API + SQLite 中的 auth token | | Kiro | ✅ 自动 | SQLite + JSONL 混合读取 | | Gemini CLI | ✅ 自动 | SessionEnd hook | | Antigravity | ✅ 自动 | 被动读取 transcript.jsonl(~/.gemini/{antigravity,antigravity-ide,antigravity-cli}/brain/**/transcript.jsonl) | | OpenCode | ✅ 自动 | 插件系统 + SQLite | | OpenSquilla | ✅ 自动 | 被动读取本地 SQLite 中已完成的模型用量(Desktop:%APPDATA%\@opensquilla\desktop-electron\opensquilla\state\sessions.db;CLI:~/.opensquilla/state/sessions.db);只读取时间戳、模型 ID 与 token 计数,不读取对话正文。可用 TOKENTRACKER_OPENSQUILLA_DB 覆盖路径 | | OpenClaw | ✅ 自动 | Session 插件 | | Every Code | ✅ 自动 | TOML notify hook | | Hermes Agent | ✅ 自动 | SQLite sessions 表(~/.hermes/state.db) | | GitHub Copilot App / CLI | ✅ 自动 | 统一逐请求 SQLite 用量(~/.copilot/session-store.db);App DB 作为旧数据基线 | | GitHub Copilot Chat 扩展 / 旧版 CLI | ✅ 自动 | OpenTelemetry 文件导出(COPILOT_OTEL_FILE_EXPORTER_PATH) | | Kimi Code | ✅ 自动 | 被动读取 wire.jsonl(~/.kimi/sessions/**/wire.jsonl) | | oh-my-pi (Pi Coding Agent) | ✅ 自动 | 被动读取(~/.omp/agent/sessions/**/*.jsonl)+ tokentracker init 会写入托管的 notify 扩展(~/.omp/agent/extensions/tokentracker-notify.ts)用于近实时同步(若同名非托管文件已存在则跳过;tokentracker uninstall 仅在仍为托管时删除) | | CodeBuddy (腾讯) | ✅ 自动 | 写入 ~/.codebuddy/settings.json 的 SessionEnd hook(Claude-Code fork) | | WorkBuddy (腾讯) | ✅ 自动 | 写入 ~/.workbuddy/settings.json 的 SessionEnd hook(Claude-Code fork)+ 被动扫描 projects/**/*.jsonl | | Grok Build (xAI) | ✅ 自动 | SessionEnd hook + 被动扫描 updates.jsonl / signals.json(~/.grok/sessions/**/) | | Kilo CLI (kilo.ai) | ✅ 自动 | 被动读取 SQLite(~/.local/share/kilo/kilo.db,OpenCode-fork schema) | | Kilo Code (VS Code 插件) | ✅ 自动 | 被动读取 ui_messages.json(Cursor / VS Code / CodeBuddy / Windsurf 的 globalStorage) | | pi (@mariozechner/pi-coding-agent) | ✅ 自动 | 被动读取(~/.pi/agent/sessions/**/*.jsonl) | | Dots | ✅ 自动 | 通过 pi 的 provider 拆分路由(pi-dots source,复用同一被动读取器)—— 无需额外 hook | | Prime Agent | ✅ 自动 | 仅元数据的被动用量读取(~/.prime/agent/sessions/*.jsonl,不读取提示词或回复) | | Craft Agents | ✅ 自动 | 被动读取 session(~/.craft-agent + workspace session logs) | | Reasonix | ✅ 自动 | 被动读取 telemetry(~/.reasonix/**/*.jsonl.telemetry.json) | | Muse Code | ✅ 自动 | 被动读取会话日志(~/.local/share/muse/sessions/**/session.jsonl,可用 TOKENTRACKER_MUSE_HOME 覆盖) | | Roo Code (VS Code 扩展) | ✅ 自动 | 被动读取 ui_messages.json(rooveterinaryinc.roo-cline) | | Zed Agent | ✅ 自动 | 被动 SQLite 读取(threads.db,仅统计托管的 zed.dev 模型) | | Goose (Block) | ✅ 自动 | 被动 SQLite 读取(sessions.db,累计量 delta) | | Droid (Factory) | ✅ 自动 | 被动读取 session(~/.factory/sessions/**/settings.json,累计量 delta) | | Mimo Code (mimocode) | ✅ 自动 | 被动 SQLite 读取(~/.local/share/mimocode/mimocode.db,OpenCode-fork schema;仅统计 mimo 原生轮次——镜像进来的 Claude/claude-mem 历史已排除) | | DuMate (Baidu) | 自动 | 被动读取 OpenCode SQLite(%APPDATA%/qianfan-desktop-app/qianfan_desk_xdg/*/data/opencode/opencode.db);独立 dumate 来源,重装复制去重。可用 TOKENTRACKER_DUMATE_HOME 覆盖目录。见 DuMate 采集说明 | | ZCode (Z.ai) | ✅ 自动 | 被动 SQLite 读取(~/.zcode/cli/db/db.sqlite,OpenCode-fork schema;仅统计 Z.ai/BigModel 的 GLM 轮次——内置的 Claude/Codex/Gemini 子 agent 已排除) | | Qoder | ✅ 自动 | 被动读取 SQLite(Qoder/SharedClientCache/cache/db/local.db;只读取 assistant 的 token_info,并单独统计缓存输入,不读取提示词或回复),并通过 Qoder 本地会话读取 Plan Credits 与 Ultimate 免费调用额度;Qoder Desktop 0.4.x 限额回退扫描本地 main.log/renderer.log 尾部提取账号用量摘要(见 Qoder 桌面版限额) | | LM Studio | ✅ 自动 | 被动递归读取 ~/.lmstudio/server-logs/**/*.log;只读取 Chat Completions 和 Responses API 最终响应中的 ID、模型、时间戳与标量 usage 计数,并按响应 ID 去重,不保留提示词或回复正文。该数据源覆盖本地推理与 LM Link(API 边际成本为 $0),不包含 Bionic Secure Cloud 账单。 | | Unsloth Studio | ✅ 自动 | 被动读取 $UNSLOTH_STUDIO_HOME/studio.db(默认 ~/.unsloth/studio/studio.db);只投影标量 contextUsage 元数据和不含内容的 api_usage_events。不会读取提示词、回复、附件、API subject、凭据或训练指标;本地路由成本为 $0,已知付费 provider 路由按实际响应模型估算 token 成本。 | | AnythingLLM Desktop | ✅ 自动 | 被动 SQLite 读取(anythingllm-desktop/storage/anythingllm.db;只读取每条消息的 token 指标,不读取 prompt 或回复) | | Devin CLI (Cognition) | ✅ 自动 | 被动 SQLite 读取($XDG_DATA_HOME/devin/cli/sessions.db,默认 ~/.local/share/devin/cli/sessions.db;按 request_id 对每次请求的用量指标去重——replay/fork/compaction 副本不会重复计数——使用记录的 generation model,不读取 prompt、回复或 cogs_json)。Devin 模型(swe-2、swe-2-high、compactor)当前没有定价数据,token 数照常统计但不计入美元估算——显示 $0 并不代表免费。没有已知的原生 Windows 数据目录;WSL 安装通过 \\wsl$ 读取。 | | Cline(CLI v3 / 桌面 App) | ✅ 自动 | 被动读取 ~/.cline/data/sessions/<id>/*.messages.json。每轮的 metrics 是用量增量,其中 inputTokens 已包含 cache 读+写、outputTokens 已包含 reasoning——因此缓存前缀会被扣除、reasoning 不会重复计费;Cline 自己上报的 cost 优先采用。cline-free/* 与 cline-pass/* 网关模型计 $0。不读取 VS Code 扩展的 globalStorage 目录。路径覆盖:TOKENTRACKER_CLINE_SESSIONS_DIR、TOKENTRACKER_CLINE_DATA_DIR、TOKENTRACKER_CLINE_HOME、CLINE_SESSION_DATA_DIR、CLINE_DATA_DIR 或 CLINE_DIR | | MiniMax Code | ✅ 自动 | 被动读取(~/.minimax/v2/sessions/YYYY/MM/DD/<session>/messages.jsonl)。按 message_id 去重,按消息记录实际路由到的上游模型;usage.cost 恒为 0,不采用,按常规定价计算。可用 TOKENTRACKER_MINIMAX_HOME 覆盖目录 | | Command Code | ✅ 自动 | 被动会话读取器(~/.commandcode/projects/<cwd-slug>/<session-id>.jsonl,跳过 *.checkpoints.jsonl 快照与 .prompts. 辅助文件)。在本地扫描会话日志,提取选定的用量元数据,包括 token 计数与 CLI 的 costUsd 展示估算值;费用按 Token Tracker 的统一模型价目表估算。从包含缓存的 input 中同时扣除缓存读取和缓存写入,避免重复计数。Token Tracker 不保存或上传 prompt、回复或代码正文。可用 TOKENTRACKER_COMMANDCODE_HOME 覆盖目录 | | Claude Science | ✅ 自动 | 被动 SQLite 读取(~/.claude-science/operon-cli.db;只读取 frames 表的 token 计数,不读取 prompt、产物或研究内容)。没有原生 Windows 版——Windows 上该应用运行在 WSL 内,从 WSL 中读取。 | | DeepSeek Harness | ✅ 自动 | 被动读取会话日志(~/.dsh/sessions/**/session.jsonl[.zstd];解析会话头部与 assistant 事件,支持多帧 zstd 解压) | | TRAE(国际版) | ✅ 自动 | 默认使用共享应用密钥读取 TRAE / TRAE SOLO 本地 SQLCipher 用量元数据;可通过 TOKENTRACKER_TRAE_SQLCIPHER_KEY 覆盖密钥。不调用厂商 API。配置与限制。 | | TRAE Work CN | ✅ 自动 | 需要显式开启:设置 TOKENTRACKER_TRAE_CN_USAGE=1。 读取用量会把本地保存的登录授权发送到 TRAE 的内部 API,因此在你开启之前不会发出任何请求。开启后:仅在存在本地 TRAE Work CN 登录授权的可执行非后台同步期间,读取 macOS / Windows 本地登录应用的 session-token 用量;内部 API 可能变化 |

需要手动装什么插件 / hook 吗? 不需要。tokentracker(或 tokentracker init)第一次跑的时候会全部搞定:

  • 基于 hook 的工具(Claude Code、Codex、AStudio、Gemini、Every Code、CodeBuddy、WorkBuddy、Grok Build)—— 我们把 SessionEnd hook 或 TOML notify 条目写入它们自己的配置文件
  • 基于插件的工具(OpenCode、OpenClaw)—— 插件随 npm 包一起分发。OpenClaw 的 session plugin 位于 ~/.tokentracker/tracker/openclaw-plugin/openclaw-session-sync/;TokenTracker 会通过 OpenClaw 自己的 CLI 挂接并启用它,然后写入 hooks.allowConversationAccess=true,让 OpenClaw 放行触发同步的会话结束事件。无需下载、无需拖拽
  • oh-my-pi —— 被动会话扫描始终是计费/token 的事实来源(~/.omp/agent/sessions/**/*.jsonl)。检测到 OMP 时,tokentracker init 还会写入托管的 notify 扩展到 ~/.omp/agent/extensions/tokentracker-notify.ts,以便回合结束后近实时触发同步。仅当文件带有 TokenTracker 托管标记时才视为我们拥有:同名用户自写扩展绝不会被覆盖或删除。tokentracker uninstall 也仅在文件仍为托管状态时删除它。
  • 被动读取类(Cursor、Kiro、Hermes、Kimi Code、Copilot、Grok Build、pi、Craft Agents、Reasonix、Muse Code、Kilo CLI、Kilo Code、Roo Code、Antigravity、Zed Agent、Goose、Droid、Mimo Code、DuMate、ZCode、Qoder、LM Studio、Unsloth Studio、OpenSquilla、AnythingLLM Desktop、Devin CLI、MiniMax Code、Claude Science、DeepSeek Harness、Cline) —— 完全不往它们里面塞东西,只读取它们自己产生的文件(SQLite DB、JSONL、OTEL 导出、会话轨迹日志)。Copilot App / CLI 的用量按请求读取 ~/.copilot/session-store.db;data.db 只提供一次旧数据迁移基线,并在 store 成为主源后保持仅观察,Chat 扩展和旧版 CLI 继续使用 OTEL。TokenTracker 会协调这些数据源,使重叠请求只统计一次。迁移前无法无损拆分模型的 App/CLI 混合历史会保留为 github-copilot-legacy 聚合量,而不会猜测请求模型
  • Grok Build 估算说明 —— Grok 当前本地遥测提供 updates.jsonl 里的累计 totalTokens,但还没有稳定的输入/输出/cache 拆分;signals.json 仍作为 contextTokensUsed 快照兜底。所以在 Grok 提供按调用粒度的用量明细之前,TokenTracker 对 Grok 成本仍是估算值
  • Grok 产品占比 —— Grok 限额卡片默认只用一根进度条显示共享的每周或每月额度的总用量。展开卡片(macOS 菜单栏中点击该卡片)后,这根进度条会按产品拆分成多段(Grok Build、聊天、语音、Imagine,以及账单接口返回的其他产品),并在下方用图例列出各产品的占比。这些分段是同一个上限的拆分,不是各自独立的配额,因此这根进度条在「剩余」模式下也始终显示已用百分比。

任何时候都可以用 tokentracker status 查看每个集成的状态。如果显示 skipped,detail 列会解释原因(例如某工具 CLI 不在 PATH 上、config 不可读等)。

更深入的资料:OpenClaw 集成与排障。升级 v0.96.0 后 ZCode 历史总量下降,请参阅 ZCode 历史计数修正说明,了解缓存/推理重复计数修正及本地备份。

工具没在列表里?提个 Issue —— 加一个新 provider 通常只是加一个 parser 文件的事。


🆚 为什么选 TokenTracker?

想要带桌面小组件和可视化界面的用量追踪体验? TokenTracker 将面向众多 AI 编码工具的本地优先解析,与原生桌面 App、桌面小组件、多 provider 限额监控以及可选的云同步结合在一起。

| 功能维度 | TokenTracker | ccusage | Tokscale | |---|:---:|:---:|:---:| | 支持的 AI 工具数 | 47 | 多 Agent / 工具支持 | 多 Agent / 工具支持 | | 主要交互方式 | 原生桌面 App 与 Web Dashboard | 终端命令行(CLI) | 终端 TUI 与 CLI | | 本地优先分析 | ✅ | ✅ | ✅ | | 原生桌面 App | ✅ macOS、Windows、Linux | ❌ | ❌ | | 桌面小组件 | ✅ 4 个小组件 | ❌ | ❌ | | 限额追踪 | ✅ 18 家 provider | 较少(Claude 周期/用量) | 覆盖多个 provider | | 终端数据分析 | 基础 CLI(status、--json) | 完善的 CLI 报表能力 | 丰富的交互式 TUI 与 CLI | | JSON 导出 | ✅ | ✅ | ✅ | | 公开排行榜 | 可选(需主动登录参与) | ❌ | 可选(submit) |


🏗️ 工作原理

flowchart LR
    A["AI 编码工具<br/>Claude Code · Codex · AStudio · Cursor · Gemini · Kiro<br/>OpenCode · OpenClaw · Every Code · Hermes · Copilot<br/>Kimi · CodeBuddy · WorkBuddy · Grok · Kilo · Roo · Zed · Goose<br/>Antigravity · oh-my-pi · pi · Craft · Droid · Mimo · DuMate · ZCode · Qoder · AnythingLLM · Claude Science · DeepSeek Harness · TRAE · TRAE Work CN · LM Studio · Unsloth Studio · Devin CLI · MiniMax Code · Cline · Command Code"]
    A -->|hook 触发| B[Token Tracker]
    B -->|解析日志<br/>30 分钟 UTC 桶| C[(本地 SQLite)]
    C --> D[Web Dashboard]
    C --> E[菜单栏 App]
    C --> F[桌面小组件]
    C -.->|可选| G[(云端排行榜)]
  1. 正常使用 AI CLI 工具时,它们会写 log
  2. 轻量级 hook 感知日志变动并触发同步(Cursor 走 API,不走 hook)
  3. 在本地解析 token 数量 —— Prompt、回复正文和代码绝不保存或上传
  4. 聚合成 30 分钟一格的 UTC 桶
  5. Dashboard、菜单栏 App 和桌面小组件都读取同一份本地快照

本地功能继续完整免费开源。可选官方 TokenTracker Cloud 提供托管跨设备分析;计划、试用与过渡规则见云服务说明。正式购买已开放,全球统一美元未税基础价,自动续费与按期购买均为 $4.99/月、$39.99/年,税费和最终金额由 Waffo 收银台显示。软件也允许免费自部署,服务器与维护自理,完整安装目前为自部署技术预览。

🛡️ 隐私

📄 完整隐私政策(英文)—— 逐条列出本应用可能发起的每一个网络请求、各自发送了什么,以及如何关闭。

TokenTracker 在本地处理你的用量数据。绝不收集或上传 prompt、代码或模型回复。

| 保护项 | 说明 | |---|---| | 不收集代码与 Prompt | TokenTracker 解析本地日志文件中的 token 数量与时间戳。Prompt、回复正文、代码和对话内容绝不保存或上传。 | | 默认本地优先 | 用量追踪完全跑在你的本地机器上。无需账号、登录或 API Key。云端同步与公开排行榜完全属于自选(Opt-in)。 | | 可公开审计 | 完全开源。欢迎查阅 src/lib/rollout.js —— 仅提取数字、时间戳与模型名称。 | | 透明的网络请求 | 完整披露于隐私政策。默认发起的网络请求仅限于:直接查询 provider 配额(使用你机器上已有的本地凭证)、获取 GitHub Star 数与检查更新、更新定价数据(raw.githubusercontent.com),以及匿名产品遥测(每日一次心跳、PostHog 页面访问,以及在配置了 DSN 时可选的 Sentry 错误上报——均可通过 TOKENTRACKER_NO_TELEMETRY=1 或 DO_NOT_TRACK=1 关闭)。遥测绝不包含 token、模型名、prompt 或代码。 |


📦 配置项

99% 的用户不需要改。进阶玩家可以用以下环境变量:

| 变量 | 说明 | 默认值 | |---|---|---| | TOKENTRACKER_DEBUG | 打开 debug 日志(1 表示打开) | — | | TOKENTRACKER_NO_TELEMETRY | 关闭全部匿名遥测——每日心跳与 dashboard 分析(1 表示关闭;同样尊重 DO_NOT_TRACK 标准) | — | | TOKENTRACKER_HTTP_TIMEOUT_MS | HTTP 超时时间(毫秒) | 20000 | | TOKENTRACKER_DISABLE_GIT_ATTRIBUTION | 关闭 Git 提交归因(设为 1 关闭)。归因会在每个近期会话的工作目录里执行 git log。关闭后 TokenTracker 完全不会进入你的项目目录(Outcomes 页只显示手动记录的结果) | — | | TOKENTRACKER_GIT_ATTRIBUTION_PROTECTED_DIRS | 允许 Git 归因进入 macOS 受保护目录(设为 1 允许)。默认会跳过 ~/Documents、~/Downloads、~/Desktop、~/Library、影片/音乐/图片以及 /Volumes 下的会话,因为 macOS 会为每个位置单独弹一次访问授权提示。只有当你确实把仓库放在这些目录、且不介意授权时才需要开启 | — | | CODEX_HOME | 覆盖 Codex CLI 目录 | ~/.codex | | TOKENTRACKER_ACODE_HOME | 覆盖 AStudio 目录 | ~/.acode | | GEMINI_HOME | 覆盖 Gemini CLI 目录 | ~/.gemini | | TOKENTRACKER_GROK_HOME | 覆盖 Grok Build 目录,供 Grok 集成和 Skills Manager 使用 | ~/.grok | | GROK_HOME | 旧版 Grok Build 目录覆盖变量;未设置 TOKENTRACKER_GROK_HOME 时使用 | ~/.grok | | TOKENTRACKER_ANTIGRAVITY_HOME | 强制指定 Antigravity Skills 目录(不设时自动检测 ~/.gemini/antigravity 和 ~/.gemini/antigravity-ide,同步会同时写入两者) | 自动 |


🛠️ 本地开发

git clone https://github.com/xiufengsun/TokenTracker.git
cd TokenTracker
npm install

# 构建 Dashboard + 跑 CLI
cd dashboard && npm install && npm run build && cd ..
node bin/tracker.js

# 跑测试
npm test

构建 macOS App

cd TokenTrackerBar
npm run dashboard:build              # 构建 Dashboard 前端
./scripts/bundle-node.sh             # 打包 Node.js + tokentracker 源码
xcodegen generate                    # 生成 Xcode 工程
ruby scripts/patch-pbxproj-icon.rb   # 补一下 Icon Composer 资源
xcodebuild -scheme TokenTrackerBar -configuration Release clean build
./scripts/create-dmg.sh              # 打 DMG

需要 Xcode 16+ 和 XcodeGen。


🔧 排障

CLI

TokenTracker 需要 Node 20+。先看看你装的是哪个版本:

node --version

如果低于 20,用 nvm、fnm 或系统包管理器升级(brew upgrade node、apt install nodejs 等)。

被占用时 Dashboard 会自动顺延(7681、7682 …),实际端口在启动日志里会打出来。如果你想强制指定端口:

PORT=7700 tokentracker serve

查谁占着 7680:

lsof -i :7680

WSL2 说明:Windows 宿主机上的传递优化服务(DoSvc)默认监听 7680,NAT 网络模式下这个冲突在 WSL 内部检测不到——server 正常启动,但 Windows 浏览器访问到的是 DoSvc。因此 TokenTracker 在 WSL 中默认改用 7681(启动日志会说明)。

先看集成状态:

tokentracker status

然后跑一个深度健康检查:

tokentracker doctor

如果你明明在用某个工具却显示未配置,跑一下 tokentracker activate-if-needed 重新探测。还不行的话 提个 Issue,把 doctor 的输出贴上。

tokentracker uninstall

这会把 TokenTracker 在所有 AI 工具里写入的 hook 全部清掉,同时删除本地配置和数据。可以安全重复执行。

macOS App

TokenTrackerBar 使用 ad-hoc 签名(没有用 Apple Developer ID 做公证,因为那需要付费账号)。Gatekeeper 会在首次启动时拦下。

  1. 打开 系统设置 → 隐私与安全性
  2. 滑到 安全性 区域 —— 你会看到提示「TokenTrackerBar 已被阻止以保护 Mac」
  3. 点击 仍要打开
  4. 在后续对话框中再点一次 打开(需要输入密码)

只需要做一次。老版本 macOS 上的替代做法:在访达里右键 App → 打开 → 确认对话框里再点 打开。

其实不是真坏了 —— 这是 Gatekeeper 对 macOS 给下载文件自动贴的 com.apple.quarantine 属性做出的反应。清除一次即可:

xattr -cr /Applications/TokenTracker.app

之后就能正常打开了。

这个权限是 Cursor 和 Kiro 集成需要的。它们把 auth token / 用量数据存在自己的 ~/Library/Application Support/ 目录下,而 macOS 用 App Management 权限保护这类访问。

  • ✅ 用 Cursor / Kiro:点 允许
  • ❌ 不用:点 不允许,这两个 provider 会被静默跳过,其他一切正常

授权一次即可记住。注意 ad-hoc 签名的版本每次升级后签名身份会变,所以每次升级都会重新弹一次。


🪪 README 徽章

把你的 token 用量秀到 GitHub Profile 或项目 README 上。

获取 你的_USER_ID:

  1. 运行 tokentracker,打开 Dashboard,并登录排行榜。
  2. 进入 设置 → 账号。
  3. 使用页面里的 User ID。如果是 headless/SSH 机器,tokentracker device-login 也会把同一个 user_id 写到 ~/.tokentracker/tracker/config.json。

然后贴一段:

[![tokens](https://srctyff5.us-east.insforge.app/functions/tokentracker-badge-svg?user_id=你的_USER_ID&metric=tokens)](https://github.com/xiufengsun/TokenTracker)
[![cost](https://srctyff5.us-east.insforge.app/functions/tokentracker-badge-svg?user_id=你的_USER_ID&metric=cost)](https://github.com/xiufengsun/TokenTracker)
[![rank](https://srctyff5.us-east.insforge.app/functions/tokentracker-badge-svg?user_id=你的_USER_ID&metric=rank)](https://github.com/xiufengsun/TokenTracker)

链接默认指向 TokenTracker 仓库,每次点击都能帮其他开发者发现 TokenTracker。如果你想让点击跳到你自己的 leaderboard profile、个人主页或 https://www.tokentracker.cc,改 URL 即可。

输出 shields.io 兼容的徽章 SVG,含你当前的累计数据(60 秒缓存):

| 参数 | 取值 | 默认 | |---|---|---| | metric | tokens / cost / rank | tokens | | period | week / month / total | total | | style | flat / flat-square | flat | | label | 任意短文本 | 指标名 | | color | hex,例如 ff6b35 | 品牌绿 |

隐私:徽章仅对开启了排行榜公开(设置 → 账号 → 公开 Profile)的用户生效;未公开的用户会返回 "private" 占位徽章。


⭐ Star 历史


🤝 贡献与支持

🙏 致谢

bot 伙伴的形变引擎来自 bloub,作者 Jérémy Perret(MIT 许可)。

Clawd 角色设计归属 Anthropic。本项目是社区项目,和 Anthropic 无官方隶属关系。

🔗 友情链接

License

MIT


Token Tracker —— 把你的 AI 产出量化。

tokentracker.cc · npm · GitHub