第六章 Codex 使用详解
🔖
Codex 的关键不是“写一句 prompt 让它生成代码”,而是把它当成一个可以被配置、被训练工作方式、能持续沉淀经验的工程队友。

先说结论
😀
别把它当聊天机器人,要当成一个可配置的工程队友
很多人刚开始用 Codex,会把它当成一个更强的代码聊天机器人,用它来生成代码,看看能不能跑,如果不行再继续追问等,这种方式能用,但很容易不稳定。
•
更好的方式是:把 Codex 放进一套工程工作流里。
•
也就是说,不只是让它“写代码”,还要让它知道:
✍️
•
目标是什么,项目上下文在哪里
•
需要遵守哪些约束,怎么判断任务完成
•
应该跑哪些测试,哪些经验以后要沉淀下来
当这些东西逐渐固定下来,Codex 的表现会明显更像一个熟悉项目的队友,而不是每次都从零开始的临时助手。
Prompt 不用花哨,但上下文要完整
Codex 已经足够强,即使 prompt 写得不完美,也经常能给出不错的结果。但在真实项目里,尤其是代码量较大、约束较多的项目里,真正影响结果的不是文案写得多漂亮,而是你有没有把关键上下文说清楚。
一个比较稳的任务描述,可以包含四块:
✍️
目标:你到底想改什么、做什么。
上下文:相关文件、目录、错误日志、接口文档、历史实现在哪里。
约束:代码风格、架构边界、安全要求、不能改的东西。
完成标准:什么情况算完成,比如测试通过、bug 不再复现、页面行为符合预期。
比如不要只说:
🔖
•
帮我修一下登录问题。
可以改成:
🔔
这不是为了“教模型怎么写代码”,而是为了减少它做无谓假设。
复杂任务先 Plan,再让它动手
如果任务简单,比如改一个文案、修一个小 bug,可以直接让 Codex 做。
但如果任务具备这些特征,就应该先让它计划:
•
涉及多个模块
•
可能影响现有架构
•
需要排查原因
•
需要分阶段上线
这时不要急着说“直接改”,而是先让它:
•
阅读相关代码
•
复述它对问题的理解
•
找出可能的风险点
•
给出修改方案
•
说明验证方式
官方文档里也强调了 Plan mode。它的价值不是让流程变慢,而是先把“怎么做”暴露出来,避免 Codex 一上来就改一大片代码。
一个好用的说法是:
先不要写代码。请先阅读相关文件,给出你的理解、修改计划、风险点和验证方式。等我确认后再开始实现。
对于不确定的需求,还可以让 Codex 反过来采访你:
我现在只有一个粗略想法,请你先问我问题,帮我把需求变成可执行的开发任务。
这一步对产品功能、重构、复杂 bug 都很有用。
把重复要求写进 AGENTS.md
如果你发现自己经常反复提醒 Codex:
•
不要改无关文件
•
改完要跑测试
•
提交前先看 diff
•
API 返回格式不能变
•
某些目录不能碰
•
这个项目用 pnpm,不要用 npm
那这些就不应该每次都写进 prompt,而应该沉淀到 AGENTS.md。
可以把 AGENTS.md 理解成“给 AI Agent 看的项目 README”。
它适合写:
•
项目目录结构
•
本地启动方式
•
测试、构建、lint 命令
•
代码风格和工程约定
•
Pull Request 要求
•
禁止事项
•
什么情况算完成
官方建议可以用 /init 快速生成一个初版,但不要停在生成结果上。真正有价值的是根据项目实际情况持续修改。
一个短但准确的 AGENTS.md,通常比一份很长但空泛的规则更有用。
我更建议这样维护:
先写最核心的启动、测试、约束。
当 Codex 犯同一个错误第二次,就把规则补进去。
如果文件变得太长,把 code review、发布流程、调试流程拆成独立文档,再从 AGENTS.md 引用。
也就是说,AGENTS.md 不应该是一次性写完的文档,而应该是团队和 Codex 磨合出来的工作说明书。
配置比临场提醒更稳定
很多 Codex 使用问题,本质不是模型能力问题,而是环境配置问题。
比如:
•
工作目录不对
•
没有写权限
•
默认模型不合适
•
sandbox 权限太松或太紧
•
缺少必要工具
•
MCP 没配好
•
每次都用命令行参数临时覆盖
官方文档里提到,可以通过 config.toml 固化默认配置,包括模型、reasoning effort、sandbox、approval policy、profiles、MCP 等。
一个比较稳的习惯是:
•
个人默认配置放在 ~/.codex/config.toml
•
项目级配置放在 .codex/config.toml
•
临时命令行参数只用于一次性场景
如果是新手,不建议一开始就给 Codex 很大权限。
更安全的方式是:先用默认权限,让它在需要执行高风险命令时请求确认;等你熟悉某个项目和工作流之后,再逐步放宽。
这点很重要:权限不是越大越好,合适才好。
不要只让 Codex 写代码,也要让它验证代码
很多人用 Codex 的流程停在“代码写出来了”。
但在工程里,真正的完成应该是:
•
测试补了没有
•
相关测试跑了没有
•
lint / format / type check 过了没有
•
diff 有没有异常
•
有没有引入回归
•
最终行为是否符合需求
所以你可以直接把验证要求写进任务:
代码块
Plain Text
实现后请运行相关测试,并检查 git diff,确认没有无关修改。如果测试无法运行,请说明原因和你已经做过的验证。
Codex 不是只能生成代码。用得好时,它也可以帮你做:
•
补测试
•
跑测试
•
看日志
•
review diff
•
找潜在回归
•
根据 checklist 做 PR review
官方也提到 /review 这类能力。对团队来说,如果能把 code review 规则写成 code_review.md,再从 AGENTS.md 引用,就可以让 Codex 的 review 行为更稳定。
外部上下文用 MCP,不要一直复制粘贴
有些上下文不在代码仓库里,比如:
•
issue 系统
•
文档系统
•
数据库
•
监控平台
•
日志系统
•
内部 API
•
设计稿
如果每次都手动复制粘贴,很快就会变成负担,也容易过期。
这时可以考虑 MCP。
MCP 的价值不是“把所有工具都接进去”,而是让 Codex 能稳定访问某些真正高频、会变化、和任务强相关的信息。
比较适合接 MCP 的场景:
•
经常需要查 issue / PR / CI 状态
•
经常需要读内部文档
•
经常需要查日志或监控
•
多人协作时希望上下文来源一致
但不要一上来就把所有工具都接进去。更好的方式是:先找一个你每天都在手动复制的信息源,把它接好,用顺了再扩展。
重复工作做成 Skill
如果一个流程你已经重复做了很多次,而且每次都要写一大段 prompt,那它就应该变成 Skill。
Skill 适合封装一类稳定任务,比如:
•
日志排查
•
发布说明生成
•
PR checklist review
•
数据迁移计划
•
事故复盘摘要
•
标准调试流程
一个好的 Skill 不需要一开始覆盖所有边界。
更现实的做法是:
先选一个典型任务。
把输入、输出、执行步骤写清楚。
跑几次,看哪里容易失败。
再把失败经验补进去。
官方文档里有一句很实用的判断标准:如果你反复使用同一段 prompt,或者反复纠正同一个流程,它大概率应该变成一个 Skill。
这也是 Codex 从“会帮你写代码”变成“懂你工作方式”的关键。
稳定流程再自动化
自动化很诱人,但不要太早。
如果一个任务还需要你频繁盯着、反复纠正,就不适合直接自动化。
更好的顺序是:
先手动跑通。
把方法沉淀成 Skill。
确认输出稳定。
再放到 automation 里定时执行。
适合自动化的任务包括:
•
汇总最近 commits
•
扫描潜在 bug
•
生成 release notes
•
检查 CI 失败
•
生成站会摘要
•
定期跑某类分析报告
可以简单理解为:Skill 定义方法,Automation 定义时间。
如果方法还不稳定,先别急着定时跑。
长任务要管理 session,不要一个线程聊到底
Codex 的 session 不只是聊天记录,它会积累上下文、决策和中间状态。
所以 session 管理会直接影响结果质量。
一个实用原则是:一个 session 对应一个相对完整的任务。
不要一个项目永远用同一个 session。这样上下文会越来越臃肿,后面反而更容易跑偏。
如果任务还在同一个问题里,继续用同一个线程是合理的,因为它保留了推理过程。
但如果任务已经分叉,就应该 fork 新线程,或者用 subagent 去做边界清晰的子任务,比如:
•
代码探索
•
测试补充
•
日志分析
•
方案对比
•
风险排查
主线程负责推进核心判断,子线程负责消化局部信息。这样更容易保持清晰。
常见误区
最后总结几个常见误区:
•
把长期规则全塞进 prompt,而不是放进 AGENTS.md 或 Skill。
•
只让 Codex 写代码,不告诉它怎么运行、测试、验证。
•
复杂任务不先计划,直接让它改。
•
一开始就给它过大的本机权限。
•
多个 live thread 同时改同一批文件,却不用 git worktree 隔离。
•
还没稳定的流程,过早做 automation。
•
把 Codex 当成必须一步步盯着的工具,而不是可以并行工作的队友。
•
一个项目只开一个巨大 session,长期混用所有任务。
结论
Codex 的最佳实践,其实不是某个神奇 prompt。
真正重要的是把它纳入工程化使用方式:
•
用清晰上下文启动任务
•
复杂需求先计划
•
用 AGENTS.md 沉淀项目规则
•
用配置保证一致性
•
用测试和 review 闭环
•
用 MCP 接入外部上下文
•
用 Skill 固化重复流程
•
用 automation 放大稳定工作流
•
用 session 管理保持上下文干净
如果只把 Codex 当成“代码生成器”,它能帮你省一些时间。
但如果把它当成一个可配置、可复盘、可沉淀经验的工程队友,它带来的效率提升会大很多。