管理成本
追踪 Claude Code 的 token 用量与花费,为组织设上限,并通过管理上下文、选对模型、减少 MCP 开销等方式降低成本。
Claude Code 按 API token 消耗计费。订阅套餐(Pro、Max、Team、Enterprise)的定价见 claude.com/pricing。每位开发者的成本差别很大,取决于模型选择、代码库大小,以及运行多个实例或自动化等使用模式。
在企业部署中,官方给出的平均成本大约是每位开发者每个活跃日 13 美元、每位开发者每月 150–250 美元,90% 的用户每个活跃日的成本低于 30 美元。想估算你自己团队的开销,先从一个小型试点小组开始,用下面的追踪工具建立基线,再推广。
追踪你的成本
用 /usage 命令
/usage 顶部的 Session 块显示当前会话的详细 token 用量统计。它面向 API 用户:Claude Max 和 Pro 订阅者的用量已包含在订阅里,所以会话成本数字与计费无关;订阅者在其他选项卡里能看到套餐用量条、活动统计和用量明细。Claude Code 根据 token 数按标价在本地计算美元数字(管理员设置了 modelPricing 表时除外):
Total cost: $0.55
Total duration (API): 6m 20s
Total duration (wall): 6h 33m 10s
Total code changes: 0 lines added, 0 lines removed
Usage by model:
claude-sonnet-4-6: 1.2k input, 5.3k output, 940.0k cache read, 50.0k cache write ($0.55)这些总计在 /clear 开始新会话时重置。
提示缓存统计:在主对话的第一个 API 响应之后,Claude Code 会在 Session 块里增加一行 Prompt cache (main),汇总会话的提示缓存使用:请求数、从缓存提供的输入 token 占比、缓存未命中,以及缓存是否是热的。
套餐用量明细:在 Pro、Max、Team 或 Enterprise 套餐上,/usage 还会显示什么计入了你的套餐限制:归因(近期用量归因到 Skill、子智能体、插件和各个 MCP 服务器,各自显示为总量的百分比)、行为标记(如长上下文或缓存未命中这类行为占近期用量的 10% 或以上时被标出)、循环(最耗资源的 /loop 或其他定时任务的行)。按 d 或 w 在最近 24 小时和最近 7 天之间切换;数字是近似值,基于这台机器上的本地会话历史计算,不包括其他设备或 claude.ai 的用量。
分析你的使用模式:运行 /insights 获取关于你如何工作(而不是用了多少 token)的报告。它分析你在这台机器上最近的会话,并写出一份 HTML 报告,涵盖你在做什么、摩擦点(如被误解的请求或有 bug 的代码)和建议。最新的报告写到 ~/.claude/usage-data/report.html。
给你的订阅添加用量额度:用量额度让你能在超出套餐用量限制后继续工作。登录 claude.ai 订阅后运行 /usage-credits 管理;对 Pro 和 Max 订阅者,它在浏览器里打开 claude.ai 的 Settings > Usage,可以开关用量额度并查看余额、本月花费和每月花费上限。
管理组织的成本
你拥有哪些控制取决于组织如何访问 Claude Code:
| 你的设置 | 查看花费 | 设上限 | 按用户报告 |
|---|---|---|---|
| Claude for Teams 或 Enterprise | 组织分析里的花费报告 | 管理设置里的花费限制 | 花费报告 CSV |
| Claude Console(API) | Console 用量页面 | 工作区花费限制 | Console 仪表板、Claude Code Analytics API |
| Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry | 你的云计费控制台 | 你的云的预算控制 | OpenTelemetry 或 LLM 网关 |
OpenTelemetry 导出在每种设置上都可用,是把按用户的 token 和成本指标近实时流入你自己的可观测性栈的唯一选项。
以你的合同费率报告花费:默认情况下,Claude Code 按标价计算它向开发者显示的每个成本数字,所以如果你的组织按合同费率付款,/usage、状态栏和 OpenTelemetry 里的数字就和你的账单对不上。想让它们匹配,在托管设置里设置 modelPricing,把 multiplier 设为小于 1 表示固定折扣、大于 1 表示加价,或在 overrides 下列出每个模型的四项每 token 费率。
Claude for Teams 和 Enterprise:每位成员的 Claude Code 用量从按席位的额度中扣除,额度按滚动的五小时窗口和每周窗口重置,与 Claude 聊天和 Cowork 共享。想让成员超出额度继续,打开用量额度并在组织、小组或个人成员级别设置花费限制。
Claude Console:API 组织通过工作区管理 Claude Code 花费。你可以为 Claude Code 总花费设置工作区花费限制并查看成本和用量报告。第一次用 Claude Console 账号认证 Claude Code 时,会自动创建一个名为「Claude Code」的工作区,为你组织里所有 Claude Code 用量提供集中的成本追踪和管理(你不能为这个工作区创建 API Key)。
速率限制建议(为团队设置 Claude Code 时,按组织规模考虑每用户的 TPM 和 RPM 建议):
| 团队规模 | 每用户 TPM | 每用户 RPM |
|---|---|---|
| 1–5 人 | 200k–300k | 5–7 |
| 5–20 人 | 100k–150k | 2.5–3.5 |
| 20–50 人 | 50k–75k | 1.25–1.75 |
| 50–100 人 | 25k–35k | 0.62–0.87 |
| 100–500 人 | 15k–20k | 0.37–0.47 |
| 500+ 人 | 10k–15k | 0.25–0.35 |
TPM 随团队规模增大而降低,因为在较大的组织里,同时使用 Claude Code 的用户占比较小。这些限制在组织层面适用,而不是对每个用户,所以当其他人不活跃时,个人可以暂时用超过按比例算出的份额。
云厂商:在 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上,Claude Code 按 token 向你的云账号计费,花费控制在云厂商的计费控制台里;Claude Code 不会把你云里的指标发回 Anthropic,所以分析仪表板不适用。想按用户归因成本有三种选择:OpenTelemetry(从每位开发者的机器把指标导出到你自己的可观测性栈)、Claude apps gateway(提供按用户的用量归因、带 token 数的 OTLP 指标和按用户的花费限制),或 LLM 网关(把所有 Claude Code 流量路由经过按 key 追踪花费的代理,如 LiteLLM)。
开发者问到某个限制时:「You've hit your session limit」或「You've hit your weekly limit」表示订阅套餐上基于席位的用量窗口,在所有模型之间共享,所以开发者不能靠用 /model 切换模型来恢复访问;消息会显示窗口何时重置。如果开启了用量额度,运行 /usage-credits 申请超出额度的用量。
减少 token 用量
token 成本随上下文大小增长:Claude 处理的上下文越多,你用的 token 越多。Claude Code 通过提示缓存(降低系统提示这类重复内容的成本)和自动压缩(在接近上下文限制时总结对话历史)自动优化成本。下面这些策略帮你保持上下文小、降低每条消息的成本。
-
主动管理上下文:用
/usage查看当前 token 用量,或配置状态栏持续显示它。在任务之间用/clear:陈旧的上下文在之后每条消息上都浪费 token(清除前用/rename,之后用/resume回来)。添加自定义压缩指令:/compact Focus on code samples and API usage。也可以在项目根的 CLAUDE.md 里自定义压缩行为:# Compact instructions When you are using compact, please focus on test output and code changes -
选对模型:Sonnet 能很好地处理大多数编码任务,且比 Opus 便宜。把 Opus 留给复杂的架构决策或多步骤推理。会话中用
/model切换,或在/config里设置默认值 -
减少 MCP 服务器开销:MCP 工具定义默认是延迟加载的,所以在 Claude 使用某个具体工具之前,只有工具名和服务器指令进入上下文。运行
/context看是什么在占用空间。能用 CLI 工具时优先用(gh、aws、gcloud、sentry-cli比 MCP 服务器更省上下文,因为它们不增加任何按工具的列表);运行/mcp禁用你没在用的服务器 -
为类型化语言安装代码智能插件:它们给 Claude 精确的符号导航,而不是基于文本的搜索,减少探索陌生代码时不必要的文件读取
-
把处理卸载给 Hook 和 Skill:自定义 Hook 可以在 Claude 看到数据之前预处理。Claude 不必读 10,000 行日志去找错误,Hook 可以 grep
ERROR只返回匹配的行,把上下文从几万 token 降到几百。Skill 可以给 Claude 领域知识,让它不用探索。例如下面这个PreToolUseHook 把测试输出过滤成只显示失败:{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "~/.claude/hooks/filter-test-output.sh" } ] } ] } }#!/bin/bash input=$(cat) cmd=$(echo "$input" | jq -r '.tool_input.command') # 如果在运行测试,过滤成只显示失败 if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100" echo "$input" | jq --arg filtered "$filtered_cmd" \ '{hookSpecificOutput: {hookEventName: "PreToolUse", permissionDecision: "allow", updatedInput: (.tool_input + {command: $filtered})}}' else echo "{}" fi -
把 CLAUDE.md 里的指令移到 Skill:CLAUDE.md 在会话开始时加载进上下文。如果它包含针对特定工作流(如 PR 评审或数据库迁移)的详细指令,即使你在做无关的工作,这些 token 也存在。Skill 只在被调用时才按需加载
-
调整扩展思考:扩展思考默认开启,因为它大幅提升复杂规划和推理任务的表现。思考 token 按输出 token 计费,默认预算每个请求可以达到几万 token。对不需要深度推理的简单任务,可以用
/effort或/model降低努力等级,或在/config里禁用思考来降低成本(在 Opus 5.5、Sonnet 5.5 和 Fable 模型上无法关闭思考)。在有固定思考预算的模型上,也可以设置MAX_THINKING_TOKENS环境变量降低预算,如MAX_THINKING_TOKENS=8000 -
把冗长的操作委派给子智能体:运行测试、抓取文档或处理日志文件会消耗大量上下文,委派给子智能体后,冗长的输出留在子智能体的上下文里,只有摘要回到你的主对话。注意子智能体自己的请求仍然消耗你的用量;想在它们身上花得更少,为子智能体选更小的模型,或让所有子智能体都跑在同一个模型上
-
管理智能体团队成本:当队友以计划模式运行时,智能体团队使用的 token 大约是标准会话的 7 倍,因为每个队友都维护自己的上下文窗口并作为单独的 Claude 实例运行。保持团队任务小而自包含
-
写具体的提示词:像「improve this codebase」这样含糊的请求会触发大范围扫描;像「add input validation to the login function in auth.ts」这样具体的请求让 Claude 以最少的文件读取高效工作
-
高效处理复杂任务:对复杂任务用计划模式(按 Shift+Tab 切到计划模式再实现,避免初始方向错误时昂贵的返工);尽早纠偏(按 Escape 立即停止,用
/rewind或双击 Escape 把对话和代码恢复到之前的检查点);给出验证目标(包含测试用例、粘贴截图或定义期望输出);增量测试(写一个文件、测试它,再继续)
后台 token 用量:即使空闲,Claude Code 也会为一些后台功能使用 token:对话总结(为 claude --resume 功能总结之前对话的后台任务)和命令处理(/usage 这类命令可能产生检查状态的请求)。这些后台进程即使没有主动交互,也只消耗少量 token(通常每个会话低于 0.04 美元)。
为什么长会话里用量会攀升
一个开了几个小时的会话,消耗的套餐限额可能远超你的活动所暗示的,通常出于下面某个原因:
- 长上下文:Claude Code 在每个请求里发送你的完整对话,Claude 每次使用工具时,都会再发一个带这批工具结果的请求
- 缓存未命中:你在超过缓存生命周期的休息之后发的第一条消息会错过缓存,重新处理你的全部上下文。订阅上缓存生命周期是一小时
- 定时任务:即使会话空闲,定时任务也会按间隔触发,每次都发送你的完整上下文
- 跨会话消息:会话空闲时,Claude Code 把你另一个会话的消息作为新回合送达,每次都发送你的完整上下文
- 子智能体和工作流:每个子智能体以及动态工作流派生的每个智能体,都会在主对话的请求之上发出自己的请求
- 智能体队友:每个活跃的队友在退出之前都持续消耗 token
- 压缩:
/compact会读取它要总结的对话,所以压缩大上下文本身就是一个大请求。想要的是全新开始而不是连续性时,/clear不花任何成本
在 Pro、Max、Team 或 Enterprise 套餐上,/usage 明细会标出占近期用量 10% 或以上的行为(如长上下文或缓存未命中),每个都带一条减少它的提示。