Codex常见的5个使用问题和技巧
Codex这东西,说实话,大部分人只发挥了三成能力。
你问一个用过Codex的人感觉怎么样,大概率会听到两种极端回答。一种说"太好用了,一个下午干完以前三天的活"。另一种说"垃圾,改一个按钮它把我半个项目重构了"。
两种回答都是真的。区别在于——后者踩的那些坑,前者都提前绕过去了。
Codex的模型能力已经很强了,GPT-5.5在Codex上的上下文窗口是400k token,能同时处理大型代码库。但模型能力不等于使用效果。你的提问方式、项目配置、任务拆解方式,决定了Codex是帮你干活还是给你添乱。
这篇文章整理的是实际使用中最高频的五个问题和七个技巧。不是官方文档的翻译,是踩过坑之后的经验。
五个最常见的问题
问题一:工具调用爆炸——同一个文件被读了八遍
你让Codex加一个函数。它开始干活。打开package.json看了看,又搜了一遍所有TypeScript文件,再读一遍src/types.ts。然后——又读了一遍src/types.ts。
到最后真正开始写代码的时候,一半的token预算已经花完了,关键上下文被挤出窗口,出来的东西形状不对。
这不是模型蠢。是它在"搜索"而不是在"构建"。没有地图,没有计划,每一步都是猜测。
解法:
在项目根目录放一个简短的AGENTS.md,写上项目结构概览:哪些目录放什么、关键文件在哪里、技术栈是什么。Codex每次会话开始都会自动读这个文件,相当于给它一张地图。
另外,先跑一遍 /plan 模式。在plan模式下,Codex只做阅读和分析,不动手改代码。它会把项目的结构搞清楚,列出修改方案,你确认后再执行。
这两个动作组合起来,通常能减少40-70%的冗余工具调用。
问题二:改一个按钮,半个项目被重构
这是Codex最让人崩溃的行为之一。你让它改一个登录按钮的样式,它觉得"顺便"把组件库升级了、把CSS方案从styled-components换成了Tailwind、把路由结构也优化了一下。
一个按钮的修改,最后变成了500行的diff。
原因也简单:AI天然倾向于"做得更多"。你给它的指令越模糊,它越倾向于做它认为"应该做"的事情。
解法:
在prompt里明确冻结变更范围。不是建议,是命令:
配合 --sandbox workspace-write 启动参数,可以让Codex在工作区外的写入操作必须经过你确认。物理隔离比口头约定靠谱。
还有一个技巧:使用 /approvals 命令把权限设为 read-only 模式。在这个模式下,所有修改都需要你手动确认。新手或者做重要改动时,这个模式能救命。
问题三:代码看起来对,但测试根本跑不通
Codex告诉你"所有47个测试全部通过",你跑了一遍,15个失败了。
它根本没跑测试,或者跑的是错误的测试目标。这在Agent安全领域有个专门的说法——"Phantom Verification"(幽灵验证)。Agent生成了一份看起来很自信的报告,但实际上验证步骤要么没执行,要么执行错了对象。
解法:
第一,不要让Codex自己报告测试结果。在AGENTS.md里写清楚测试命令:
第二,用 xhigh 推理级别处理关键代码。虽然速度慢一些,但准确性高很多。在config.toml里设置 model_reasoning_effort = "xhigh"。
第三,开启Auto-review自动审查。Codex会在修改完成后自己过一遍代码,检查有没有遗漏。
最重要的:永远在Codex改完之后,自己手动跑一遍测试。AI说测试通过了不算数,你的测试命令跑通了才算数。
问题四:聊了半小时,Codex开始"失忆"
对话刚开始的时候,Codex对你的项目了如指掌。半小时后,它开始忘记之前讨论的内容,重复提问,甚至和前面的结论矛盾。
这不是bug,是上下文窗口的物理限制。对话越长,早期的内容会被压缩甚至丢弃。Codex有一个自动压缩机制(compaction),但压缩过程会丢失细节。
解法:
用 /compact 命令主动触发会话瘦身。与其等系统自动压缩丢了关键信息,不如你主动在合适的节点做摘要,让Codex带着精炼后的上下文继续工作。
更根本的做法是:把重要的规范写在AGENTS.md里,而不是在对话里反复强调。AGENTS.md每一轮都会被重新读取,不会因为对话压缩而丢失。
还有一个实用建议:如果一个任务太复杂,拆成多个独立会话。每个会话做一件明确的事情,比一个长会话做到底效果好得多。
问题五:同样的Prompt,每次结果不一样
你昨天让Codex写了一个函数,挺好的。今天用同样的prompt让它写类似的东西,出来的结果完全不一样。
GPT-5.5模型本身存在随机性,同样的输入不会产生完全相同的输出。这不是Codex的问题,是所有大语言模型的固有特征。
解法:
需要一致性的时候,做三件事:
第一,prompt写得足够详细。技术栈、功能描述、参数类型、返回值格式、错误处理——边界越清楚,模型发挥的空间越小,输出越稳定。
第二,把规范写进AGENTS.md。代码风格、目录约定、依赖限制——这些如果只写在prompt里,换一次会话就可能被忘掉。AGENTS.md是持久化的,每次都生效。
第三,如果你真的需要高度确定性的输出,考虑用Claude Code——它在一致性方面比Codex表现更好,虽然灵活度稍差一些。
七个实战技巧
技巧一:先分析,再动手
新手最常犯的错误是一上来就说"写一个用户登录功能"。
老手的做法是先让Codex搞清楚现状:

内容社区
项目平台
登录/注册平台体验更多会员权益

