Add Chinese (Simplified) translations for all documentation, organized under a dedicated zh/ directory that mirrors the English folder structure. Co-authored-by: tanqingkuang <tanqingkuang@users.noreply.github.com> Translations originally contributed by @tanqingkuang in #45. Restructured from *-CN.md suffix pattern into zh/ directory to prevent the EPUB builder (scripts/build_epub.py collect_folder_files) from picking up Chinese files via glob("*.md") inside module folders.
534 lines
14 KiB
Markdown
534 lines
14 KiB
Markdown
# 计划模式示例
|
||
|
||
以下是 Claude Code 中有效使用计划模式的真实示例。
|
||
|
||
## 示例 1:构建 REST API
|
||
|
||
### 不使用计划模式
|
||
|
||
```
|
||
用户:给博客做一个 REST API
|
||
|
||
Claude:我来创建这个 API……
|
||
[立刻开始编码,可能漏掉需求]
|
||
```
|
||
|
||
### 使用计划模式
|
||
|
||
```
|
||
用户:/plan 给博客做一个 REST API
|
||
|
||
Claude:我来为这个博客 API 制定一份完整计划。
|
||
|
||
## 博客 REST API 实现计划
|
||
|
||
### 阶段 1:项目初始化(15 分钟)
|
||
1. 初始化带 Express 的 Node.js 项目
|
||
2. 配置 TypeScript
|
||
3. 安装依赖(express、pg、jwt、joi)
|
||
4. 配置环境变量
|
||
5. 搭建项目结构
|
||
|
||
### 阶段 2:数据库层(30 分钟)
|
||
6. 设计数据库 schema
|
||
- users 表(id、email、password_hash、created_at)
|
||
- posts 表(id、user_id、title、content、published、created_at、updated_at)
|
||
- comments 表(id、post_id、user_id、content、created_at)
|
||
7. 创建迁移文件
|
||
8. 搭建数据库连接池
|
||
9. 实现数据库模型
|
||
|
||
### 阶段 3:认证(45 分钟)
|
||
10. 实现用户注册接口
|
||
11. 实现带 JWT 的登录接口
|
||
12. 创建认证中间件
|
||
13. 使用 bcrypt 添加密码哈希
|
||
14. 实现 token 刷新逻辑
|
||
|
||
### 阶段 4:Posts API(40 分钟)
|
||
15. GET /api/posts - 获取所有已发布文章(支持分页)
|
||
16. GET /api/posts/:id - 获取单篇文章
|
||
17. POST /api/posts - 创建新文章(需要认证)
|
||
18. PUT /api/posts/:id - 更新文章(需要认证,检查所有权)
|
||
19. DELETE /api/posts/:id - 删除文章(需要认证,检查所有权)
|
||
20. GET /api/users/:id/posts - 获取某个用户的文章
|
||
|
||
### 阶段 5:Comments API(30 分钟)
|
||
21. GET /api/posts/:id/comments - 获取文章评论
|
||
22. POST /api/posts/:id/comments - 添加评论(需要认证)
|
||
23. DELETE /api/comments/:id - 删除评论(需要认证,检查所有权)
|
||
|
||
### 阶段 6:校验与错误处理(30 分钟)
|
||
24. 使用 Joi 添加请求校验
|
||
25. 实现全局错误处理器
|
||
26. 添加输入清洗
|
||
27. 实现速率限制
|
||
|
||
### 阶段 7:测试(60 分钟)
|
||
28. 为模型编写单元测试
|
||
29. 为认证接口编写集成测试
|
||
30. 为文章接口编写集成测试
|
||
31. 为评论接口编写集成测试
|
||
32. 达到 80%+ 的代码覆盖率
|
||
|
||
### 阶段 8:文档与部署(30 分钟)
|
||
33. 使用 Swagger 生成 API 文档
|
||
34. 创建包含安装说明的 README
|
||
35. 添加 Docker 配置
|
||
36. 搭建 CI/CD 流水线
|
||
|
||
**预估时间**:4.5 小时
|
||
**需要创建的文件**:约 25 个
|
||
**关键技术**:Express、PostgreSQL、JWT、TypeScript
|
||
|
||
**API 端点概览**:
|
||
- 认证:2 个端点
|
||
- 文章:6 个端点
|
||
- 评论:3 个端点
|
||
- 总计:11 个端点
|
||
|
||
准备继续吗?(yes/no/modify)
|
||
|
||
用户:yes
|
||
|
||
Claude:开始阶段 1:项目初始化……
|
||
[按阶段系统性实现]
|
||
```
|
||
|
||
## 示例 2:数据库迁移
|
||
|
||
### 使用计划模式
|
||
|
||
```
|
||
用户:/plan 将数据库从 MongoDB 迁移到 PostgreSQL
|
||
|
||
Claude:这是一次复杂迁移。我来制定详细计划。
|
||
|
||
## MongoDB 到 PostgreSQL 的迁移计划
|
||
|
||
### 阶段 1:分析与准备(第 1 天)
|
||
1. 分析当前 MongoDB schema
|
||
2. 识别数据关系和约束
|
||
3. 记录当前数据量和增长速率
|
||
4. 设计对应的 PostgreSQL schema
|
||
5. 规划数据类型映射
|
||
6. 识别潜在迁移挑战
|
||
|
||
### 阶段 2:PostgreSQL 准备(第 1 天)
|
||
7. 搭建 PostgreSQL 数据库
|
||
8. 创建包含表、索引和约束的 schema
|
||
9. 配置连接池
|
||
10. 制定备份策略
|
||
|
||
### 阶段 3:双写实现(第 2-3 天)
|
||
11. 创建数据库抽象层
|
||
12. 实现同时向两个数据库写入
|
||
13. 添加数据一致性检查
|
||
14. 在预发布环境部署双写
|
||
15. 监控问题
|
||
|
||
### 阶段 4:数据迁移(第 4 天)
|
||
16. 为 MongoDB 创建数据导出脚本
|
||
17. 为 PostgreSQL 创建数据导入脚本
|
||
18. 实现数据转换逻辑
|
||
19. 在生产数据副本上执行初次迁移
|
||
20. 验证迁移后数据完整性
|
||
|
||
### 阶段 5:渐进切换(第 5-7 天)
|
||
21. 在生产环境开启双写
|
||
22. 分批迁移历史数据
|
||
23. 持续验证数据一致性
|
||
24. 监控两个数据库
|
||
25. 修复任何数据同步问题
|
||
|
||
### 阶段 6:PostgreSQL 作为主库(第 8 天)
|
||
26. 将读操作切换到 PostgreSQL
|
||
27. 监控查询性能
|
||
28. 优化慢查询
|
||
29. 继续保留双写作为安全措施
|
||
|
||
### 阶段 7:MongoDB 退役(第 9-10 天)
|
||
30. 停止向 MongoDB 写入
|
||
31. 保留 MongoDB 作为两周备份
|
||
32. 从代码中移除 MongoDB 依赖
|
||
33. 归档 MongoDB 数据
|
||
34. 下线 MongoDB 实例
|
||
|
||
**预估时间**:10 天
|
||
**风险等级**:高
|
||
**回滚策略**:保持 MongoDB 运行并开启双写
|
||
**成功标准**:
|
||
- 零数据丢失
|
||
- 性能回退小于 5%
|
||
- 所有测试通过
|
||
|
||
**关键风险**:
|
||
1. 迁移过程中的数据不一致
|
||
2. 查询性能下降
|
||
3. 应用停机
|
||
4. 数据丢失
|
||
|
||
**缓解措施**:
|
||
- 采用双写模式保障安全
|
||
- 渐进式切换
|
||
- 持续监控
|
||
- 快速回滚能力
|
||
|
||
是否按此计划继续?(yes/no/modify)
|
||
|
||
用户:modify - 我们给每个阶段都加上回滚方案
|
||
|
||
Claude:我已经为每个阶段补充了回滚流程……
|
||
```
|
||
|
||
## 示例 3:前端重构
|
||
|
||
```
|
||
用户:/plan 把我们的 React 应用从 class 组件重构为 hooks
|
||
|
||
Claude:我来制定一个系统化的重构计划。
|
||
|
||
## React Class 到 Hooks 迁移计划
|
||
|
||
### 阶段 1:准备与分析(2 小时)
|
||
1. 审查所有 class 组件(查找所有 .jsx/.tsx 文件)
|
||
2. 按复杂度分类:
|
||
- 简单型(仅 state):约 15 个组件
|
||
- 中等型(生命周期方法):约 23 个组件
|
||
- 复杂型(多个生命周期、refs):约 8 个组件
|
||
3. 识别需要更新的第三方库
|
||
4. 创建组件依赖图
|
||
5. 规划迁移顺序(先叶子节点)
|
||
|
||
### 阶段 2:环境与工具(1 小时)
|
||
6. 将 React 升级到 v18+
|
||
7. 为 hooks 配置 ESLint 规则
|
||
8. 创建转换模板
|
||
9. 配置自动化测试
|
||
10. 在开始前创建一个检查点
|
||
|
||
### 阶段 3:迁移简单组件(4 小时)
|
||
11. 转换简单的有状态组件(15 个)
|
||
12. 用 `useState` 替换 `this.state`
|
||
13. 用状态 setter 替换 `this.setState`
|
||
14. 每个组件转换后都进行测试
|
||
15. 更新测试
|
||
|
||
### 阶段 4:迁移中等复杂组件(8 小时)
|
||
16. 转换带生命周期方法的组件(23 个)
|
||
17. 用 `useEffect` 替换 `componentDidMount`
|
||
18. 用 `useEffect` 替换 `componentDidUpdate`
|
||
19. 用 `useEffect` 清理函数替换 `componentWillUnmount`
|
||
20. 做充分测试
|
||
|
||
### 阶段 5:迁移复杂组件(12 小时)
|
||
21. 转换复杂组件(8 个)
|
||
22. 用 `useRef` 替换 refs
|
||
23. 为共享逻辑提取自定义 hooks
|
||
24. 处理边缘情况(多个 `useEffect`)
|
||
25. 做深入测试
|
||
|
||
### 阶段 6:提取共享逻辑(6 小时)
|
||
26. 识别组件之间重复的逻辑
|
||
27. 创建自定义 hooks:
|
||
- `useAuth`
|
||
- `useFetch`
|
||
- `useLocalStorage`
|
||
- `useDebounce`
|
||
28. 将组件重构为使用自定义 hooks
|
||
29. 独立测试自定义 hooks
|
||
|
||
### 阶段 7:性能优化(4 小时)
|
||
30. 在需要的地方添加 `React.memo`
|
||
31. 使用 `useCallback` 优化
|
||
32. 使用 `useMemo` 优化
|
||
33. 分析并修复性能回退
|
||
|
||
### 阶段 8:收尾与文档(2 小时)
|
||
34. 移除未使用的 class 组件工具
|
||
35. 更新文档
|
||
36. 更新编码规范
|
||
37. 为团队编写迁移指南
|
||
|
||
**预估时间**:5 天(39 小时)
|
||
**需要修改的文件**:46 个组件
|
||
**风险等级**:中
|
||
|
||
**迁移顺序**:
|
||
1. 叶子组件(无依赖)
|
||
2. 中层组件
|
||
3. 顶层容器组件
|
||
4. `App.jsx`(最后)
|
||
|
||
**测试策略**:
|
||
- 每个组件的单元测试
|
||
- 用户流程的集成测试
|
||
- 视觉回归测试
|
||
- 性能基准测试
|
||
|
||
**成功指标**:
|
||
- 所有测试通过
|
||
- 没有视觉回归
|
||
- 性能保持或提升
|
||
- 打包体积没有明显增加
|
||
|
||
继续吗?(yes/no/modify)
|
||
```
|
||
|
||
## 示例 4:安全实现
|
||
|
||
```
|
||
用户:/plan 为我们的 Web 应用实现完整安全方案
|
||
|
||
Claude:我来制定一份全面的安全实施计划。
|
||
|
||
## Web 应用安全实施计划
|
||
|
||
### 阶段 1:安全审计(第 1 天)
|
||
1. 运行自动化安全扫描器(npm audit、Snyk)
|
||
2. 检查依赖中的漏洞
|
||
3. 核对 OWASP Top 10 合规性
|
||
4. 审查认证流程
|
||
5. 审查数据处理方式
|
||
6. 记录当前的安全缺口
|
||
|
||
### 阶段 2:认证加固(第 2-3 天)
|
||
7. 实现强密码要求
|
||
8. 添加密码强度检测器
|
||
9. 对登录接口实施限流
|
||
10. 在多次失败后锁定账户
|
||
11. 实现 2FA(TOTP)
|
||
12. 改进会话管理
|
||
13. 实现安全的密码重置流程
|
||
|
||
### 阶段 3:授权与访问控制(第 3-4 天)
|
||
14. 实现 RBAC(基于角色的访问控制)
|
||
15. 为所有端点添加权限检查
|
||
16. 实现最小权限原则
|
||
17. 为敏感操作添加审计日志
|
||
18. 实现资源级权限
|
||
|
||
### 阶段 4:数据保护(第 4-5 天)
|
||
19. 对敏感字段实施静态加密
|
||
20. 确保所有通信都使用 TLS/SSL
|
||
21. 实现安全的会话存储
|
||
22. 在日志中对 PII 数据做脱敏
|
||
23. 实现数据保留策略
|
||
24. 添加安全的文件上传处理
|
||
|
||
### 阶段 5:输入验证与清洗(第 5-6 天)
|
||
25. 为所有端点实现输入校验
|
||
26. 添加 XSS 防护(Content Security Policy)
|
||
27. 实现 SQL 注入防护(参数化查询)
|
||
28. 添加 CSRF 防护
|
||
29. 实现请求大小限制
|
||
30. 添加文件上传类型校验
|
||
|
||
### 阶段 6:安全头与配置(第 6 天)
|
||
31. 添加安全响应头:
|
||
- Strict-Transport-Security
|
||
- X-Content-Type-Options
|
||
- X-Frame-Options
|
||
- X-XSS-Protection
|
||
- Content-Security-Policy
|
||
32. 正确配置 CORS
|
||
33. 禁用不必要的 HTTP 方法
|
||
34. 移除服务器版本头
|
||
|
||
### 阶段 7:监控与日志(第 7 天)
|
||
35. 实现安全事件日志
|
||
36. 添加异常检测
|
||
37. 搭建入侵检测
|
||
38. 实现实时告警
|
||
39. 创建安全仪表盘
|
||
|
||
### 阶段 8:测试与文档(第 8-9 天)
|
||
40. 执行渗透测试
|
||
41. 运行安全扫描器
|
||
42. 测试所有安全功能
|
||
43. 编写安全文档
|
||
44. 培训团队的安全实践
|
||
45. 编写事件响应计划
|
||
|
||
### 阶段 9:合规与政策(第 10 天)
|
||
46. 检查 GDPR 合规性
|
||
47. 创建隐私政策
|
||
48. 实现数据主体权利支持
|
||
49. 添加 cookie 同意机制
|
||
50. 编写安全政策文档
|
||
|
||
**预估时间**:10 天
|
||
**风险等级**:严重
|
||
**优先级**:高
|
||
|
||
**安全改进摘要**:
|
||
- 认证:7 项增强
|
||
- 授权:5 项增强
|
||
- 数据保护:6 项增强
|
||
- 输入校验:6 项增强
|
||
- 基础设施:9 项增强
|
||
- 监控:5 项增强
|
||
|
||
**合规性**:OWASP Top 10、GDPR
|
||
|
||
**成功标准**:
|
||
- 零严重漏洞
|
||
- 所有 OWASP Top 10 风险都得到缓解
|
||
- 安全评分高于 90/100
|
||
- 所有渗透测试问题都已解决
|
||
|
||
继续吗?(yes/no/modify)
|
||
```
|
||
|
||
## 示例 5:性能优化
|
||
|
||
```
|
||
用户:/plan 优化我们这个很慢的电商网站
|
||
|
||
Claude:我来制定一份完整的性能优化计划。
|
||
|
||
## 电商网站性能优化计划
|
||
|
||
### 阶段 1:性能审计(4 小时)
|
||
1. 运行 Lighthouse 审计
|
||
2. 分析 Chrome DevTools 性能剖析结果
|
||
3. 测量 Core Web Vitals:
|
||
- LCP(Largest Contentful Paint)
|
||
- FID(First Input Delay)
|
||
- CLS(Cumulative Layout Shift)
|
||
4. 找出性能瓶颈
|
||
5. 创建基线性能指标
|
||
|
||
**当前指标**:
|
||
- LCP:4.2s(目标:<2.5s)
|
||
- FID:280ms(目标:<100ms)
|
||
- CLS:0.25(目标:<0.1)
|
||
- 页面加载:8.3s(目标:<3s)
|
||
|
||
### 阶段 2:图片优化(6 小时)
|
||
6. 将图片转换为 WebP 格式
|
||
7. 实现响应式图片
|
||
8. 为图片添加懒加载
|
||
9. 优化图片大小(压缩)
|
||
10. 为图片接入 CDN
|
||
11. 添加图片占位符
|
||
|
||
**预期影响**:加载时间减少 40%
|
||
|
||
### 阶段 3:代码拆分与懒加载(8 小时)
|
||
12. 实现基于路由的代码拆分
|
||
13. 懒加载非关键组件
|
||
14. 拆分第三方依赖包
|
||
15. 优化 chunk 大小
|
||
16. 实现动态导入
|
||
17. 为关键资源添加预加载
|
||
|
||
**预期影响**:初始 bundle 体积减少 30%
|
||
|
||
### 阶段 4:缓存策略(6 小时)
|
||
18. 实现浏览器缓存(Cache-Control)
|
||
19. 为离线支持添加 service worker
|
||
20. 实现 API 响应缓存
|
||
21. 为数据库查询添加 Redis 缓存
|
||
22. 实现 stale-while-revalidate
|
||
23. 配置 CDN 缓存
|
||
|
||
**预期影响**:API 响应时间减少 50%
|
||
|
||
### 阶段 5:数据库优化(8 小时)
|
||
24. 添加数据库索引
|
||
25. 优化慢查询(>100ms)
|
||
26. 实现查询结果缓存
|
||
27. 添加连接池
|
||
28. 在合适地方做反规范化
|
||
29. 实现数据库只读副本
|
||
|
||
**预期影响**:数据库查询时间减少 60%
|
||
|
||
### 阶段 6:前端优化(10 小时)
|
||
30. 最小化并压缩 JavaScript
|
||
31. 最小化并压缩 CSS
|
||
32. 移除未使用的 CSS(PurgeCSS)
|
||
33. 实现关键 CSS
|
||
34. 延迟加载非关键 JavaScript
|
||
35. 减少 DOM 规模
|
||
36. 优化 React 渲染(`memo`、`useMemo`)
|
||
37. 为长列表实现虚拟滚动
|
||
|
||
**预期影响**:JavaScript 执行时间减少 35%
|
||
|
||
### 阶段 7:网络优化(4 小时)
|
||
38. 启用 HTTP/2
|
||
39. 实现资源提示(preconnect、prefetch)
|
||
40. 减少 HTTP 请求数量
|
||
41. 启用 Brotli 压缩
|
||
42. 优化第三方脚本
|
||
|
||
**预期影响**:网络耗时减少 25%
|
||
|
||
### 阶段 8:监控与测试(4 小时)
|
||
43. 搭建性能监控(Datadog/New Relic)
|
||
44. 添加真实用户监控(RUM)
|
||
45. 制定性能预算
|
||
46. 搭建自动化 Lighthouse CI
|
||
47. 在真实设备上测试
|
||
|
||
**预估时间**:50 小时(2 周)
|
||
|
||
**目标指标**(90 分位):
|
||
- LCP:<2.0s(从 4.2s 降低)✅
|
||
- FID:<50ms(从 280ms 降低)✅
|
||
- CLS:<0.05(从 0.25 降低)✅
|
||
- 页面加载:<2.5s(从 8.3s 降低)✅
|
||
|
||
**预期收入影响**:
|
||
- 每快 100ms,转化率提升 1%
|
||
- 目标:缩短 5.8s,约带来 58% 的转化率提升
|
||
- 预估额外收入:显著
|
||
|
||
**优先级顺序**:
|
||
1. 图片优化(快速收益)
|
||
2. 代码拆分(高影响)
|
||
3. 缓存(高影响)
|
||
4. 数据库优化(关键)
|
||
5. 前端优化(打磨)
|
||
|
||
是否按此计划继续?(yes/no/modify)
|
||
```
|
||
|
||
## 关键要点
|
||
|
||
### 计划模式的优势
|
||
|
||
1. **清晰**:开始前就有明确路线图
|
||
2. **可估算**:能给出时间和工作量预估
|
||
3. **风险评估**:能尽早发现潜在问题
|
||
4. **优先级排序**:任务按合理顺序推进
|
||
5. **可审批**:执行前先审阅并确认
|
||
6. **可调整**:根据反馈及时修改计划
|
||
|
||
### 什么时候使用计划模式
|
||
|
||
✅ **建议始终使用于**:
|
||
- 多日项目
|
||
- 团队协作
|
||
- 关键系统变更
|
||
- 学习新概念
|
||
- 复杂重构
|
||
|
||
❌ **不建议使用于**:
|
||
- 修 bug
|
||
- 小改动
|
||
- 简单查询
|
||
- 快速实验
|
||
|
||
### 最佳实践
|
||
|
||
1. **审批前仔细审查** 计划
|
||
2. **发现问题就修改** 计划
|
||
3. **把复杂任务拆细**
|
||
4. **给出现实的时间估算**
|
||
5. **包含回滚策略**
|
||
6. **写明成功标准**
|
||
7. **为每个阶段安排测试**
|