☰
ccusage:Claude Code用量统计与成本分析工具安装配置指南
2026/10/20 14:49:48 网站建设 项目流程

一直用 Claude Code 干活的人,多少都会遇到同一个问题:这个月到底用了多少量、花了多少钱、哪个项目吃 token 最多,心里完全没数。我也一样,写到一半开始焦虑额度,却又懒得去翻官方后台。后来试了试 ccusage,发现这东西确实是 Claude Code 用量统计里最顺手的一个,一条命令就能把当月汇总、每日走势、模型使用占比全部拉出来。这篇就完整讲讲它的安装过程和配置思路,从环境检查到常见坑,一次说清楚,照着操作就行。

1. 项目概述与核心需求解析

1.1 ccusage 到底是什么

ccusage 是一个针对 Claude Code 的开源统计工具,作用是读取 Claude Code 在本地留下的历史使用记录,把它整理成你一眼能看懂的报表。你可以把它理解为给 Claude Code 装了一个“账单助手”,它不代理请求、不拦截数据,只做本地日志分析。

很多人在意的是成本。Claude Code 本身按 token 计费,不同模型的价格不一样,如果你同时开过多个模型,手动算费用基本不现实。ccusage 的价值就在于,它帮你把这些零散记录聚合起来,直接告诉你这个月花了多少、哪天最费、哪个会话最重。

它也能帮你判断使用习惯是否健康。比如某个任务反复让模型重试,token 可能悄悄翻倍;某些超大文件反复粘进上下文,会话体积会迅速膨胀。这些数据只有可视化之后才有感知,ccusage 就是帮你把这个感知补上的工具。

1.2 它的统计原理

ccusage 的统计逻辑并不复杂。Claude Code 每次会话都会把对话内容、消息数量、时间等信息写入本地的 JSONL 文件,这些文件按日期和项目分目录存放。ccusage 扫描这些文件,解析里面的消息记录,再根据预设模型的 token 单价来估算成本。

需要注意的关键点是:ccusage 统计的 token 数是估算值,不是计费系统给出的精确账单。因为本地文件并不总是包含精确的 token 计数,工具需要根据字符数和上下文长度做合理推算。实际费用和估算值之间通常有偏差,但用来做趋势参考完全够用。

它的成本估算还支持几种主流模型的价格表。如果用的是官方默认模型,直接用默认配置就可以;如果后期模型列表调整,也可以自己改价格文件来适配。

1.3 适合谁来用

三类人最适合用 ccusage。

第一类是重度使用者,每天产生大量会话,需要知道自己的用量消耗速度,避免超额或成本失控。

第二类是团队管理者,想了解不同项目、不同成员的用量分布,好做预算分配或资源规划。ccusage 虽然本身是个命令行工具,但输出 JSON 格式的数据后,可以接到监控面板或定时任务里。

第三类是研究型开发者,想观察自己在 prompt 设计、上下文管理上的效率问题,比如单会话 token 过高、对话轮数是否过长等。这类分析对比,用 ccusage 的汇总数据最直接。

如果你只是偶尔打开一次 Claude Code,聊几句就关,那 ccusage 的紧迫性没那么强。但只要开始当日常工具用,安装它就很有必要。

注意:ccusage 只读取本地文件,不会向任何远程服务器发送你的对话内容。但要注意它在本地生成的缓存文件里包含了你对话记录的统计摘要,如果对数据敏感,使用时注意本机文件权限。

2. 安装前的环境准备

2.1 Node.js 版本要求

ccusage 是通过 npm 分发的,所以第一步是确认本机有 Node.js。我实测下来,Node.js 需要 18 及以上版本,20 和 22 都没有问题。低于 16 的话会遇到各种兼容性报错,比如语法不支持、依赖安装失败,不建议继续往下进行。

检查本机版本的方法很简单,打开终端输入:

node -v

如果看到类似v20.11.0的输出,说明 Node.js 已经就绪。如果提示node: command not found,说明还没安装 Node.js,需要先装一个 LTS 版本。

需要提醒的是,有些 macOS 用户是通过系统自带的 PATH 调用 node 的,但版本可能很老。还有一个坑是,通过包管理器安装的 Node.js 和通过官方安装包安装的,全局模块路径完全不同,这会影响后面 ccusage 命令是否被系统识别。建议在第一遍检查时,同时确认 npm 的全局目录。

2.2 npm 环境自查

新版 Node.js 会自带 npm,所以一般不需要单独安装。安装 ccusage 前,可以用下面几个命令确认环境可靠:

npm -v npm config get prefix

第一条输出 npm 版本号,第二条输出全局安装目录。这个目录很关键,因为 ccusage 安装后它的可执行文件就会放到这个目录下面。如果你的 prefix 是一个需要 root 权限才能写入的路径,比如/usr/local,后面安装时很可能会遇到 EACCES 权限报错,这一点我会在安装环节专门讲。

如果你之前装过其他全局 npm 包,说明环境基本没问题。如果这是第一次装全局包,建议顺手检查一下 npm 源,国内网络环境下改成淘宝镜像源会快不少,命令如下:

npm config set registry https://registry.npmmirror.com

这里强调一下,改源只是为了加速下载,不影响工具本身的运行。安装完成后是否保留镜像源,看你自己的网络习惯就行。

2.3 系统兼容性说明

ccusage 在 macOS 和 Linux 上最顺滑,Windows 上也能用,推荐用 WSL 或者 Git Bash,原生 PowerShell 对某些格式输出和路径处理不够友好。

macOS 用户如果用的是 Apple Silicon 芯片,Node.js 20 以上的 arm64 版本没有任何兼容问题,不用担心架构不匹配。Linux 服务器上安装时,注意不要用过于精简的容器镜像,有些镜像连gcc都没有,npm 装某些依赖需要本地编译,会直接卡住。

CentOS 和 Ubuntu 我都试过,Ubuntu 20.04 及以上版本顺利通过。CentOS 7 自带的 Node.js 版本往往太旧,要么升级系统仓库里的 nodejs 包,要么用 nvm 装一个独立版本。

3. ccusage 安装全流程实操

3.1 全局安装命令

环境没问题后,安装就一条命令:

npm install -g ccusage

-g参数表示全局安装,这样你可以在任何目录下直接运行ccusage命令。不加这个参数的话,它只会装到当前目录的node_modules里,运行方式会很别扭。

安装过程中,npm 会拉取依赖包。如果你发现速度很慢或者卡在某个包上,大概率是网络问题。此时可以直接中断,把 registry 切到国内镜像再重试。如果之前已经改了镜像源还是慢,还可以换用pnpm或yarn来装,但为了省事,我建议直接用 npm 加镜像源组合。

3.2 验证安装是否成功

安装完成后,先运行版本号命令确认安装结果:

ccusage --version

如果输出一个版本号,比如0.x.x,说明安装成功,环境变量也没问题。如果提示command not found,说明 npm 的全局 bin 目录不在 PATH 里。这是最常见的安装后问题,排查方法稍后单独讲。

第一次运行时,ccusage 还会提示初始化一些配置。如果你直接执行ccusage,它会默认扫描~/.claude/目录。如果本机还没有 Claude Code 的会话记录,工具会提示找不到数据。这属于正常情况,不是安装失败。

3.3 权限问题处理方案

npm 全局安装最常见的坑是权限不足,报错信息常见的有:

Error: EACCES: permission denied, access '/usr/local/lib/node_modules'

这个报错的意思是当前用户没有/usr/local/lib/node_modules的写入权限。两个解法:

方案一,最省事也最推荐:修改 npm 的默认全局目录到用户目录下。执行:

mkdir -p ~/.npm-global npm config set prefix '~/.npm-global'

然后要把~/.npm-global/bin加入到 PATH 里。在~/.bashrc或~/.zshrc中追加一行:

export PATH=$PATH:~/.npm-global/bin

保存后执行source ~/.bashrc(或source ~/.zshrc),再重新安装 ccusage。这个办法一劳永逸,后面装任何全局 npm 包都不会再碰权限问题。

方案二,如果实在想用系统目录,就在安装命令前加上sudo:

sudo npm install -g ccusage

但这样会导致 npm 目录被 root 所有,后续自更新或者装其他包时容易再次踩权限坑。我自己的经验是,不要偷懒用 sudo,虽然这次装成功了,下次维护成本会增加。

提示:修改 npm prefix 后,之前安装的全局包路径会变。如果你以前装过全局工具,重新源一下配置或者重启终端即可。

4. 安装后的初始化与基础配置

4.1 数据从哪来

ccusage 读取的是 Claude Code 在本地保存的会话日志。Claude Code 每次运行都会把会话记录写到用户目录下的隐藏文件夹里,默认路径是:

~/.claude/

所有历史会话按照项目目录和日期分别存储,文件是 JSONL 格式,每行是一个 JSON 对象,记录着消息的角色、内容、时间戳等信息。这些文件是 ccusage 的数据源,所以安装后不需要自己手动导出任何东西,工具会自动完成扫描解析。

如果你之前用过 Claude Code 的多个账号或迁移过配置文件,路径会有差异。ccusage 提供了--storage参数来查看当前识别的存储位置。确认数据源的思路是:能正常看到历史会话,说明路径正确;看不到任何数据,优先检查~/.claude是否存在。

4.2 首次运行初始化

第一次执行ccusage时,它会做一个简洁的初始化流程。工具会在本地生成自己的配置文件目录,并用交互式选项询问你想要的分析维度。

我建议的第一次操作是直接运行:

ccusage

不加任何参数,它默认展示本月汇总信息,包括总 token 数、总费用、对话次数和每日分布。看到这个界面,说明整个流程已经跑通,后面再慢慢研究其他参数。

还会遇到一个交互式问题:选择存储模式。ccusage 支持 sqlite 和 json 两种数据存储方式。sqlite 模式查询快、文件更紧凑,适合长期持续统计数据;json 模式更直观,适合临时用一用或者拿去做自定义脚本解析。我推荐直接选 sqlite,日常用起来和查看历史数据都更顺手。

4.3 存储方式选择

这个选择看起来小,但影响后续使用体验。ccusage 在第一次扫描原始 JSONL 数据后,会生成一份自己的统计缓存。如果选 json 模式,所有统计结果都保存在一个 JSON 文件里,你随时可以手动改或者删除;如果选 sqlite 模式,数据统一入库,用命令行查询性能更好,尤其是积累了几个月的数据之后。

如果你和我一样,用了一两个月才意识到要换存储方式,不用恐慌。ccusage 会有对应的迁移逻辑,但操作上最好先备份一下当前缓存目录,避免中途中断造成数据错乱。我的建议是:不确定的情况下,先用默认方式跑一周,确认自己确实在持续使用这个工具,再决定是否调优存储。

注意:ccusage 的缓存数据和 Claude Code 的原始日志不是同一份。删除 Claude Code 的原始日志,ccusage 的缓存还会在,但新的统计不会再变;反过来删除 ccusage 缓存不影响 Claude Code 使用。清理时想清楚自己到底要清哪一层。

5. 核心功能实操:用量统计与报告生成

5.1 常用统计命令速查

ccusage 的命令参考是ccusage --help,但我直接把最常用的几条贴出来,省得你来回翻:

用途命令示例
查看当月统计ccusage
查看最近30天ccusage --days 30
按月份汇总ccusage --monthly
输出JSON格式ccusage --json
查看存储配置ccusage --storage
查看成本估算明细ccusage --cost

这些命令组合起来用效果更好。比如想要最近 90 天的每日数据并存成 JSON 供后续处理,可以这么写:

ccusage --days 90 --json > ccusage-report.json

我个人很喜欢把这份 JSON 接到自己的脚本里做图表。你想自动生成一个用量趋势图,用这个输出就够了。

5.2 按时间维度统计

ccusage 的时间维度统计很灵活。默认是当月,但你完全可以按需切换。

--days参数是最常用的,接受数字作为天数,统计最近 N 天的数据。这个参数我常用来做周报,比如统计 7 天的用量:

ccusage --days 7

还有一个重点参数是--monthly,它会把所有历史月份的数据按月份汇总,方便你对比不同月份的消耗。如果只看某个月,也可以先运行ccusage --monthly找到日期范围,再用--days细分。

做月度复盘时,我会同时看两个值:总 token 数和总费用。只看 token 数容易忽略不同模型价格的差异,只看费用又看不出使用量的波动。两个值一起看,才能判断费用上涨是因为用多了,还是因为模型切换导致单价变化。

5.3 输出格式与报告导出

单纯在终端里看数字,只能解决“心里有数”的问题。要真正把数据利用起来,就得导出报告。

--json输出格式非常关键。它的结构里包含了日期、项目、会话 ID、模型信息、token 成本和消息数等字段,你可以直接用jq来做分析。

比如统计每天最高花费的日期:

ccusage --json --days 30 | jq '.days | max_by(.cost)'

如果你不想手动折腾,也可以直接把 JSON 保存成文件,然后导入到表格软件里。大部分表格工具都能导入 JSON,这样你不需要编写任何代码就能做出自己的周报。

需要注意的是,输出的 JSON 结构在不同版本之间可能略有变化。如果脚本里写死了字段名,升级 ccusage 之后最好重新核对一下字段,避免静默出错。

6. 常见问题排查与避坑实录

6.1 命令找不到

安装成功但执行ccusage却提示command not found,这个问题的概率最高。多数原因是 npm 全局路径没有被加入到系统的 PATH 环境变量里。

先看 npm 的全局路径:

npm config get prefix

假设输出是/usr/local,那可执行文件在/usr/local/bin/。把export PATH="/usr/local/bin:$PATH"追加到 shell 配置文件里,重新加载后就能用了。如果是自定义的~/.npm-global/bin,同理处理。

还有一个小坑:macOS 用户如果同时装了 zsh 和 bash,改了.bashrc却开的是 zsh 终端,那自然不会生效。要么把配置加到.zshrc,要么直接调用全路径测试:

~/.npm-global/bin/ccusage --version

能输出版本号,说明安装没问题,纯粹是环境变量问题。

6.2 统计结果不完整

如果你的统计数据明显比实际会话少,有几种可能。

第一种,ccusage 只能统计安装之后新增的数据,或者说扫到数据文件的时间范围有限。如果中途自己手动删除过~/.claude/里的历史文件,那部分记录就永久丢了。

第二种,多账号或不同机器配置并存。比如你在一台机器上用了两个配置文件,ccusage 默认只读取当前配置指向的目录。需要确认当前 Claude Code 正在把日志写到哪个位置,再用--storage参数调整 ccusage 的读取路径。

第三种,模型名称识别问题。如果对话里用了自定义模型名,ccusage 可能不认识对应的价格,费用会按未知处理,导致统计成本偏低。解决办法是在 ccusage 的配置里手动补充模型价格。

6.3 与 Claude Code 版本不匹配

Claude Code 升级后,日志格式如果发生变化,ccusage 可能出现解析失败或统计异常。这种情况通常表现为:部分会话没有被识别,或者 token 数明显异常。

遇到这种情况,第一时间升级 ccusage:

npm update -g ccusage

新版本一般会在较短时间内适配新的日志格式。如果升级后还是不行,可以先跑一遍原始命令看报错信息,把关键报错记录下来,去项目的 issue 区检索。不要直接删除缓存目录,那会让可恢复的历史数据全部丢失。

这类版本兼容问题的风险,也是我建议保留原始 JSONL 日志文件一段时间的原因。统计缓存可以重建,原始日志没了就真没了。

6.4 数据清理与文件膨胀

ccusage 本身很轻量,但如果用很久不清理,缓存文件也会慢慢膨胀。尤其是一次性扫描几千个会话文件时,工具的响应时间会变长。

ccusage 通常提供了数据文件压缩或清理的功能。官方文档里一般会有类似compact或prune的指令,执行后会把分散的数据重新整理。命令的准确名称以ccusage --help输出为准,我不建议凭记忆乱敲。

定期整理的节奏,我个人是每周跑一次。因为工作日每天都有大量会话,一周一次既能保证统计还是实时,又不会让文件长得太快。

清理前务必先看一眼数据源路径,确认没有其他脚本还在依赖正在被清理的缓存文件,不然会引发同步错误。

7. 踩坑之后的效率心得与扩展思路

如果你整套流程走下来,现在已经能顺利看到统计报表了,那我再分享几个我自己使用过程中的细节和想法。

第一,ccusage 这类统计工具,最值钱的部分其实是帮你改变使用习惯。开始用它的前两周,我发现自己单个会话的 token 消耗明显高于预期,原因是习惯把一大段代码和错误信息直接粘进上下文,导致模型每次都要重复读取大量内容。看到数据之后,我开始有意识地压缩粘贴内容、精简上下文,单次会话的成本下降得很明显。这个效果不是靠工具本身,而是靠可视化反馈倒逼习惯调整。

第二,如果你有定期备份的习惯,建议把~/.claude/下的 JSONL 日志目录也纳入备份范围。它们能帮你还原 ccusage 缓存丢失的情况,也方便你在新机器上快速重建历史统计。我一般在换机器时,直接把整个配置目录迁移过去,然后重装 ccusage,历史数据依然完整。

第三,把 ccusage 的输出接入团队监控是一个不错的扩展方向。很多团队用 Claude Code 做自动化任务,想知道每天的成本消耗是否在预算范围内。我见过一个做法:写一个定时任务,每天把ccusage --json --days 1的输出追加到表格里,月底自动汇总,非常省事。这个思路不依赖任何复杂框架,有 Python 或 Shell 基础就能实现。

最后说一句个人体会:统计工具并不是装完就完事的。它最理想的状态是成为一个“提醒器”,让你在用量上升时及时警觉,而不是月底看到账单才开始惊讶。如果你现在还没有用量概念,装好 ccusage 之后默认观察一个月,再回头对比,你会对自己的实际使用情况有一个很不一样的认识。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询