Skip to content
← 返回AI 与 Codex列表
AI与Codex任务与配置历史记录

历史记录 · 保留原版本与环境,供查阅参考。

Codex Token 计算规则 ​

历史范围:本文保留来源记录中的模型系列、费率示例和界面名称,未将其核验为当前可用配置。计量方法与任务组织原则可参考;实际模型和价格请以文末官方入口及账号界面为准。

适用于 Codex CLI、IDE Extension、Codex App、Codex Cloud 和 OpenAI API。价格会变化,金额请以官方 Rate Card 为准。

一、核心公式 ​

设:

text
I = input_tokens
C = cached_input_tokens / cached_tokens
O = output_tokens
R = reasoning_tokens
T = total_tokens

它们之间的关系是:

text
0 ≤ C ≤ I
0 ≤ R ≤ O

非缓存输入 Token = I - C
总 Token = I + O

按三档费率计算时:

text
费用 =
    ((I - C) / 1,000,000 × 普通输入单价)
  + (C / 1,000,000 × 缓存输入单价)
  + (O / 1,000,000 × 输出单价)

最容易算错的两点:

  • cached_tokens 已包含在 input_tokens 中,不能再加一次。
  • reasoning_tokens 已包含在 output_tokens 中,不能再加一次。
查看图表代码

二、Token 是什么 ​

Token 不是固定的字符或单词。一个 Token 可能是完整英文单词、词的一部分、标点、空格、换行、中文字符或代码片段。拆分方式取决于模型和编码器。

英文常用的粗略估算是:

text
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 的部分:

json
{
  "input_tokens": 100000,
  "input_tokens_details": {
    "cached_tokens": 80000
  }
}

这表示:

text
总输入              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 的子集:

text
reasoning_tokens ≤ output_tokens

例如:

json
{
  "usage": {
    "input_tokens": 75,
    "input_tokens_details": { "cached_tokens": 0 },
    "output_tokens": 1186,
    "output_tokens_details": { "reasoning_tokens": 1024 },
    "total_tokens": 1261
  }
}

正确解读:

text
输入 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.5125 Credits12.50 Credits750 Credits
GPT-5.5 Cyber500 Credits50 Credits3,000 Credits
GPT-5.462.50 Credits6.25 Credits375 Credits
GPT-5.4 Mini18.75 Credits1.875 Credits113 Credits
GPT-5.3-Codex43.75 Credits4.375 Credits350 Credits

计算示例 ​

假设 GPT-5.4 一次任务汇总后的用量是:

text
I = 100,000
C = 80,000
O = 5,000

则:

text
非缓存输入 = 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 单价换成目标模型的美元单价:

text
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 用量结构:

json
{
  "usage": {
    "input_tokens": 100000,
    "input_tokens_details": {
      "cached_tokens": 80000
    },
    "output_tokens": 5000,
    "output_tokens_details": {
      "reasoning_tokens": 3000
    },
    "total_tokens": 105000
  }
}

通用计算伪代码:

text
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 + cachedCached 已包含在 Input 中
output + reasoningReasoning 已包含在 Output 中
用最终回答长度估算全部 OutputAgent 可能有多次调用和不可见生成 Token
认为缓存会减少 Input 数缓存改变计费档位,不改变本次报告的 Input 总量
认为一条用户消息只有一次调用Codex 通常会在工具执行前后多次调用模型
用修改后文件大小估算 Output补丁、工具调用和文件写入不能简单等同
把上下文窗口当成累计账单上下文窗口是单次请求容量,账单是多次调用用量累计

十、如何降低 Token 和 Credits ​

降低 Output Token ​

  • 简单任务使用较低 Reasoning Effort。
  • 明确要求最终回答只包含改动、验证和风险。
  • 避免重复解释已经确认的背景。
  • 高风险任务才使用深度推理和并行 Agent。

降低 Input Token ​

  • 指定文件、符号、错误和失败测试,不扫描整个仓库。
  • 精简 AGENTS.md,任务专用流程放入按需加载的 Skill。
  • 只启用任务所需的 MCP 和工具定义。
  • 限制测试、终端和外部工具返回内容。
  • 新主题新开会话,避免无关历史持续累积。

提高缓存命中 ​

  • 保持系统指令、工具定义和稳定上下文的顺序不变。
  • 固定内容放前面,动态任务内容放后面。
  • 避免每轮无意义地改写相同长前缀。

更多工程实践参见:Codex Token 利用。

十一、项目成本预算 ​

先按一段时间内所有调用汇总:

text
总普通输入 = Σ(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 美元账单是否相同?不是,应使用各自费率表

官方参考资料 ​

继续阅读