AI 学习指南
课程章节
本文目录
核心用法6

Codex Plan 模式完整教程:复杂任务如何先规划再实现

掌握 /plan 的适用场景、计划结构、里程碑拆分、评审方式和从计划到实施的完整流程。

进阶 22 分钟 13 2026-07-14 更新

Codex Plan 模式完整教程:复杂任务如何先规划再实现

Plan 模式的价值不是多生成一段文字,而是让 Codex在修改代码前完成:

  • 收集上下文;
  • 明确需求歧义;
  • 识别模块边界;
  • 评估风险;
  • 设计可验证的里程碑。

官方建议复杂、模糊或难以描述的任务先规划。在支持的客户端中,可以输入:

/plan

或使用界面快捷方式进入 Plan。

1. 哪些任务应该使用 Plan

建议使用:

  • 需要修改多个模块;
  • 涉及数据库迁移;
  • 涉及认证、支付、权限或安全;
  • 需要保持公共 API 向后兼容;
  • 需要升级框架或核心依赖;
  • 需要重构大型模块;
  • 需求存在多种合理实现;
  • 预计要分多个提交完成。

不一定需要:

  • 修改一个文案;
  • 调整单个 CSS 属性;
  • 修复一个已明确定位的小错误;
  • 增加一个简单测试用例。

2. Plan 提示词的基本结构

/plan

目标:
把当前本地文件上传改成支持对象存储的实现。

要求:
- 保持现有上传 API 兼容;
- 支持灰度切换;
- 旧文件仍可访问;
- 提供回滚方案;
- 不直接修改代码。

计划需要包含:
1. 当前实现和调用链;
2. 目标架构;
3. 修改文件;
4. 配置和数据迁移;
5. 测试策略;
6. 上线与回滚;
7. 风险和待确认问题。

最后明确写“先不要修改代码”,可以减少代理过早进入实现。

3. 一份合格计划应包含什么

3.1 当前状态

计划必须基于真实代码,而不是通用猜测:

- 上传入口:src/api/upload.ts
- 存储接口:src/storage/StorageProvider.ts
- 当前实现:LocalStorageProvider
- 下载路径:src/routes/files.ts

3.2 目标状态

描述最终组件关系和数据流:

Controller -> StorageService -> StorageProvider
                              -> LocalProvider
                              -> S3Provider

3.3 影响范围

列出:

  • 新增文件;
  • 修改文件;
  • 配置项;
  • 数据库变化;
  • 外部服务;
  • 部署变化;
  • 监控变化。

3.4 里程碑

每个里程碑都应:

  • 可以独立审查;
  • 可以独立测试;
  • 尽量可以独立提交;
  • 有明确完成标准。

3.5 验证和回滚

计划不只有“怎么做”,还应包含“怎么证明”和“怎么撤回”。

4. 如何让 Codex先调查再计划

对于陌生代码库:

/plan

先调查当前支付流程,不修改代码。
调查内容:
- 创建订单入口;
- 支付回调;
- 幂等处理;
- 订单状态机;
- 退款流程;
- 相关测试和监控。

基于真实文件和调用关系,设计增加第二支付渠道的计划。
所有结论引用文件和函数名。

这样可以防止计划变成脱离项目的通用架构文章。

5. 如何评审 Codex 的计划

不要看到计划就直接执行。重点检查:

5.1 是否遗漏关键路径

例如支付功能是否考虑:

  • 重复回调;
  • 超时;
  • 退款;
  • 对账;
  • 签名验证;
  • 旧订单兼容。

5.2 是否修改范围过大

如果需求只是增加一个渠道,计划却要求重写整个订单系统,应要求缩小范围:

保留现有 PaymentService 公共接口,把计划改为增量接入,不做无关重构。

5.3 是否有无法验证的表述

例如:

优化性能,确保系统更稳定。

应改成:

定义要测量的接口、数据规模、延迟指标和负载脚本。

5.4 是否能分阶段回滚

大型一次性改动风险高。要求:

每个里程碑说明回滚方式,避免数据库迁移和代码发布形成不可逆绑定。

6. 与 Codex 协商计划

第一次计划通常不是最终计划。可以连续修订:

把计划调整为 3 个可独立提交的里程碑。
为每个里程碑列出精确文件和测试命令。
增加旧配置兼容和灰度开关。
删除与本需求无关的目录重构。
补充失败重试、幂等和监控指标。

这一步相当于工程设计评审。

7. 从 Plan 进入实现

计划确认后,不要简单说“开始”。更好的方式是按里程碑执行:

实现计划的 Milestone 1:抽象 StorageProvider 接口并保持 LocalProvider 行为不变。
只完成这一阶段。
完成后运行相关测试并汇报 Diff,不进入 Milestone 2。

审查后再继续:

Milestone 1 已确认。实现 Milestone 2:增加 S3Provider 和配置解析。
保持默认仍使用 LocalProvider。

这样可以控制上下文、Diff 和回滚成本。

8. 使用 PLANS.md 固化长期任务

对于长周期项目,可以建立 PLANS.md 或团队自己的执行计划模板。

示例:

# Execution Plan

## Goal

## Current state

## Constraints

## Milestones

### Milestone 1
- Files:
- Changes:
- Verification:
- Rollback:

### Milestone 2

## Risks

## Open questions

## Final acceptance

然后在 AGENTS.md 中要求复杂任务遵循它:

## Planning
- For changes spanning more than one subsystem, create or update `PLANS.md` first.
- Each milestone must include verification and rollback steps.
- Do not start implementation until the plan is approved.

9. 数据库迁移计划示例

/plan

目标:
把 users.name 拆分为 first_name 和 last_name。

约束:
- 线上无停机;
- 旧版本应用继续可用 2 个发布周期;
- 数据可回滚;
- 不能一次性删除 name。

计划必须包含:
- 双写阶段;
- 历史数据回填;
- 读取切换;
- 数据一致性检查;
- 旧字段停止写入;
- 最终删除条件;
- 每阶段监控和回滚。

一个合理方向通常是 Expand → Migrate → Contract,而不是直接重命名字段。

10. 大型重构计划示例

/plan

目标:
拆分单体 notification.ts,使邮件、短信、Push 可以独立实现和测试。

限制:
- 现有 sendNotification 调用不变;
- 不改变用户可见行为;
- 不同时更换第三方供应商;
- 每个阶段测试必须通过。

输出:
- 当前依赖图;
- 目标接口;
- 分阶段迁移调用方;
- 兼容适配层;
- 测试和回滚。

11. Plan 常见失败模式

11.1 计划只有宏观步骤

例如“分析、开发、测试、上线”。要求精确到模块、文件和验收标准。

11.2 计划没有证据

要求引用真实文件、函数、配置和命令。

11.3 计划把不确定内容当事实

要求把未知项放入“Open questions”,不要自行假设业务规则。

11.4 计划与当前 Git 状态脱节

开始执行前检查:

git status
git branch --show-current

计划生成后工作区如果发生大变化,需让 Codex重新校验。

11.5 一次实现全部里程碑

大型任务应逐步执行和审查。

12. Plan 完成标准

一份可执行计划至少回答:

  • 为什么要改;
  • 当前代码如何工作;
  • 目标结构是什么;
  • 修改哪些文件;
  • 分几步;
  • 每步如何验证;
  • 哪些风险未解决;
  • 如何回滚;
  • 哪些问题需要人工决策。

官方参考

资料核对日期:2026-07-14。

继续学习

$ start project✓ context loaded✓ task complete

claude-code

入门

Claude Code 从入门到实战

基于 Anthropic 官方文档,从安装、项目上下文和权限配置,到调试、测试与交付的完整入门课程。

78 分钟开始学习
$ start project✓ context loaded✓ task complete

cursor

开发

Cursor AI 开发指南

深入介绍 Cursor 的智能补全、Agent、规则配置和代码库理解能力。

36 分钟开始学习