與 Control Tower 協作
這一頁說明 Better Agent Terminal(BAT)與 BMad Control Tower 一起用時,每一步發生什麼、BAT 提供什麼、你要做什麼。
怎麼取得 Control Tower
Control Tower 已經公開,採 MIT 授權。取得與安裝方式見 Control Tower 安裝頁,設計理念與使用說明見 Control Tower 站。
BAT 的派工、回報、提問與查詢介面也是公開的,你可以拿來接上自己的流程,見BAT 提供的整合點。
Control Tower 是什麼
Control Tower 是一套以檔案驅動的多 Agent 開發流程:一個分頁當塔台負責想清楚,其他分頁當 Worker 負責做。
- 塔台
- 和你對齊需求、開工單、派工、驗收、做決定的那個 Agent 分頁。它不自己寫程式。
- Worker
- 一張工單一個 Worker 分頁。Worker 只帶那張工單的脈絡上工,做完回報塔台。
- 工單
- 一個 Markdown 檔,寫清楚目標、範圍、驗收條件與禁止事項;Worker 的回報也寫在裡面。
- 決策紀錄
- 塔台做過的每個決定和理由。它也是 repo 裡的檔案,和程式碼一起進版控、一起 review。
塔台與 Worker 都是一般的 Claude Code 或 Codex 分頁,照著同一套流程規則工作。Control Tower 定規則;BAT 提供讓規則跑起來的終端機、分頁、通知與權限。兩邊各自開發,以 BAT 公開的介面接在一起。
想看 Control Tower 本身的完整介紹(四級能力、工單狀態、自我學習、多塔台協調等),見功能導覽。
分工:塔台、跑道與雷達
Control Tower 定規則,BAT 提供跑道、無線電和雷達。
| 在機場 | 在 BAT 與 Control Tower 協作時 |
|---|---|
| 塔台的調度規則 | Control Tower:對齊需求、開單、派工、驗收、做決定 |
| 飛行計畫 | 工單:目標、範圍、驗收條件、禁止事項 |
| 跑道與登機門 | BAT 的工作區與分頁:每個 Worker 一條跑道 |
| 無線電 | BAT 的完成通知與提問通道 |
| 雷達 | BAT 的狀態偵測與縮圖標示 |
| 管制區通行證 | BAT 給每個分頁的專屬權杖 |
| 塔台日誌 | 決策紀錄:repo 裡的檔案 |
| 塔台不上飛機 | 塔台不自己讀、不自己改程式碼;要做的事開成工單,交給 Worker |
塔台的調度規則
- 在 BAT 與 Control Tower 協作時
- Control Tower:對齊需求、開單、派工、驗收、做決定
飛行計畫
- 在 BAT 與 Control Tower 協作時
- 工單:目標、範圍、驗收條件、禁止事項
跑道與登機門
- 在 BAT 與 Control Tower 協作時
- BAT 的工作區與分頁:每個 Worker 一條跑道
無線電
- 在 BAT 與 Control Tower 協作時
- BAT 的完成通知與提問通道
雷達
- 在 BAT 與 Control Tower 協作時
- BAT 的狀態偵測與縮圖標示
管制區通行證
- 在 BAT 與 Control Tower 協作時
- BAT 給每個分頁的專屬權杖
塔台日誌
- 在 BAT 與 Control Tower 協作時
- 決策紀錄:repo 裡的檔案
塔台不上飛機
- 在 BAT 與 Control Tower 協作時
- 塔台不自己讀、不自己改程式碼;要做的事開成工單,交給 Worker
最後一列是塔台最重要的習慣,下一節說明原因。
塔台的分工原則
塔台管全局,Worker 管細節;問題依性質送到對的人手上。
塔台刻意不讀程式碼
塔台把注意力留給全局:進度、相依關係、做過的決定。需要看程式碼時,它派一張分析工單,讓 Worker 去讀、把結論寫回來,自己只讀結論。所以塔台可以撐完一整批工單,每個 Worker 也都從乾淨的脈絡開始。
要知道 Worker 做到哪裡,塔台用 BAT 的唯讀查詢看狀態與輸出,不必自己進分頁。這是塔台自己守的分工;BAT 的權限只管分頁能用哪些 BAT 功能,不管塔台讀不讀程式碼。
「做什麼」問塔台,「怎麼做」問 Worker
| 問題 | 問誰 | 例子 |
|---|---|---|
| 做什麼:優先順序、要不要做、先修哪個 | 塔台 | 折扣碼和會員折扣,先做哪個? |
| 怎麼做:這段程式碼的意思、這個設定要填什麼 | Worker | 結帳金額為什麼在兩個地方各捨入一次? |
做什麼:優先順序、要不要做、先修哪個
- 問誰
- 塔台
- 例子
- 折扣碼和會員折扣,先做哪個?
怎麼做:這段程式碼的意思、這個設定要填什麼
- 問誰
- Worker
- 例子
- 結帳金額為什麼在兩個地方各捨入一次?
Worker 執行中遇到需要決定的事,會用 BAT 的提問通道直接問塔台;範圍內的選擇由塔台回答,其餘才轉給你(見Worker 問塔台)。
一張工單的一生
沿用首頁的那個早上:替 demo-shop 的結帳頁加上折扣碼。從對齊到合併共九步,你只在其中幾步出手。
- 1
第 1 步:對齊
▶Claude CLI · Tower
你結帳頁要能輸入折扣碼
塔台折扣碼有到期日嗎?能和會員折扣疊加嗎?
你有到期日。疊加我再想想
塔台記下了:疊加規則等你決定。我拆成三張工單。
你跟塔台說,要替 demo-shop 的結帳頁加上折扣碼。塔台把不清楚的地方問清楚:折扣碼有沒有到期日?能不能和會員折扣疊加?還沒有答案的,它先記成待決事項。
你要做的事說清楚要什麼、什麼不要。這是整個流程裡最需要你花心思的一步。
- 2
第 2 步:開單
_ct-workorders/T1024-discount-code.md 目標 折扣碼的資料模型與驗證 範圍 src/discount.ts、src/cart.ts 驗收 單元測試通過、建置 0 錯誤 不准碰 結帳頁畫面(T1026 負責) 回報 (Worker 做完填寫)塔台拆成三張工單:T1024 折扣碼的資料與驗證、T1025 金額計算、T1026 結帳頁畫面。每張寫清楚目標、範圍、驗收條件與不准碰的東西,存成 repo 裡的 Markdown 檔。
你要做的事看一眼範圍對不對。自主程度設在 ask 時,塔台派工前會先問你。
- 3
第 3 步:派工
▶Claude CLI · Tower派工完成通知- ▶Claude CLI · Worker · T1024 已啟動
- ▶Codex CLI · Worker · T1025 已啟動
- ▶Claude CLI · Worker · T1026 已啟動
塔台請 BAT 開 Worker 分頁。分頁開在塔台所在的工作區,帶上這個工作區設定的 Agent 與啟動參數,標題就是工單編號。Claude CLI 與新版 Codex CLI 的分頁,BAT 還會確認 Agent 真的啟動了。
你要做的事不用動手。自主程度設在 off 時,塔台會把指令給你,由你自己開分頁、貼上。
- 4
第 4 步:執行
▶Claude CLI · Worker · T1024
讀取工單 T1024 改 src/discount.ts 改 src/cart.ts $ npm run test:unit 214 passed $ git commit -m "T1024 折扣碼驗證"
Worker 讀工單、改程式、跑測試、commit,只帶這張工單的脈絡。塔台不用進分頁看:它可以用 BAT 的唯讀查詢看每個 Worker 的狀態與輸出。
你要做的事Worker 停在權限確認時,縮圖會標「⚠️ 在等你」。只有你能在那個分頁裡回答。
- 5
第 5 步:提問
T1025金額四捨五入還是無條件捨去?
塔台四捨五入,依專案慣例。理由已記下。
T1024折扣碼能不能和會員折扣疊加?
塔台 → 你這是商業規則,請你決定。
yolo 模式下,Worker 遇到範圍內的選擇,會用 BAT 的提問通道問塔台,縮圖標「? 在等塔台答覆」。塔台依工單與專案慣例回答並記下理由;屬於商業規則的,才轉給你。
你要做的事只回答塔台轉給你的問題,例如折扣碼能不能和會員折扣疊加。
- 6
第 6 步:回報
完成通知▶Claude CLI · Tower
› T1024 完成▶Claude CLI · Worker · T1024
✓已回報
Worker 把結果寫進工單的回報區:做了什麼、跑了哪些指令、結果如何、commit 是哪一個。BAT 把「T1024 完成」送回塔台分頁,縮圖標「✓ 已回報」。
你要做的事yolo 模式下通知會自動送出;on 模式下它會先填進塔台的輸入列,由你按下送出。
- 7
第 7 步:驗收
T1024 驗收✓npm run test:unit214 passed✓npm run build0 errors✓只改 src/discount.ts、src/cart.ts✓commit 3f2a9c1狀態 DONE塔台逐項核對驗收條件與禁止事項,再把工單標成 DONE、PARTIAL、BLOCKED 或 FAILED。沒過的,塔台補充說明請 Worker 再做一輪,或另開一張工單。
你要做的事通常不用做事。結果需要你判斷時,塔台會停下來問你。
- 8
第 8 步:回收
- ▶Claude CLI · Tower T1024 收單
- ▶Claude CLI · Worker · T1024 輸出安靜後關閉
- ▶Codex CLI · Worker · T1025 還在執行,不動
收單後,塔台請 BAT 關掉這個 Worker 分頁。BAT 會等分頁的輸出安靜下來才關;塔台也只能關自己派出的 Worker。
你要做的事想留著分頁,就在裡面打個字,關閉會取消。你也可以按右鍵,一次關掉所有已回報的 Worker 分頁。
- 9
第 9 步:合併
ct/T1024 領先 3 落後 0 未提交 0 → 可直接合併 ct/T1025 領先 2 落後 3 未提交 0 → 先更新再合併
用了 worktree 隔離的工單,Worker 是在自己的分支上做的。合併前,塔台向 BAT 查這條分支比主線領先多少、落後多少、有沒有未提交的變更、會不會衝突,再排出合併順序。
你要做的事決定要不要合併。push 與發版一定等你點頭。
在 BAT 裡,派工、回報與回收的實際畫面:
自主程度與斷點
自主程度決定塔台自己推進多少;不管選哪一檔,斷點出現時都會停下來問你。
| 自主程度 | 塔台 | 你 | Worker 有問題時 |
|---|---|---|---|
| off | 寫好工單,告訴你派工要貼什麼指令 | 自己開分頁、貼指令,Worker 做完再把結果帶回塔台 | 直接在分頁裡問你 |
| ask | 每次派工前先問你,你同意才開 Worker 分頁 | 逐張點頭;看得最清楚,也最常被打斷 | 直接在分頁裡問你 |
| on | 直接開好 Worker 分頁並啟動;Worker 的回報會先填進塔台的輸入列 | 看一眼回報、按下送出,塔台再接著驗收 | 直接在分頁裡問你 |
| yolo | 派工、收回報、驗收、決定下一張都自己來 | 只在斷點出現時回來做決定 | 先問塔台:範圍內的由塔台回答,其餘轉給你 |
off
- 塔台
- 寫好工單,告訴你派工要貼什麼指令
- 你
- 自己開分頁、貼指令,Worker 做完再把結果帶回塔台
- Worker 有問題時
- 直接在分頁裡問你
ask
- 塔台
- 每次派工前先問你,你同意才開 Worker 分頁
- 你
- 逐張點頭;看得最清楚,也最常被打斷
- Worker 有問題時
- 直接在分頁裡問你
on
- 塔台
- 直接開好 Worker 分頁並啟動;Worker 的回報會先填進塔台的輸入列
- 你
- 看一眼回報、按下送出,塔台再接著驗收
- Worker 有問題時
- 直接在分頁裡問你
yolo
- 塔台
- 派工、收回報、驗收、決定下一張都自己來
- 你
- 只在斷點出現時回來做決定
- Worker 有問題時
- 先問塔台:範圍內的由塔台回答,其餘轉給你
一定會停下來問你的時候
- 範圍要擴大
- 刪除,或其他不可逆的操作
- 對外發布:push、發版
- 需要你的偏好才能決定的選擇
- 連續失敗(見卡住就停)
斷點出現時,塔台在自己的分頁裡停下來問你,Worker 不會替你做這些決定。
Worker 問塔台
Worker 有問題時不必停下來等你:先問塔台,塔台答得了的就答,答不了的才轉給你。
Codex CLI · Worker · T1025
金額四捨五入還是無條件捨去?
? 在等塔台答覆
塔台
這在工單範圍內嗎?專案有慣例嗎?
範圍內的技術選擇
塔台直接回答,並在工單裡記下理由。
Worker 收到答覆,接著做。
需要你決定的事
商業規則、範圍變更、你的偏好:塔台停下來問你。
你回答後,塔台把答覆轉給 Worker。
提問通道用不了時(例如 BAT 版本太舊,或 BAT 重開讓問題消失),Worker 改把問題寫進工單、通知塔台,塔台也在工單裡答覆。等太久沒有答案,Worker 會把工單標成需要協助,交回塔台。
- 只在 yolo 模式使用:其他自主程度下,Worker 直接在自己的分頁裡問你。
- 問答不落地:問題與答案只存在 BAT 的記憶體裡,收到時先遮罩看起來像祕密的內容;日誌只記長度與結果,不記內容。
- 你打字不會打斷提問:在等答覆的 Worker 分頁裡輸入,不會取消它的問題,也不會清掉「? 在等塔台答覆」。
- BAT 重開後:還沒答覆的問題會消失,Worker 改走工單通道。
現實比計劃更混亂時
計劃趕不上變化時,塔台有固定的處理方式,不會讓你在一團亂的對話裡追進度。
臨時插隊,原本的工作不會丟
規劃到一半,正式站出事了。直接跟塔台說:它先把手上的規劃標成暫停,替緊急事件開一張優先工單,處理完再從暫停的地方接回來。進度存在檔案裡,不是只存在對話裡;已經派出的 Worker 分頁照常執行。
卡住就停,帶著整理好的紀錄回來
同一個問題換了三種做法還沒解決(次數可以調整,預設三次),Worker 就停手,不在越來越亂的脈絡裡繞圈。它整理出原始問題、試過什麼、各自為什麼失敗、需要塔台決定什麼,再把工單標成需要協助,交回塔台換個角度重新派工。
問題一層一層冒出來時,一層一張工單
修好設定檔,服務起來後又冒出另一個錯,接著建置流程也失敗了。還在同一層,就在同一張工單裡繼續;換了一層,Worker 先回報部分完成,由塔台另開一張乾淨的工單。本機能驗證的先在本機做完,需要遠端環境的另外開單。
兩邊都要改時,先寫契約,不要照抄
一個欄位改名,牽動兩個服務。先寫一份共用契約,列出哪些必須一致、哪些可以各自不同;兩邊各自照契約實作,最後再派一張工單比對兩邊的結果。不要做完一邊,再叫 Agent 照著抄另一邊。
就算 BAT 重開,只要背景的 Terminal Server 還在執行,你可以選擇保留原本的分頁,Worker 接著做。
臨時插隊、問題一層一層冒出來、兩邊都要改,這三種情況的完整經過見實戰案例。
平行與 worktree 隔離
要讓好幾個 Worker 同時開工,先確認它們不會互相踩到;真的要平行,就讓每個 Worker 在自己的分支上做。
先比對會動到的檔案
每張工單都寫明會動到哪些檔案。派工前,塔台先比對這些清單,有重疊就提醒你,或排成先後順序。
每個 Worker 一個 worktree
派工時選擇隔離,BAT 會在 repo 旁邊建一個獨立的 git worktree,分支叫 ct/T1024,Worker 就在裡面工作,主 checkout 不受影響。BAT 不替你合併,也不替 worktree 安裝相依套件:合併由塔台安排,相依套件由 Worker 依專案的說明安裝。
ct/T1024 領先 3 落後 0 未提交 0 → 可直接合併 ct/T1025 領先 2 落後 3 未提交 0 → 先更新再合併
合併前先看狀態
塔台可以向 BAT 查每條隔離分支的狀態,Worker 分頁關掉之後也查得到:
- 比主線領先多少、落後多少
- worktree 裡有沒有未提交的變更
- 改了哪些檔案,其中哪些不在工單列的範圍內
- 兩邊都往前走時,合併會不會衝突、衝突在哪些檔案
落後 0、也沒有未提交的變更,就能直接快轉合併;其他情況先更新分支,或另派一張合併工單。這些查詢都是唯讀的,BAT 不會替你 checkout、合併或 commit。
回收時保留、移除或封存
| 方式 | 會發生什麼 |
|---|---|
| 保留 | worktree 與分支都留著(預設) |
| 移除 | 刪掉 worktree,分支保留;有未提交或未追蹤的變更就不刪 |
| 封存 | 和移除一樣,再把分支改名成 ct-archive/T1024 |
保留
- 會發生什麼
- worktree 與分支都留著(預設)
移除
- 會發生什麼
- 刪掉 worktree,分支保留;有未提交或未追蹤的變更就不刪
封存
- 會發生什麼
- 和移除一樣,再把分支改名成 ct-archive/T1024
看得見每個 Agent
不用一個一個點進分頁,也知道每個 Agent 在做什麼、在等誰。
分頁標題就是身分
塔台分頁叫 Claude CLI · Tower,Worker 分頁叫 Claude CLI · Worker · T1024、Codex CLI · Worker · T1025。前面是 Agent,後面是工單編號。你自己改過名字的分頁,BAT 不會改回去。
縮圖直接標出誰在等誰
▶Claude CLI · Worker · T1024
Edit src/discount.ts? 1. Yes 2. No
⚠️在等你
▶Codex CLI · Worker · T1025
已問塔台:四捨五入? 等待答覆
?在等塔台答覆
▶Claude CLI · Worker · T1026
T1026 完成 已回報塔台
✓已回報
同時有好幾種狀態時,依「⚠️ 在等你」、「? 在等塔台答覆」、「✓ 已回報」的順序顯示最需要處理的那一個;沒有符號就是還在執行。按右鍵「關閉已回報的 Worker 分頁」時,只有 ✓ 的分頁會被關掉,在等你或在等塔台的都會留著。
等人回答偵測
Worker 停在權限確認、停下來問你問題,或在等你填表單時,BAT 都能知道(支援範圍見下表),塔台查狀態時會看到它「在等人」,而不是誤以為它還在工作。
| 項目 | Claude CLI | Codex CLI | 其他 CLI |
|---|---|---|---|
| 停下來等人回答(權限確認、問你問題、表單) | 偵測得到 | 偵測得到(0.163.0 以上) | 偵測不到 |
| 派工後確認 Agent 已啟動 | 可以 | 可以(0.163.0 以上) | 無法確認 |
| 唯讀 MCP 查詢 | 自動掛上 | 自動掛上 | 不掛 |
停下來等人回答(權限確認、問你問題、表單)
- Claude CLI
- 偵測得到
- Codex CLI
- 偵測得到(0.163.0 以上)
- 其他 CLI
- 偵測不到
派工後確認 Agent 已啟動
- Claude CLI
- 可以
- Codex CLI
- 可以(0.163.0 以上)
- 其他 CLI
- 無法確認
唯讀 MCP 查詢
- Claude CLI
- 自動掛上
- Codex CLI
- 自動掛上
- 其他 CLI
- 不掛
唯讀 MCP 查詢
BAT 開的 Claude CLI 與 Codex CLI 分頁會自動掛上一組唯讀的 MCP 工具:查自己是誰、列出看得到的分頁、查狀態、讀輸出、等狀態變化、查 worktree 狀態、列出提問、等提問的答覆。讀輸出時,看起來像祕密的內容會先遮罩。看得到什麼由分頁的權限決定(見下一節)。不想要可以在「設定 → 進階」關掉。
權限模型
每個分頁拿到的是自己的專屬權杖,能用哪些 BAT 功能,由它是塔台還是 Worker 決定。
| 項目 | 塔台 | Worker |
|---|---|---|
| 開 Worker 分頁(派工) | 可以 | 不行 |
| 關閉 Worker 分頁 | 只能關自己派出的 | 不行 |
| 宣告自己是塔台 | 可以 | 不行 |
| 回報 | — | 只能回報給派它的塔台 |
| 提問 | — | 只能問派它的塔台 |
| 回答提問 | 只能回答問自己的問題 | — |
| 查狀態與輸出 | 自己,以及自己派出的 Worker | 自己;派它的塔台只看得到狀態,看不到輸出 |
| 在別的分頁裡輸入 | 不行:Worker 的權限確認只有你能回答 | 只能把回報送進派它的塔台的輸入列 |
開 Worker 分頁(派工)
- 塔台
- 可以
- Worker
- 不行
關閉 Worker 分頁
- 塔台
- 只能關自己派出的
- Worker
- 不行
宣告自己是塔台
- 塔台
- 可以
- Worker
- 不行
回報
- 塔台
- —
- Worker
- 只能回報給派它的塔台
提問
- 塔台
- —
- Worker
- 只能問派它的塔台
回答提問
- 塔台
- 只能回答問自己的問題
- Worker
- —
查狀態與輸出
- 塔台
- 自己,以及自己派出的 Worker
- Worker
- 自己;派它的塔台只看得到狀態,看不到輸出
在別的分頁裡輸入
- 塔台
- 不行:Worker 的權限確認只有你能回答
- Worker
- 只能把回報送進派它的塔台的輸入列
- 權限預設拒絕:表上沒列的,兩邊都不能用。
- BAT 本身的伺服器權杖不會放進任何分頁;分頁結束,它的權杖就失效。
- 塔台要在一般分頁裡啟動。在 Worker 分頁裡開塔台,拿到的是 Worker 的權限,不能派工。
- 這些限制只管分頁能用哪些 BAT 功能。塔台與 Worker 本身是你電腦上的 Agent,它們能讀寫哪些檔案,仍由 Agent 自己的權限設定決定。
支援的 Agent 與遠端
Claude Code 與 Codex 都能當塔台,也都能當 Worker;本機與遠端用的是同一套流程。
- 混著用:一個塔台可以同時派出 Claude Code 與 Codex 的 Worker。派工時可以指定 Agent;沒指定時,先用工作區設定的預設 Agent,沒設就用「設定」裡的預設,都沒有就用 Claude Code。
- 偵測能力:啟動確認與等人回答偵測,Claude CLI 分頁都支援,Codex CLI 需要 0.163.0 以上(見等人回答偵測)。
- 遠端:WSL、SSH、Docker 視窗裡的塔台與 Worker,用同一套派工、回報、提問與權限;每個遠端分頁一樣拿到自己的權杖。遠端那一側也要能執行 Control Tower。
越用越懂你的專案
第一天它照工單做事;第三個月,它照你的專案做事。
說一次,之後每張工單都記得
你的團隊規矩,例如 API 一律用 POST、review 固定檢查哪幾項、某個資料庫版本有效能問題,只要跟塔台說一次,它就會記下來。之後派出的每張工單都會帶上相關提醒,不必每開一個 Agent 就重講一遍。
這和 BAT 的工作區設定是兩回事:BAT 記住的是每個工作區的預設 Agent、啟動參數與環境變數;團隊規矩由塔台記。
經驗會長大
塔台會從做完的工單裡整理出觀察,好用的做法一步步升級:
觀察
塔台記下
塔台從做完的工單回報裡,整理出值得記住的做法或踩過的坑。
已驗證
幾張工單之後
同一個做法在幾張工單裡都有效,就升級成已驗證;之後遇到類似情境,塔台會主動套用。
標準流程
你決定
你覺得夠成熟時,可以把它定成一套標準工單流程,之後同類工作都照這個流程開單。
技能
你決定
最後再做成技能,帶到任何專案都能用。
你教的東西不會被升級蓋掉
你教給塔台的規則,和 Control Tower 本身分開存放。Control Tower 升級時不會動到它們,而且你的規則優先於預設。
規則可以帶到下一個專案
另一個專案用得很順的規則,可以搬進新專案。塔台會先列出哪些是新增、哪些有衝突、哪些會跳過;有衝突時問你要保留哪一版,你同意之後才寫入。
十分鐘問答,塔台就照你的習慣做事
第一次用時,塔台會用幾題選擇題問你:commit 的習慣、哪些小事不必開工單、Worker 做完要不要自動 commit、模糊的問題要先研究還是直接討論。答案會寫成這個專案的工作規則。
教戰手冊:什麼情境用什麼做法
規定清單只說規定是什麼;教戰手冊同時寫出為什麼這樣做、遇到哪種情況選哪個、專案裡哪個檔案就是範例。Worker 寫新功能時照著判斷,結果會跟團隊手寫的一致,不會每個 Agent 各自發揮。
手冊也會跟著程式碼一起長:塔台從做完的工單回報裡挑出新慣例補進手冊。它也會比對手冊和程式碼哪裡已經脫節,清點同一件事目前有幾種寫法、建議統一成哪一種,再開成重構工單。
從程式碼抽出視覺規範
讓 Worker 掃描你的樣式設定,整理出色彩、字體、間距和元件樣式,寫成一份 Agent 讀得懂的視覺規範,每一項都標明信心度。之後做畫面的工單都照這份規範走,也能檢查程式碼裡有沒有寫死的色碼,或不在規範內的字級。
這個網站就是這樣做的:動工之前,Worker 先從 BAT 自己的 UI 程式碼抽出品牌紫、Worker 的 ⚠️、?、✓ 狀態符號和分頁標題格式,每個值都附上出處。網站上的每張示意圖,用的都是 App 裡同一套顏色與符號。
BAT 提供的整合點
這些是 BAT 對外公開的介面:Control Tower 用它們,你也可以拿來接上自己的流程。
| 你想做的事 | BAT 提供的 |
|---|---|
| 把 Worker 派到對的地方 | 塔台一個指令開好 Worker 分頁:落在塔台所在的工作區,帶上工作區設定的 Agent 與啟動參數;目錄和工作區對不上時會提醒 |
| 確認 Worker 真的啟動了 | 派工時可以等 Agent 啟動再回覆(Claude CLI、新版 Codex CLI) |
| 做完通知塔台 | 通知、縮圖徽章,並把回報填進塔台的輸入列,或直接送出 |
| 收單後關掉 Worker | 等輸出安靜才關;你在分頁裡一輸入就取消 |
| 讓 BAT 認得塔台 | 塔台宣告自己的角色與自主程度,分頁標題變成「Claude CLI · Tower」這種格式 |
| 每個分頁各有權限 | 每個分頁拿到自己的專屬權杖;塔台要在一般分頁裡啟動,不要在 Worker 分頁裡 |
| 平行開工 | worktree 隔離派工,以及合併前狀態(Worker 分頁關掉後也查得到) |
| 看 Worker 在做什麼 | 唯讀 MCP 查詢:狀態、輸出、等待、worktree 狀態、提問 |
| 知道誰在等人回答 | 等人回答偵測(Claude CLI、新版 Codex CLI) |
| 讓 Worker 問塔台 | 結構化提問通道;問答只存在 BAT 的記憶體裡 |
| 一眼看出誰在等誰 | 縮圖 ⚠️ 在等你、? 在等塔台答覆、✓ 已回報;只有 ✓ 會被「關閉已回報的 Worker 分頁」一起關 |
| 撞到用量限制 | yolo 的 Codex 分頁在解鎖後自動續行,Claude CLI 自己會續行(設定預設關閉) |
| 看工單進度 | 側欄的工單看板與 Sprint 進度,一鍵開始或補完一張工單 |
| 在遠端用 | WSL、SSH、Docker 視窗裡的塔台與 Worker,用同一套介面 |
把 Worker 派到對的地方
- BAT 提供的
- 塔台一個指令開好 Worker 分頁:落在塔台所在的工作區,帶上工作區設定的 Agent 與啟動參數;目錄和工作區對不上時會提醒
確認 Worker 真的啟動了
- BAT 提供的
- 派工時可以等 Agent 啟動再回覆(Claude CLI、新版 Codex CLI)
做完通知塔台
- BAT 提供的
- 通知、縮圖徽章,並把回報填進塔台的輸入列,或直接送出
收單後關掉 Worker
- BAT 提供的
- 等輸出安靜才關;你在分頁裡一輸入就取消
讓 BAT 認得塔台
- BAT 提供的
- 塔台宣告自己的角色與自主程度,分頁標題變成「Claude CLI · Tower」這種格式
每個分頁各有權限
- BAT 提供的
- 每個分頁拿到自己的專屬權杖;塔台要在一般分頁裡啟動,不要在 Worker 分頁裡
平行開工
- BAT 提供的
- worktree 隔離派工,以及合併前狀態(Worker 分頁關掉後也查得到)
看 Worker 在做什麼
- BAT 提供的
- 唯讀 MCP 查詢:狀態、輸出、等待、worktree 狀態、提問
知道誰在等人回答
- BAT 提供的
- 等人回答偵測(Claude CLI、新版 Codex CLI)
讓 Worker 問塔台
- BAT 提供的
- 結構化提問通道;問答只存在 BAT 的記憶體裡
一眼看出誰在等誰
- BAT 提供的
- 縮圖 ⚠️ 在等你、? 在等塔台答覆、✓ 已回報;只有 ✓ 會被「關閉已回報的 Worker 分頁」一起關
撞到用量限制
- BAT 提供的
- yolo 的 Codex 分頁在解鎖後自動續行,Claude CLI 自己會續行(設定預設關閉)
看工單進度
- BAT 提供的
- 側欄的工單看板與 Sprint 進度,一鍵開始或補完一張工單
在遠端用
- BAT 提供的
- WSL、SSH、Docker 視窗裡的塔台與 Worker,用同一套介面
介面本身是 BAT 安裝目錄裡的兩支 helper 腳本(派工、回收與查詢用 bat-terminal.mjs,回報與提問用 bat-notify.mjs),加上前面提到的唯讀 MCP 工具。參數、結束代碼與環境變數寫在 GitHub 上的 agent guide。
新功能需要 BAT 與 Control Tower 的版本都到位;任一邊較舊時,該功能不啟用,其餘流程照舊。各功能需要的最低版本見版本對照。
常見問題
Control Tower 去哪取得?
Control Tower 已經公開,採 MIT 授權。取得與安裝方式見 Control Tower 安裝頁。想接上自己的流程,BAT 的派工、回報、提問與查詢介面也是公開的,見BAT 提供的整合點。
沒有 Control Tower,能用 BAT 嗎?
可以。多工作區、Claude Code 面板與狀態列、遠端 WSL / SSH / Docker、檔案瀏覽器與 Git 檢視,這些功能都和 Control Tower 無關,全部功能見功能。
可以放心清掉對話嗎?
可以。進度、決定和經驗都在 repo 的檔案裡,塔台重開時會先讀回來;Worker 本來就只帶一張工單的脈絡。清之前看兩個時機:
- Worker:回報寫完、狀態改成完成之後。Worker 收尾時先寫回報、最後才改狀態(見回報先寫完,才改狀態),所以看到完成,回報就已經在檔案裡。
- 塔台:進度與決定寫進檔案之後。剛派完工,或口頭說好的決定還沒寫下來時,先別清。
其他放手的習慣,見把腦力留給判斷。
Worker 在跑的時候,我可以自己改檔案嗎?
盡量不要。塔台派工前會比對每張工單會動到的檔案,但你手動改的檔案不在比對範圍裡,Worker 可能讀到改到一半的內容;而且這次修改沒有紀錄,之後說不清楚為什麼這樣改。
跟塔台說你要改什麼。塔台會挑不衝突的時機處理,順手更新互相引用的連結,並把這次修改記下來。要知道哪些 Worker 正在跑,看分頁標題與縮圖標記(見看得見每個 Agent)。
Codex 可以當 Worker 嗎?
可以,也可以當塔台。啟動確認與等人回答偵測需要 Codex CLI 0.163.0 以上;舊版的 Codex 分頁照樣能派工、回報,只是 BAT 無法判斷它有沒有啟動、是不是在等人。
塔台被慣壞了怎麼辦?
健康的塔台會守住自己的分工:你要求超出範圍、想跳過驗收時,它會提醒你,甚至拒絕。但如果你一再要它「這行很小,直接幫我改」,它也會被慣壞:不再派工單、什麼都自己動手、不再提醒你驗收條件,甚至把「小改直接在塔台做」記成好做法。
Control Tower 有一份自我檢查清單。照著逐項對過,把被慣壞期間學到的錯誤經驗標記作廢,再重開塔台,讓它從檔案裡的進度接手。真正的防線是使用紀律,不是 AI 的自制力。BAT 的權限不會替你擋這件事:它只管分頁能用哪些 BAT 功能。
一個塔台能管幾個子專案?
看子專案之間的關係。常常要一起改的,用一個塔台統一調度:每張工單標明目標子專案,動到共用模組時提醒兩邊都要測。很少互相影響的,各開一個塔台更清爽。BAT 一個工作區可以放好幾個分頁,派工會落在塔台所在的工作區。