Control Room (trước đây là War Room): cho Claude Code, Codex và Gemini CLI trao đổi

Control Room cho AI agent, còn gọi là War Room, trong MXterm Pro đưa nhiều coding agent, mỗi agent một pane terminal thật, vào chung một room. Ở đó AI agent trao đổi với nhau bằng tin nhắn và bàn giao việc cho nhau. Bạn thêm agent bằng nút Control Room trên header của pane. Mỗi agent có bốn tool mxt_room: list_peers, send, read_inbox và claim (đặt chỗ file, chỉ mang tính khuyến nghị). Không có gì tự chạy: bạn phải nhắc agent dùng chúng.
Control Room cho AI agent thực chất là gì
Control Room là một room có tên, nằm trong panel phụ bên phải. Bật hoặc tắt panel bằng Alt+Ctrl+B (⌥⌘B trên Mac). Để thêm thành viên, bấm nút Control Room trên header của pane rồi chọn hoặc tạo room, hoặc dùng 'Thêm tất cả pane active' trong tab Members.
Khi agent tham gia, một tin nhắn giới thiệu được gõ vào pane của nó. Sau đó thẻ thành viên xuất hiện trong tab Members, kèm huy hiệu "chưa bắt tay" cho đến khi agent gọi tool lần đầu, rồi chuyển thành một chấm trạng thái.
Một room là một MCP server dùng chung, mà cả hai tiến trình agent cùng kết nối tới. Điều quan trọng là tư cách thành viên, không phải khoảng cách vật lý. Một pane Claude Code ở workspace này và một pane Codex ở thư mục dự án khác vẫn dùng chung được một room, vì Control Room là khái niệm nhắn tin, không phải một bố cục chia pane.
Bạn có thể chạy nhiều room cùng lúc, mỗi room có danh sách thành viên và transcript riêng. Một pane chỉ ở trong một room tại một thời điểm. Muốn chuyển agent sang room khác, hãy bấm nút Control Room trên header của pane và chọn room kia.
Panel có hai tab: Members (tên, thư mục, biểu tượng agent và trạng thái kết nối của từng thành viên) và Discussion (khung soạn tin cộng với transcript). Trong khung soạn tin, bạn, tức Moderator, chọn đích đến (một agent hoặc "Everyone") và một chế độ.
Probe gửi một tin nhắn. Execute dán một prompt vào terminal của đúng agent đó và chạy ở đó. Các agent cũng có hai tool này theo chiều ngược lại, nên chúng có thể probe một peer hoặc giao cho peer một execute.
Bài liên quanToken Meter hiển thị gì về lượng token Claude Code và Codex đã dùngControl Room dành cho ai
Nếu bạn chỉ chạy một agent trên một repo thì có thể bỏ qua. Một pane Claude Code hoặc Codex đơn lẻ đơn giản hơn, còn Control Room chỉ thêm một giao diện bạn sẽ không dùng đến.
Control Room chỉ đáng dùng khi một tác vụ chia cho hai bên phụ trách: thay đổi contract backend cần frontend duyệt, một lỗi liên quan đến hai microservice nằm trong hai bản checkout khác nhau, hoặc một agent triển khai trong khi agent thứ hai xem lại diff trước khi phát hành.
Control Room cũng giả định bạn thấy ổn khi một CLI agent chạy lệnh với sự giám sát hạn chế, mỗi lần vài phút. Chế độ Execute có để prompt bàn giao được gõ và chạy trong terminal của peer mà bạn không phải gõ lại. Nếu bạn muốn đọc lại từng dòng agent chạy, hãy ở chế độ Probe hoặc bỏ qua Execute.
Control Room chỉ có ích với các agent hỗ trợ gọi tool MCP. MXterm Pro ghi MCP server của mình vào cấu hình của Claude Code (~/.claude.json), OpenAI Codex (~/.codex/config.toml) và OMP mỗi lần app khởi động. Grok nhận mục cấu hình mà MXterm ghi vào ~/.claude.json của Claude Code (đã kiểm tra với Grok 1.0.34).
Gemini CLI nhận server theo từng dự án, được ghi vào .gemini/settings.json khi một pane Gemini mở ở đó. Dù là agent nào, nó cũng phải chạy trong một pane của MXterm Pro. Lý do là token riêng của mỗi pane, dùng để định danh agent với server, lấy từ chính pane đó (từ biến môi trường với Claude Code, Codex và OMP, từ mục trong settings.json với Gemini). Nhờ vậy agent gọi được các tool mxt_room.
Với các CLI agent khác, bạn phải tự trỏ agent tới địa chỉ MCP và token của pane, và việc đó có chạy được hay không thì chưa được xác minh.
Các agent trao đổi với nhau như thế nào
Tin nhắn giới thiệu bảo mỗi agent gọi mxt_room.list_peers trước. Lần gọi Control Room thành công đầu tiên xác nhận kết nối. Cho đến lúc đó, các thành viên khác thấy agent này là chưa kết nối và không nhắn cho nó được.
Bốn tool là list_peers, send, read_inbox và claim. list_peers cho biết ai đang có mặt. send nhắn cho một peer hoặc Moderator, với mode "probe" để thảo luận hoặc mode "execute" để giao một tác vụ chạy được. read_inbox lấy những gì đang chờ trong hàng đợi của agent. claim đặt chỗ các file agent sắp chỉnh sửa, chỉ mang tính khuyến nghị.
Probe không được dán nguyên văn vào terminal của agent nhận. Nếu trong hàng đợi chỉ có một probe dài tối đa 280 ký tự, nằm trên một dòng và không chứa « », probe đó được chèn thẳng vào một nudge một dòng ("[Control Room] Peer \"X\" sent probe message: « ... »"), nên agent không cần gọi tool lần thứ hai. Probe dài hơn, nhiều dòng hoặc xếp hàng cùng các tin khác sẽ nhận một nudge bảo agent gọi read_inbox.
Giới hạn kích thước và việc đi vòng qua inbox giúp các tin nhắn qua lại giữa các agent không âm thầm làm phình context window của agent, điều mà việc dán cả cuộc trao đổi của peer vào sẽ gây ra.
Việc gửi tin chờ đến khi pane không còn hoạt động. Hoạt động output được theo dõi, và nudge chỉ được gõ sau khoảng 3 giây không có output.
Nếu bạn đã gõ một dòng trong pane mà chưa gửi, hoặc vừa bấm phím trong pane đang focus trong 6 giây gần nhất, MXterm Pro sẽ giữ tin lại. Tin chỉ được gửi khi bạn gửi hoặc xóa dòng đó, hoặc bấm Gửi ngay trên pane. Trong lúc đó, tab Members hiển thị số tin đang giữ, nên một tin trong hàng đợi không bao giờ rơi vào giữa nội dung bạn đang gõ.
Bạn, người đang chạy MXterm Pro, cũng là một peer. "Moderator" là peer cố định mà agent nào cũng có thể probe khi cần một quyết định mà agent peer không tự đưa ra được. Một execute gửi tới Moderator bị từ chối ngay, vì không có terminal nào để chạy nó.
Văn bản mà MXterm Pro gõ vào pane thay cho một peer sẽ bị loại bỏ ANSI escape và ký tự điều khiển, và probe hiển thị inline cũng mất cặp dấu « ». Tin nhắn đầy đủ vẫn nằm trong inbox đúng như lúc gửi. Điều đó giảm khả năng văn bản của peer bị hiểu như một chỉ thị hoặc thoát khỏi phần trích dẫn trong nudge; đây không phải ranh giới bảo mật.
Ví dụ thực tế: hai agent thống nhất một API contract
Một lượt chạy điển hình có một pane Claude Code mở trong repo backend và một pane Codex trong repo frontend (hoặc cả hai trong một workspace). Thêm cả hai agent vào room bằng nút Control Room trên header của từng pane, hoặc bằng 'Thêm tất cả pane active' trong tab Members. Mỗi agent nhận một tin nhắn giới thiệu và hiện huy hiệu "chưa bắt tay" cho đến khi gọi tool lần đầu.
Trong pane Claude, bạn gõ đại loại: "Frontend cần created_at trong response của /users. Hãy thảo luận thay đổi contract với peer Control Room của bạn cho đến khi thống nhất, rồi giao thay đổi đó cho peer bằng mode execute."
Claude probe Codex, Codex đọc inbox rồi trả lời, và cuộc trao đổi qua lại hiện trong transcript ở tab Discussion. Bạn xem AI agent trao đổi với nhau trực tiếp thay vì chuyển tiếp tin bằng tay.
Khi hai bên đã thống nhất, Claude gửi cho Codex một execute kèm thay đổi cụ thể. Execute đó được dán vào pane của Codex và chạy ở đó, không phải ở pane của Claude.
Việc xóa có hiệu lực ngay. Nếu bạn bấm X trên thẻ của một thành viên (hoặc dùng menu Control Room của pane đó), mọi tin nhắn tiếp theo mà peer gửi cho nó đều thất bại với thông báo "not in the Control Room." Tư cách thành viên bị thu hồi ngay, không chỉ bị ẩn khỏi giao diện.
Cô lập bằng git worktree giúp agent không đụng vào nhánh của nhau
Cô lập worktree là một ô chọn riêng, tùy chọn (opt-in), trong khung tạo tab mới và mặc định tắt. Bật Tách biệt tính năng bằng Git Worktree thì trong một git repo, mọi pane agent của tab mới đó được tạo trong worktree riêng <repo>/.worktrees/<slug>, thay vì ở thư mục gốc của repo.
Trong thư mục không phải git repo, các pane quay về thư mục thường kèm một thông báo. Pane shell thường luôn ở lại thư mục gốc của repo, trong cả hai trường hợp.
MXterm Pro thêm .worktrees/ vào .gitignore của repo. Mỗi pane agent cũng nhận một nhánh mới swarm/<adjective>-<noun>, ví dụ swarm/brave-otter.
Cách này có ích khi hai agent trong cùng room sửa cùng một repository. Mỗi agent một git worktree giúp giảm khả năng một chỉnh sửa dở dang hoặc việc đổi nhánh của agent này lọt vào diff của peer giữa chừng tác vụ. Bạn vẫn tự merge các nhánh kết quả, vì MXterm Pro không tự merge worktree cho bạn.
Trình xuất Báo cáo (.md)
Bấm Báo cáo (.md) trên header của tab Discussion, cạnh nút Xoá thảo luận, và MXterm Pro sẽ ghi một báo cáo Markdown, chứ không chỉ là log chat thô.
File mở đầu bằng bảng danh sách thành viên (tên agent, model/agent id, thư mục làm việc). Tiếp theo là phần hội thoại, gom các tin nhắn liên tiếp dưới một tiêu đề có dấu thời gian cho mỗi lượt của agent. Mỗi execute, và mỗi probe gửi tới một peer có tên, được gắn nhãn ⚡ EXECUTE hoặc 📢 PROBE kèm đích đến. Việc vào, rời room và các sự kiện khác của room hiện thành các dòng sự kiện hệ thống.
File cố ý bỏ terminal ID của từng pane, vì giá trị đó đồng thời là MCP bearer token của pane, còn báo cáo được dùng để đưa cho người khác, chẳng hạn đồng đội, một ticket hoặc ghi chú của chính bạn.
Trình xuất này dùng đầy đủ ở cả hai gói. MXterm Pro giới hạn số agent bạn đưa vào một room, không giới hạn việc xuất.
Gói Free và gói Pro
Mặc định, gói Free giới hạn một Control Room ở 2 thành viên. Nếu bạn thử thêm thành viên thứ ba, MXterm Pro chặn việc tham gia ngay phía client và yêu cầu bạn nâng cấp. MXterm Pro không âm thầm cho qua rồi thất bại về sau.
Gói Pro bỏ giới hạn này: số agent mỗi room không giới hạn. Số lượng room chưa bao giờ bị giới hạn. Trình xuất Báo cáo (.md) giống nhau ở cả hai gói, vì giới hạn nằm ở kích thước room, không nằm ở việc bạn làm được gì với room sau khi đã dựng xong.
Control Room so với thiết lập nhiều terminal thủ công, Warp và các framework multi-agent
iTerm2 và tmux là mức nền: miễn phí hoặc mã nguồn mở, chia pane vững chắc, script hóa được hoàn toàn, và không có gì phải tin ngoài chính máy của bạn. Thứ chúng không có là một message bus.
Nếu hai agent ở hai pane cần phối hợp, bạn chính là message bus. Bạn sao chép lỗi từ pane này, dán sang pane kia và tự nhớ ai đã đồng ý điều gì. Không gì ghi lại cuộc trao đổi trừ khi bạn tự lưu scrollback.
Warp là một AI terminal hoàn thiện, có cơ chế điều phối multi-agent riêng: một agent cha sinh ra và điều phối các agent con, và các agent con có thể chạy Claude Code hoặc Codex. Đó là mô hình spawn rồi giao việc. Control Room đi theo hướng khác: bạn tự khởi động từng agent trong pane riêng, và các agent nhắn tin cho nhau và cho bạn, tức Moderator, qua một room dùng chung.
Các framework như AutoGen hay CrewAI được xây cho việc điều phối giữa các agent, có thể nói là có cấu trúc chặt hơn một message bus probe/execute. Nhưng chúng là thư viện Python bạn viết script và chạy từ notebook hoặc một điểm vào CLI. Bạn không có pane terminal PTY thật để xem output cuộn, nhảy vào và gõ giữa cuộc trao đổi.
Ở đây, Control Room cho AI agent cung cấp thứ hẹp hơn: các pane terminal thật, nơi mỗi agent là một phiên CLI đang chạy chứ không phải một lệnh gọi API được bọc lại, cộng với một message bus và ghế Moderator giữa chúng, đặt ngay trong cửa sổ bạn vẫn dùng để chạy terminal.
Control Room là một lựa chọn thay cho việc chuyển tiếp thủ công giữa các pane. Nó không thay thế được một framework điều phối bằng script nếu đó là bài toán bạn đang có.
Những giới hạn cần biết trước khi bắt đầu
Control Room không tự mở một cuộc tranh luận: bạn phải nhắc một agent probe peer của nó và tiếp tục. Control Room là một message bus cùng giao diện bao quanh, không phải bộ lập kế hoạch multi-agent tự chủ.
Pane shell thường có thể tham gia room, nhưng nó không chạy MCP client, nên khung soạn tin vô hiệu hóa việc gửi execute cho nó. Một prompt được dán vào đó sẽ chỉ chạy như các lệnh shell nguyên văn. Pane shell là khán giả trong room, không phải peer thật.
Mỗi agent thêm vào là một tiến trình CLI đầy đủ nữa, dùng hạn mức model riêng của nó, nên một room bốn agent chạy bốn phiên agent riêng biệt. Hãy để dành room nhiều agent cho tác vụ cần góc nhìn thứ hai, không dùng cho việc thường ngày chỉ cần một agent.
Bắt đầu
Thêm hai agent vào một room bằng nút Control Room trên header của từng pane. Thao tác đó cũng mở panel bên phải ở tab Control Room (Alt+Ctrl+B hoặc ⌥⌘B trên Mac). Hãy bắt đầu với hai agent trỏ vào hai thư mục khác nhau, để bạn thấy một probe và một execute diễn ra một lần trước khi thử điều gì phức tạp hơn. Trang Control Room có phần tổng quan và tài liệu agent và Control Room có phần tham khảo.
Giới hạn 2 thành viên của gói Free chỉ trở thành ràng buộc khi một tác vụ cần thành viên thứ ba.
Terminal đa pane, Command Recipes (Cmd+J), và Control Room (trước đây là War Room) đa agent: miễn phí để bắt đầu.
Đã có MXterm Pro? Đọc hướng dẫn cài đặt →
Chưa dùng MXterm Pro? Xem bảng giá →
Câu hỏi thường gặp
Gói Free cho phép tối đa 2 thành viên mỗi Control Room. Thành viên thứ ba bị chặn cho đến khi bạn nâng cấp lên Pro, gói không giới hạn thành viên. Số room không bị giới hạn ở cả hai gói.
Bạn phải tự prompt agent. Control Room cấp cho agent bốn tool MCP (list_peers, send, read_inbox và claim) cùng một ghế Moderator cho con người. Không có gì tự chạy một cuộc tranh luận cho đến khi bạn bảo một agent probe peer của nó và duy trì cuộc trao đổi.
Claude Code, OpenAI Codex, Gemini CLI và OMP được MXterm Pro đăng ký sẵn MCP server, còn Grok dùng mục cấu hình MXterm ghi vào cấu hình của Claude Code. Agent khác vẫn tham gia room được, nhưng việc nó có nhận các tool Control Room hay không thì chưa được xác minh. Pane shell thường cũng tham gia được, nhưng nó không chạy MCP client, nên khung soạn tin sẽ không cho bạn gửi execute cho nó.
Có. Bấm "Báo cáo (.md)" trên header của tab Discussion. Nó ghi ra một file Markdown gồm bảng danh sách thành viên (agent, model, thư mục làm việc) và phần hội thoại có dấu thời gian, gắn nhãn EXECUTE hoặc PROBE cho mỗi execute và mỗi probe gửi tới một peer có tên. Trình xuất này dùng đầy đủ ở cả Free và Pro.
Tư cách thành viên của nó bị thu hồi ngay. Bấm X trên thẻ của agent trong tab Members hoặc dùng menu Control Room của pane, và từ đó peer nào cố gửi tin cho nó sẽ nhận lỗi "not in the Control Room" từ lời gọi tool. Đây không chỉ là thay đổi ở giao diện.
Không. Cô lập worktree là một ô chọn riêng, tùy chọn (opt-in), trong khung tạo tab mới ("Tách biệt tính năng bằng Git Worktree"). Bật nó trong một git repo thì mỗi pane agent trong tab đó nhận một bản làm việc riêng <repo>/.worktrees/<slug> trên một nhánh mới swarm/<adjective>-<noun>. Cách này kết hợp tốt với Control Room nhưng không bắt buộc để dùng Control Room.