Skip to main content

第 18 課:代理團隊與隊友

學習目標

完成本課程後,您將能夠:

  • 瞭解什麼是代理團隊以及何時使用
  • 設定分割窗格協作(tmux、WezTerm、iTerm2)
  • 建立和管理代理團隊
  • 使用 spawnTeam 功能
  • 啟用隊友通訊模式
  • 疑難排解代理團隊問題(2.1.33 已修正)

先決條件

  • 已完成第 1-17 課 - 核心操作與多代理概念
  • 熟悉 tmux、WezTerm 或 iTerm2 - 用於分割窗格工作流程
  • 多代理經驗 - 建議先完成第 14 課
  • 適當的訂閱方案 - 代理團隊需要特定訂閱層級

預估時間: 40 分鐘


什麼是代理團隊?

代理團隊允許多個 Claude Code 實例在分割窗格終端機中協作,即時合作完成同一項任務。

概念:並肩工作的隊友

將代理團隊想像為開發人員的配對程式設計:

┌─────────────────┬─────────────────┐
│ 隊友 1 │ 隊友 2 │
│ (後端開發) │ (前端開發) │
│ │ │
│ 處理中 │ 處理中 │
│ API 端點 │ UI 元件 │
└─────────────────┴─────────────────┘
│ │
└─────────┬─────────┘

通訊頻道

主要好處:

  • 視覺化協作 - 即時看到隊友工作
  • 專業分工 - 每個隊友專注於一個領域
  • 直接通訊 - 隊友之間互傳訊息
  • 並行執行 - 同時執行多項任務
  • 共享情境 - 所有隊友存取相同專案

何時使用代理團隊

最佳使用情況:

  • 全端開發 - 前端與後端同時工作
  • 微服務 - 同時更新多個服務
  • 程式碼審查 - 一名隊友審查,另一名實作
  • 測試與開發 - 一人撰寫測試,一人實作功能
  • 文件與程式碼 - 一人撰寫文件,一人撰寫程式碼
  • 多語言專案 - 不同隊友處理不同語言

何時不使用:

  • 簡單的單一檔案變更
  • 快速查詢或查閱
  • 無法並行化的線性任務

設定分割窗格協作

代理團隊透過分割窗格終端機運作。在 2.1.33 版中,Claude Code 支援:

支援的終端機

  1. tmux(最常見)

    • 在 Linux、macOS、Windows (WSL) 上運作
    • 強大的終端機多工器
    • 需要組態
  2. WezTerm(2.1.33 新增!)

    • 現代 GPU 加速終端機
    • 跨平台(Windows、macOS、Linux)
    • 已修正隊友工作階段通訊
  3. iTerm2(僅 macOS)

    • 功能豐富的 macOS 終端機
    • 原生分割窗格支援
    • 已修正隊友工作階段通訊

為代理團隊組態 tmux

步驟 1:安裝 tmux

# macOS
brew install tmux

# Ubuntu/Debian
sudo apt-get install tmux

# Fedora
sudo dnf install tmux

步驟 2:組態 tmux

建立或編輯 ~/.tmux.conf

# 啟用滑鼠控制
set -g mouse on

# 使用 C-a 作為前綴(可選,比 C-b 更舒適)
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# 使用 | 和 - 分割窗格
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"

# 使用 Alt-arrow 鍵切換窗格(無需前綴)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# 輕鬆循環切換窗格
bind -r C-a select-pane -t :.+

步驟 3:啟動 tmux

tmux new-session -s claude-team

組態 WezTerm(2.1.33 新增!)

步驟 1:安裝 WezTerm

從以下網址下載:https://wezfurlong.org/wezterm/

步驟 2:組態 WezTerm

編輯 ~/.wezterm.lua

local wezterm = require('wezterm')
local config = {}

config.keys = {
-- 水平分割
{
key = '|',
mods = 'CTRL|SHIFT',
action = wezterm.action.SplitHorizontal {
domain = 'CurrentPaneDomain',
},
},
-- 垂直分割
{
key = '-',
mods = 'CTRL|SHIFT',
action = wezterm.action.SplitVertical {
domain = 'CurrentPaneDomain',
},
},
}

return config

驗證終端機支援

您> 檢查我的終端機是否支援代理團隊

Claude:我將檢查您的終端機組態。

[Bash 代理檢查環境]

Claude:您的終端機組態如下:
- 終端機:tmux 3.3a
- 分割支援:是
- 隊友模式:可用

代理團隊將在您目前的工作階段中正常運作。

建立代理團隊

方法 1:使用 spawnTeam 工具

spawnTeam 工具建立一組在分割窗格中工作的隊友。

基本團隊建立:

您> 建立一個 2 人團隊來協助重構這個程式庫

Claude:我將產生一個 2 人團隊來協助重構。

[產生隊友...]

tmux:分割成 3 個窗格(1 個主要 + 2 個隊友)

團隊組態:
┌─────────────┬─────────────┬─────────────┐
│ 主要(您) │ 隊友 1 │ 隊友 2 │
│ 協調 │ 後端 │ 前端 │
└─────────────┴─────────────┴─────────────┘

隊友 1:專注於後端 API 重構
隊友 2:專注於前端元件更新

所有隊友都可以通訊和協調。

方法 2:設定檔組態

settings.json 中組態團隊:

{
"agentTeams": {
"fullstack": {
"name": "全端團隊",
"teammates": [
{
"name": "backend",
"agentType": "general-purpose",
"model": "claude-sonnet-4-5",
"systemPrompt": "你是一名後端開發人員。專注於 API 設計、資料庫操作和伺服器端邏輯。使用 TypeScript 和 Express。"
},
{
"name": "frontend",
"agentType": "general-purpose",
"model": "claude-sonnet-4-5",
"systemPrompt": "你是一名前端開發人員。專注於 UI 元件、狀態管理和使用者體驗。使用 React 和 TypeScript。"
}
]
}
}
}

使用已組態的團隊:

您> 產生全端團隊

Claude:我將產生全端團隊。

[從設定載入團隊組態]

團隊:全端團隊
- 後端隊友(claude-sonnet-4-5)
- 前端隊友(claude-sonnet-4-5)

設定分割窗格環境...

TeammateMode 設定

settings.json 中組態隊友的顯示方式:

{
"teammateMode": "tmux"
}

選項:

  • "tmux" - 使用 tmux 分割窗格(Linux、macOS、WSL)
  • "iterm2" - 使用 iTerm2 分割窗格(僅 macOS)
  • "wezterm" - 使用 WezTerm 分割窗格(跨平台)
  • "in-process" - 無分割窗格,隊友在背景執行

隊友通訊

團隊成員可以使用 SendMessage 工具進行通訊。

通訊模式

1. 主要代理 → 隊友

您(主要):告訴後端隊友實作使用者認證端點

Claude:我將傳送訊息給後端隊友。

[透過 SendMessage 傳送訊息]

隊友(後端):我將實作使用者認證端點。
[後端隊友開始處理認證端點...]

2. 隊友 → 主要代理

隊友(後端):我已完成認證端點。前端隊友,請整合它。

[透過 SendMessage 傳送]

Claude(主要):後端已完成認證端點。
轉發請求給前端隊友...

隊友(前端):我現在將整合認證端點。

3. 隊友 ↔ 隊友

隊友(後端):前端,我需要 API 回應的使用者 ID 格式。

隊友(前端):我們需要 UUID 格式:{ "id": "uuid", "email": "..." }

隊友(後端):知道了,現在更新回應格式。

監控隊友活動

在他們的分割窗格中觀看隊友正在做什麼:

┌───────────────────┬───────────────────┬───────────────────┐
│ 主要:協調中 │ 後端:工作中 │ 前端:閒置 │
│ │ │ │
│ Claude:後端, │ 隊友:正在讀取 │ 隊友:等待中... │
│ 更新 API │ src/api/auth.ts │ 等待後端... │
│ │ │ │
│ [情境顯示 │ [情境顯示 │ [情境顯示 │
│ 所有隊友] │ 認證檔案] │ 元件檔案] │
└───────────────────┴───────────────────┴───────────────────┘

實作範例:全端功能

讓我們使用代理團隊建立完整功能。

情境:使用者認證功能

任務: 實作具有後端 API 和前端 UI 的使用者註冊和登入。

步驟 1:建立團隊

您> 建立一個全端團隊來實作使用者認證

Claude:我將產生一個 2 隊友全端團隊。

[在分割窗格中產生隊友]

團隊結構:
┌────────────┬──────────────┬──────────────┐
│ 您(主要) │ 後端 │ 前端 │
│ │ 隊友 │ 隊友 │
└────────────┴──────────────┴──────────────┘

步驟 2:分配任務

您> 後端隊友,實作註冊和登入 API 端點。
前端隊友,建立登入和註冊表單。

Claude:我將傳送這些任務給兩位隊友。

[傳送訊息...]

步驟 3:觀察協作

後端窗格:

隊友(後端):我將實作認證 API 端點。

[建立 src/api/auth.ts]
- POST /api/auth/register
- POST /api/auth/login
- GET /api/auth/me

[實作驗證和 JWT token]

前端窗格:

隊友(前端):我將建立認證 UI 元件。

[建立 components/LoginForm.tsx]
[建立 components/RegisterForm.tsx]
[實作表單驗證]

步驟 4:協調整合

隊友(後端):前端,API 已準備好在:
- POST /api/auth/register
- POST /api/auth/login

請求內容:{ "email": string, "password": string }
回應:{ "token": string, "user": {...} }

隊友(前端):收到了!現在與 API 整合。

[前端更新以呼叫後端端點]

步驟 5:主要代理協調

您:兩位隊友,請測試完整流程

[兩位隊友執行測試]

後端:所有 API 測試通過 ✓
前端:UI 整合正常運作 ✓

Claude:認證功能已完成!

疑難排解(2.1.33 修正)

常見問題與解決方案

問題 1:「代理團隊在您目前的方案上不可用」

此警告出現在您的訂閱未包含代理團隊時。

解決方案:

  • 代理團隊需要特定的訂閱層級
  • /usage/status 檢查您的方案
  • 如需請升級

問題 2:隊友無法傳送/接收訊息(2.1.33 已修正!)

先前版本的 tmux 隊友通訊有問題。

2.1.33 已修正:

  • tmux 中的隊友工作階段現在可以正確傳送和接收訊息
  • 新增 WezTerm 支援用於分割窗格隊友
  • 已修正 iTerm2 隊友通訊

問題 3:隊友以行程內模式執行而不是分割窗格

原因: 終端機不支援分割窗格或未設定 teammateMode

解決方案:

  1. 檢查終端機支援:/doctor
  2. 在設定中設定 teammateMode
    {
    "teammateMode": "tmux" // 或 "wezterm", "iterm2"
    }
  3. 重新啟動 Claude Code

問題 4:iTerm2 靜默回退到行程內模式

原因: 在 tmux 內時未偵測到 iTerm2 CLI。

解決方案:

  • 不要在 tmux 內執行 tmux
  • 直接在 iTerm2 中啟動 Claude Code(不在 tmux 內)
  • 或使用 tmux 作為主要終端機

最佳實踐

1. 角色專業化

為每個隊友指定清楚、專注的角色:

{
"agentTeams": {
"microservices": {
"teammates": [
{
"name": "auth-service",
"systemPrompt": "你只處理認證服務。專注於安全性、JWT 處理和使用者管理。"
},
{
"name": "data-service",
"systemPrompt": "你只處理資料服務。專注於資料庫操作、查詢和資料驗證。"
},
{
"name": "api-gateway",
"systemPrompt": "你只處理 API 閘道。專注於路由、速率限制和請求編排。"
}
]
}
}
}

2. 通訊協定

建立清楚的通訊模式:

後端 → 前端:「API 就緒」模式
1. 後端完成端點
2. 傳送訊息與端點文件
3. 前端確認並整合

前端 → 後端:「API 請求」模式
1. 前端需要新端點
2. 傳送訊息與需求
3. 後端確認並實作

3. 情境共享

使用共享情境檔案:

<!-- .claude/team-context.md -->
# 團隊情境

## API 端點
- POST /api/users - 建立使用者
- GET /api/users/:id - 取得使用者
- PUT /api/users/:id - 更新使用者

## 資料模型
User:{ id, email, name, createdAt, updatedAt }

## 團隊職責
- 後端:API 實作、資料庫
- 前端:UI 元件、API 整合

所有隊友都可以參考此檔案。

4. 一起測試

讓隊友測試彼此的工作:

後端:我已實作使用者端點。你能測試嗎?
前端:現在測試...
[前端執行整合測試]

前端:所有測試通過!做得好。
後端:謝謝!準備好下一個任務。

✅ 檢查您的理解

  1. 哪些終端機支援代理團隊?

    • 只有 tmux
    • tmux、WezTerm 和 iTerm2
    • 所有終端機
    • 只有 iTerm2
  2. 什麼工具用於建立代理團隊?

    • spawnAgent
    • spawnTeam
    • createTeam
    • teamUp
  3. True or False: 隊友可以直接與彼此通訊。

    • True
    • False
  4. 2.1.33 修正了關於代理團隊的什麼?

    • 新增 tmux 支援
    • 修正 tmux 中的隊友訊息傳遞
    • 新增 spawnTeam 工具
    • 修正 WezTerm 渲染
  5. 一個團隊可以有多少隊友?

    • 只有 1 個
    • 最多 2 個
    • 您的終端機可以顯示的數量
    • 最多 4 個

答案: 1-b, 2-b, 3-True, 4-b, 5-c


總結

在本課程中,您學到了:

  • 代理團隊 - 在分割窗格中運作的多個 Claude 實例
  • 分割窗格終端機 - tmux、WezTerm(新增!)、iTerm2 支援
  • spawnTeam - 建立和管理隊友
  • 隊友通訊 - SendMessage 用於協調
  • 2.1.33 修正 - 可靠的隊友訊息傳遞

下一步

在**第 19 課:分叉情境與進階技能**中,您將學到:

  • 分叉子代理情境
  • 技能熱重載(自動!)
  • 語言設定
  • 進階技能 frontmatter

進階閱讀


繼續到第 19 課:分叉情境與進階技能