<!-- title: Claude Code多Agent并行开发实战全攻略 -->

# Claude Code多Agent并行开发实战：Worktree隔离与并行工作流全攻略

## 概述

本教程面向已掌握Claude Code基础操作的初中级开发者，系统讲解如何利用Git Worktree机制实现多Agent并行开发。你将学会：同时启动多个Claude Code会话处理不同任务、避免文件冲突与合并噩梦、构建自动化并行开发流水线。学完后，你可以在一个仓库中同时运行3-5个Agent，将开发效率提升3倍以上。

**适用人群**：有1-3个月Claude Code使用经验的开发者，熟悉Git基本操作，希望突破单Agent瓶颈的团队和个人。

## 前置条件

| 条件 | 说明 |
|------|------|
| Claude Code | 已安装最新版（≥1.0.35，支持`--worktree`标志） |
| Git | ≥2.5（支持`git worktree`命令） |
| 终端 | 支持多标签页（tmux/iTerm2/Windows Terminal） |
| 项目 | 一个真实的Git仓库（非bare仓库） |
| 基础知识 | 理解Git分支、合并、冲突解决的基本概念 |

---

## 第一章：为什么需要并行开发

### 1.1 单Agent的瓶颈

传统Claude Code工作流是"单线程"的——一个会话、一个任务、一个方向。这在简单项目中没问题，但当你面对以下场景时就显得力不从心：

- **积压任务堆积**：Jira/Linear里有15个backlog卡片等待开发
- **紧急修复打断**：正在开发Feature A，线上Bug需要立即修复
- **多模块并行**：前端、后端、测试需要同时推进
- **探索性任务**：需要同时调研多个技术方案的可行性

最直接的想法是开多个终端窗口，每个都运行`claude`指向同一个仓库。但20分钟后，你会发现所有会话都陷入了合并冲突的地狱——一个Agent改写了另一个Agent正在编辑的文件，第三个Agent删除了前两个都依赖的模块。

### 1.2 Git Worktree原理

Git Worktree是Git 2.5引入的功能，它允许你在同一个仓库中同时检出多个分支到不同的目录。每个worktree都是一个完整的工作目录，但共享同一个`.git`仓库。

```mermaid
graph TB
    A[Git仓库 .git] --> B[主工作目录 main分支]
    A --> C[Worktree 1 feature-auth分支]
    A --> D[Worktree 2 fix-bug-123分支]
    A --> E[Worktree 3 feature-api分支]

    B --> F[Claude Code 会话1]
    C --> G[Claude Code 会话2]
    D --> H[Claude Code 会话3]
    E --> I[Claude Code 会话4]

    style A fill:#f9f,stroke:#333
    style F fill:#bbf,stroke:#333
    style G fill:#bfb,stroke:#333
    style H fill:#fbb,stroke:#333
    style I fill:#fbf,stroke:#333
```

关键区别：
- **不是Git Clone**：所有worktree共享同一个`.git`，不会复制仓库历史
- **分支隔离**：每个worktree检出到不同分支，文件系统完全隔离
- **轻量级**：创建一个worktree只需几秒钟，不占用额外磁盘空间存储历史
- **Claude Code原生支持**：通过`--worktree`标志一键创建并进入

### 1.3 性能提升量化

根据社区实践数据，并行开发模式的效果：

| 场景 | 单Agent耗时 | 3-Agent并行 | 加速比 |
|------|-------------|-------------|--------|
| 5个独立bug修复 | ~150分钟 | ~55分钟 | 2.7x |
| 前后端feature开发 | ~120分钟 | ~45分钟 | 2.7x |
| 重构+测试+文档 | ~90分钟 | ~35分钟 | 2.6x |
| 代码审查+新feature | ~80分钟 | ~30分钟 | 2.7x |

> 注意：加速比不会线性增长。3个Agent通常获得2.5-2.8倍加速，因为存在任务分配和合并的额外开销。

---

## 第二章：Worktree基础操作

### 2.1 手动创建Worktree

理解底层命令有助于排查问题。Git原生的worktree操作：

```bash
# 查看当前worktree列表
git worktree list

# 基于main分支创建新worktree
git worktree add ../feature-auth feature-auth

# 基于新分支创建worktree（-b参数）
git worktree add -b feature-new-ui ../worktrees/new-ui main

# 在worktree中工作
cd ../feature-auth
# ... 进行开发 ...
git add . && git commit -m "feat: add auth module"

# 完成后移除worktree
cd /path/to/main-repo
git worktree remove ../feature-auth
```

**常见问题**：如果提示`fatal: 'feature-auth' is already checked out`，说明该分支已在另一个worktree中检出。需要先切换那个worktree的分支或移除它。

### 2.2 Claude Code的--worktree标志（推荐）

Claude Code从1.0.35版本开始原生支持worktree，操作极其简便：

```bash
# 启动Claude Code并自动创建worktree
claude --worktree

# 指定worktree名称
claude --worktree --worktree-name feature-auth

# 在指定worktree中启动
claude --worktree --worktree-path ../existing-worktree
```

执行流程：

1. Claude Code自动基于当前HEAD创建新分支（如`claude-worktree-abc123`）
2. 在`.claude/worktrees/`目录下创建隔离的工作目录
3. 启动新的Claude Code会话，工作目录指向该worktree
4. 会话结束后，可选择保留或移除worktree

```mermaid
sequenceDiagram
    participant User as 开发者
    participant CC as Claude Code
    participant Git as Git仓库
    participant WT as Worktree目录

    User->>CC: claude --worktree
    CC->>Git: git worktree add .claude/worktrees/wt-xxx
    Git-->>WT: 创建隔离工作目录
    CC->>CC: 切换工作目录到WT
    CC-->>User: 会话就绪（在worktree中）
    
    Note over User,WT: 开发过程...
    
    User->>CC: 完成任务
    CC->>Git: git add & commit（在worktree分支）
    User->>CC: /exit
    CC->>User: 保留或移除worktree？
```

### 2.3 `.worktreeinclude`文件控制同步

默认情况下，worktree是分支的完整检出。但有时你希望某些配置文件（如`.env`、`docker-compose.yml`）在所有worktree间保持同步。这时可以使用`.worktreeinclude`文件：

```bash
# 在项目根目录创建 .worktreeinclude
cat > .worktreeinclude << 'EOF'
.env.local
docker-compose.override.yml
.claude/settings.json
.vscode/settings.json
EOF
```

Claude Code在创建worktree时会自动将这些文件从主工作目录复制到新worktree。

---

## 第三章：并行开发实战——三种工作流

### 3.1 工作流一：手动多标签页（适合2-3个任务）

这是最简单的并行模式，适合处理2-3个独立任务。

**步骤1：准备仓库**

```bash
cd ~/projects/my-app
git status  # 确保工作目录干净
git pull origin main
```

**步骤2：创建worktree**

```bash
# 终端标签页1：主工作目录（保持main分支）
# 无需操作，直接运行 claude

# 终端标签页2：创建worktree用于Feature A
git worktree add .claude/worktrees/feat-auth -b feature/auth main
cd .claude/worktrees/feat-auth
claude

# 终端标签页3：创建worktree用于Bug Fix
git worktree add .claude/worktrees/fix-bug-42 -b fix/bug-42 main
cd .claude/worktrees/fix-bug-42
claude
```

**步骤3：分配任务**

在每个Claude Code会话中输入对应的任务：

```
# 标签页1（main）- 代码审查
> 请审查src/api/目录下的代码，找出性能瓶颈

# 标签页2（feature/auth）- 新功能
> 实现JWT认证模块，包含登录、注册、Token刷新接口

# 标签页3（fix/bug-42）- Bug修复
> 修复Issue #42：用户列表分页在超过1000条时返回空结果
```

**步骤4：合并结果**

```bash
# 回到主仓库
cd ~/projects/my-app

# 合并各worktree的提交
git merge feature/auth
git merge fix/bug-42

# 清理worktree
git worktree remove .claude/worktrees/feat-auth
git worktree remove .claude/worktrees/fix-bug-42
```

### 3.2 工作流二：tmux自动化编排（适合3-5个任务）

使用tmux可以自动化创建和管理多个并行会话。以下是完整的编排脚本：

```bash
#!/bin/bash
# parallel-claude.sh - 并行Claude Code编排脚本

TASKS_FILE="$1"
REPO_ROOT="$(git rev-parse --show-toplevel)"
SESSION_NAME="claude-parallel-$(date +%Y%m%d-%H%M%S)"

# 检查任务文件
if [ -z "$TASKS_FILE" ]; then
    echo "用法: ./parallel-claude.sh tasks.md"
    exit 1
fi

# 解析任务文件（每行一个任务，格式：分支名 | 任务描述）
declare -a BRANCHES=()
declare -a TASKS=()

while IFS='|' read -r branch task; do
    branch=$(echo "$branch" | xargs)
    task=$(echo "$task" | xargs)
    [ -z "$branch" ] && continue
    BRANCHES+=("$branch")
    TASKS+=("$task")
done < "$TASKS_FILE"

NUM_TASKS=${#BRANCHES[@]}
echo "🚀 启动 $NUM_TASKS 个并行Claude Code会话..."

# 创建tmux会话
tmux new-session -d -s "$SESSION_NAME" -c "$REPO_ROOT"

for i in "${!BRANCHES[@]}"; do
    BRANCH="${BRANCHES[$i]}"
    TASK="${TASKS[$i]}"
    WT_PATH="$REPO_ROOT/.claude/worktrees/$BRANCH"
    
    # 创建worktree
    git worktree add "$WT_PATH" -b "$BRANCH" main 2>/dev/null || \
    git worktree add "$WT_PATH" "$BRANCH" 2>/dev/null
    
    if [ $i -eq 0 ]; then
        # 第一个窗口
        tmux rename-window -t "$SESSION_NAME:0" "$BRANCH"
    else
        # 后续窗口
        tmux new-window -t "$SESSION_NAME" -n "$BRANCH" -c "$WT_PATH"
    fi
    
    # 在窗口中启动Claude Code并发送任务
    tmux send-keys -t "$SESSION_NAME:$BRANCH" "cd $WT_PATH && claude" Enter
    sleep 3
    tmux send-keys -t "$SESSION_NAME:$BRANCH" "$TASK" Enter
    
    echo "  ✅ 已启动: $BRANCH"
done

# 附着到tmux会话
echo ""
echo "📋 所有会话已启动！运行以下命令查看："
echo "   tmux attach -t $SESSION_NAME"
tmux attach -t "$SESSION_NAME"
```

**任务文件示例** (`tasks.md`)：

```
feature/user-profile | 实现用户个人资料编辑页面，包含头像上传、基本信息修改、密码修改
fix/memory-leak | 修复WebSocket连接断开后未释放事件监听器导致的内存泄漏问题，文件在src/ws/
feature/api-v2 | 设计并实现API v2版本的速率限制中间件，支持按用户、按IP、按端点三级限制
test/integration | 为src/api/目录下的所有端点编写集成测试，覆盖正常流程和错误场景
docs/api-docs | 根据src/routes/中的路由定义，生成OpenAPI 3.0规范的API文档
```

**运行方式**：

```bash
chmod +x parallel-claude.sh
./parallel-claude.sh tasks.md
```

**预期输出**：

```
🚀 启动 5 个并行Claude Code会话...
  ✅ 已启动: feature/user-profile
  ✅ 已启动: fix/memory-leak
  ✅ 已启动: feature/api-v2
  ✅ 已启动: test/integration
  ✅ 已启动: docs/api-docs

📋 所有会话已启动！运行以下命令查看：
   tmux attach -t claude-parallel-20260610-143052
```

```mermaid
graph LR
    A[tasks.md任务文件] --> B[parallel-claude.sh]
    B --> C[创建tmux会话]
    C --> D[窗口1: feature/user-profile]
    C --> E[窗口2: fix/memory-leak]
    C --> F[窗口3: feature/api-v2]
    C --> G[窗口4: test/integration]
    C --> H[窗口5: docs/api-docs]

    D --> I[独立Worktree]
    E --> J[独立Worktree]
    F --> K[独立Worktree]
    G --> L[独立Worktree]
    H --> M[独立Worktree]

    I --> N[git merge]
    J --> N
    K --> N
    L --> N
    M --> N

    N --> O[主分支合并完成]
```

### 3.3 工作流三：Sub-Agent委派模式（单会话内并行）

Claude Code的Agent工具支持在单个会话内派生子Agent，子Agent可以自动使用worktree隔离。这是最高级的并行模式。

**在Claude Code会话中直接使用**：

```
> 我需要你同时处理以下三个任务：
> 1. 重构src/utils/目录，将通用工具函数提取到独立的npm包
> 2. 为src/api/users.ts添加完整的CRUD接口和错误处理
> 3. 编写E2E测试覆盖用户注册到下单的完整流程
> 
> 请使用Agent工具并行处理这三个任务，每个任务在独立的worktree中进行。
```

Claude Code会自动：
1. 创建三个独立的worktree
2. 在每个worktree中启动子Agent
3. 并行执行三个任务
4. 完成后汇报每个任务的结果

**手动触发子Agent with worktree隔离**：

在CLAUDE.md中配置子Agent策略：

```markdown
# Agent并行策略

## 自动Worktree隔离
当使用Agent工具处理独立任务时，始终使用isolation: "worktree"参数。

## 任务分发原则
- 无依赖关系的任务可以并行
- 共享文件修改的任务必须串行
- 每个子Agent完成后，在主会话中统一合并
```

---

## 第四章：合并策略与冲突解决

### 4.1 合并顺序策略

并行开发的合并不是简单地把所有分支合到main就行。正确的策略至关重要：

```mermaid
graph TD
    A[评估分支依赖关系] --> B{分支间有依赖?}
    B -->|否| C[按优先级逐个合并]
    B -->|是| D[先合并基础分支]
    D --> E[再合并依赖分支]
    C --> F[运行完整测试套件]
    E --> F
    F --> G{测试通过?}
    G -->|是| H[推送合并结果]
    G -->|否| I[回退并修复冲突]
    I --> F
```

**推荐合并顺序**：

```bash
# 1. 先合并bug修复（最安全、最紧急）
git checkout main
git merge fix/memory-leak
make test  # 确认通过

# 2. 再合并基础设施变更（其他分支可能依赖）
git merge feature/api-v2
make test

# 3. 然后合并功能开发
git merge feature/user-profile
make test

# 4. 最后合并文档和测试（最低风险）
git merge test/integration
git merge docs/api-docs
make test
```

### 4.2 冲突预防机制

**策略一：文件所有权分区**

在CLAUDE.md中明确声明每个Agent的工作范围：

```markdown
# 并行开发区域划分

## 分支与文件映射
- feature/user-profile: src/pages/profile/*, src/components/UserForm/*
- fix/memory-leak: src/ws/*, src/utils/eventBus.ts
- feature/api-v2: src/middleware/rateLimit.ts, src/config/rateLimit.ts
- test/integration: tests/integration/*
- docs/api-docs: docs/openapi/*

## 交叉文件处理
修改以上范围之外的文件时，需要先在主分支完成。
```

**策略二：共享文件锁定**

```bash
# 在每个worktree中创建锁文件
echo "feature/user-profile" > .claude/worktree-lock
```

在CLAUDE.md中添加规则：

```markdown
# Worktree锁机制
修改文件前，先检查.git/worktree-lock文件。如果该文件被其他分支锁定，
则需要等待或协调。
```

**策略三：CI自动冲突检测**

```yaml
# .github/workflows/worktree-conflict-check.yml
name: Worktree Conflict Detection
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  check-conflicts:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Check merge conflicts with other open PRs
        run: |
          # 获取所有open的PR分支
          BRANCHES=$(gh pr list --state open --json headRefName -q '.[].headRefName')
          for branch in $BRANCHES; do
            if [ "$branch" != "${{ github.head_ref }}" ]; then
              git merge --no-commit --no-ff "origin/$branch" 2>/dev/null
              if [ $? -ne 0 ]; then
                echo "⚠️ 冲突检测: ${{ github.head_ref }} 与 $branch 有文件冲突"
                git merge --abort
              else
                git merge --abort
              fi
            fi
          done
```

### 4.3 冲突解决实战

当冲突不可避免时，Claude Code可以帮助解决：

```bash
# 在主仓库中尝试合并
git merge feature/user-profile

# 如果有冲突，启动Claude Code
claude
```

在Claude Code中：

```
> 当前有合并冲突，请帮我解决。
> 策略：对于src/utils/helpers.ts，保留两个分支的修改（合并而非覆盖）。
> 对于package.json，使用feature分支的版本。
```

---

## 第五章：多文件重构的并行策略

### 5.1 大规模重构的工作分解

多文件重构是并行开发最有价值的场景之一。关键是正确拆分任务：

**案例：将一个单体Express应用重构为模块化架构**

```mermaid
graph TD
    A[单体应用重构] --> B[阶段1: 分析依赖]
    A --> C[阶段2: 提取模块]
    A --> D[阶段3: 更新引用]
    A --> E[阶段4: 测试验证]

    B --> B1[Agent: 生成依赖图]

    C --> C1[Agent A: 提取用户模块]
    C --> C2[Agent B: 提取订单模块]
    C --> C3[Agent C: 提取支付模块]

    D --> D1[Agent D: 更新所有import路径]

    E --> E1[Agent E: 运行全量测试]

    style C1 fill:#bfb
    style C2 fill:#bbf
    style C3 fill:#fbb
```

**阶段1：分析（串行）**

```bash
claude
```

```
> 分析当前项目的模块依赖关系，生成以下内容：
> 1. 文件依赖图（Mermaid格式）
> 2. 按领域分组的模块划分建议
> 3. 每个模块的外部依赖列表
> 4. 重构风险评估（高/中/低）
> 
> 只做分析，不做任何代码修改。
```

**阶段2：提取模块（并行）**

创建任务文件 `refactor-tasks.md`：

```
refactor/user-module | 将src/controllers/userController.ts、src/services/userService.ts、src/models/User.ts提取到modules/user/目录，创建独立的index.ts导出文件
refactor/order-module | 将src/controllers/orderController.ts、src/services/orderService.ts、src/models/Order.ts提取到modules/order/目录，创建独立的index.ts导出文件
refactor/payment-module | 将src/controllers/paymentController.ts、src/services/paymentService.ts、src/models/Payment.ts提取到modules/payment/目录，创建独立的index.ts导出文件
```

```bash
./parallel-claude.sh refactor-tasks.md
```

**阶段3：更新引用（串行，需要全局视角）**

合并模块提取的结果后，用一个会话处理全局引用更新：

```
> 三个模块已经提取完成并合并。现在请：
> 1. 更新src/routes/中所有路由文件的import路径
> 2. 更新src/middleware/中引用了旧路径的文件
> 3. 更新tsconfig.json的paths配置
> 4. 删除旧的文件位置
> 5. 运行npm run build确认编译通过
```

### 5.2 Plan Mode在重构中的关键作用

在大规模重构中，Plan Mode是你的安全网：

```bash
# 在任何修改之前，先进入Plan Mode
claude
```

```
> /plan
> 我要把项目从CommonJS迁移到ES Modules。
> 请先制定详细的迁移计划，包括：
> - 需要修改的文件列表
> - 每个文件的修改策略
> - 依赖链顺序（哪些文件必须先改）
> - 回滚方案
```

Plan Mode的特点：
- **只读模式**：不会修改任何文件，只生成计划
- **全面探索**：会遍历所有相关文件理解依赖
- **结构化输出**：生成步骤清单供你审核
- **审核通过后才执行**：避免"改一半发现问题"的窘境

---

## 第六章：上下文管理——并行开发的隐藏关键

### 6.1 上下文窗口的工作原理

Claude Code有一个200K token的上下文窗口。在并行开发中，每个会话的上下文是独立的，但**每个会话内部**的上下文管理决定了单Agent的工作质量。

```mermaid
graph LR
    subgraph 上下文窗口 200K tokens
        A[系统提示] --> B[CLAUDE.md内容]
        B --> C[对话历史]
        C --> D[已读取的文件]
        D --> E[工具调用结果]
    end

    F[新请求] --> G{剩余空间足够?}
    G -->|是| H[正常处理]
    G -->|否| I[自动压缩/Compaction]
    I --> J[保留关键信息]
    I --> K[丢弃早期细节]
```

### 6.2 /compact命令的精准使用

```
/compact
```

这是Claude Code的上下文压缩命令。它会：
- 将对话历史总结为精简版本
- 保留关键决策和文件修改记录
- 丢弃不再需要的中间步骤
- 典型压缩率：60-70%（从180K降到50-60K）

**最佳使用时机**：

| 时机 | 原因 | 效果 |
|------|------|------|
| 完成一个大任务后 | 清理该任务相关的中间讨论 | 避免后续指令被稀释 |
| 切换任务方向时 | 新任务不需要旧任务细节 | 释放空间给新文件读取 |
| 上下文使用率超70% | 预防自动压缩丢失关键信息 | 手动控制保留哪些内容 |
| 并行会话准备合并前 | 压缩各会话历史便于汇总 | 合并时上下文更清晰 |

**高级用法——带提示的压缩**：

```
/compact 保留以下关键信息：
1. User模块的接口定义和数据库schema
2. 我们决定的错误处理策略（统一用AppError类）
3. 性能优化的决策记录（Redis缓存vs内存缓存，选择Redis）
丢弃所有关于UI样式的讨论和中间调试日志。
```

### 6.3 CLAUDE.md的层级设计

并行开发中，CLAUDE.md的层级设计直接影响每个Agent的行为：

```
project-root/
├── CLAUDE.md                    # 全局项目规范
├── .claude/
│   └── settings.json            # 权限和安全配置
├── src/
│   ├── api/
│   │   └── CLAUDE.md            # API模块专属规范
│   ├── frontend/
│   │   └── CLAUDE.md            # 前端模块专属规范
│   └── tests/
│       └── CLAUDE.md            # 测试规范
```

**全局CLAUDE.md示例**：

```markdown
# 项目配置

## 技术栈
- Backend: Node.js 20 + Express + TypeScript 5.4
- Database: PostgreSQL 16 + Prisma ORM
- Cache: Redis 7
- Testing: Vitest + Supertest

## 代码规范
- 使用ESLint + Prettier，配置在.eslintrc.json
- 提交信息遵循Conventional Commits
- 所有API端点必须有JSDoc注释
- 错误处理统一使用src/utils/AppError.ts

## 常用命令
- 构建: npm run build
- 测试: npm test
- Lint: npm run lint
- 数据库迁移: npx prisma migrate dev

## 依赖安装
- 优先使用项目已有的依赖，不要引入新的包
- 如果必须引入新包，先在CLAUDE.md中说明理由

## Git规范
- 分支命名: feature/*, fix/*, refactor/*
- 不要在worktree之间共享未提交的代码
```

**模块级CLAUDE.md示例** (`src/api/CLAUDE.md`)：

```markdown
# API模块规范

## 路由定义
- 所有路由在src/api/routes/目录下定义
- 使用Express Router，每个资源一个文件
- 路由前缀在src/api/index.ts中统一注册

## 中间件顺序
1. rateLimiter
2. authValidator
3. requestValidator
4. controller
5. errorHandler

## 响应格式
所有API响应遵循统一格式：
{
  "success": boolean,
  "data": T | null,
  "error": { "code": string, "message": string } | null
}
```

---

## 第七章：完整实战项目——并行开发一个全栈功能

### 7.1 项目背景

假设我们有一个电商应用，需要在一个下午内完成以下5个任务：

1. 实现商品评论功能（前端+后端）
2. 修复购物车数量溢出Bug
3. 添加Redis缓存层到商品API
4. 编写支付流程的E2E测试
5. 更新API文档

### 7.2 任务分析与分区

首先分析任务间的文件依赖：

```mermaid
graph TB
    T1[任务1: 评论功能] --> |需要修改| F1[src/models/Review.ts]
    T1 --> |需要修改| F2[src/api/routes/reviews.ts]
    T1 --> |需要修改| F3[src/frontend/ReviewList.tsx]

    T2[任务2: 购物车Bug] --> |需要修改| F4[src/services/CartService.ts]

    T3[任务3: Redis缓存] --> |需要修改| F5[src/middleware/cache.ts]
    T3 --> |需要修改| F6[src/api/routes/products.ts]

    T4[任务4: E2E测试] --> |只新建文件| F7[tests/e2e/payment.flow.ts]

    T5[任务5: API文档] --> |只修改| F8[docs/openapi.yaml]

    style T1 fill:#bfb
    style T2 fill:#fbb
    style T3 fill:#bbf
    style T4 fill:#fbf
    style T5 fill:#ff9
```

结论：5个任务的文件范围完全不重叠，可以安全并行。

### 7.3 执行脚本

创建 `tasks-ecommerce.md`：

```
feature/reviews | 实现商品评论功能：1) 创建Review模型（src/models/Review.ts），字段包括userId、productId、rating(1-5)、content、createdAt；2) 创建评论路由（src/api/routes/reviews.ts），包含POST创建评论、GET获取商品评论列表（分页）、DELETE删除自己的评论；3) 创建前端组件（src/frontend/ReviewList.tsx），展示评论列表和提交表单。参考现有src/api/routes/orders.ts的代码风格。
fix/cart-overflow | 修复购物车数量溢出Bug：当用户在购物车中添加超过库存数量的商品时，系统没有正确校验导致可以下单超过库存。修改src/services/CartService.ts的addToCart方法，添加库存校验逻辑，参考src/services/InventoryService.ts的checkStock方法。同时添加单元测试。
feature/redis-cache | 为商品API添加Redis缓存层：1) 创建缓存中间件src/middleware/cache.ts，支持按路由配置TTL；2) 在src/api/routes/products.ts中应用缓存，GET /products缓存5分钟，GET /products/:id缓存1分钟；3) 商品创建/更新/删除时自动清除相关缓存。使用ioredis客户端（项目已安装）。
test/payment-e2e | 编写支付流程的E2E测试：覆盖完整流程：用户登录→浏览商品→添加购物车→填写地址→选择支付方式→确认支付→验证订单状态。使用项目已有的Playwright框架（参考tests/e2e/auth.flow.ts）。至少覆盖：正常支付、余额不足、网络超时三种场景。
docs/api-update | 更新API文档（docs/openapi.yaml）：1) 添加评论相关端点（POST /reviews、GET /products/:id/reviews、DELETE /reviews/:id）；2) 更新购物车端点，添加库存校验相关的400错误响应；3) 添加缓存相关头（X-Cache、X-Cache-TTL）到商品端点响应头。保持与现有文档风格一致。
```

**启动并行开发**：

```bash
./parallel-claude.sh tasks-ecommerce.md
```

### 7.4 监控与合并

**监控各会话进度**：

```bash
# 在tmux中查看所有窗口
# Ctrl+B 然后按 w 显示窗口列表

# 或者在另一个终端查看worktree状态
for wt in .claude/worktrees/*/; do
    branch=$(git -C "$wt" branch --show-current)
    commits=$(git -C "$wt" rev-list --count HEAD ^main)
    echo "📂 $wt → 分支: $branch → 提交数: $commits"
done
```

**预期输出**：

```
📂 .claude/worktrees/feature/reviews/ → 分支: feature/reviews → 提交数: 7
📂 .claude/worktrees/fix/cart-overflow/ → 分支: fix/cart-overflow → 提交数: 3
📂 .claude/worktrees/feature/redis-cache/ → 分支: feature/redis-cache → 提交数: 5
📂 .claude/worktrees/test/payment-e2e/ → 分支: test/payment-e2e → 提交数: 4
📂 .claude/worktrees/docs/api-update/ → 分支: docs/api-update → 提交数: 2
```

**按顺序合并**：

```bash
cd ~/projects/ecommerce-app
git checkout main

# 1. Bug修复优先
git merge fix/cart-overflow
echo "✅ 购物车修复已合并"

# 2. 基础设施
git merge feature/redis-cache
echo "✅ Redis缓存已合并"

# 3. 功能开发
git merge feature/reviews
echo "✅ 评论功能已合并"

# 4. 测试
git merge test/payment-e2e
echo "✅ E2E测试已合并"

# 5. 文档
git merge docs/api-update
echo "✅ API文档已合并"

# 全量测试
npm test
echo "🎉 所有分支合并完成，测试通过！"

# 清理worktree
for wt in .claude/worktrees/*/; do
    git worktree remove "$wt"
done
echo "🧹 Worktree已清理"
```

### 7.5 完整流程回顾

```mermaid
flowchart TB
    START([开始]) --> ANALYZE[分析任务依赖关系]
    ANALYZE --> PARTITION[按文件范围分区]
    PARTITION --> CREATE_WT[创建5个独立Worktree]
    CREATE_WT --> PARALLEL

    subgraph PARALLEL [并行执行 - 约45分钟]
        direction LR
        A1[Agent 1: 评论功能<br/>7个提交]
        A2[Agent 2: 购物车Bug<br/>3个提交]
        A3[Agent 3: Redis缓存<br/>5个提交]
        A4[Agent 4: E2E测试<br/>4个提交]
        A5[Agent 5: API文档<br/>2个提交]
    end

    PARALLEL --> MONITOR[监控进度]
    MONITOR --> MERGE[按优先级合并]
    MERGE --> TEST[全量测试]
    TEST --> PASS{测试通过?}
    PASS -->|是| CLEAN[清理Worktree]
    PASS -->|否| FIX[修复失败测试]
    FIX --> TEST
    CLEAN --> DONE([完成])

    style PARALLEL fill:#e8f5e9
    style DONE fill:#c8e6c9
```

---

## 第八章：高级技巧与最佳实践

### 8.1 Agent间的通信协议

并行Agent之间需要一种轻量级通信机制。推荐使用文件系统作为通信渠道：

```markdown
# 在CLAUDE.md中添加

## Agent通信协议
每个Agent在worktree根目录创建.agent-status文件，格式：
```json
{
  "task": "feature/reviews",
  "status": "in-progress",  // pending | in-progress | blocked | complete
  "progress": "60%",
  "blocking_issues": [],
  "files_modified": ["src/models/Review.ts", "src/api/routes/reviews.ts"],
  "estimated_completion": "2026-06-10T15:30:00Z"
}
```
主Agent可以读取其他Agent的状态文件来协调整体进度。
```

### 8.2 自动冲突检测脚本

```bash
#!/bin/bash
# check-conflicts.sh - 在合并前检测潜在冲突

TARGET_BRANCH="${1:-main}"

for wt in .claude/worktrees/*/; do
    branch=$(git -C "$wt" branch --show-current 2>/dev/null)
    [ -z "$branch" ] && continue
    
    # 模拟合并检测冲突
    git merge --no-commit --no-ff "$branch" > /dev/null 2>&1
    status=$?
    
    if [ $status -ne 0 ]; then
        echo "❌ $branch 与 $TARGET_BRANCH 有冲突："
        git diff --name-only --diff-filter=U
        git merge --abort > /dev/null 2>&1
    else
        echo "✅ $branch 无冲突"
        git merge --abort > /dev/null 2>&1
    fi
done
```

### 8.3 并行开发的CLAUDE.md完整模板

```markdown
# 项目配置

## 并行开发策略
本项目支持多Agent并行开发，遵循以下原则：

### 文件所有权
- src/api/: API开发Agent拥有修改权
- src/frontend/: 前端开发Agent拥有修改权
- src/services/: 业务逻辑Agent拥有修改权
- tests/: 测试Agent拥有修改权
- docs/: 文档Agent拥有修改权

### 共享文件规则
以下文件可能被多个Agent修改，需要特殊处理：
- package.json: 任何Agent都可以添加依赖，但合并时由主会话处理冲突
- src/types/index.ts: 类型定义变更需要通知其他Agent
- .env.example: 新增环境变量时同步更新

### Worktree生命周期
1. 从main分支创建
2. 完成任务后提交
3. 主会话审核并合并
4. 合并后立即清理worktree

### 合并顺序
1. fix/* (Bug修复，最高优先级)
2. refactor/* (重构)
3. feature/* (新功能)
4. test/* (测试)
5. docs/* (文档)

## 技术栈
[... 你的项目配置 ...]
```

### 8.4 常见陷阱与解决方案

| 陷阱 | 症状 | 解决方案 |
|------|------|----------|
| 上下文耗尽 | Agent开始"遗忘"之前的讨论 | 在任务开始时用`/compact`，任务中途再用一次 |
| 隐式文件冲突 | 两个Agent都修改了package.json | 预先指定一个Agent负责依赖管理 |
| 分支基准漂移 | Worktree分支落后于main太多 | 合并前先`git rebase main` |
| 过度并行化 | 5个以上Agent同时运行 | 限制在3-5个，按文件隔离度选择 |
| Worktree残留 | 磁盘空间被废弃worktree占满 | 定期运行`git worktree prune` |
| Agent间依赖 | Agent B需要Agent A的输出 | 将依赖任务放到第二波，第一波完成后再启动 |

### 8.5 性能调优

**限制并行数量**：

Claude Code的子Agent默认限制为`min(16, CPU核心数-2)`。在资源有限的机器上：

```bash
# 查看推荐并行数
echo "CPU核心: $(nproc)"
echo "推荐并行Agent数: $(( $(nproc) > 4 ? 5 : $(nproc) - 1 ))"
```

**内存考量**：

每个Claude Code会话大约占用50-100MB内存。在8GB内存的机器上：
- 推荐最多4-5个并行会话
- 超过5个可能导致系统交换（swap），反而降低效率

---

## 第九章：非Git项目的隔离方案

如果你的项目不使用Git，Claude Code仍然支持通过Hook机制实现隔离。

### 9.1 VCS无关的Worktree Hook

在`.claude/settings.json`中配置：

```json
{
  "hooks": {
    "WorktreeCreate": {
      "command": "cp -r /path/to/project /path/to/project-worktree-$CLAUDE_WORKTREE_ID"
    },
    "WorktreeRemove": {
      "command": "rm -rf /path/to/project-worktree-$CLAUDE_WORKTREE_ID"
    }
  }
}
```

### 9.2 基于Docker的隔离

对于需要完全环境隔离的项目（如数据库依赖）：

```bash
#!/bin/bash
# docker-parallel-claude.sh

TASKS=("task1" "task2" "task3")

for task in "${TASKS[@]}"; do
    docker run -d --name "claude-$task" \
        -v "$(pwd):/workspace" \
        -e "TASK=$task" \
        claude-code-image \
        claude -p "完成以下任务：$task"
done

# 等待所有容器完成
for task in "${TASKS[@]}"; do
    docker wait "claude-$task"
    docker logs "claude-$task" > "result-$task.log"
    docker rm "claude-$task"
done
```

---

## 延伸阅读

- [Claude Code官方Worktree文档](https://code.claude.com/docs/en/worktrees) — Anthropic官方文档，最权威的参考
- [Claude Code Plan Mode教程](https://www.datacamp.com/tutorial/claude-code-plan-mode) — Datacamp的Plan Mode深度教程
- [Claude Code上下文窗口管理](https://claude.com/blog/using-claude-code-session-management-and-1m-context) — Anthropic官方博客关于上下文管理的文章
- [Claude Code最佳实践](https://code.claude.com/docs/en/best-practices) — 官方推荐的使用最佳实践
- [Multi-Agent Development Workflows](https://dev.to/javatarz/multi-agent-development-workflows-with-claude-code-n23) — 社区开发者分享的实战经验

---

## 训练营适用性评估

| 维度 | 评估 |
|------|------|
| **适合训练营类型** | AI辅助开发训练营、高级软件工程实训、DevOps自动化训练营 |
| **教学时长** | 4-6小时（含上机实操） |
| **学员基础要求** | Git熟练、有Claude Code使用经验、熟悉命令行 |
| **实操比例** | 讲解30% + 实操70% |
| **硬件要求** | 每人一台电脑（≥8GB RAM），稳定网络连接 |
| **分组建议** | 2-3人一组，每组一个Git仓库 |
| **考核方式** | 完成一个3-Agent并行开发任务，提交合并结果 |

---

## 参考来源

1. [Run parallel sessions with worktrees - Claude Code Docs](https://code.claude.com/docs/en/worktrees) — Anthropic官方Worktree功能文档，涵盖`--worktree`标志、子Agent隔离和清理机制
2. [Multi-Agent Development Workflows with Claude Code - DEV Community](https://dev.to/javatarz/multi-agent-development-workflows-with-claude-code-n23) — 社区开发者分享的3-4 Agent并行开发实战经验与工作流设计
3. [Claude Code Worktrees: Parallel Development Without the Chaos - Developers Digest](https://www.developersdigest.tech/blog/claude-code-worktrees) — Claude Code Mastery系列教程中的Worktree专题
4. [Parallel Agentic Development: How to Run Multiple Claude Code Sessions - MindStudio](https://www.mindstudio.ai/blog/parallel-agentic-development-claude-code-worktrees) — Git Worktree、数据库分支和隔离环境的综合并行方案
5. [Claude Code Worktrees: Run Parallel AI Agents Without Git Conflicts - Beam](https://getbeam.dev/blog/claude-code-worktrees-parallel-agents.html) — 并行Agent冲突预防与合并策略详解

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
