測驗:tmux x Claude Code 多個 Claude Code 同時跑
共 5 題,點選答案後會立即顯示結果
1. 文章提到 tmux + Claude Code 有三種工作模式,其中「監督模式」的核心概念是什麼?
2. 在多任務模式中,為什麼要避免讓兩個 Claude Code 同時編輯同一個檔案?
3. SSH 連線中斷時,為什麼 tmux 裡的 Claude Code 不會受影響?
4. 以下指令的作用是什麼?
5. 如果多個 Claude Code 的任務之間有檔案重疊的風險,文章建議使用什麼方案來做完全隔離?
前兩篇學會了 tmux 的基本操作和面板切分,現在進入真正的重頭戲:怎麼用 tmux 同時跑多個 Claude Code,讓你的開發效率直接翻倍。
一句話說明
tmux 最強的用法就是「讓好幾個 Claude Code 各做各的事,你在旁邊看著,需要時切過去檢查」。
學習目標
讀完這篇,你會知道:
- 怎麼設計適合 AI 輔助開發的 tmux 佈局
- 怎麼同時跑多個 Claude Code 實例處理不同任務
- 「一邊讓 Claude 跑、一邊自己做事」的工作模式
- SSH 遠端開發時怎麼搭配 tmux 不怕斷線
- 什麼時候該「盯著看」、什麼時候該「放著跑」
前置知識
- 會用 tmux 的基本操作(session、window、pane 的建立與切換)
- 有使用 Claude Code 的經驗
三種工作流模式
先講結論。tmux + Claude Code 有三種主要的工作模式,你可以根據任務性質選擇:
| 模式 | 適合場景 | 你在幹嘛 |
|---|---|---|
| 監督模式 | 修改核心邏輯、不太確定 Claude 會改什麼 | 盯著看,隨時介入 |
| 多任務模式 | 同時推進多個獨立功能 | 在不同視窗間切換檢查 |
| 放養模式 | 單純的重複性工作、文件生成 | 丟出去跑,回來收結果 |
接下來一個一個看。
模式一:監督模式
核心概念:一個面板跑 Claude Code,旁邊的面板即時觀察它在改什麼。
這是最安全的模式。當你不太確定 Claude 會怎麼改你的程式碼,就用這招。
佈局設定
左邊大面板跑 Claude Code,右邊小面板用來監控:
# 建立 session
tmux new-session -s dev
# 左邊跑 Claude Code(目前所在的面板)
# 先水平切一個右邊面板
# Ctrl-b %
# 右邊面板用來監控檔案變化
Code language: PHP (php)切完之後,你的畫面大概長這樣:
+----------------------------+------------------+
| | |
| Claude Code | 監控面板 |
| (主要工作區) | watch/git diff |
| | |
+----------------------------+------------------+
右邊面板可以放什麼
根據你想觀察的東西,右邊面板有幾種常見用法:
用 watch 即時監控檔案變化:
# 每 2 秒刷新一次,顯示 src 目錄下最近修改的檔案
watch -n 2 'find src -name "*.ts" -newer /tmp/marker -type f 2>/dev/null | head -20'
Code language: PHP (php)這在幹嘛:
watch -n 2表示每 2 秒執行一次後面的指令,讓你即時看到哪些檔案被 Claude 改過。
用 git diff 看改了什麼:
# 每 2 秒顯示目前的 git 變更
watch -n 2 'git diff --stat'
Code language: PHP (php)這在幹嘛:
git diff --stat會列出哪些檔案被改了、增減了幾行,讓你快速掌握 Claude 的改動範圍。
用 tail -f 盯 log:
# 如果 Claude 在跑測試,你可以盯測試輸出
tail -f test-output.log
Code language: CSS (css)監督模式的操作流程
- 左邊面板:啟動 Claude Code,給它任務
- 右邊面板:用
watch或git diff監控 - 發現不對勁:
Ctrl-b然後方向鍵切到左邊,按Esc中斷 Claude - 沒問題就讓它跑完
**Vibe Coder 檢查點**:監督模式的關鍵是「能隨時看到 Claude 在改什麼」。如果你看到它改了不該改的檔案,馬上切過去中斷。
模式二:多任務模式
核心概念:不同視窗各跑一個 Claude Code,分別處理前端、後端、測試等任務。
當你有多個獨立的任務要同時推進,這是最實用的模式。
佈局設定
用不同的 window(視窗)來隔離每個任務:
# 建立 session,第一個視窗自動命名為 frontend
tmux new-session -s project -n frontend
# 新增後端視窗
# Ctrl-b c (建立新視窗)
# Ctrl-b , (重新命名為 backend)
# 新增測試視窗
# Ctrl-b c
# Ctrl-b , (重新命名為 tests)
Code language: PHP (php)或者用一行指令搞定:
tmux new-session -s project -n frontend \; \
new-window -n backend \; \
new-window -n tests \; \
select-window -t frontend
Code language: JavaScript (javascript)這在幹嘛:一次建好三個視窗,分別叫
frontend、backend、tests,最後切回frontend。\;是 tmux 的指令分隔符號。
你的視窗列會長這樣:
[project] 0:frontend* 1:backend 2:tests
Code language: CSS (css)每個視窗跑不同的 Claude Code
在每個視窗裡啟動各自的 Claude Code,給不同的任務:
# 視窗 frontend:
claude
> 幫我把登入頁面改成用 shadcn/ui 的元件
# 視窗 backend(Ctrl-b 1 切過去):
claude
> 幫我加一個 /api/users 的 CRUD endpoint
# 視窗 tests(Ctrl-b 2 切過去):
claude
> 幫現有的 auth module 補上單元測試
Code language: PHP (php)切換與檢查
Ctrl-b 0 → 切到 frontend 看進度
Ctrl-b 1 → 切到 backend 看進度
Ctrl-b 2 → 切到 tests 看進度
Ctrl-b w → 列出所有視窗,用方向鍵選
多任務模式的關鍵:避免衝突
多個 Claude Code 同時跑,最怕的就是改到同一個檔案。遵守這個原則:
每個 Claude 負責不同的檔案範圍
好的分工:
| 視窗 | Claude 的任務 | 碰到的檔案 |
|---|---|---|
| frontend | 改登入頁面 | src/pages/Login.tsx |
| backend | 加 API | src/api/users.ts |
| tests | 補測試 | tests/auth.test.ts |
壞的分工(會衝突):
| 視窗 | Claude 的任務 | 碰到的檔案 |
|---|---|---|
| task-1 | 重構 utils | src/utils.ts |
| task-2 | 修 utils 的 bug | src/utils.ts |
如果兩個 Claude 同時改同一個檔案,後存的會覆蓋先存的,之前的修改就白做了。
進階:用 Git Worktree 做完全隔離
如果你的任務之間有檔案重疊的風險,可以用 Git Worktree 讓每個 Claude 在完全獨立的目錄裡工作:
# 建立 worktree(各自有獨立的檔案副本,但共享 git 歷史)
git worktree add ../project-feature-a -b feature-a
git worktree add ../project-feature-b -b feature-b
Code language: PHP (php)這在幹嘛:
git worktree add會在另一個目錄建立同一個 repo 的獨立工作副本,各自在不同的 branch 上。修改互不影響。
然後在 tmux 裡:
# 視窗 1:feature-a
cd ../project-feature-a && claude
# 視窗 2:feature-b
cd ../project-feature-b && claude
Code language: PHP (php)完成後合併:
# 回到主目錄
cd ../project
git merge feature-a
git merge feature-b
# 清理 worktree
git worktree remove ../project-feature-a
git worktree remove ../project-feature-b
Code language: PHP (php)模式三:放養模式
核心概念:用 claude -p 在背景跑,定期回來收結果。
適合那些「你很確定 Claude 不會搞砸」的任務,例如:生成文件、格式化程式碼、批次重新命名。
什麼是 claude -p
-p(或 --print)是 Claude Code 的非互動模式。它收到指令後直接執行,做完就結束,不會等你輸入。
# 最基本的用法:問一個問題,印出答案
claude -p "解釋 src/auth.ts 的邏輯"
# 讓它做事情:加上 --allowedTools 授權工具
claude -p "幫 auth module 加上 JSDoc 註解" --allowedTools "Read,Edit"
# 結果存檔
claude -p "幫我寫一份 API 文件" > api-docs.md
Code language: PHP (php)這在幹嘛:
–-p表示「非互動模式」,Claude 執行完就退出
–--allowedTools指定 Claude 可以用哪些工具(不指定的話它只能回答,不能改檔案)
–>把輸出導到檔案
在 tmux 裡放養
# 開一個專門放養的 session
tmux new-session -s background -n task1
# 丟任務下去
claude -p "掃描整個 src 目錄,找出所有沒用到的 import 並移除" \
--allowedTools "Read,Edit,Bash"
# 開新視窗再丟一個
# Ctrl-b c
claude -p "幫所有 .ts 檔案加上 JSDoc 註解" \
--allowedTools "Read,Edit"
Code language: PHP (php)然後你可以 detach(Ctrl-b d),去做其他事。過一陣子回來:
tmux attach -t background
切到各個視窗看結果就好。
放養模式的進階用法
接續上次的對話:
# 第一次執行
claude -p "分析這個專案的架構" --output-format json > result.json
# 擷取 session ID
session_id=$(cat result.json | jq -r '.session_id')
# 用同一個 session 繼續問
claude -p "那你覺得哪裡最需要重構?" --resume "$session_id"
Code language: PHP (php)這在幹嘛:
--output-format json會輸出包含session_id的 JSON。用--resume帶上這個 ID,就能接續之前的上下文繼續對話。
串進 shell 腳本:
#!/bin/bash
# review.sh — 自動 review 所有改過的檔案
for file in $(git diff --name-only); do
echo "=== Reviewing: $file ==="
claude -p "Review 這個檔案的變更,指出潛在問題:$(git diff $file)" \
--output-format text
echo ""
done
Code language: PHP (php)實戰範例:開發一個功能的完整流程
假設你要開發一個「使用者通知」功能,來看完整的 tmux + Claude Code 工作流。
Step 1:建立 session 和分配任務
# 建立工作 session,三個視窗
tmux new-session -s notification -n api \; \
new-window -n ui \; \
new-window -n test \; \
select-window -t api
Code language: PHP (php)Step 2:各視窗啟動 Claude Code
# 視窗 api(Ctrl-b 0):
claude
> 在 src/api/ 下建立通知系統的 CRUD API,包含
> - GET /notifications
> - POST /notifications
> - PATCH /notifications/:id/read
> 使用現有的 Express + Prisma 架構
# 視窗 ui(Ctrl-b 1):
claude
> 在 src/components/ 下建立通知元件:
> - NotificationBell(右上角的鈴鐺圖示 + 未讀數量)
> - NotificationList(通知列表)
> 用 React + Tailwind,參考現有元件的風格
# 視窗 test(Ctrl-b 2):
# 先等 API 寫好再跑,所以先做別的
claude
> 幫我整理 src/utils/ 裡面的 TODO 註解,列出所有待辦事項
Code language: PHP (php)Step 3:切換檢查進度
Ctrl-b 0 → API 寫到哪了?看看 Claude 的輸出
Ctrl-b 1 → UI 元件做好了嗎?
Ctrl-b 2 → TODO 整理完了?好,開始寫測試
# 回到 test 視窗,給新任務
> 好的,現在 src/api/notifications.ts 已經寫好了,
> 幫它寫整合測試
Code language: PHP (php)Step 4:收工
# 所有 Claude 都跑完後,在任一視窗檢查成果
git diff --stat
git add -A
git commit -m "feat: add notification system"
Code language: PHP (php)遠端開發:SSH + tmux 不怕斷線
這是 tmux 最經典的用途之一。連到遠端伺服器跑 Claude Code,就算 SSH 斷線也不會中斷。
基本流程
# 1. SSH 連到伺服器
ssh [email protected]
# 2. 建立 tmux session
tmux new-session -s remote-dev
# 3. 在裡面跑 Claude Code
claude
# 4. 給它一個長時間的任務
> 重構整個 src/legacy/ 目錄,把 CommonJS 改成 ES modules
# 5. Detach(斷開但不結束)
# Ctrl-b d
# 6. 斷開 SSH(甚至關掉筆電去睡覺)
exit
Code language: PHP (php)第二天:
# 1. 重新 SSH
ssh [email protected]
# 2. 重新接上 tmux session
tmux attach -t remote-dev
# 3. Claude Code 還在跑(或已經跑完),檢查結果就好
Code language: PHP (php)為什麼這行得通
你的筆電 ──SSH──→ 遠端伺服器
└── tmux session(一直活著)
└── Claude Code(一直在跑)
SSH 只是你和伺服器之間的「管道」。tmux session 是跑在伺服器上的,跟你的 SSH 連線無關。所以:
- SSH 斷線 → tmux 不受影響
- 關掉筆電 → tmux 不受影響
- 換一台電腦 SSH 回去 → tmux attach 就接回來了
遠端開發的實用技巧
自動 attach:
在你的 .bashrc 或 .zshrc 加上:
# 如果是 SSH 登入,自動 attach 到 dev session(沒有就建一個)
if [ -n "$SSH_CONNECTION" ] && [ -z "$TMUX" ]; then
tmux attach -t dev 2>/dev/null || tmux new-session -s dev
fi
Code language: PHP (php)這在幹嘛:判斷是否透過 SSH 登入(
$SSH_CONNECTION),而且還沒在 tmux 裡面($TMUX為空),就自動 attach 或建新 session。
命名慣例:管理多個任務不迷路
當你同時開很多 session 和 window,好的命名是關鍵。
Session 命名
# 用專案名稱
tmux new-session -s myapp
# 用任務描述
tmux new-session -s fix-auth-bug
# 用日期 + 任務
tmux new-session -s 0207-refactor
Code language: PHP (php)Window 命名
# 用功能區域
Ctrl-b , → api
Ctrl-b , → ui
Ctrl-b , → test
Ctrl-b , → docs
Code language: PHP (php)確認目前的全貌
# 列出所有 session 和 window
tmux ls
Code language: PHP (php)輸出範例:
fix-auth-bug: 2 windows (created Fri Feb 7 10:30:00 2026)
myapp: 3 windows (created Fri Feb 7 09:00:00 2026)
notification: 3 windows (created Fri Feb 7 14:00:00 2026)
Code language: CSS (css)Claude Code session 也要命名
Claude Code 自己也有 session 的概念。在 Claude Code 裡面用 /rename 命名:
> /rename notification-api
之後可以用 claude --resume notification-api 接回來。這跟 tmux 的 session 是獨立的兩套東西,但搭配使用時建議用一致的命名。
多個 Claude Code 實例的注意事項
Token 用量
每個 Claude Code 實例都是獨立的 context window,各自消耗 token。同時跑三個,token 用量大約是三倍。
實際成本 = 單個 Claude Code 用量 x 同時跑的數量
所以不要無腦開一堆。想清楚哪些任務值得平行跑,哪些等前一個跑完再接著做就好。
如何分配任務避免衝突
按檔案範圍分:
Claude A → 只碰 src/api/ 底下的檔案
Claude B → 只碰 src/components/ 底下的檔案
Claude C → 只碰 tests/ 底下的檔案
按功能層分:
Claude A → 資料庫 migration + model
Claude B → API route + controller
Claude C → 前端頁面 + 元件
按專案分(用 Git Worktree):
Claude A → worktree-feature-x/(完全獨立的副本)
Claude B → worktree-feature-y/(完全獨立的副本)
同時編輯同一檔案會怎樣
最壞的情況:後存的覆蓋先存的,之前的修改消失。
如果真的不小心衝突了:
# 用 git 找回被覆蓋的版本
git diff # 看目前的變更
git stash # 暫存目前的
git checkout -- . # 還原
git stash pop # 拿回暫存的
# 手動合併
Code language: PHP (php)進階:Agent Teams(實驗性功能)
Claude Code 有一個實驗性功能叫 Agent Teams,讓多個 Claude Code 實例自動協作。當你在 tmux 裡面跑時,每個 teammate 會自動開一個 pane。
// ~/.claude/settings.json
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}
Code language: JSON / JSON with Comments (json)啟用後,你可以跟 Claude 說:
建立一個 agent team 來重構通知模組。
一個負責 API、一個負責前端、一個做測試。
Claude 會自動建立團隊、分配任務、在 tmux pane 裡顯示每個 teammate 的進度。
注意:這是實驗功能,目前有些限制(例如無法 resume、有時 teammate 會意外停止)。如果你想要穩定的多 Claude 工作流,建議先用前面介紹的手動模式。
必看懂 vs 知道就好
必看懂(每天都會用到):
- 監督模式的佈局(一邊 Claude Code,一邊 watch/git diff)
- 多任務模式的視窗管理(Ctrl-b 0/1/2 快速切換)
- SSH + tmux 的 detach/attach 流程
- 任務分工原則(不同 Claude 碰不同的檔案)
知道就好(需要時再回來查):
- claude -p 的放養模式細節
- Git Worktree 的完全隔離方案
- Agent Teams 實驗功能
- Session 接續(--resume)的用法
Vibe Coder 檢查點
看到 tmux + 多 Claude Code 的操作時,確認以下幾點:
- 有沒有命名 — session 和 window 有意義的名字,不然多開幾個就搞混了
- 有沒有分工 — 每個 Claude 負責不同檔案,避免覆蓋衝突
- 有沒有監控 — 至少用
git diff --stat知道改了什麼 - 有沒有備份 — 重要操作前先
git commit,隨時能回退
下一篇預告
第 4 篇(最終回)會講 tmux 的客製化設定,包括 .tmux.conf 怎麼寫、怎麼自訂快捷鍵、搭配 Claude Code 的最佳設定。
本篇指令速查
| 指令 | 功能 |
|---|---|
tmux new-session -s name -n window |
建立有名字的 session 和視窗 |
Ctrl-b % |
水平切割面板 |
Ctrl-b c |
新增視窗 |
Ctrl-b , |
重新命名視窗 |
Ctrl-b 0/1/2 |
切到第 0/1/2 個視窗 |
Ctrl-b w |
列出所有視窗 |
Ctrl-b d |
Detach(離開但不關閉) |
tmux attach -t name |
重新接回 session |
tmux ls |
列出所有 session |
claude -p "指令" |
Claude Code 非互動模式 |
claude -p "指令" --allowedTools "Read,Edit" |
非互動模式 + 授權工具 |
claude --resume session-id |
接回指定的 Claude Code session |
git worktree add ../dir -b branch |
建立 Git Worktree |
git worktree remove ../dir |
移除 Git Worktree |
watch -n 2 'command' |
每 2 秒執行一次指令 |
進階測驗:tmux x Claude Code 多個 Claude Code 同時跑
共 5 題,包含情境題與錯誤診斷題。