← 博客首页 Codex App 的 token 税 CLI 0.149.1 ChatGPT.app 26.818

Codex App 并不比 CLI 更省 token:它每轮多带 949 token

网上常说 Codex CLI 比 ChatGPT Desktop 更省额度。我把本机的 CLI 和 ChatGPT.app 拆开看了:本地写代码时,它们走同一条 /backend-api/codex。系统提示两边相同。Desktop 从第一轮就多塞一段桌面说明书,大约 949 token。对话长到 200K 时,这截税大概不到 1 credit。

核对日期 2026-08-27 · tokenizer tiktoken o200k_base · 模型 gpt-5.6-sol · 数据见同目录 aggregate.json

Base Instruction 3,552 CLI 和 Desktop 同一份,SHA 前缀 cbefa6b0bede
App 默认多出来 949 <app-context>,12 条 Desktop 会话都在这个量级
200K 长对话额外税 < 1 cr 大约 0.3–1 credit,相对整段对话费用不到 1%

先说答案

本地 Codex 任务里,CLI 没有另一套更省 token 的计费器。ChatGPT Desktop 现在的 Codex 模式,就是同一个 Rust app-server 外面加了 Electron 驾驶舱。计费发生在请求离开本机之后,公式按模型的 input / cached / output credit,不按窗口是终端还是 GUI。

真正多出来的,是 Desktop 写进 history 的那段 <app-context>。默认 949 token。第一轮就在,后面每轮还带着,但不会 949、1898 那样叠加。

普通 ChatGPT 聊天气泡不走这条链路。Help Center 写明 Regular Chat 不进 Desktop 的 Codex 用量看板。本文只比较 Codex CLIChatGPT.app 里的 Codex 模式

本机 ChatGPT.app 已经是 Codex 壳

我看的安装包是 ChatGPT.app 26.818.61809,bundle id com.openai.codex,从 codex/codex-apps/electron 打出来。旁边还有 ChatGPT Classic.app(com.openai.chat),那是旧聊天客户端。现在这个 ChatGPT.app 里同时有 Codex 线程和 ChatGPT 会话,别把两者的额度混着谈。

捆绑的 codex 二进制版本是 0.149.0-alpha.4.3。本机 npm 安装的 CLI 是 0.149.1。两个 Mach-O 都大约 210MB,都带 https://chatgpt.com/backend-api/codex 这条基址。

同一台引擎,两套驾驶舱

CLI 的 TUI 在进程里启动 app-server,client_namecodex-tui。Desktop 用 stdio 拉起捆绑二进制,originator 写成 Codex Desktop,并且固定加上 -c features.code_mode_host=true

CLI 和 Desktop 汇入同一条 Codex 请求 CLI TUI codex-tui Codex App Codex Desktop app-server + core build_responses_request /backend-api/codex input / cached / output

请求体在 ModelClient::build_responses_request 里拼出来:instructionsinputtools、推理设置,并用 thread_idprompt_cache_key。开源仓库里,ChatGPT 登录的基址是 https://chatgpt.com/backend-api/codex。公开文档也写明富客户端连的是同一套 app-server。

Base Instruction 两边就是同一份

生产目录不再用仓库里那份写着 “running in the Codex CLI” 的 prompt.md 兜底。本机 ~/.codex/models_cache.json 在 2026-08-26 拉到的 gpt-5.6-sol 模板是 17,730 字符。CLI 会话和 Desktop 会话落盘的 base_instructions.text 与这份模板逐字节相同。

17,730字符
17,766字节
3,552o200k token
13.8%占 CLI 实测首包 25,832

它每轮都在 instructions 字段里。这不是 App 税。换模型才会变:gpt-5.4-mini 大约 2,303,gpt-5.5 大约 4,090。

Desktop 多出来的是 app-context,不是另一套系统提示

Electron 把一段 <app-context> 塞进第一段 developer 消息。CLI 的 TUI 启动线程时不传这段。最近 12 条 Desktop 会话(0.148 到 0.149)默认都是下面这组小节:

小节o200k作用
# Codex desktop context31声明你在桌面 App 里
### Images/Visuals/Files228图片要用绝对路径 Markdown
### Automations93自动化走专用工具
### Thread Coordination428create_thread 等线程工具
### Inline Code Comments168::code-comment
小节合计948实测整段 949,差 1 token 来自拼接

视线程类型还会再加:工作区依赖 27、Git 设置 244、无项目目录 140。自动化线程另有 remark-directive 709,手聊没有。用户会话(带 Git)整段 app-context 实测 1,203

所以「第一次 prompt 一样、后面才变」是误读。系统提示从头到尾一样。Desktop 从第一轮就多了这段说明书。

每轮都带,不等于每轮按全价再收一次

每一轮发出去的请求更像一叠纸:

  1. 信头:Base Instruction + tool 定义,几乎固定。
  2. 已经写过的正文:对话、工具结果、Memory、AGENTS.md,以及 Desktop 的 app-context。
  3. 这轮新写的几行。

信头和 app-context 每轮都会附上,所以看起来「每次都在用这些 token」。同一条 thread 带同一个 prompt_cache_key。服务端认的是前缀:第一轮把前缀写入 cache,后面只对新长出来的那截按全价收,前面按 cached input 收。

官方 Sol 卡:cached 是 input 的十分之一。949 token 未命中大约 0.095 credit,命中后大约 0.0095 credit

Cache 不是把 prompt 改了

本机一条 CLI 会话的 token_count 是这样涨的。input 变大是因为历史在长,不是 Base Instruction 从 3,552 变成了别的数:

第几次inputcached命中率uncached
125,8325,88822.8%19,944
235,66525,34471.1%10,321
338,01534,56090.9%3,455
756,42156,06499.4%357

Desktop 首包同样已经有 cache:27,946 input 里 cached 6,912。新开 thread 等于换信纸,前缀要再付一次全价。

对话 200K 时,会贵多少

200K 文本不会让 949 变成 200K 的某个百分比加成。多出来的仍是每轮 949。贵不贵取决于模型被调用了多少次 N(用户一句话往往不止一次,工具循环也算)。

额外 credit
949 / 1,000,000 × [100 + 10 × (N − 1)]
调用次数 N额外 credit怎么理解
10.095整段一次性塞进去;相对 200K 未缓存 input(20 credit)约 0.5%
200.28短一点的 agent 会话
500.56更常见的长会话
1001.03工具很碎、轮次很多

窗口已经到 200K 的单次请求里,若大部分前缀命中 cache,App 多出来的 949 大约 0.0095 credit,占这一笔往往不到 0.3%。整条会话从短聊长到 200K,正文才是几十 credit 的量级;桌面税大约 0.3–1 credit

套餐内额度没用完时,这不是额外钞票,只是额度多耗一点点。买 credit 续用时,第三方用 API 价反推大约 1 credit ≈ $0.04,OpenAI 价目表没有把这个美元换算写成官方标价。按那个量级,0.3–1 credit 大约 1–4 美分。

0.56额外 credit(Sol 官方卡)
~$0.02非正式换算,按 1 credit ≈ $0.04

工具和插件:核心一样,外壳不同

核心 tool 规划器是同一份 spec_plan.rs。这台机器的 ~/.codex/config.toml 两边共用,启用了 12 个插件。ChatGPT.app 还捆绑了 config 里没有的 5 个:messageslatexdeep-researchcomputer-historyrecord-and-replay

本机 CLI 和 Desktop 会话的 skills 清单都是 55 条、同名。Apps 连接器工具缓存 159 个;因为 ≥100,会走 tool_search 延迟加载,不会把大约 198k token 的 schema 整包塞进每一轮。

TUI 会丢掉可发现的 Plugin 工具;codex-tui 里装插件类 request_plugin_install 会直接拒绝。Desktop 还可能露出线程协调工具。Computer Use 截图不在 949 里,用到时另加,而且图像远比这段说明书贵。

首包 API input_tokens 减去 instructions 和已落盘 messages 之后,CLI 大约剩 8,847,Desktop 大约 9,186–9,268。这是 tool schema 加上未写入 rollout 的字段,不是受控 A/B,只能当量级:Desktop 大约再多 400–500。

证据边界

同目录 aggregate.jsonverify.mjs 会把小节合计、credit 公式和 cache 序列再算一遍。构建时走 bun run verify:articles

主要材料:build_responses_requestCodex 基址App Server 文档Using Codex with your ChatGPT planCodex pricing

文章目录10
Silent Star约 6 分钟