【AI】Codex 复杂任务拆解:从“一气呵成“到“步步为营“

张开发
2026/4/10 5:29:14 15 分钟阅读

分享文章

【AI】Codex 复杂任务拆解:从“一气呵成“到“步步为营“
Codex 复杂任务拆解从一气呵成到步步为营核心洞察Codex 的单次生成能力有限约 2000-4000 token 有效上下文复杂任务强行一次性生成会导致后期失忆和逻辑漂移。一、问题诊断为什么复杂任务容易出 Bug1.1 上下文窗口的漏斗效应用户完整需求1000 tokens ↓ Codex 理解并规划占用 500 tokens ↓ 生成代码段 1500 tokens✅ 质量高 ↓ 生成代码段 2500 tokens⚠️ 开始遗忘早期约束 ↓ 生成代码段 3500 tokens❌ 风格突变、逻辑矛盾 ↓ 生成代码段 4500 tokens❌ 完全偏离需求关键问题越往后生成对初始约束的记忆越模糊越容易自由发挥。1.2 复杂度的指数爆炸任务复杂度一次性生成 Bug 率分步生成 Bug 率CRUD 单表操作10%5%多表关联 事务35%12%分布式系统含并发、容错70%25%领域驱动设计完整模块85%30%二、拆解方法论四层拆解框架┌─────────────────────────────────────────────────────────────┐ │ Layer 1: 需求拆解 → 用户故事 验收标准 │ │ 输出结构化的需求卡片AI 和人类都能理解 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 2: 架构拆解 → 组件 接口 数据流 │ │ 输出架构蓝图定义组件边界和契约 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 3: 实现拆解 → 任务队列 依赖图 │ │ 输出可执行的生成任务明确先后顺序 │ ├─────────────────────────────────────────────────────────────┤ │ Layer 4: 验证拆解 → 测试金字塔 审查清单 │ │ 输出每层交付物的验证标准不通过不进入下一步 │ └─────────────────────────────────────────────────────────────┘三、实战案例电商订单系统完整拆解原始需求复杂度高“实现一个完整的电商订单系统包含购物车、库存管理、价格计算、订单创建、支付集成、物流跟踪、售后退款支持高并发和分布式事务。”直接生成的后果2000 行代码编译错误 50逻辑漏洞无数无法运行。Layer 1需求拆解 → 用户故事地图Prompt 模板【需求分析师模式】 将以下复杂需求拆解为用户故事地图 原始需求{完整需求} 拆解要求 1. 按用户角色划分买家、卖家、系统 2. 按业务流程划分浏览 → 下单 → 支付 → 履约 → 售后 3. 每个用户故事包含角色、功能、价值、验收标准Given-When-Then 4. 标记优先级MVP / Phase 2 / Phase 3 5. 识别依赖关系哪些故事必须先完成 输出格式 - 用户故事地图可视化文本 - 优先级排序列表 - 依赖关系图Mermaid 语法 禁止输出代码仅输出需求分析Codex 输出## 电商订单系统用户故事地图 ### 角色 - 买家Buyer - 卖家Seller - 系统System ### 业务流程与故事 #### 1. 浏览与选购Phase 1 - MVP 作为 买家 我想 浏览商品并加入购物车 以便 准备购买 验收标准 - Given 商品有库存When 点击加入购物车Then 购物车数量1 - Given 商品无库存When 点击加入购物车Then 提示缺货并禁用按钮 依赖无 --- #### 2. 订单创建Phase 1 - MVP 作为 买家 我想 从购物车结算生成订单 以便 确认购买意向 验收标准 - Given 购物车有商品When 点击结算Then 生成待支付订单 - Given 库存不足When 点击结算Then 提示库存不足并阻止下单 - Given 订单创建成功Then 库存预占 15 分钟 依赖故事 1购物车 --- #### 3. 支付处理Phase 1 - MVP 作为 买家 我想 支付订单 以便 完成购买 验收标准 - Given 订单待支付When 支付成功回调Then 订单状态变已支付 - Given 支付超时 15 分钟Then 自动取消订单并释放库存 - Given 重复支付Then 拒绝并原路退款 依赖故事 2订单创建 --- #### 4. 库存与物流Phase 1 - MVP 作为 卖家 我想 查看订单并发货 以便 完成履约 验收标准 - Given 订单已支付When 卖家确认发货Then 订单状态变已发货 - Given 发货后Then 买家收到物流通知 依赖故事 3支付 --- #### 5. 售后退款Phase 2 ... ### 依赖关系图 mermaid graph TD A[浏览商品] -- B[加入购物车] B -- C[创建订单] C -- D[支付订单] D -- E[卖家发货] E -- F[确认收货] D -- G[支付超时取消] F -- H[售后退款]MVP 范围Phase 1故事 1-4浏览到发货不包含优惠计算、积分、多仓库、拆分订单--- ### Layer 2架构拆解 → 组件与契约 **Prompt 模板** markdown 【架构师模式】 基于以下用户故事设计技术架构 用户故事{Layer 1 输出} 技术约束 - 后端Python Django PostgreSQL Redis - 前端React已有仅需 API 设计 - 部署Docker Kubernetes 架构要求 1. 遵循 Clean Architecture / DDD 分层 2. 定义各层组件Domain / Application / Infrastructure / Interface 3. 定义接口契约API 端点、事件、数据库 Schema 4. 识别技术决策事务策略、缓存策略、异步处理 5. 输出架构决策记录ADR 禁止输出具体实现代码仅输出架构设计Codex 输出## 订单系统架构设计 ### 分层架构src/├── domain/ # 无外部依赖│ ├── models/│ │ ├── order.py # 订单聚合根│ │ ├── order_item.py # 订单项值对象│ │ └── events.py # 领域事件│ └── services/│ └── order_service.py # 领域服务纯业务逻辑├── application/ # 仅依赖 domain│ ├── usecases/│ │ ├── create_order.py│ │ ├── pay_order.py│ │ └── cancel_order.py│ └── interfaces/│ ├── order_repo.py # 仓储接口│ ├── inventory_client.py # 库存服务接口│ └── payment_gateway.py # 支付网关接口├── infrastructure/ # 依赖 application│ ├── persistence/│ │ ├── django_order_repo.py│ │ └── models.py # Django ORM 模型│ ├── external/│ │ ├── redis_inventory_client.py│ │ └── stripe_payment_gateway.py│ └── messaging/│ └── celery_tasks.py└── interface/ # 依赖 application├── api/│ ├── views.py # DRF ViewSet│ └── serializers.py└── admin/└── order_admin.py### 关键接口契约 #### 1. 领域层契约Python Protocol python # domain/interfaces/order_repo.py from typing import Protocol, Optional from ..models.order import Order class OrderRepository(Protocol): def get_by_id(self, order_id: str) - Optional[Order]: ... def save(self, order: Order) - None: ... def update_status(self, order_id: str, status: OrderStatus) - None: ...2. 应用层契约UseCase 接口# application/usecases/create_order.pyfromdataclassesimportdataclassdataclassclassCreateOrderInput:user_id:strcart_items:list[CartItem]dataclassclassCreateOrderOutput:order_id:strtotal_amount:Decimal status:strclassCreateOrderUseCase:defexecute(self,input:CreateOrderInput)-CreateOrderOutput:...3. API 契约OpenAPI 片段/api/v1/orders:post:summary:创建订单requestBody:content:application/json:schema:type:objectproperties:cart_items:type:arrayitems:type:objectproperties:product_id:{type:string,format:uuid}quantity:{type:integer,minimum:1}responses:201:description:订单创建成功content:application/json:schema:$ref:#/components/schemas/Order技术决策记录ADRADR-001: 库存扣减策略决策使用数据库乐观锁Version 应用层重试备选Redis 分布式锁太重、纯数据库事务性能差理由平衡一致性与性能支持 1000 TPSADR-002: 支付超时处理决策Celery 定时任务django-celery-beat备选数据库轮询低效、Redis Keyspace Notify不可靠理由精确到秒级可水平扩展ADR-003: 订单状态持久化决策数据库 领域事件表事件溯源简化版备选纯事件溯源复杂、状态机表查询不便理由支持审计追踪同时保持查询简单--- ### Layer 3实现拆解 → 任务队列与依赖图 **Prompt 模板** markdown 【项目经理模式】 将以下架构设计拆解为可执行的任务队列 架构设计{Layer 2 输出} 拆解要求 1. 每个任务明确输入前置任务输出、输出交付物、验证标准 2. 识别依赖关系生成拓扑排序的任务序列 3. 每个任务限制代码量 200 行复杂度可单测覆盖 4. 标记可并行任务无依赖的任务可同时进行 5. 估算每个任务的 Codex 生成时间简单/中等/复杂 输出格式 - 任务清单编号、名称、描述 - 依赖图哪些任务必须先完成 - 并行组可同时生成的任务 - 每个任务的 Prompt 模板下一步直接可用 禁止生成具体代码Codex 输出## 实现任务队列拓扑排序 ### 阶段 1基础设施必须先完成 **Task 1.1: 领域模型基础** - 输入架构设计中的领域模型定义 - 输出Order 聚合根、OrderItem 值对象、领域事件基类 - 验证类型检查通过可实例化事件可注册 - 依赖无 - 复杂度中等 - Prompt 模板[见下文 Task 1.1 Template] **Task 1.2: 仓储接口定义** - 输入领域模型 - 输出OrderRepository Protocol包含 CRUD 状态更新 - 验证mypy 检查通过可被模拟mock - 依赖Task 1.1 - 复杂度简单 **Task 1.3: Django ORM 模型** - 输入领域模型、仓储接口 - 输出Django models.py包含数据库 Schema - 验证makemigrations 成功migrate 可执行 - 依赖Task 1.1 - 复杂度中等 --- ### 阶段 2应用层依赖阶段 1 **Task 2.1: 创建订单用例核心** - 输入领域模型、仓储接口、库存服务接口 - 输出CreateOrderUseCase 类包含事务边界 - 验证单元测试通过正常、库存不足、并发冲突 - 依赖Task 1.1, 1.2 - 复杂度复杂需重点审查 **Task 2.2: 支付订单用例** - 输入领域模型、支付网关接口 - 输出PayOrderUseCase 类处理回调幂等 - 验证单元测试通过成功、重复支付、超时 - 依赖Task 1.1, 1.2 - 复杂度中等 **Task 2.3: 取消订单用例含超时** - 输入领域模型、Celery 任务框架 - 输出CancelOrderUseCase Celery 定时任务 - 验证单元测试 集成测试定时触发 - 依赖Task 1.1, 1.2 - 复杂度中等 --- ### 阶段 3接口层依赖阶段 2 **Task 3.1: DRF Serializers** - 输入用例输入输出 DTO - 输出CreateOrderSerializer, OrderResponseSerializer - 验证序列化/反序列化测试通过 - 依赖Task 2.1, 2.2, 2.3 - 复杂度简单 **Task 3.2: DRF ViewSet** - 输入Serializers、UseCases - 输出OrderViewSet包含 create/pay/cancel action - 验证API 测试通过django-rest-framework 测试客户端 - 依赖Task 3.1 - 复杂度中等 --- ### 并行组可同时生成 - 组 ATask 1.1, 1.2无依赖 - 组 BTask 1.3仅依赖 1.1 - 组 CTask 2.1, 2.2, 2.3依赖阶段 1彼此独立 - 组 DTask 3.1, 3.2依赖阶段 2 --- ### Task 1.1 Prompt 模板 markdown 【Task 1.1】领域模型基础 上下文 - 架构设计{Layer 2 输出} - 技术栈Python 3.11 dataclasses typing 任务 实现以下领域模型禁止任何外部依赖如 Django、SQLAlchemy 1. Order 聚合根 - 属性id(UUID), user_id, items(list), total_amount(Money), status(OrderStatus), created_at, domain_events(list) - 方法create(工厂方法), pay, cancel, add_item, calculate_total - 领域事件OrderCreated, OrderPaid, OrderCancelled 2. OrderItem 值对象 - 属性product_id, product_name, unit_price(Money), quantity, subtotal(Money) - 验证quantity 0, unit_price 0 3. Money 值对象 - 属性amount(Decimal), currency(str) - 方法add, multiply, validate 4. 领域事件基类 - 属性event_id, occurred_on, event_type 约束 - 使用 dataclass(frozenTrue) 实现值对象不可变 - Order 使用普通 class支持可变状态但 items 用 tuple 不可变 - 所有方法返回 Result 类型成功/失败禁止抛异常 - 类型提示覆盖率 100%禁用 Any 验证 - mypy --strict 零错误 - 可实例化Order.create(user_idu1, items[...]) - 领域事件可注册和弹出 输出完整 Python 代码 简单使用示例--- ### Layer 4验证拆解 → 测试与审查 **Prompt 模板** markdown 【QA 工程师模式】 为以下任务设计验证策略 任务{具体任务如 Task 2.1 创建订单用例} 验证要求 1. 单元测试正常路径、边界条件、异常场景 2. 集成测试数据库、外部服务mock 3. 架构测试分层依赖检查 4. 性能测试并发场景如果有 5. 审查清单代码审查要点 输出 - 测试用例列表Given-When-Then - 测试代码结构pytest 组织方式 - 架构测试规则ArchUnit 或自定义脚本 - 审查清单人工审查要点 禁止生成被测代码的具体实现Codex 输出## Task 2.1 创建订单用例验证策略 ### 单元测试用例 python # tests/application/test_create_order.py class TestCreateOrderUseCase: 创建订单用例单元测试 def test_execute_success(self): Given: 有效购物车库存充足 When: 执行创建订单 Then: 返回成功订单状态 CREATED库存预占 def test_execute_insufficient_inventory(self): Given: 商品库存不足 When: 执行创建订单 Then: 返回失败库存服务未确认预占无订单创建 def test_execute_empty_cart(self): Given: 空购物车 When: 执行创建订单 Then: 返回失败提示购物车不能为空 def test_execute_concurrent_reservation(self): Given: 并发场景最后一件库存被其他订单预占 When: 执行创建订单 Then: 乐观锁冲突重试后返回失败或成功取决于时序 def test_execute_pricing_error(self): Given: 价格服务异常 When: 执行创建订单 Then: 返回失败库存预占已回滚事务一致性 集成测试# tests/integration/test_order_creation.pypytest.mark.django_db(transactionTrue)classTestOrderCreationIntegration:数据库集成测试deftest_order_persisted_correctly(self):验证订单正确持久化到数据库deftest_inventory_reserved_in_db(self):验证库存预占记录写入deftest_event_published_to_message_queue(self):验证领域事件发布到 Redis/RabbitMQ架构测试# tests/architecture/test_layer_dependencies.pydeftest_domain_does_not_depend_on_application():领域层禁止依赖应用层assertnotimports(domain,application)deftest_domain_does_not_depend_on_infrastructure():领域层禁止依赖基础设施层assertnotimports(domain,infrastructure)deftest_usecase_does_not_depend_on_framework():用例层禁止直接依赖 Django/Flaskassertnotimports(application.usecases,django)代码审查清单事务边界是否正确transaction.atomic库存预占和回滚是否对称try-finally 或 Saga领域事件是否在事务提交后发布避免事务内发布输入验证是否在应用层入口完成外部服务调用是否有超时和重试日志是否记录关键业务操作who, when, what敏感数据是否脱敏用户 ID 可记录密码不可--- ## 四、执行工作流人机协作流水线┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐│ 人类分析师 │ → │ AI 拆解 │ → │ 人类确认 │ → │ AI 生成 ││ 提供需求 │ │ 四层拆解 │ │ 调整优先级│ │ 单任务 │└─────────┘ └─────────┘ └─────────┘ └────┬────┘↓┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐│ 集成测试 │ ← │ 架构测试 │ ← │ 代码审查 │ ← │ 验证交付 ││ 端到端 │ │ 分层检查 │ │ 人工AI │ │ 单元测试 │└─────────┘ └─────────┘ └─────────┘ └────┬────┘↓┌─────────┐│ 通过 │└────┬────┘↓┌─────────────┐│ 是 → 下一任务 ││ 否 → 反馈修正 │└─────────────┘--- ## 五、实战技巧让拆解更高效的 5 个秘诀 ### 秘诀 1强制暂停点Checkpoint markdown 【Checkpoint 模式】 任务实现订单创建用例 生成规则 1. 完成输入验证逻辑后 → 停止输出Checkpoint 1 完成 2. 完成库存预占逻辑后 → 停止输出Checkpoint 2 完成 3. 完成订单持久化后 → 停止输出Checkpoint 3 完成 4. 完成事件发布后 → 停止输出Checkpoint 4 完成 每个 Checkpoint 后等待人工确认继续或修正后再进行下一步。 好处早期发现错误不累积到后期。秘诀 2依赖显式化# 在 Prompt 中强制声明依赖 【依赖声明】 本任务依赖以下已完成的代码必须引用禁止重新实现-src/domain/models/order.py(Order 聚合根)-src/domain/models/money.py(Money 值对象)-src/domain/interfaces/order_repo.py(OrderRepository 接口)引用方式 pythonfromsrc.domain.models.orderimportOrder,OrderStatusfromsrc.domain.models.moneyimportMoneyfromsrc.domain.interfaces.order_repoimportOrderRepository验证生成的代码必须包含上述 import且使用这些类型。“”### 秘诀 3接口先行Contract First python # 先让 Codex 生成接口再生成实现 步骤 1仅生成接口定义停止 步骤 2人工审查接口确认 步骤 3基于接口生成实现继续 # 示例仓储接口 class OrderRepository(Protocol): def get_by_id(self, order_id: UUID) - Optional[Order]: ... def save(self, order: Order) - Result[None, RepositoryError]: ... # 审查要点返回类型是否足够Optional vs Result、异常策略秘诀 4对抗性生成红队测试【红队模式】 任务审查刚生成的 CreateOrderUseCase 代码 角色代码审查员挑剔、找 Bug 审查维度 1. 并发安全是否有竞态条件 2. 事务边界是否过大或过小 3. 异常处理是否遗漏失败场景 4. 资源泄漏数据库连接、锁是否释放 5. 业务逻辑是否符合需求 输出 - 发现的问题行号 说明 - 严重程度阻断/警告/建议 - 修复建议 禁止说看起来不错必须找出至少 3 个问题。秘诀 5版本锁定防止漂移【版本锁定】 本任务使用的技术版本禁止假设其他版本 - Python: 3.11.4 - Django: 4.2.7 - DRF: 3.14.0 - Celery: 5.3.0 - PostgreSQL: 15 API 验证 python import django assert django.VERSION (4, 2, 7, final, 0)如果发现版本不匹配立即停止并提示。--- ## 六、常见错误与修正 | 错误模式 | 现象 | 修正策略 | |---------|------|---------| | **任务过大** | 单次生成 500 行后期质量崩坏 | 强制拆分每任务 200 行 | | **依赖隐式** | 代码中直接实例化依赖类 | 强制接口注入禁止 new | | **上下文丢失** | 后期代码风格/命名突变 | 每 3 个任务重新加载规范文件 | | **验证缺失** | 生成代码无测试或测试无法运行 | 测试先行不通过不合并 | | **过度设计** | 为简单任务引入复杂模式 | YAGNI 原则MVP 后重构 | --- ## 七、一句话总结 **复杂任务拆解的本质是把AI 的黑盒生成转化为可验证的白盒步骤。每层拆解都是约束的强化每个 Checkpoint 都是质量的闸门。**

更多文章