云聚 AI Token Plan 满 199 减 35 元
port:80 AI Junkie
AI 重度玩家的工程笔记本
DigitalOcean 开发者云
Codex 最佳实践: 进阶工程师的任务拆解与 Agent 工作流 封面

Codex 最佳实践:进阶工程师的任务拆解、上下文管理与 Agent 工作流

27 min read 阅读(3) #Codex CLI 深度
#Codex CLI 深度
目录

如果你正在搜「Codex 最佳实践」,大概率已经过了「怎么装、怎么跑第一条命令」这一关。你能让 Codex 改一个函数、修一个 bug、跑一段脚本,但越用越有种说不清的别扭:同样一句话,有时候它一击命中,有时候它绕了一大圈还把不该动的文件改了;上下文一长就开始降智、重复、答非所问;让它写测试,它顺手把测试改成「永远通过」;明明只想改后端,它连数据库迁移一起动了。

这篇不讲安装和基础命令——那是入门文的范围,如果你还没跑通,先去补这篇基础:Codex CLI 完整入门:安装、工作流、故障排查与 Claude Code 协同。本文的定位是装好能跑之后,怎么用得更好:把 Codex 从「碰运气的智能补全」升级成「可复现的工程流程」。如果你想要一份更偏全流程的实操,也可以对照这篇全方位 Codex 实战教程一起看,本文则聚焦进阶心法与编排。

阿里云 OPC 一人公司创业装备库

TL;DR:六条进阶心法

先把结论摆出来,下面每一节都是对这六条的展开:

  1. 任务拆解颗粒度决定一切:一句话说不清、必须用「然后」「并且」连起来的任务,就是太大了,拆。
  2. 上下文是有限预算,AGENTS.md 是你的杠杆:把项目的「怎么构建、怎么测试、什么不能碰」写进 AGENTS.md,而不是每次对话临时口述。
  3. 审批模式和沙箱要主动选,而不是默认全放开:低风险任务给自由度,高风险操作设门禁。
  4. 代码审查必须闭环:用 /review 生成评审,再让另一个回合修,人做终审,不要让同一个上下文「边写边夸自己」。
  5. 测试驱动让 Codex 自我纠错:给它一个能跑的验证回路(测试 / lint / 类型检查),它才知道「对」长什么样。
  6. Agent 工作流要编排,不要堆 prompt:profiles、MCP、subagents、skills 各司其职,复杂度沉淀到配置和文件里,而不是困在一次性对话里。

一句话总览:入门解决「能不能让 AI 写代码」,进阶解决「怎么让 AI 写出你敢合并的代码」。 这两件事之间的距离,几乎全在工程方法,而不在你输入框里那句 prompt 写得多花哨。

一、任务拆解:颗粒度才是第一生产力

进阶用户和入门用户最大的差距,不是 prompt 写得多漂亮,而是会不会把一个大目标切成 Codex 能稳定吃下的小块

一句话原则

社区里流传一条很好用的判据:如果你没法用一句不含「并且 / 然后」的话描述这次改动,这个任务就太大,必须继续拆。 比如:

  • ❌「把用户模块重构一下,顺便加上分页,然后把接口文档也更新了」——三件事,三个上下文,三种验证标准,揉在一起必崩。
  • ✅「把 UserRepository.findAll 改成支持 limit/offset 分页,保持现有调用方签名不变」——单一目标、有明确边界、可验证。

当任务横跨多个层(比如后端逻辑 + 数据库迁移),更要拆成串行的独立回合,每一步之间插入人工检查点。让 Codex 先改 schema 迁移并跑通,确认无误,再让它改业务代码。把它们塞进一个 goal 里,最典型的结果就是迁移和代码各对一半、互相不匹配。

不确定就先让它出计划

遇到范围模糊、自己也说不清边界的任务,先别给写权限。让 Codex 进入 plan(计划)模式:它会先读上下文、提澄清问题、产出一份「分几步、动哪些文件、每步怎么验证」的计划。你审完计划再放它去写。这一步看似慢,实际省下的是「写错半天再推倒重来」的时间。

关于什么时候该让它自由发挥(vibe coding)、什么时候该先写规格(spec coding),这篇讲得很清楚:vibe coding 与 spec coding 何时切换。简单说:探索性的、可丢弃的原型用 vibe;要合并进主干、有回归风险的改动用 spec。

拆解颗粒度自检清单

每次下指令前,过一遍:

  • [ ] 这次改动能用一句话说清吗?(不能就拆)
  • [ ] 有没有明确的「完成」判据?(没有就先定义)
  • [ ] 跨层了吗?(跨了就拆成串行回合 + 检查点)
  • [ ] 我能在 30 秒内 review 它产出的 diff 吗?(不能说明颗粒度太粗)

一位京东后端实习生结合《人月神话》复盘了一个月用 AI 编程的体会,核心结论也是「拆解和验证比生成更重要」,值得一读:用 Claude Code 做 Vibe Coding 的软件工程思考

二、上下文管理与 AGENTS.md

Codex 的能力上限,很大程度上由「它每一回合能看到什么」决定。进阶用户的核心功夫,就是主动管理上下文预算——既要喂够它干活需要的信息,又不能让无关内容把窗口撑爆导致降智。

AGENTS.md:把规矩写下来,而不是每次口述

Codex 在开始干活前会读 AGENTS.md。这是你给 AI 队友的「入职手册」,放在仓库根目录;放在 ~/.codex/AGENTS.md 则是对所有项目生效的全局规则。Codex 会从仓库根一路走到当前工作目录,沿途的 AGENTS.md 依次叠加,越靠近当前目录的优先级越高,可以局部覆盖更宽泛的规则。

写 AGENTS.md 的几条公认要点:

  • 命令优先,解释其次:开头先放「怎么装依赖、怎么跑测试、怎么 lint、怎么构建」的确切命令,而不是大段项目背景介绍。Codex 最需要的是「可执行的事实」。
  • 保持精简:AGENTS.md 会被注入会话上下文,废话越多越浪费 token、越容易干扰结果。官方建议单文件控制在 project_doc_max_bytes(默认约 32 KiB)以内,太大就拆到子目录的嵌套 AGENTS.md 里。
  • 写明红线:「不要修改 migrations/ 下已有文件」「改完必须跑 pnpm test」「不许改动现有测试断言」这类约束,写进去比每次对话重复管用。
  • 不要写的东西:密钥、token、密码绝不能进 AGENTS.md;应该靠沙箱 / 审批强制的东西(比如「不许删库」)别指望用自然语言约束——它没有强制力,真正的硬约束要靠 config.toml 和沙箱。

一句重要提醒:AGENTS.md 里的指令是自然语言,没有 100% 被遵守的保证。 它是「强烈建议」,不是「硬规则」。需要硬保证的,走配置和权限层。

如果你的项目历史包袱重、业务逻辑全在老程序员脑子里,可以考虑给 Codex 注入持久的业务上下文记忆,比如这类开源方案:为 Claude/Codex 注入业务上下文记忆的 Project Brain

长会话的上下文预算管理

Codex 会在上下文逼近上限时自动做压缩(compaction):把前面的对话摘要化,腾出空间继续干。但自动压缩是「兜底」,不是「最佳」。进阶用法是主动管理:

  • /status 随时看当前 token 占用,心里有数。
  • 上下文涨得快时,在级联崩溃之前主动 /compact,在自然断点(一个子任务做完)手动压缩,质量远好于撑到最后一刻被动触发。
  • 大任务别开一个无尽的会话硬怼。拆成有明确完成判据的多个阶段,每阶段 /new 开新会话、必要时 /resume 续接。
  • 收紧单次工具输出:跑大测试套件、cat 巨型文件这类操作是 token 杀手,用 tool_output_token_limit 之类的配置限制单次注入量,别让一次 npm test 的满屏输出把窗口塞满。

关于「上下文到底能塞多大、该不该把整个仓库一股脑喂进去」,这篇有更系统的讨论:1M 上下文已经可用:Claude、Gemini 与编程 Agent 怎么选。结论很反直觉:窗口大不等于该塞满,信噪比比绝对容量更重要。大型项目里如何跨会话无缝接续对话,也有专门的讨论:在大型项目中实现对话的无缝接续

三、审批模式与沙箱:自由度要主动选

很多人把 Codex 一上来就开 --full-auto-a never(永不询问),图个省事,结果某天它「好心」清理项目,把核心配置目录一起删了——这种事故真实发生过:AI 编程工具误删核心配置目录实录

Codex 的安全控制是两层,理解清楚才能拿捏自由度:

  1. 沙箱模式(Sandbox)——技术上它能做什么
  2. read-only:只读,最保守,适合让它先调研、出方案。
  3. workspace-write:可读写当前工作区、跑工作区内的常规命令,默认没有网络访问。这是本地开发的低摩擦默认档。
  4. danger-full-access:彻底放开文件系统和网络。只在你明确需要、且清楚后果时用。

  5. 审批策略(Approval)——什么时候必须问你

  6. 典型的 Auto 预设 = workspace-write + on-request:工作区内的读写和命令自动执行,但要改工作区外的文件、或需要联网时,停下来问你。
  7. on-failure:只在命令失败时才问。
  8. never:从不问(高危,仅限完全可控的沙箱环境)。

进阶用法不是「全放开」也不是「事事都问」,而是按风险分档

  • 探索 / 读代码 / 出方案 → read-only,零风险。
  • 日常改代码、有版本控制兜底 → workspace-write + on-request
  • 批量重构、跑长流程、且你已 review 过计划 → 临时调高自由度,跑完调回来。

会话中用 /permissions 随时切换模式;想每次都用同一套行为,写进 ~/.codex/config.toml 持久化。最近社区还热议过怎么有效阻止 AI Agent 读取敏感文件(.env、私钥等),这也属于沙箱边界该管的事:如何阻止 AI Agent 读取敏感文件

一条铁律:永远在有版本控制(git)的目录里让 Codex 干活。commit 是你最便宜的回滚点——它写崩了,git checkout . 一秒还原,比任何审批都靠谱。

四、代码审查闭环:别让它边写边夸自己

入门用户让 Codex 写完代码,自己扫一眼「看起来对」就合并了。进阶用户知道:Codex 能产出自信但微妙错误的代码,所以审查必须是独立闭环,不能让写代码的同一个上下文自我评价——它有强烈的「确认偏误」,会倾向于说自己写得很好。

/review 做独立评审

Codex CLI 内置 /review 命令:它会启动一个专门的评审 agent 检查 diff,按优先级报告问题,而且不会动你的代码。这相当于给你配了个不带感情的代码审查员。对于一个 PR 上的多个关注点,还可以让它每个点派一个子 agent 并行评审,最后汇总。

一个可复现的审查闭环大致四步:

  1. 限定范围:用 plan 或 AGENTS 约束好这次改动的边界。
  2. 预埋验收标准:在生成之前就把通过 / 失败的判据写进 prompt——这相当于「给人类意图写单元测试」,diff 必须满足这份契约。
  3. 独立评审:写完跑 /review,拿到带优先级的问题列表。
  4. 修复 + 终审:让 Codex 针对评审意见修,最后一道由人拍板

人的角色:质量守门人,不是流水线工人

这里有个关键认知:你不该当串行执行器,而该当目标定义者和质量守门人。 Codex 负责生成和初步自查,/review 负责独立挑刺,你负责定方向、定验收、做终审。把人从「逐行敲代码」里解放出来,去做机器做不了的判断——这才是 AI 编程真正提效的地方。

社区里有人把这套思路系统化成「Harness Engineering」——给 AI 编程搭治理框架而不是放任自流,值得了解这股工程化趋势:开发者热议构建 Harness Engineering 治理 AI 编程

五、测试驱动:给 Codex 一面照妖镜

测试驱动(TDD)被公认为 2026 年最可靠的自主编程范式,原因很简单:模型能跑测试、读失败信息、自我纠错,红-绿-重构的循环天然适合 agent。 Codex 写完代码自己跑测试,红了就读报错改,绿了再继续——你要做的是给它一个能跑起来的验证回路。

关键实践

  • 先定义「对」长什么样:Codex 只有知道验收标准,才能自己跑这个回路。把测试命令、lint、类型检查写进 AGENTS.md,让它改完自动跑。
  • 保护既有测试:在 AGENTS.md 里写死一条——「除非明确要求,否则绝不修改现有测试」。官方把这条列为高风险工作的「非可选」铁律。否则 Codex 为了让测试变绿,会顺手把断言改宽松,制造出「测试全过但功能是坏的」假象。
  • 测试、lint、类型检查不是可选项:因为 Codex 会产出「自信但微妙错误」的代码,这三道关是接住它的网。
  • 自己跑一遍验证再合并:哪怕 Codex 说「全部通过」,合并前你也亲手跑一次完整验证回路。信任,但要核验。

把验证回路写进 AGENTS.md(示意)

## 提交前必做
- 改完任何 .ts 文件后运行:pnpm test && pnpm lint && pnpm typecheck
- 三项全绿才算完成;任一红了,读报错、修,再重跑
- 绝不修改 tests/ 下已有断言,除非我明确要求
- 新功能必须带对应测试

这样写之后,Codex 每次改完都会自动走一遍验证,把「碰运气」变成「有门禁」。

注意:Codex 的命令、配置键、斜杠命令在不同版本间迭代很快。本文涉及的 --full-auto/review/compactmodel_reasoning_effort[mcp_servers] 等以社区与官方文档为准,落地前用 codex --help 核对你本地版本的确切写法。

六、Agent 工作流编排:复杂度沉淀到配置,不困在对话里

到这一层,你已经不是「在跟一个聊天框对话」,而是在编排一套 agent 系统。进阶的标志,是把复杂度从「一次性 prompt」搬到「可复用的配置和文件」里。

Profiles:为不同场景预设档位

config.toml 支持命名 profile,一条命令切换整套配置。比如配一个「快档」用小模型低推理强度跑琐碎改动,配一个「重档」用强模型高推理强度啃硬骨头:

[profiles.fast]
model_reasoning_effort = "low"

[profiles.thorough]
model_reasoning_effort = "xhigh"

--profile fast / --profile thorough 切换。model_reasoning_effort 支持 minimal | low | medium | high | xhigh——xhigh 烧 token,留给 plan 模式里最难啃的问题,日常改动用 low/medium 足够。别用大炮打蚊子,也别用步枪轰碉堡,按任务难度匹配推理强度,是省钱又提速的关键。额度怎么算、和 Cursor 怎么比,可参考:Codex vs Cursor 额度对比;想省着用还有人写了工具管理 API 重置次数:高效管理 Codex API 重置次数

MCP:给 Codex 接外部能力

MCP(Model Context Protocol)让 Codex 连上外部工具——查文档、读数据库、调内部系统。在 config.toml 里用 [mcp_servers.<名字>] 表配置:

[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]

也可以把 MCP 限定到单个项目(.codex/config.toml,仅限受信项目)。MCP 用多了偶尔会遇到登录态 / 会话问题,这篇有现成的排查:Codex MCP logout 与 session 修复

Subagents 与 Skills:并行与复用

  • Subagents(子代理):高度可并行的任务——比如同时探索代码库的多个模块、并行实现一份多步计划——可以让 Codex 派多个子 agent 并行干、再汇总。注意:它只在你明确要求并行 / 子代理时才启动,不会自作主张。
  • Skills(技能):把一套可复用的工作流(怎么提交、怎么发布、怎么写某类组件)固化成 SKILL.md,放进技能目录,Codex 在任务匹配时自动加载。这正是「薄 harness、厚 skill」——把反复要解释的流程蒸馏成文件,而不是每次对话重新口述。

如果你同时在用 Codex、Claude Code 等多个 agent 工具,skill 还能跨工具复用,避免每套各写一遍:Agent Skill 跨工具复用:目录结构、版本管理与团队共享

工具选型:Codex 不是唯一答案

编排的前提是选对工具。Codex 擅长什么、和 Claude Code 等怎么分工,这篇四方对比可以帮你定位:Claude Code vs Codex 四方对比。进阶团队往往不是「只用一个」,而是按场景路由——探索用一个、长链路重构用另一个。

七、常见反模式与避坑清单

把社区踩过的坑集中列一遍,每条都对应一个「别这么干」:

  • 反模式 1:一句话甩一个巨大目标。 「帮我把整个项目优化一下」——没有边界、没有验收,等于让它瞎猜。对策:拆到一句话能说清。
  • 反模式 2:上下文从不清理,硬怼到降智。 表现是输出开始重复、答非所问、忘记前面说过的约束。社区甚至总结过「一句话指令让 Codex 智商回升」的玄学(实测降智概率从 80% 降到 20%)——但根因还是上下文管理:让 Codex「智商回升」的实测对策/status 盯 token,/compact 主动压缩,大任务拆会话。
  • 反模式 3:默认全自动 + 无版本控制。 它一旦误删 / 误改,你连回滚点都没有。对策:永远在 git 仓库里干活,高危操作设审批。
  • 反模式 4:让写代码的上下文自己评审。 它会自我表扬。对策:用独立 /review,人做终审。
  • 反模式 5:放任它改测试凑绿。 制造「全过但是坏」的假象。对策:AGENTS.md 写死「不许改既有测试」。
  • 反模式 6:用最高推理强度跑所有任务。 烧 token 还慢。对策:profiles 分档,按难度匹配。
  • 反模式 7:把规矩每次口述,不沉淀。 同样的解释说一百遍。对策:写进 AGENTS.md / skill。
  • 反模式 8:忽略本地资源异常。 Codex 跑久了可能磁盘占用异常膨胀,影响稳定性,发现不对劲先排查:Codex 磁盘占用异常

一句话收口:这些坑的共性,都是「把 AI 当魔法,而不是当一个需要被工程约束的系统」。 给它边界、给它验证、给它回滚点,它就是个好用的高级工程师;不给,它就是个随机数发生器。

相关阅读

把本文用到的内链集中放一遍,方便按需深挖:

FAQ

Q1:我已经看过入门文了,这篇和它最大的区别是什么?
入门解决「装好、能跑、命令是什么、报错怎么修」;本文解决「跑通之后怎么用得好」——任务怎么拆、上下文怎么管、审查怎么闭环、测试怎么驱动、多 agent 怎么编排。一个是「能不能用」,一个是「用得专不专业」。两篇配合看效果最好。

Q2:AGENTS.md 和直接在 prompt 里说,到底有啥区别?
AGENTS.md 是持久且自动注入的——每次会话开始 Codex 都会读,不用你重复口述项目规矩。prompt 适合放「这次任务的具体目标」,AGENTS.md 适合放「这个项目永远成立的约定」(构建命令、测试命令、红线)。把稳定的东西沉淀进 AGENTS.md,对话里只说变化的部分,是省 token 又稳定的关键。

Q3:审批模式到底该怎么设才不会出事?
按风险分档,不要一刀切。调研出方案用 read-only;日常改代码用 workspace-write + on-request(工作区外操作和联网才问你);只有在你已 review 过计划、且全程在 git 仓库里时,才临时调高自由度,跑完调回来。前提永远是有版本控制兜底——commit 是最便宜的回滚点。

Q4:怎么避免 Codex 把测试改成「永远通过」来骗我?
在 AGENTS.md 里写死「除非明确要求,否则绝不修改现有测试」,这是官方都强调的非可选铁律。同时坚持「写完跑独立 /review、合并前自己亲手跑一遍完整验证」。让测试成为契约,而不是让模型有动机去篡改契约。

Q5:长会话越用越笨,是模型变差了吗?
通常不是模型变差,是上下文被无关内容撑爆导致的降智。对策三连:/status 盯 token 占用,自然断点 /compact 主动压缩,大任务拆成多个有完成判据的会话用 /new 开新局。同时收紧单次工具输出,别让一次大测试的满屏日志吃掉半个窗口。

结语

把这篇浓缩成一句话:进阶 Codex 用户和入门用户的差距,不在 prompt,而在工程纪律。

颗粒度、上下文、审批、审查、测试、编排——这六件事没有一件是「AI 黑魔法」,全是把软件工程的老规矩搬到 AI 协作里。Codex 不会替你思考「这个改动对不对」,它只会高速地把你定义的目标变成代码。所以你的价值不在打字速度,而在定义清楚什么是对的、搭好一个能自动检验对错的回路、守住最后一道终审

人扶方向盘,不站流水线——这才是进阶。先从今天起:给你最常用的那个项目写一份认真的 AGENTS.md,把构建、测试、红线写进去。这一个动作,就能让你的 Codex 体验上一个台阶。

未经允许不得转载:80aj » Codex 最佳实践:进阶工程师的任务拆解、上下文管理与 Agent 工作流
阿里云函数计算 一键部署 AI 大模型

Claude Code 合租 · KYC 封号全托管

官方又涨价又 KYC,封号还得自己重新折腾?ReClaude 拼车了解一下——200 / 400 / 800 / 1600 四档随便挑,账号、风控、切换全平台托管,触发风控自动换号不计次。

上车 4 人车 400/月查看四档套餐