把 Codex 用成工程队友

2026/03/13

最近读了 OpenAI 官方关于 Codex 的最佳实践文档,最大的感受不是“prompt 要写得多复杂”,而是一个更朴素的结论:Codex 的效果,通常不取决于你会不会写神奇提示词,而取决于你是否把它放进了一个清晰、可复用、可验证的工程流程里。

很多人第一次用编码代理时,会把它当成“更会写代码的聊天机器人”。提一个需求,等它吐出一段代码,再手动判断能不能用。这种方式当然有帮助,但很快就会碰到上限。仓库一大、任务一复杂、约束一变多,结果就开始不稳定。

OpenAI 在这篇文档里反复强调的其实是一件事:Codex 更像一个可以持续调教、持续配置、持续协作的工程伙伴。 真正能把效果拉开的,不是某一次对话,而是上下文、规则、配置、验证、工具连接,以及后续的沉淀。

先把任务说清楚,再让 Codex 动手

Codex 并不要求你每次都写出完美提示词。即使描述不够精确,它也常常能给出一个“还不错”的初稿。但在真实项目里,尤其是大仓库和多人协作仓库中,清晰的任务上下文仍然是最重要的起点。

一个高质量任务描述,至少应该包含这些内容:

很多时候,代理“自作主张”并不是因为模型不会写,而是因为任务边界没有被定义清楚

复杂任务不要直接写,先规划

当需求本身还模糊、改动范围不明确,或者你自己都没想清楚时,最差的做法就是让 Codex 直接开始改代码。因为问题定义一旦错了,后面的实现再努力也只是把错误做得更完整。

更合理的做法是先让它做下面三类事情之一:

这和一个成熟工程师接需求时的工作方式是一样的。先确认问题,再确认边界,最后才进入实现。把 Codex 当成真正参与项目的成员,它也应该遵循这个节奏。

把重复规则写进 AGENTS.md

这是官方文档里最值得落地的一条建议之一。

如果某种提示方式已经被证明有效,下一步就不应该继续靠手工重复,而应该写进 AGENTS.md。你可以把它理解成一个写给代理看的仓库协作说明:仓库怎么运行、怎么测试、有什么限制、什么叫完成,都应该在这里说清楚。

一个实用的 AGENTS.md 通常可以包含:

它的价值在于把“这次说对了的话”变成“以后默认成立的规则”。这样你就不需要每次都重复:

这些内容都应该成为代理默认知道的事情。

稳定性很多时候是配置问题

很多人把输出质量波动理解成模型问题,但官方文档提醒得很直接:很多质量问题,其实是环境问题。

比如:

如果想让 Codex 稳定,就不能只研究 prompt,还要研究配置。包括个人默认配置、仓库级规则、权限策略、沙箱模式、模型选择,以及 MCP 等外部工具接入方式。

一句话总结:别让代理在错误环境里努力。

不只让它生成代码,还要让它证明代码

这是工程使用 Codex 的关键分水岭。

真正可靠的工作流不是“让它改一段代码”,而是:

官方文档特别强调,Codex 不应该只负责生成,还应该参与测试、检查和 review。这个思路很重要,因为它让代理从“代码产出者”升级为“结果负责者”。

在真实项目里,最危险的不是它写不出代码,而是它写出了看起来合理、实际上没有被验证的代码。所以应该建立一个默认原则:没有验证,就不算完成。

仓库之外的上下文,用 MCP 连接

如果 Codex 需要的上下文不在仓库里,比如日志平台、工单系统、知识库、接口文档或监控数据,靠手工复制粘贴当然也能凑合,但效率很低,而且不稳定。

更好的方式是用 MCP 把这些外部系统接进来。MCP 的价值不只是“多了一个工具”,而是把上下文获取这件事变成了标准化能力。对代理来说,这意味着它可以直接读取实时信息、调用工具,而不是每次都等你补材料。

但这里也有一个很现实的提醒:不要一开始就接入所有工具。 先接最能减少重复劳动的那一两个,再逐步扩展。连接越多,维护成本通常也越高。

重复工作应该沉淀成 Skill

如果你总是在重复做一件事,例如:

那就不该继续依赖一段越来越长的 prompt,而应该把它做成 Skill。

Skill 的本质,是把一套稳定的方法封装下来。它定义这件事做什么、什么时候用、输入输出是什么、需要哪些辅助文件或脚本。

我很认同官方给出的判断标准:如果你在不断复用同一种提示,或者总在修正同一类流程,那它大概率已经应该被技能化了。

流程稳定之后,再自动化

自动化不是越早越好,而是越稳越好。

文档里有一个很好记的原则:Skill 定义方法,Automation 定义时间。

也就是说,一项工作如果还需要你频繁盯着、反复修正、不断补充上下文,那还不适合自动化。你应该先把它做稳定,必要时先抽成 Skill。等这个流程足够可预测,再交给自动化按计划执行。

适合自动化的任务通常包括:

自动化最容易失败的原因,不是调度本身,而是你把一个“不成熟的人肉流程”直接搬进了定时任务。

会管理会话,才能管理复杂工作

Codex 的会话不只是聊天记录,而是一个持续累积上下文、决策和操作的工作线程。

如果把所有事情都塞进一个线程,历史上下文会越来越臃肿,任务边界也会越来越模糊,质量自然会下降。更好的方式是:一个线程对应一个清晰任务单元。

同一个问题的延续尽量留在同一线程里;真正分叉的新问题,再另开分支。这和写代码时保持函数职责单一,本质上是同一种工程思维。

真正的提升,不在提示词,而在协作方式

读完这篇最佳实践,我对 Codex 的理解更清晰了:它不是一个等你灵光一现写出完美提示词的工具,而是一个需要被配置、被约束、被验证、被沉淀的协作对象。

如果你只是偶尔让它生成几段代码,那它当然只是个助手;但如果你开始为它准备上下文、建立规则、接入工具、沉淀技能、安排自动化,它就会逐渐从“会写代码的模型”,变成“能参与交付的工程队友”。

我认为 Codex 最值得重视的地方,不只是它提升了编码速度,而是它开始改变我们组织工程工作的方式。

参考

Edit this page on GitHub