Codex 工作流

Codex Token 消耗太快?我怎样验证“完成后统一测试”

我最近观察到,把“等所有相关工作做完之后,再进行完整测试”写进任务,某些编码任务会更快,也少产生重复日志。但这是工作流假设,不是万能省 Token 口诀。

个人观察
在边界清楚、改动相关的任务里,统一执行完整测试时,Codex 的往返和重复日志看起来更少。
已核实
官方文档确认上下文压缩会在保留相关状态的同时缩小上下文;工程实践也普遍建议限制冗长工具输出。
适用边界
本文没有证明固定节省比例。模型、推理强度、仓库规模、失败次数和日志长度都会改变结果。

先看结论

  • 不要把“不反复跑完整测试”误解为“完全不验证”。
  • 真正要比较的是同一任务下的工具调用、测试日志、返工次数、耗时和 Token 用量。
  • 高风险逻辑仍应尽早跑针对性测试,完整测试可以放在相关改动完成后统一执行。

两种测试节奏

  1. 01相关修改
  2. 02针对性检查
  3. 03完整测试
  4. 04记录结果
两条路径最终使用同一套完整验收;差别只在中途是否反复产生全量测试上下文。

为什么我开始怀疑测试顺序

编码 Agent 每跑一次完整测试,都会读取命令输出、解释失败,再把这些信息带进后续上下文。如果一个改动需要连续修改三个相邻文件,而每改一个文件就跑一次全量测试,同一批成功日志和无关警告可能被重复处理。

我注意到,当任务边界已经清楚时,先完成同一批相关修改,再集中跑测试,生成过程通常更连贯。这里可能同时包含三个原因:更少的工具往返、更少的重复日志,以及更少因为中间态必然失败而产生的无效诊断。

怎样做一个能复查的 A/B 对比

不要拿两个不同项目的主观体感作结论。选择两个结构相近的小任务,或者把同一任务放在两个相同起点的工作树中。保持模型版本、推理强度、AGENTS.md、依赖状态和验收标准一致。

A 组在每个局部修改后执行完整测试;B 组允许必要的静态检查和高风险针对性测试,但等相关实现完成后再执行一次完整测试。最终两组都必须通过完全相同的验收命令。

  • 记录开始与结束时间,以及总工具调用次数。
  • 记录执行了多少次完整测试、输出多少行或多少字节。
  • 记录输入、缓存输入、输出 Token 或产品显示的用量变化。
  • 记录失败、回滚和返工;少跑测试却多返工,不算优化。

我现在使用的折中规则

我不会要求 Codex 在所有场景都等到最后才测试。涉及数据迁移、鉴权、支付、并发、共享 API 或难以回滚的逻辑时,越早获得针对性反馈越便宜。对于页面文案、相关组件、类型补齐和同一功能内的连续修改,则可以先完成一个可评审单元,再统一运行完整套件。

更准确的提示不是“最后再测试”,而是:“先完成这个范围内的全部相关修改;实现过程中只运行能快速暴露高风险错误的针对性检查;完成后再运行指定的完整测试和构建,并修复到通过。”

怎样判断它是否真的省了 Token

速度变快不等于 Token 一定更少。缓存命中、模型调度和命令输出截断都会影响体感。结果至少要同时展示用量、耗时、测试次数和返工次数,不能只挑一个好看的数字。

如果 B 组减少了重复测试输出,却因为错误发现太晚而产生大段调试对话,那么节省可能消失。我的阶段性结论只是:把测试频率作为可设计变量,而不是机械地每改一行就跑全量,值得在自己的仓库中测一次。

rootchen 的当前结论

这条提示最有价值的部分,不是“省 Token”四个字,而是让 Agent 先理解交付边界。任务边界越模糊,测试就越容易变成反复探索;任务边界越清楚,测试越能成为最后的证据。

我会继续用相同模型和相同类型任务记录数据。如果样本不足,我宁愿把它写成个人观察,也不会包装成百分比结论。

来源与延伸阅读

  1. Compaction 官方说明 · OpenAI
  2. Codex Prompting Guide · OpenAI
  3. 减少工具输出与上下文噪音的工程实践 · AutoScout24 Tech