预计阅读时间: 14 分钟
学习 Codex 的第一步,不是背命令,而是把它看成一个可以进入仓库、理解上下文、执行工具、修改文件并验证结果的工程代理。它和普通聊天助手的差异在于:普通助手主要给建议,Codex 可以把建议变成工作区里的可审查变更。
这篇先建立一张心智地图:Codex 为什么能做工程任务、它的 agentic loop 如何运转、哪些边界必须由人来控制,以及为什么一个好用的 Codex 工作流通常由提示、项目规范、权限、验证和复盘共同决定。
一句话模型
可以把 Codex 理解成下面这条循环:
目标 -> 上下文 -> 计划 -> 工具调用 -> 文件变更 -> 验证 -> 汇报 -> 下一轮反馈
其中最关键的不是“模型很聪明”,而是它能在一个受控工作区里反复完成这几个动作:
| 阶段 | Codex 做什么 | 人需要把关什么 |
|---|---|---|
| 目标 | 解析你要改什么、为什么改、完成标准是什么 | 目标是否真实、范围是否清楚 |
| 上下文 | 读取文件、搜索符号、查看测试、理解已有约定 | 哪些资料是事实,哪些只是历史假设 |
| 计划 | 拆任务、选择实现路径、判断风险 | 方向是否符合产品和工程优先级 |
| 工具调用 | 运行 shell、读文件、打补丁、调用 MCP 或插件 | 权限是否合理、是否触碰敏感系统 |
| 文件变更 | 修改代码、文档、配置、测试 | 变更是否最小、是否破坏用户已有修改 |
| 验证 | 运行 lint、test、build、浏览器检查或手工检查 | 验证是否覆盖真实风险 |
| 汇报 | 说明改了什么、哪里验证了、还有什么风险 | 是否可以合并、部署或继续迭代 |
这条循环决定了 Codex 最适合的工作:有明确产物、能被验证、上下文主要在仓库或已连接工具中的工程任务。
Codex 的几个界面
Codex 可以出现在不同界面里,但底层思路相似:
- CLI:适合在终端里处理本地仓库、自动化、脚本化和非交互任务。
- IDE 扩展:适合贴近编辑器做局部修改、解释、重构和快速检查。
- ChatGPT 桌面应用:适合长任务、计划、文件编辑、差异审查、多工具协作和部署操作。
- Cloud 或远程任务:适合把相对独立的工作放到托管环境中并行处理。
选择界面时,不要先问“哪个最强”,而要问“上下文在哪里、风险在哪里、我想多强地参与过程”。
如果任务需要看本地服务、浏览器截图、部署脚本和同机文件,桌面应用更自然。如果任务只是“在一个干净仓库里修一个清晰 bug”,CLI 或 Cloud 都可以。若任务高度依赖你当前编辑器焦点,IDE 扩展更顺手。
上下文不是越多越好
Codex 能读取仓库并搜索文件,但它仍然需要方向。一个有效提示通常包括四类信息:
目标:我要达成什么结果。
上下文:哪些文件、错误、截图、接口或业务规则重要。
约束:不能破坏什么,必须遵守什么。
完成标准:通过哪些检查,看到什么现象才算完成。
例如:
帮我把学习页新增 Codex 专题,放在 Flink 前面。
要求:
- 继续使用现有 Next.js 静态导出和 learning.ts 数据模型。
- 不移除备案号。
- 新增文章必须进入 sitemap。
- 完成后运行 lint 和 build,并部署到 aigc-bot.com。
这样的提示不需要很长,但它把目标、边界和验收都交代清楚了。Codex 仍然会自己读代码,但不会在一开始就猜错方向。
权限边界决定信任边界
Codex 的工程能力来自工具调用,工具调用必须被权限边界包住。常见边界包括:
- 只读:适合解释代码、做方案、审查设计,不允许修改文件。
- 工作区写入:适合大多数本地开发任务,可以读写当前仓库。
- 网络访问:适合查官方文档、安装依赖、访问服务,但要防止不受信任内容注入。
- 更高权限:例如写工作区外文件、操作服务器、部署生产环境,应该只在明确任务中使用。
默认应该让 Codex 在最小权限下工作。要部署生产、修改 Nginx、连接数据库或读取私密系统时,需要把动作和风险说清楚,并留下验证记录。
AGENTS.md 是项目级“工作协议”
如果你每次都要提醒 Codex“别改这个目录”“跑这个命令”“文档要同步”,说明这些规则应该进入 AGENTS.md。它适合承载:
- 仓库结构和重要目录。
- 本地启动、lint、test、build、部署命令。
- 代码风格、提交规则和验收标准。
- 明确的禁止事项,比如不能删除备案号、不能覆盖用户未提交修改。
- 特定子目录的额外规则。
AGENTS.md 不是越长越好。最有价值的规则通常来自真实摩擦:Codex 犯过一次错,你纠正;犯第二次,就把规则沉淀下来。
Codex 擅长什么
适合交给 Codex 的任务有明显共同点:
- 产物能落到文件、命令输出、部署结果或可见页面。
- 代码库里能找到足够上下文。
- 能通过测试、构建、截图、日志或接口结果验证。
- 失败可以回滚,变更可以用 Git 审查。
典型场景包括:
- 实现一个页面、组件、接口或脚本。
- 修 bug 并补回归测试。
- 阅读大段代码并写出调用链说明。
- 根据截图调整 UI。
- 同步内容、生成文档、写迁移计划。
- 对 uncommitted diff 或 PR 做代码审查。
- 把重复流程沉淀为 Skill、Hook 或自动化任务。
Codex 不应该替你判断什么
Codex 可以给建议,但不应该替你最终承担这些判断:
- 是否发布到生产。
- 是否删除数据、轮换密钥或改变权限边界。
- 是否把未经复核的商业、法律、医疗、安全结论当成事实。
- 是否引入长期维护成本很高的新依赖。
- 是否接受一个没有验证、只有“看起来对”的大改动。
工程代理的价值是放大你的执行和审查能力,而不是替你取消判断。
好的 Codex 工作流长什么样
一个成熟的工作流通常长这样:
- 任务开始前:目标、上下文、约束和完成标准清楚。
- 读代码阶段:Codex 先理解现有模式,而不是直接重写。
- 计划阶段:复杂任务先列计划,简单任务直接做。
- 实现阶段:改动集中在必要文件,不做顺手重构。
- 验证阶段:运行与风险匹配的检查。
- 汇报阶段:说明变更、验证和剩余风险。
- 复盘阶段:把反复出现的规则写回
AGENTS.md、文档或 Skill。
这也是后面几篇教程的主线:把 Codex 从“能帮忙写代码”升级为“能嵌入你的工程系统”。
参考资料
- OpenAI Codex Manual: https://developers.openai.com/codex/codex-manual.md
- Codex best practices: https://learn.chatgpt.com/guides/best-practices
- Agent approvals and security: https://learn.chatgpt.com/docs/agent-approvals-security