Codex Token 计算规则
历史范围:本文保留来源记录中的模型系列、费率示例和界面名称,未将其核验为当前可用配置。计量方法与任务组织原则可参考;实际模型和价格请以文末官方入口及账号界面为准。
适用于 Codex CLI、IDE Extension、Codex App、Codex Cloud 和 OpenAI API。价格会变化,金额请以官方 Rate Card 为准。
一、核心公式
设:
I = input_tokens
C = cached_input_tokens / cached_tokens
O = output_tokens
R = reasoning_tokens
T = total_tokens它们之间的关系是:
0 ≤ C ≤ I
0 ≤ R ≤ O
非缓存输入 Token = I - C
总 Token = I + O按三档费率计算时:
费用 =
((I - C) / 1,000,000 × 普通输入单价)
+ (C / 1,000,000 × 缓存输入单价)
+ (O / 1,000,000 × 输出单价)最容易算错的两点:
cached_tokens已包含在input_tokens中,不能再加一次。reasoning_tokens已包含在output_tokens中,不能再加一次。
查看图表代码
二、Token 是什么
Token 不是固定的字符或单词。一个 Token 可能是完整英文单词、词的一部分、标点、空格、换行、中文字符或代码片段。拆分方式取决于模型和编码器。
英文常用的粗略估算是:
1 Token ≈ 4 个英文字符
1 Token ≈ 0.75 个英文单词
100 Tokens ≈ 75 个英文单词这些经验不能直接套用到中文、代码、JSON 或混合语言。字符数只能用于估算,准确数量应以服务端返回的 usage 为准。
三、四类核心 Token
1. Input Tokens
input_tokens 是某次模型调用实际处理的全部输入,不只是用户刚输入的文字,还可能包括:
- 系统与 Codex 内置指令
- 对话历史和任务计划
AGENTS.md、Skill 指令和工具定义- 读取的源代码、配置、Git Diff
- 命令输出、测试日志和 MCP 返回数据
- 子代理结论、图片或文件处理结果
- 结构化输出 Schema
因此,即使用户只输入一句话,Codex 实际输入也可能很大。
2. Cached Input Tokens
cached_tokens 是 input_tokens 中命中 Prompt Cache 的部分:
{
"input_tokens": 100000,
"input_tokens_details": {
"cached_tokens": 80000
}
}这表示:
总输入 100,000
缓存输入 80,000
非缓存输入 20,000缓存输入通常费率更低,但不是免费。稳定的系统指令、工具定义和相同前缀更容易命中缓存;频繁变化的内容适合放在提示词后部。
3. Output Tokens
output_tokens 是模型生成的全部 Token,不等于最终屏幕上可见文字的 Token 数。它可能包含:
- 最终回答、代码或补丁
- 工具调用名称和 JSON 参数
- 中间消息
- Reasoning Token
- 消息边界、通道和格式等结构 Token
因此,“最后只显示 200 字”不能推出“只产生约 200 个 Output Token”。
4. Reasoning Tokens
Reasoning Token 用于模型内部分析、规划、检查和决定工具调用。它是输出 Token 的子集:
reasoning_tokens ≤ output_tokens例如:
{
"usage": {
"input_tokens": 75,
"input_tokens_details": { "cached_tokens": 0 },
"output_tokens": 1186,
"output_tokens_details": { "reasoning_tokens": 1024 },
"total_tokens": 1261
}
}正确解读:
输入 Token 75
输出 Token 1,186
其中 Reasoning Token 1,024
非 Reasoning 生成 Token 162
总 Token 1,261但这 162 个 Token 不一定全部是最终可见回答,还可能包含工具调用或结构 Token。
四、为什么一次 Codex 任务会有多次计量
一次用户任务通常是 Agent 工作流,而不是一次模型调用:
查看图表代码
每一轮都可能产生自己的 Input、Cached Input 和 Output Token。终端输出由工具产生时,不是模型 Output Token;但它在下一次模型调用中作为上下文进入模型,就会成为 Input Token。
因此:
- 一条用户消息不等于一次模型请求。
- 一个 20 KB 的修改文件不等于 20 KB Output Token。
- 最终回答很短,也不代表整个 Agent 过程的 Output Token 很少。
五、Codex Credits 计算
Codex 订阅中的 Credits 与使用 API Key 产生的美元账单是两套计费账户,但都可以基于 Token 类型计算。
截至本文更新时间,官方 Codex Rate Card 展示的部分费率如下。该表是动态信息,使用前请查看最新官方费率。
| 模型 | 普通输入 / 1M | 缓存输入 / 1M | 输出 / 1M |
|---|---|---|---|
| GPT-5.5 | 125 Credits | 12.50 Credits | 750 Credits |
| GPT-5.5 Cyber | 500 Credits | 50 Credits | 3,000 Credits |
| GPT-5.4 | 62.50 Credits | 6.25 Credits | 375 Credits |
| GPT-5.4 Mini | 18.75 Credits | 1.875 Credits | 113 Credits |
| GPT-5.3-Codex | 43.75 Credits | 4.375 Credits | 350 Credits |
计算示例
假设 GPT-5.4 一次任务汇总后的用量是:
I = 100,000
C = 80,000
O = 5,000则:
非缓存输入 = 100,000 - 80,000 = 20,000
普通输入费用 = 20,000 / 1,000,000 × 62.50 = 1.25 Credits
缓存输入费用 = 80,000 / 1,000,000 × 6.25 = 0.50 Credits
输出费用 = 5,000 / 1,000,000 × 375 = 1.875 Credits
总费用 = 1.25 + 0.50 + 1.875 = 3.625 Credits如果 O = 5,000 中有 R = 3,000,仍然按 5,000 个 Output Token 计算,不能再加上 3,000。
六、API 美元费用计算
使用 API Key 时,公式完全相同,只需将 Credits 单价换成目标模型的美元单价:
API 费用(美元) =
((I - C) / 1,000,000 × 输入美元单价)
+ (C / 1,000,000 × 缓存输入美元单价)
+ (O / 1,000,000 × 输出美元单价)不要直接用 Codex Credits 表推导 API 美元价格;两者应分别查看 Codex Rate Card 和 API Pricing。
部分 API 工具还可能单独计费,例如 Web Search、文件存储、容器或其他托管工具。这些费用不一定包含在 Token 费用中。
七、读取 Responses API 的 Usage
典型的 Responses API 用量结构:
{
"usage": {
"input_tokens": 100000,
"input_tokens_details": {
"cached_tokens": 80000
},
"output_tokens": 5000,
"output_tokens_details": {
"reasoning_tokens": 3000
},
"total_tokens": 105000
}
}通用计算伪代码:
uncachedInput = inputTokens - cachedInputTokens
cost =
uncachedInput / 1_000_000 * inputRate
+ cachedInputTokens / 1_000_000 * cachedInputRate
+ outputTokens / 1_000_000 * outputRate多次模型调用的 Agent 任务,应对每次调用分别计算后求和;不要只读取最终一次调用的 Usage。
八、max_output_tokens 限制什么
max_output_tokens 限制模型本次调用最多能生成多少 Output Token,通常同时覆盖:
- Reasoning Token
- 可见回答
- 工具调用参数
- 其他生成结构 Token
因此,限制过低时,模型可能在完成回答或工具调用前就耗尽输出预算。它不会限制 Input Token,也不会限制工具程序自己产生多少日志。
九、七种常见误算
| 错误计算 | 正确理解 |
|---|---|
input + cached | Cached 已包含在 Input 中 |
output + reasoning | Reasoning 已包含在 Output 中 |
| 用最终回答长度估算全部 Output | Agent 可能有多次调用和不可见生成 Token |
| 认为缓存会减少 Input 数 | 缓存改变计费档位,不改变本次报告的 Input 总量 |
| 认为一条用户消息只有一次调用 | Codex 通常会在工具执行前后多次调用模型 |
| 用修改后文件大小估算 Output | 补丁、工具调用和文件写入不能简单等同 |
| 把上下文窗口当成累计账单 | 上下文窗口是单次请求容量,账单是多次调用用量累计 |
十、如何降低 Token 和 Credits
降低 Output Token
- 简单任务使用较低 Reasoning Effort。
- 明确要求最终回答只包含改动、验证和风险。
- 避免重复解释已经确认的背景。
- 高风险任务才使用深度推理和并行 Agent。
降低 Input Token
- 指定文件、符号、错误和失败测试,不扫描整个仓库。
- 精简
AGENTS.md,任务专用流程放入按需加载的 Skill。 - 只启用任务所需的 MCP 和工具定义。
- 限制测试、终端和外部工具返回内容。
- 新主题新开会话,避免无关历史持续累积。
提高缓存命中
- 保持系统指令、工具定义和稳定上下文的顺序不变。
- 固定内容放前面,动态任务内容放后面。
- 避免每轮无意义地改写相同长前缀。
更多工程实践参见:Codex Token 利用。
十一、项目成本预算
先按一段时间内所有调用汇总:
总普通输入 = Σ(input_tokens - cached_tokens)
总缓存输入 = Σ(cached_tokens)
总输出 = Σ(output_tokens)再套用对应模型费率。如果任务混用了多个模型,必须按模型分别汇总,最后再相加。
建议团队持续记录:
- 每类任务的平均 Input、Cached Input 和 Output Token
- 缓存命中率
C / I - 每个任务平均 Credits
- 一次通过率和返工次数
- 模型、Reasoning Effort 与成本的关系
只降低单次 Token、却增加返工次数,不是真正的成本优化。
十二、速查表
| 问题 | 结论 |
|---|---|
| Cached Token 是否包含在 Input 中? | 是 |
| Reasoning Token 是否包含在 Output 中? | 是 |
| 总 Token 如何计算? | Input + Output |
| 缓存 Token 是否免费? | 通常不是,只是费率更低 |
| 可见文字是否等于 Output Token? | 否 |
| 终端输出是否是 Output Token? | 工具生成时不是;下一轮被模型读取时是 Input |
| 文件大小能否推算 Output Token? | 不能准确推算 |
| 一条 Codex 消息是否只有一次模型调用? | 通常不是 |
| 如何获得准确数字? | 读取服务端usage 或 Codex Usage 页面 |
| Credits 和 API 美元账单是否相同? | 不是,应使用各自费率表 |
官方参考资料
继续阅读
- AI与Codex完整实践与解答
- AI与Codex任务与配置Codex 模型对比与选择 · 历史版本
- AI与Codex上手与对象