第 10 期:Skill 4 & 5 — Make Plan + Do(计划与执行)

⏱ 预计阅读 10 分钟 更新于 2026/5/7
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)

本期场景:博客项目需要一个大功能 —— "用户评论通知系统"。这涉及数据库变更、API 开发、前端组件、邮件集成等多个模块。你不想一步步指挥 Claude,而是让它自己规划和执行。


10.1 为什么需要 Plan + Do?

小任务可以一句话搞定:"帮我修这个 Bug"。但大任务(跨越多个文件、多个步骤的复杂功能)如果没有计划,Claude 容易:

  • 🔀 做到一半忘了全局目标
  • 🚫 跳过关键步骤(比如忘了写测试)
  • 💥 改了 A 模块导致 B 模块崩溃,却没发现

Make Plan + Do 的哲学:先想清楚,再分步做,每步验证。


10.2 Make Plan — 智能任务规划

Make Plan 会综合以下信息来生成一份可执行计划:

  1. 你的需求描述("添加评论通知系统")
  2. 项目历史记忆(从 Observations 中了解已有的代码结构)
  3. 当前代码状态(用 Smart Explore 扫描项目)
graph TD
    A["你的需求:
添加评论通知系统"] --> D["Make Plan"] B["历史 Observations:
已有评论 API, 用户模型..."] --> D C["当前代码:
Smart Explore 扫描结果"] --> D D --> E["生成计划文件"] E --> F["Step 1: 修改 Schema
添加 Notification 模型"] E --> G["Step 2: 运行迁移
prisma migrate dev"] E --> H["Step 3: 创建通知 API
src/api/notifications.ts"] E --> I["Step 4: 集成到评论流程
修改 createComment()"] E --> J["Step 5: 编写测试
tests/notifications.test.ts"] E --> K["Step 6: 验证
npm test"] style A fill:#6366f1,color:#fff style D fill:#f59e0b,color:#000

关键配置项

// .claude-mem.json
{
  "make_plan": {
    "require_verbatim_snippets": true,   // 计划中引用的代码必须来自真实文件
    "allow_skipping_tests": false        // 每个步骤必须包含验证环节
  }
}
  • require_verbatim_snippets: true — 防止 Claude 在计划中编造不存在的代码。它必须引用真实的文件内容。
  • allow_skipping_tests: false — 确保每个步骤都有测试/验证。不允许"先跳过测试回头再补"。

10.3 Do — 分阶段执行引擎

Do 拿到 Make Plan 生成的计划后,逐步执行,每一步都有独立的验证和检查点。

graph TD
    subgraph "Step 1"
        S1["修改 Schema"] --> V1{"验证"}
        V1 -->|"✅ 通过"| CP1["📸 快照 1"]
    end

    subgraph "Step 2"
        CP1 --> S2["运行迁移"]
        S2 --> V2{"验证"}
        V2 -->|"✅ 通过"| CP2["📸 快照 2"]
    end

    subgraph "Step 3"
        CP2 --> S3["创建通知 API"]
        S3 --> V3{"验证"}
        V3 -->|"❌ 失败"| RB["🔄 回滚到快照 2"]
        RB --> FIX["分析原因 → 修复"]
        FIX --> S3
        V3 -->|"✅ 通过"| CP3["📸 快照 3"]
    end

    subgraph "Step 4-6"
        CP3 --> MORE["继续执行..."]
        MORE --> DONE["✅ 全部完成"]
    end

    style V1 fill:#10b981,color:#fff
    style V2 fill:#10b981,color:#fff
    style V3 fill:#ef4444,color:#fff
    style RB fill:#f59e0b,color:#000
    style DONE fill:#10b981,color:#fff

执行流程的关键特性

特性 说明
逐步执行 每次只执行一个步骤,不跳跃
独立验证 每步执行后运行验证(测试、编译检查等)
检查点快照 每步通过后保存当前状态
失败回滚 如果某步验证失败,回退到上一个检查点
自动诊断 失败时分析原因并尝试修复

10.4 Make Plan + Do 联动实战

让我们用博客项目的"评论通知系统"来演示完整流程:

你:帮我给博客添加一个评论通知系统。当有人评论文章时,
    文章作者应该收到一条站内通知。

Claude(使用 Make Plan):
  1. 查看历史记忆 → 了解已有的 Comment 和 User 模型
  2. 扫描当前代码 → 找到 createComment() 函数
  3. 生成计划:

  📋 计划:添加评论通知系统
  ──────────────────────────
  Step 1: Schema 变更
    - 在 prisma/schema.prisma 中添加 Notification 模型
    - 字段: id, userId, type, content, read, createdAt
    - 关联: User ← Notification (一对多)
    - 验证: prisma validate

  Step 2: 数据库迁移
    - 运行 prisma migrate dev --name add-notifications
    - 验证: 迁移文件生成且无错误

  Step 3: 通知 API
    - 创建 src/api/notifications.ts
    - 实现: getNotifications(), markAsRead(), createNotification()
    - 验证: TypeScript 编译通过

  Step 4: 集成到评论流程
    - 修改 src/api/comments.ts 的 createComment()
    - 在创建评论后调用 createNotification()
    - 验证: 创建评论时产生通知记录

  Step 5: 编写测试
    - 创建 tests/notifications.test.ts
    - 测试: 创建通知、标记已读、评论触发通知
    - 验证: npm test 全部通过

Claude(使用 Do):
  正在执行 Step 1/5: Schema 变更...
  ✅ Step 1 通过 → 保存检查点
  正在执行 Step 2/5: 数据库迁移...
  ✅ Step 2 通过 → 保存检查点
  正在执行 Step 3/5: 通知 API...
  ❌ Step 3 失败: TypeScript 错误 - 'PrismaClient' 类型缺少 'notification'
  🔍 诊断: 需要重新生成 Prisma Client
  🔄 修复: 运行 prisma generate
  ✅ Step 3 通过(第 2 次尝试)→ 保存检查点
  ...
  ✅ 全部 5 步完成!

10.5 何时使用 Make Plan + Do?

任务规模 推荐方式 原因
修一个小 Bug 直接让 Claude 修 不需要计划
在一个文件中添加一个函数 直接做 简单任务
跨 3+ 个文件的功能 Make Plan + Do 需要步骤规划
涉及数据库变更的功能 Make Plan + Do 迁移有风险,需要检查点
大规模重构 Make Plan + Do 必须分步验证

实操练习

  1. 在博客项目中提出一个跨多文件的需求:
    "帮我添加文章收藏功能:用户可以收藏文章,
    我的收藏页面能看到所有收藏的文章。"
    
  2. 观察 Claude 如何使用 Make Plan 拆解任务
  3. 观察 Do 的逐步执行过程
  4. 如果某步失败,观察回滚和修复机制

下期预告

开发了这么久,你可能想知道:过去 3 个月我们到底做了什么?哪些功能花了最多时间?哪些 Bug 反复出现?下一期介绍 Timeline Report —— 项目开发的"编年史"生成器。

➡️ 第 11 期:Skill 6 — Timeline Report 历史回顾报告