📚AI 编程官方教程中文版
从原理到实战

02 · 一次任务是怎么完成的

你想让 Codex 做一个贪吃蛇小游戏。下面三种说法你会用哪种?

⏱️ 预计阅读 12 分钟 | 🎯 目标:把"发一句话→等代码"重新理解成"控制一条工程任务管线"

上一篇讲清了 Codex 是什么。这一篇要讲清它怎么干活。 看懂这条管线,你给 Codex 的提示词会立刻多两件东西:计划阶段验收标准


🎬 先看一个场景

你想让 Codex 做一个贪吃蛇小游戏。下面三种说法你会用哪种?

说法Codex 拿到后会发生什么
❌ "做一个贪吃蛇游戏。"它得猜:用什么框架?放哪个页面?要不要联网排行榜?要不要计分?
⚠️ "在当前项目里做一个贪吃蛇。"它进入项目了,但不知道边界 —— 可能顺手新增依赖、改全局样式
✅ "在当前项目里做一个经典贪吃蛇。目标:网格移动 / 吃食物增长 / 计分 / 重新开始。边界:复用已有框架和样式,不新增依赖。执行:先给计划,确认后再改。交付:修改文件列表 + 启动方式 + 手动验收清单。"Codex 知道做什么、不做什么、怎么算做完

🤔 差别不在字数,而在结构。 后者多出来的是「目标 / 边界 / 执行顺序 / 交付」—— 这就是这一篇要讲的:Codex 任务管线的关键节点。


🧭 一次任务的 7 步管线

Codex 不是「输入 → 输出」黑盒,是一条有节点、有反馈、有验证的工程管线:

flowchart TB
    A["1️⃣ 接收任务<br/>从你的提示词开始"]
    B["2️⃣ 澄清目标<br/>复述 + 边界确认"]
    C["3️⃣ 收集上下文<br/>读文件、规则、配置"]
    D["4️⃣ 制定计划<br/>列改动范围 + 验证方式"]
    E["5️⃣ 执行修改<br/>真正动手改文件"]
    F["6️⃣ 运行验证<br/>测试 / 构建 / lint"]
    G{"验证通过?"}
    H["7️⃣ 交付汇报<br/>diff + 证据 + 风险"]
    I["👤 你审查"]

    A --> B --> C --> D --> E --> F --> G
    G -->|是| H
    G -->|否| C
    H --> I

    style D fill:#fef3c7,stroke:#f59e0b,stroke-width:2px
    style F fill:#dbeafe,stroke:#3b82f6,stroke-width:2px
    style H fill:#dcfce7,stroke:#22c55e,stroke-width:2px

每一步都有它最大的风险,新手要知道在哪里防:

节点最大风险防范方法
1📥 接收任务任务太宽("优化项目")把目标压小到 30 分钟可验收
2🔍 澄清目标你和它理解不一致让它先复述(rephrase)
3📚 收集上下文读错文件让它说明读了哪些、为什么相关
4📋 制定计划跨度太大让它列具体改动文件清单
5🛠️ 执行修改顺手改无关代码提示词里写"不做无关重构"
6运行验证验证不覆盖目标验证方式跟任务目标对应
7📦 交付汇报只报喜不报忧要求列 diff + 已验证 + 未验证 + 风险

💡 核心洞察:Codex 失败的 80% 不在第 5 步「执行」,而在 1-4 步任务定义6-7 步验证交付。 新手把所有注意力放在「它写代码行不行」,老手把注意力放在「任务定义和验收清单」。


🆚 同一句任务,三种问法的真实差距

延续上篇的方法,看 Codex 拿到不同问法会输出什么:

维度❌ 模糊任务✅ 工程任务
原句"帮我把这个页面改好""修复设置页面移动端按钮文字溢出问题"
哪个页面不明确设置页面
什么叫好不明确375px 宽度按钮文字不溢出
能不能改样式系统不知道不改全局设计系统
怎么验收没说375px 不溢出 + 1440px 不退化 + 控制台无报错
Codex 反应边猜边改,可能改 5 个文件给计划 → 你确认 → 它只改 1-2 个文件

⚠️ 同一个 AI、同一个项目,输出的代码质量天差地别 —— 差别不在 AI 强弱,在你给的任务结构。


🎯 新手最该控制的 3 个边界

任务管线再清晰,没有边界都会失控。3 个边界把开放问题变成封闭问题

mindmap
  root((任务边界))
    📁 文件边界
      只改 src/components/
      不碰 config/
      不碰 公共依赖文件
    🚫 行为边界
      不新增动画
      不改主题样式
      不引入新登录逻辑
    ✅ 验证边界
      pnpm test 通过
      375px 视觉不溢出
      控制台无报错
边界为什么重要写在提示词里的样子
📁 文件边界防止改动扩散到无关模块"只改 src/components/Settings/ 下的文件"
🚫 行为边界防止顺手做多余功能"不新增动画、主题、登录逻辑"
验证边界防止「看起来改了」就交付"跑 pnpm test,失败说明原因"

🎯 任务越小,边界越好写。 新手最好从 30 分钟内能验收的小任务开始练习写边界。


🧠 控制系统视角:Codex 任务 = 4 要素闭环

从第一性原理(first principles,最基本的原理)看,Codex 一次任务不是命令执行,是控制系统

flowchart LR
    Goal[🎯 目标<br/>系统要达到的状态] --> Observe[👀 观测<br/>当前现场是什么样]
    Observe --> Action[🛠️ 动作<br/>采取哪些修改]
    Action --> Feedback[🔄 反馈<br/>结果是否接近目标]
    Feedback -->|未达成| Action
    Feedback -->|已达成| Done[✅ 交付]

    style Goal fill:#dcfce7,stroke:#22c55e
    style Feedback fill:#fef3c7,stroke:#f59e0b
要素在 Codex 里对应什么缺它会怎样
🎯 目标(Goal)你的提示词里的"目标"段Codex 在做什么自己也不知道
👀 观测(Observe)读项目文件、配置、报错凭空想象项目结构
🛠️ 动作(Action)改文件、运行命令只能给建议不能动手
🔄 反馈(Feedback)测试 / 构建 / lint / 你的审查一次成败定终生,不能修正

💡 结论:Codex 不是"一次生成完美答案"的工具,而是**"在反馈里逐步逼近正确结果"** 的工具。 计划 / 验证 / 汇报这些步骤不是仪式感,是控制系统的关键部件 —— 没它们,反馈链就断了


📖 一个例子讲透:「导出报表很慢」三阶段拆解

用户反馈:"导出报表很慢"。新手会直接扔给 Codex 说"修一下"。这就是失败的开端。

正确做法:分诊 → 收证据 → 限定修复,三阶段递进。

🩺 阶段 1 · 分诊(不改代码)

请先分诊"导出报表很慢"这个问题,不要修改文件。

请输出:
- 需要确认的问题
- 可能涉及前端、后端、数据库还是文件生成
- 需要查看哪些文件
- 需要哪些日志或数据
- 建议的排查顺序

分诊后你可能发现:问题不是「导出真的慢」,而是「点击后没有 loading(加载中状态),用户以为卡住」。这种情况根本不需要改后端,只需改前端反馈。

➡️ 节省的工作量:90%

🔍 阶段 2 · 收集证据(仍不改代码)

如果确认是性能问题:

请围绕报表导出性能收集上下文,不要修改文件。

请查找:
- 导出入口
- 后端生成逻辑
- 数据查询(query)逻辑
- 文件写入或流式返回逻辑
- 相关测试
- 最近是否有性能相关改动

🛠️ 阶段 3 · 限定修复

证据收集完,慢在数据库查询,这时才进入修复

请优化报表导出的数据库查询。

范围:
- 只改报表导出相关 query
- 不改导出文件格式
- 不改权限逻辑
- 不改前端交互

✅ 验证:
- 补充查询逻辑测试
- 用现有 fixture(测试夹具)验证导出结果一致
- 说明性能改善的判断方式

💡 这三阶段的价值:把"模糊反馈"变成"可执行任务",每阶段都有明确的不做什么,避免 Codex 凭一句话开始大刀阔斧改 5 个模块。


⚖️ 哪种任务适合新手起步

不是所有任务都该一上来就交给 Codex。任务大小直接决定你是否还能审查它

✅ 适合新手起步❌ 不适合新手起步

特征

  • 🎯 一句话能说清目标
  • 📁 改动文件 ≤ 3 个
  • ✅ 30 分钟内能验收
  • 👁️ 你能看懂它改了什么

例子

  • 修复设置页移动端按钮溢出
  • 给登录表单补 401 错误用例测试
  • 把 README 表格按某规则重排
  • 定位某个 bug 的原因(不改代码)

特征

  • ❓ 目标含糊("优化"/"重构")
  • 📁 跨多个模块
  • ⏰ 验收要 1 天以上
  • 🌫️ 改完你也看不出对错

例子

  • 重构整个设置模块
  • 全站 UI 升级到新设计系统
  • 升级核心依赖大版本
  • 优化所有页面性能

🎯 第三类任务最有学习价值:让 Codex 「只定位、只解释、不改文件」。 比如:「定位设置页面移动端按钮溢出的原因,不改文件」—— 这迫使它先观察解释定位,是建立 Codex 工作认知最便宜的方式。


🎓 新手该养成的 3 个任务习惯

把上一篇的「复述 / 边界 / 验证」三步落地到任务管线里,就是下面 3 个习惯:

1️⃣ 让 Codex 先复述任务,再动手

请先复述你理解的任务目标和不做的事情。

➡️ 作用:在它动手前发现误解。

你心里想「修一下登录提示」,它理解成「重写整个认证(authentication)逻辑」—— 复述能在 30 秒内戳穿这种偏差。

2️⃣ 让 Codex 先给计划,等你确认再改

请先给实施计划。等我确认后再修改文件。

➡️ 作用:在它动手前圈出改动范围。

计划里如果出现「我会重构 XX 模块」「我会升级 YY 接口」这类大动词,立刻叫停 —— 这是范围爆炸的前兆。

3️⃣ 让 Codex 交付时给 4 项证据

请按下面 4 项汇报:
1. 改了哪些文件 + 为什么
2. 跑了什么验证命令、结果是什么
3. 哪些没有验证(说明原因)
4. 还剩什么风险或人工检查项

➡️ 作用:把"完成了"变成可审查的工程交付。

没有这 4 项,Codex 说"完成了"等于"我觉得完成了"。你看不到证据 = 你看不到风险


🚫 常见误解 → ✅ 正确理解

❌ 误解✅ 正解
越长的提示词越好有目标、边界、验证的提示词才好(结构 > 字数)
测试通过就是任务完成验证要跟目标对应(改 UI 跑单元测试不算验证)
"先计划"是浪费时间计划阶段用最低成本暴露最高风险的误解
Codex 说"完成了"就是完成了看 4 项证据:改动 / 验证 / 未验证 / 剩余风险
大任务一次性给 Codex 最高效大任务拆成小任务,每步都能审查 → 总时间更短

🤝 再次类比新同事:你不会让新人第一周就重构整个项目。先给小任务、看他怎么做、怎么汇报、怎么验证 —— 建立信任后才放权。Codex 同理。


🔍 想再深一层(点击展开)

📋 7 节点风险全景:每步具体在防什么
节点风险表现防范
📥 接收任务任务太宽"优化项目" / "改善体验"任务压到 30 分钟可验收
🔍 澄清目标目标不一致你想改 UI,它去改 API让它先复述任务
📚 收集上下文看错现场改了旧版 pages/ 而新版在 app/让它说明读了哪些、为什么相关
📋 制定计划跨度太大"我将重构 X、升级 Y、优化 Z"让它列具体文件清单
🛠️ 执行修改顺手改无关代码顺手格式化、重命名、抽函数提示词写"不做无关重构"
运行验证验证不覆盖目标改 UI 只跑单元测试验证跟任务目标对应
📦 交付汇报只报喜不报忧"完成了" 三个字要求 diff + 4 项证据
🔪 任务拆分的 3 个信号:什么时候必须拆

满足任意一条,就该拆任务:

#信号例子
1目标里有多个动词"重构登录、升级接口、优化 UI、补测试" → 至少 4 个任务
2涉及多个风险区同时碰认证、数据库、支付、部署 → 必拆
3验证方式不同前端要浏览器验收、API 要接口测试、数据库要一致性检查 → 拆开

💡 拆任务不是更慢。一个失败的大任务回滚 + 解释 + 重试,比 3 个独立小任务总成本高得多。

✅ 验证不是「跑测试」:5 类任务的对应验证

不同任务类型,验证方式完全不同:

任务类型该写的验证
🧠 代码逻辑任务跑相关单元测试;如果没有,说明应补哪些
🎨 前端页面任务浏览器查桌面端 + 移动端;确认无控制台报错
🔌 API 接入任务验请求参数、响应结构、错误处理、类型定义
📊 数据任务说明数据范围、清洗规则、指标口径、异常值处理
🚀 发布任务只做发布前检查,自动发布;列出阻塞项

⚠️ 改 UI 跑单元测试不是验证。验证必须能证明目标达成

📝 标准任务提示词模板(可直接复用)
请完成下面任务,但先停在计划阶段。

🎯 背景:
{为什么要做}

🎯 目标:
{完成后达到什么效果}

📁 范围:
{允许修改的文件或目录}

禁止事项:
- 不新增依赖
- 不修改无关文件
- 不做需求外功能
- 不改公开 API
- 不改部署配置

🔄 执行要求:
1. 先阅读相关上下文
2. 复述你理解的目标和边界
3. 给出最小修改方案
4. 标出风险和需要确认的问题
5. 等我确认后再改

✅ 验证:
{真实验证命令或人工验收步骤}

📦 交付:
- 修改文件列表
- 修改说明
- 验证结果
- 剩余风险

这个模板的价值不是"格式好看",而是 强制你不漏掉边界和验证 —— 这两项是新手最常忽略的。

🎓 老师式总结:从结果思维到过程思维

新手最容易的陷阱:只看结果,不看过程。文件改了、测试绿了,就觉得完成。

但同一个"测试通过",背后可能是:

  • ✅ 真正修复了生产代码
  • ⚠️ 改了断言(assertion,断言条件)让测试变松
  • ⚠️ 删除了失败测试
  • ⚠️ 把错误吞掉了
  • ⚠️ 绕过了原来的逻辑
  • ⚠️ 改了无关配置碰巧让测试通过

结果一样,工程意义完全不同

学习用 Codex,本质就是从"结果思维"升级到"过程思维":

结果思维:它写对了吗?
过程思维:它每一步都能被看见、被纠正、被验证吗?

后者才是真正的工程标准。

📖 术语速查表
英文 / 缩写中文一句话解释
Agent智能代理能围绕目标自主用工具的 AI 系统
prompt提示词给 AI 的输入指令
diff差异修改前后代码对比,可逐行审查
approval审批Codex 高风险动作前要你确认
sandbox沙箱限制 Codex 行动范围的安全隔离环境
query查询数据库 / API 的请求语句
fixture测试夹具测试用的预置数据
lint静态检查不运行代码的语法 / 风格扫描
build构建把源码打包成可发布产物
typecheck类型检查TypeScript / 类型系统的合规扫描
loading state加载中状态前端等待数据时显示的提示
first principles第一性原理从最基本的原理出发推导,不依赖类比

📝 本章自检

读完这一章,看你能不能回答:

#问题对应章节自检
1Codex 任务管线的 7 步是什么?最大风险通常发生在哪几步?🧭 7 步管线
2任务的 3 个边界分别是什么?为什么少了哪个都不行?🎯 3 个边界
3「导出报表很慢」要怎么从模糊反馈变成可执行任务?📖 三阶段拆解

过关标准:能用一句话说清 —— "Codex 一次任务不是命令执行,是控制系统:目标 → 观测 → 动作 → 反馈 → 交付。"


📚 下一篇


🧭 一句话记住

一次稳定的 Codex 任务 = 目标 + 边界 + 计划 + 验证 + 交付。
缺一项,结果就靠运气。

On this page