Claude Code 实战篇:案例集锦


修订记录

编号 版本 修订人 修订内容 日期
001 1.0 lixh 创建全文 2026-01-22

1. 概述

本篇汇集 Claude Code 的实战应用案例,展示如何在真实开发场景中高效使用各项功能。每个案例都包含完整的操作流程和技巧总结。


2. 案例一:代码审查工作流

2.1 场景描述

团队提交了一个 PR,需要进行全面的代码审查。

2.2 操作流程

步骤 1:获取 PR 信息

> 帮我审查 GitHub 上 myorg/myrepo 的 PR #123

Claude 操作:
1. 使用 GitHub MCP 获取 PR 详情
2. 获取变更文件列表
3. 读取变更内容

步骤 2:分析代码质量

> 分析这个 PR 的代码质量,检查:
> - 逻辑正确性
> - 代码风格
> - 潜在 bug
> - 性能问题

Claude 输出:

## 代码审查报告

### 概述
本 PR 实现用户认证功能,包含 5 个文件变更。

### 发现问题

🔴 **严重 - SQL 注入风险**
文件:src/auth/login.js:42
问题:直接拼接用户输入到 SQL
建议:使用参数化查询

🟡 **警告 - 函数过长**
文件:src/auth/validate.js:15-89
问题:单函数 74 行
建议:拆分为多个小函数

🟢 **提示 - 变量命名**
文件:src/utils/helper.js:23
问题:变量名 `x` 不够语义化
建议:使用描述性名称

步骤 3:生成审查意见

> 帮我在 PR 上添加审查评论

Claude 使用 GitHub MCP 的 create_pull_request_review 添加评论

2.3 技巧总结

技巧 说明
使用 GitHub MCP 直接操作 PR,无需离开终端
分类问题等级 严重/警告/提示,优先级清晰
提供具体建议 不只指出问题,还给出解决方案

3. 案例二:快速理解陌生项目

3.1 场景描述

接手一个陌生的代码库,需要快速了解项目结构和技术栈。

3.2 操作流程

步骤 1:概览项目

> 帮我分析这个项目的整体架构

Claude 操作:
1. 启动 Explore Agent (very thorough)
2. 扫描根目录文件
3. 分析 package.json/requirements.txt
4. 查看目录结构

步骤 2:获取项目报告

Claude 输出:

## 项目架构分析

### 技术栈
- 后端:Node.js + Express.js
- 数据库:PostgreSQL + Redis
- 前端:React 18 + TypeScript
- 构建:Vite + ESBuild

### 目录结构

src/
├── api/ # API 路由 (15 个接口)
├── services/ # 业务逻辑 (8 个服务)
├── models/ # 数据模型 (12 个模型)
├── middleware/ # 中间件 (认证、日志、错误处理)
└── utils/ # 工具函数


### 核心模块
1. **认证模块** (src/api/auth.js)
   - JWT 认证
   - OAuth2.0 (Google, GitHub)

2. **用户模块** (src/api/users.js)
   - CRUD 操作
   - 权限管理

3. **订单模块** (src/api/orders.js)
   - 订单创建和管理
   - 支付集成

步骤 3:深入特定模块

> 详细介绍一下认证模块的实现

Claude 读取相关文件并解释认证流程

3.3 技巧总结

技巧 说明
使用 Explore Agent 专业的代码探索能力
由浅入深 先概览再深入
保存分析结果 使用 /save 保存到记忆

4. 案例三:Bug 调试与修复

4.1 场景描述

生产环境报错,需要快速定位并修复 bug。

4.2 操作流程

步骤 1:分析错误信息

> 帮我分析这个错误:
> TypeError: Cannot read property 'user' of undefined
>   at AuthController.validate (src/controllers/auth.js:45)
>   at Router.handle (node_modules/express/lib/router.js:174)

Claude 分析:
1. 错误类型:空引用
2. 位置:auth.js 第 45 行
3. 可能原因:session 对象未初始化

步骤 2:定位问题代码

> 读取 src/controllers/auth.js 第 40-50 行

Claude 读取并分析代码:

发现问题:
第 45 行:const userId = req.session.user.id;

问题分析:
- req.session 可能为 undefined(会话未初始化)
- req.session.user 可能为 undefined(用户未登录)
- 没有空值检查

步骤 3:修复代码

> 帮我修复这个 bug

Claude 修改代码:

修复方案:添加空值检查

--- src/controllers/auth.js
+++ src/controllers/auth.js
@@ -42,7 +42,11 @@

 async validate(req, res) {
-  const userId = req.session.user.id;
+  if (!req.session?.user?.id) {
+    return res.status(401).json({ error: '未登录' });
+  }
+  const userId = req.session.user.id;
   // ...
 }

步骤 4:验证修复

> 运行相关测试

Claude 执行:
npm test -- --grep "auth"

✓ 所有认证相关测试通过

4.3 技巧总结

技巧 说明
从错误栈追踪 按调用栈定位问题
分析上下文 不只看错误行,还看前后代码
验证修复 修完必须测试

5. 案例四:API 文档自动生成

5.1 场景描述

项目缺少 API 文档,需要根据代码生成完整文档。

5.2 操作流程

步骤 1:分析 API 路由

> 扫描项目中所有的 API 接口

Claude 操作:
1. 搜索路由定义文件
2. 提取所有端点
3. 分析请求和响应格式

步骤 2:生成文档

> 生成 API 接口文档,使用 /api-design 技能

Claude 输出:

# API 接口文档

## 1. 认证接口

### 1.1 用户登录

| 属性 | 值 |
|------|---|
| 方法 | POST |
| 路径 | /api/v1/auth/login |
| 认证 | 否 |

**请求参数**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| email | string | 是 | 用户邮箱 |
| password | string | 是 | 密码 |

**响应示例**

```json
{
  "code": 200,
  "data": {
    "token": "eyJhbG...",
    "user": {
      "id": 1,
      "name": "张三"
    }
  }
}

错误码

说明
401 密码错误
404 用户不存在

**步骤 3:保存文档**

保存文档到 docs/api.md

文件已创建:docs/api.md


### 5.3 技巧总结

| 技巧 | 说明 |
|------|------|
| 使用技能模板 | 保证输出格式一致 |
| 包含示例 | 请求/响应示例便于理解 |
| 及时更新 | 代码变更后更新文档 |

---

## 6. 案例五:数据库迁移

### 6.1 场景描述

需要给用户表添加新字段,并确保数据安全迁移。

### 6.2 操作流程

**步骤 1:分析现有表结构**

帮我分析 users 表的当前结构

Claude 读取模型文件:

当前结构:

  • id (SERIAL PRIMARY KEY)
  • email (VARCHAR(255) UNIQUE)
  • password_hash (VARCHAR(255))
  • created_at (TIMESTAMP)
  • updated_at (TIMESTAMP)

**步骤 2:设计迁移方案**

我需要添加以下字段:

  • phone (手机号,可选)
  • avatar_url (头像,可选)
  • status (状态:active/inactive)

Claude 输出迁移方案:

迁移方案

新增字段

字段 类型 默认值 说明
phone VARCHAR(20) NULL 手机号
avatar_url VARCHAR(500) NULL 头像URL
status VARCHAR(20) ‘active’ 用户状态

迁移脚本

-- 添加新字段
ALTER TABLE users
  ADD COLUMN phone VARCHAR(20),
  ADD COLUMN avatar_url VARCHAR(500),
  ADD COLUMN status VARCHAR(20) DEFAULT 'active';

-- 添加索引
CREATE INDEX idx_users_phone ON users(phone);
CREATE INDEX idx_users_status ON users(status);

回滚脚本

ALTER TABLE users
  DROP COLUMN phone,
  DROP COLUMN avatar_url,
  DROP COLUMN status;

**步骤 3:更新代码**

同时更新 User 模型和相关接口

Claude 修改:

  1. src/models/user.js - 添加新字段定义
  2. src/api/users.js - 更新 CRUD 接口
  3. src/validators/user.js - 添加验证规则

### 6.3 技巧总结

| 技巧 | 说明 |
|------|------|
| 先分析后修改 | 理解现有结构 |
| 提供回滚方案 | 迁移可逆 |
| 同步更新代码 | 保持一致性 |

---

## 7. 案例六:Git 工作流自动化

### 7.1 场景描述

完成功能开发,需要提交代码并创建 PR。

### 7.2 操作流程

**步骤 1:检查变更**

帮我查看当前的代码变更

Claude 执行:
git status
git diff

变更概览:

  • 新增:src/features/notification.js
  • 修改:src/api/users.js (添加通知接口)
  • 修改:package.json (新增依赖)

**步骤 2:提交代码**

/commit

Claude 分析变更并生成提交信息:

分析结果:

  • 类型:新功能
  • 范围:通知模块
  • 变更:实现用户通知功能

建议提交信息:
feat(notification): 实现用户通知功能

  • 添加通知服务模块
  • 支持邮件和站内通知
  • 集成到用户API

是否使用此提交信息?[y/n]


**步骤 3:创建 PR**

帮我创建 PR 到 main 分支

Claude 使用 GitHub MCP:

PR 创建成功!

标题:feat(notification): 实现用户通知功能
链接:https://github.com/org/repo/pull/456

Summary

  • 添加通知服务模块
  • 支持邮件和站内通知
  • 集成到用户 API

Test Plan

  • 单元测试通过
  • 手动测试邮件发送
  • 验证通知列表 API

### 7.3 技巧总结

| 技巧 | 说明 |
|------|------|
| 使用 /commit 技能 | 规范化提交信息 |
| 自动分析变更 | 生成准确描述 |
| GitHub MCP 集成 | 直接创建 PR |

---

## 8. 案例七:性能优化

### 8.1 场景描述

API 响应变慢,需要分析并优化性能。

### 8.2 操作流程

**步骤 1:定位慢接口**

帮我分析项目中可能存在性能问题的代码

Claude 使用 performance-engineer Agent:

性能分析报告

潜在问题

  1. N+1 查询 (src/api/orders.js:34)

    // 问题代码
    for (const order of orders) {
      order.user = await User.findById(order.userId);
    }
    
  2. 未使用索引 (src/api/products.js:56)

    // 按 category 查询但无索引
    Product.find({ category: req.params.category })
    
  3. 大数据无分页 (src/api/logs.js:12)

    // 返回所有日志,无分页
    const logs = await Log.find({});
    

**步骤 2:实施优化**

帮我优化第一个 N+1 查询问题

Claude 修改代码:

优化方案:批量查询 + 内存关联

— src/api/orders.js
+++ src/api/orders.js
@@ -32,9 +32,12 @@
const orders = await Order.find({ status: ‘active’ });

  • for (const order of orders) {
  • order.user = await User.findById(order.userId);
  • }
  • // 批量获取用户

  • const userIds = […new Set(orders.map(o => o.userId))];

  • const users = await User.find({ _id: { $in: userIds } });

  • const userMap = new Map(users.map(u => [u._id.toString(), u]));

  • orders.forEach(o => o.user = userMap.get(o.userId.toString()));

    return orders;


**步骤 3:验证优化效果**

有没有性能测试方法?

建议:

  1. 添加响应时间日志
  2. 使用压测工具 (ab, wrk)
  3. 监控数据库查询数量

### 8.3 技巧总结

| 技巧 | 说明 |
|------|------|
| 系统化分析 | 全面排查问题 |
| 优先高影响 | 先解决严重问题 |
| 量化效果 | 有数据支撑 |

---

## 9. 综合技巧总结

### 9.1 高效使用清单

| 场景 | 推荐做法 |
|------|---------|
| 探索代码 | 使用 Explore Agent |
| 复杂任务 | 先规划后执行 |
| 代码修改 | 读取后再修改 |
| 批量操作 | 利用并行能力 |
| 长会话 | 定期 /compact |

### 9.2 常用命令速查

| 命令 | 用途 |
|------|------|
| `/commit` | 规范化提交 |
| `/save` | 保存上下文 |
| `/compact` | 压缩上下文 |
| `/clear` | 开始新会话 |

### 9.3 避免的陷阱

| 陷阱 | 解决方案 |
|------|---------|
| 一次性读取大量文件 | 按需逐步读取 |
| 不验证修改结果 | 改完必测 |
| 忽略上下文限制 | 及时压缩清理 |

---

## 10. 总结

通过本系列教程,你已经掌握了:

- ✅ Claude Code 安装配置
- ✅ 基础交互和文件操作
- ✅ Skills 技能系统
- ✅ Agent 代理模式
- ✅ Command 命令系统
- ✅ MCP 工具扩展
- ✅ 上下文管理策略
- ✅ CLAUDE.md 配置
- ✅ 实战应用技巧

现在,开始在你的项目中实践这些技能吧!

---

## 参考资料

- [Claude Code 官方文档](https://docs.anthropic.com/claude-code)
- [最佳实践指南](https://docs.anthropic.com/claude-code/best-practices)
- [GitHub Issues](https://github.com/anthropics/claude-code/issues)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐