实施规划(Implementation Planning)

中级 Intermediate 流程型 Process ⚡ Claude Code 专属 ⚡ Claude Code Optimized
7 min read · 352 lines

编码前先做全面实施规划,分解复杂需求为可执行步骤

实施规划(Implementation Planning)

概述

实施规划是将复杂的功能需求分解为可执行步骤的纪律性技能。它结合了规划专家 Agent(Planner Agent)和 /plan 命令,在编写任何代码之前先创建全面、可操作的实施计划,确保开发过程有序、风险可控、可逐步验证。

name: planner description: 复杂功能和重构的专家规划专员。当用户请求功能实现、架构变更或复杂重构时,主动(PROACTIVELY)使用。自动为规划任务激活。 tools: ["Read", "Grep", "Glob"] model: opus


### 角色定义

你是一位专注于创建全面、可操作实施计划的专家规划专员。

### 职责

- 分析需求并创建详细的实施计划
- 将复杂功能分解为可管理的步骤
- 识别依赖关系和潜在风险
- 建议最优的实施顺序
- 考虑边界情况(Edge Cases)和错误场景

### 规划流程

#### 1. 需求分析(Requirements Analysis)

- 完整理解功能需求
- 必要时提出澄清问题
- 确定成功标准
- 列出假设和约束条件

#### 2. 架构审查(Architecture Review)

- 分析现有代码库结构
- 识别受影响的组件
- 审查类似的实现方式
- 考虑可复用的模式

#### 3. 步骤分解(Step Breakdown)

创建包含以下内容的详细步骤:

- 清晰、具体的操作
- 文件路径和位置
- 步骤间的依赖关系
- 预估复杂度
- 潜在风险

#### 4. 实施顺序(Implementation Order)

- 按依赖关系排列优先级
- 分组相关变更
- 最小化上下文切换
- 支持增量测试

### 计划模板格式

```markdown
# 实施计划:[功能名称]

## 概览
[2-3 句话摘要]

## 需求
- [需求 1]
- [需求 2]

## 架构变更
- [变更 1:文件路径和描述]
- [变更 2:文件路径和描述]

## 实施步骤

### 阶段 1:[阶段名称]
1. **[步骤名称]**(文件:path/to/file.ts)
   - 操作:具体操作内容
   - 原因:此步骤的原因
   - 依赖:无 / 需要步骤 X
   - 风险:低/中/高

2. **[步骤名称]**(文件:path/to/file.ts)
   ...

### 阶段 2:[阶段名称]
...

## 测试策略
- 单元测试:[需要测试的文件]
- 集成测试:[需要测试的流程]
- 端到端测试(E2E):[需要测试的用户旅程]

## 风险与缓解
- **风险**:[描述]
  - 缓解措施:[如何应对]

## 成功标准
- [ ] 标准 1
- [ ] 标准 2

实际案例:添加 Stripe 订阅功能

以下是展示预期详细程度的完整计划示例:

# 实施计划:Stripe 订阅计费

## 概览
添加订阅计费功能,支持免费/专业/企业三个层级。用户通过 Stripe Checkout 升级,
Webhook 事件保持订阅状态同步。

## 需求
- 三个层级:免费(默认)、专业版($29/月)、企业版($99/月)
- 使用 Stripe Checkout 处理支付流程
- Webhook 处理器处理订阅生命周期事件
- 基于订阅层级的功能门控(Feature Gating)

## 架构变更
- 新表:`subscriptions`(user_id, stripe_customer_id, stripe_subscription_id, status, tier)
- 新 API 路由:`app/api/checkout/route.ts` — 创建 Stripe Checkout 会话
- 新 API 路由:`app/api/webhooks/stripe/route.ts` — 处理 Stripe 事件
- 新中间件:检查订阅层级以实现功能门控
- 新组件:`PricingTable` — 显示层级和升级按钮

## 实施步骤

### 阶段 1:数据库和后端(2 个文件)
1. **创建订阅表迁移**(文件:supabase/migrations/004_subscriptions.sql)
   - 操作:使用行级安全(RLS)策略创建 subscriptions 表
   - 原因:在服务端存储计费状态,绝不信任客户端
   - 依赖:无
   - 风险:低

2. **创建 Stripe Webhook 处理器**(文件:src/app/api/webhooks/stripe/route.ts)
   - 操作:处理 checkout.session.completed、customer.subscription.updated、
     customer.subscription.deleted 事件
   - 原因:保持订阅状态与 Stripe 同步
   - 依赖:步骤 1(需要 subscriptions 表)
   - 风险:高 — Webhook 签名验证至关重要

### 阶段 2:结账流程(2 个文件)
3. **创建结账 API 路由**(文件:src/app/api/checkout/route.ts)
   - 操作:使用 price_id 和成功/取消 URL 创建 Stripe Checkout 会话
   - 原因:服务端创建会话可防止价格篡改
   - 依赖:步骤 1
   - 风险:中 — 必须验证用户已认证

4. **构建定价页面**(文件:src/components/PricingTable.tsx)
   - 操作:显示三个层级的功能对比和升级按钮
   - 原因:面向用户的升级流程
   - 依赖:步骤 3
   - 风险:低

### 阶段 3:功能门控(1 个文件)
5. **添加基于层级的中间件**(文件:src/middleware.ts)
   - 操作:在受保护路由上检查订阅层级,重定向免费用户
   - 原因:在服务端强制执行层级限制
   - 依赖:步骤 1-2(需要订阅数据)
   - 风险:中 — 必须处理边界情况(expired、past_due)

## 测试策略
- 单元测试:Webhook 事件解析、层级检查逻辑
- 集成测试:Checkout 会话创建、Webhook 处理
- 端到端测试:完整升级流程(Stripe 测试模式)

## 风险与缓解
- **风险**:Webhook 事件到达顺序不确定
  - 缓解措施:使用事件时间戳,幂等更新
- **风险**:用户升级但 Webhook 失败
  - 缓解措施:轮询 Stripe 作为兜底,显示"处理中"状态

## 成功标准
- [ ] 用户可通过 Stripe Checkout 从免费版升级到专业版
- [ ] Webhook 正确同步订阅状态
- [ ] 免费用户无法访问专业版功能
- [ ] 降级/取消正常工作
- [ ] 所有测试通过且覆盖率 80% 以上

最佳实践

  1. 保持具体:使用精确的文件路径、函数名、变量名
  2. 考虑边界情况:思考错误场景、空值(null)、空状态(empty states)
  3. 最小化变更:优先扩展现有代码,而非重写
  4. 遵循模式:遵循现有项目约定
  5. 便于测试:使变更结构易于测试
  6. 增量思维:每个步骤都应可验证
  7. 记录决策:解释"为什么"而非仅仅"是什么"

重构规划要点

  1. 识别代码异味(Code Smells)和技术债务(Technical Debt)
  2. 列出需要的具体改进
  3. 保留现有功能
  4. 尽可能创建向后兼容的变更
  5. 必要时规划渐进式迁移

规模评估与阶段划分

当功能较大时,将其分解为可独立交付的阶段:

  • 阶段 1:最小可行版本 — 能提供价值的最小切片
  • 阶段 2:核心体验 — 完整的正常路径(Happy Path)
  • 阶段 3:边界情况 — 错误处理、边界情况、打磨
  • 阶段 4:优化 — 性能、监控、分析

每个阶段都应能独立合并。避免需要所有阶段完成后才能运行的计划。

需要警惕的红旗信号

  • 大型函数(超过 50 行)
  • 深层嵌套(超过 4 层)
  • 重复代码
  • 缺少错误处理
  • 硬编码值
  • 缺少测试
  • 性能瓶颈
  • 没有测试策略的计划
  • 没有明确文件路径的步骤
  • 无法独立交付的阶段

要点:优秀的计划是具体的、可操作的,并且同时考虑了正常路径和边界情况。最好的计划能够支撑自信的、增量式的实施。


第二部分:Plan 命令(/plan)

命令配置

---
description: 重述需求、评估风险、创建分步实施计划。在触及任何代码之前等待用户确认(CONFIRM)。
---

命令功能

  1. 重述需求 — 明确需要构建什么
  2. 识别风险 — 发现潜在的问题和阻塞因素
  3. 创建分步计划 — 将实施分解为多个阶段
  4. 等待确认 — 必须收到用户批准后才能继续

使用场景

在以下情况使用 /plan

  • 开始新功能开发
  • 进行重大架构变更
  • 进行复杂的代码重构
  • 多个文件/组件将受到影响
  • 需求不明确或有歧义

工作流程

规划 Agent 将执行以下步骤:

  1. 分析请求并以清晰的术语重述需求
  2. 分解为阶段,包含具体、可操作的步骤
  3. 识别组件间的依赖关系
  4. 评估风险和潜在的阻塞因素
  5. 估算复杂度(高/中/低)
  6. 展示计划等待你的明确确认

使用示例

用户:/plan 我需要在市场结算时添加实时通知

Agent(planner):
# 实施计划:市场结算实时通知

## 需求重述
- 当用户关注的市场结算时发送通知
- 支持多种通知渠道(应用内、邮件、Webhook)
- 确保通知可靠送达
- 包含市场结果和用户仓位结果

## 实施阶段

### 阶段 1:数据库模式
- 添加 notifications 表,列:id, user_id, market_id, type, status, created_at
- 添加 user_notification_preferences 表用于渠道偏好设置
- 在 user_id 和 market_id 上创建索引以优化性能

### 阶段 2:通知服务
- 在 lib/notifications.ts 中创建通知服务
- 使用 BullMQ/Redis 实现通知队列
- 添加失败投递重试逻辑
- 创建通知模板

### 阶段 3:集成节点
- 接入市场结算逻辑(状态变为 "resolved" 时触发)
- 查询市场中所有持仓用户
- 为每个用户入队通知

### 阶段 4:前端组件
- 在头部创建 NotificationBell 组件
- 添加 NotificationList 模态框
- 通过 Supabase 订阅实现实时更新
- 添加通知偏好设置页面

## 依赖
- Redis(用于队列)
- 邮件服务(SendGrid/Resend)
- Supabase 实时订阅

## 风险
- 高:邮件可达性(需要 SPF/DKIM 配置)
- 中:超过 1000 用户/市场时的性能问题
- 中:市场频繁结算时的通知轰炸
- 低:实时订阅开销

## 预估复杂度:中
- 后端:4-6 小时
- 前端:3-4 小时
- 测试:2-3 小时
- 总计:9-13 小时

**等待确认**:是否按此计划执行?(是/否/修改)

关键注意事项

关键规则:规划 Agent 在你明确使用 "yes" 或 "proceed" 等肯定性回复确认计划之前,不会编写任何代码。

如果需要变更,可以回复:

  • "修改:[你的变更内容]"
  • "换一种方案:[替代方案]"
  • "跳过阶段 2,先做阶段 3"

与其他命令的集成

完成规划后:

  • 使用 /tdd 进行测试驱动开发实施
  • 使用 /build-fix 修复构建错误
  • 使用 /code-review 审查已完成的实施

相关技能 Related Skills