Solo Unicorn Club logo

Field Note / c-15

我怎么用 Claude Code Agent Teams 做多仓库项目

Date2026-03-07
Length2,600
Seriestech deep dive

上个月我用 Claude Code Agent Teams 做了一个涉及 3 个仓库的重构项目:一个 Python 后端、一个 TypeScript 前端、一个共享的 protobuf...

#AI Agent#Claude Code#Agent Teams#多仓库开发#工程效率#实战
我怎么用 Claude Code Agent Teams 做多仓库项目

我怎么用 Claude Code Agent Teams 做多仓库项目

开场

上个月我用 Claude Code Agent Teams 做了一个涉及 3 个仓库的重构项目:一个 Python 后端、一个 TypeScript 前端、一个共享的 protobuf 定义库。按传统方式需要一个工程师一周的工作量,Agent Teams 用 4 小时完成了,API 成本 $47。这篇文章详细拆解 Agent Teams 的工作机制,以及我怎么在实际项目中用它做多仓库协调。

问题背景

多仓库项目的核心难题是协调:改了 protobuf 定义,前后端代码都要同步更新。改了 API 接口,所有调用方都要适配。传统做法是一个人跨仓库切换,人肉保持一致性。这个过程枯燥、容易出错、极度消耗注意力。

Agent Teams 提供了另一种思路:让多个 Claude Code 实例各自负责一个仓库(或一个模块),通过 Lead-Teammate 模式协调工作。

Claude Code Agent Teams 目前是实验性功能,默认关闭。但从我的实际使用来看,它在结构清晰的多仓库项目中已经非常可用。

核心架构

Agent Teams 工作模型

                 ┌──────────────┐
                 │  Lead Agent  │
                 │  (协调者)     │
                 └──────┬───────┘
                        │
           ┌────────────┼────────────┐
           │            │            │
    ┌──────▼──────┐┌────▼────┐┌─────▼─────┐
    │ Teammate A  ││  B      ││   C       │
    │ (后端仓库)  ││(前端)   ││(Proto)    │
    └─────────────┘└─────────┘└───────────┘
           │            │            │
    ┌──────▼──────┐┌────▼────┐┌─────▼─────┐
    │ backend/    ││frontend/││ protos/   │
    │ repo        ││ repo    ││ repo      │
    └─────────────┘└─────────┘└───────────┘

Lead Agent:负责任务分解、进度追踪、结果汇总。它不直接写代码,而是把任务分配给 Teammate。

Teammate Agent:每个 Teammate 独立运行在自己的 context window 里,可以读写文件、运行命令、执行测试。Teammate 之间可以互相发消息。

Task System:团队共享一个任务列表,支持依赖关系追踪。当一个 blocking task 完成后,依赖它的下游任务自动解锁。

开启方式

// settings.json 或环境变量
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

实现细节

Step 1: 规划任务结构

在启动 Agent Teams 之前,你需要给 Lead Agent 一个清晰的任务说明。这是最关键的步骤——任务描述的质量直接决定了整个团队的执行效果。

我给 Lead Agent 的初始 prompt:

项目:将用户认证系统从 session-based 迁移到 JWT-based。

涉及仓库:
1. protos/ - 共享的 protobuf 定义(需要新增 JWT token 相关 message)
2. backend/ - Python FastAPI 后端(需要实现 JWT 签发和验证)
3. frontend/ - TypeScript React 前端(需要替换 cookie 认证为 Bearer token)

约束:
- protos 变更必须先完成,后端和前端依赖它
- 后端变更完成后,前端才能开始集成测试
- 所有仓库的现有测试必须继续通过
- 不要修改数据库 schema

请分解任务并分配给团队成员。

Lead Agent 会自动把这些任务分解成更小的子任务,并设置依赖关系。

Step 2: Teammate 配置

每个 Teammate 需要在对应仓库的 CLAUDE.md 中提供充分的上下文:

# backend/ 仓库的 CLAUDE.md

## 技术栈
- Python 3.12, FastAPI, SQLAlchemy
- 测试: pytest
- 认证: 当前是 session-based (见 auth/session.py)

## 关键文件
- auth/session.py - 当前认证逻辑
- auth/middleware.py - 认证中间件
- tests/test_auth.py - 认证测试

## 运行命令
- 测试: pytest tests/
- 类型检查: mypy src/
- 服务启动: uvicorn main:app --reload

Step 3: 实际执行过程

我观察到 Lead Agent 的实际任务分配:

Phase 1(Teammate C 独立工作):

Task 1: [C - Proto] 新增 JWTToken message 和 AuthResponse message
Task 2: [C - Proto] 生成 Python 和 TypeScript 代码并提交

Phase 2(Teammate A、B 并行,依赖 Phase 1):

Task 3: [A - Backend] 实现 JWT 签发逻辑 (jwt_issuer.py)
Task 4: [A - Backend] 实现 JWT 验证中间件
Task 5: [A - Backend] 更新现有 API endpoint 使用新认证
Task 6: [B - Frontend] 实现 token 存储和刷新逻辑
Task 7: [B - Frontend] 替换 axios 请求拦截器

Phase 3(依赖 Phase 2):

Task 8: [A - Backend] 运行全量测试并修复失败
Task 9: [B - Frontend] 运行 E2E 测试并修复失败
Task 10: [Lead] 汇总所有变更,验证跨仓库一致性

Step 4: 跨仓库协调的关键——消息机制

Agent Teams 的消息系统是协调多仓库工作的核心。当 Teammate C 完成了 protobuf 定义后,它会通知 Lead:

[Teammate C → Lead]:
Proto 定义已更新。新增了以下 message:
- JWTToken (fields: access_token, refresh_token, expires_at)
- AuthResponse (fields: user_id, token, permissions)
生成的代码路径:
- Python: generated/auth_pb2.py
- TypeScript: generated/auth.ts

Lead 收到后,把相关信息转发给 Teammate A 和 B,它们基于这些信息开始各自的工作。

Step 5: 实际代码示例

Teammate A 在后端仓库生成的 JWT 验证中间件:

# auth/jwt_handler.py
import jwt
from datetime import datetime, timedelta, timezone
from fastapi import HTTPException, Security
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials

security = HTTPBearer()

JWT_SECRET = "..."  # 实际从环境变量读取
JWT_ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30

def create_access_token(user_id: str, permissions: list[str]) -> str:
    """签发 JWT token"""
    payload = {
        "sub": user_id,
        "permissions": permissions,
        "exp": datetime.now(timezone.utc) + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES),
        "iat": datetime.now(timezone.utc)
    }
    return jwt.encode(payload, JWT_SECRET, algorithm=JWT_ALGORITHM)

async def verify_token(
    credentials: HTTPAuthorizationCredentials = Security(security)
) -> dict:
    """验证 JWT token 的 FastAPI 依赖"""
    try:
        payload = jwt.decode(
            credentials.credentials,
            JWT_SECRET,
            algorithms=[JWT_ALGORITHM]
        )
        if payload["exp"] < datetime.now(timezone.utc).timestamp():
            raise HTTPException(status_code=401, detail="Token 已过期")
        return payload
    except jwt.InvalidTokenError:
        raise HTTPException(status_code=401, detail="无效的 Token")

实战经验

生产数据

指标 数值
总耗时 3 小时 52 分
API 成本 $47(Sonnet 4.5 为主)
Lead 消耗 token ~85,000 input / ~22,000 output
每个 Teammate 消耗 ~120,000 input / ~45,000 output
生成/修改文件数 34 个
测试通过率 最终 100%(中间有 3 轮修复)
人工干预次数 2 次(一次修正依赖版本,一次调整 token 过期策略)

对比人工:一个熟悉这三个仓库的工程师估计需要 5-7 天完成同样的工作。成本 $47 vs 一周工程师薪资。

踩过的坑

坑 1:任务分解太粗会导致 Teammate 迷失。 最初我只给了一个大任务 "迁移后端认证到 JWT",Teammate A 花了大量 token 在探索代码上,反复读取不相关的文件。改成精确的子任务后("修改 auth/middleware.py,替换 session 验证为 JWT 验证"),效率提升了 3 倍。

坑 2:多仓库 worktree 管理。 Agent Teams 默认在当前目录工作。处理多仓库时,我需要提前把三个仓库 clone 到同一个父目录下,并在 Lead 的 prompt 里明确说明路径结构。

坑 3:Teammate 之间的消息可能延迟。 Teammate C 完成后发消息给 Lead,Lead 再转发给 A 和 B。这个链路有时候会出现信息丢失(Lead 没有把关键细节转发)。解决方案:要求 Teammate 把关键输出写入共享文件(比如 shared/proto_changes.md),其他 Teammate 直接读取文件。

适用范围

适合 Agent Teams 的场景:

  • 涉及 2-5 个仓库的协调变更
  • 任务可以清晰分解为独立子任务
  • 有明确的依赖关系(A 先做完,B 才能开始)

不适合的场景:

  • 单仓库内的工作——直接用一个 Claude Code 实例更高效
  • 高度耦合的代码变更——如果每个 Teammate 的修改互相影响,协调成本会超过收益
  • 需要频繁人工决策的工作——Agent Teams 适合执行,不适合需要大量判断的设计工作

总结

三条核心 takeaway:

  1. 任务分解的质量决定 Agent Teams 的效果——花 30 分钟写一个清晰的任务分解文档,比直接丢一个模糊需求然后等 Agent 自己摸索,节省的成本可以是 10 倍。

  2. 跨仓库协调的核心是共享文件,而非消息传递——Agent 之间的消息通信有信息损失的风险。关键数据(接口定义、数据格式、变更说明)写成文件,让所有 Teammate 直接读取。

  3. Agent Teams 不是替代工程师,而是放大器——它擅长执行结构清晰的任务(重构、迁移、批量修改),但任务的定义、架构的决策、边界条件的判断,仍然需要人来做。最佳用法是人做设计和分解,Agent 做执行和验证。

你有没有试过用 Agent Teams 做多仓库项目?效果怎么样?欢迎分享你的经验。