MXterm Pro

Coding agent và Control Room

MXterm Pro chạy chính CLI của từng agent trong một pane terminal thật và theo dõi output của nó. App không cài agent cho bạn: CLI phải có sẵn trên máy. Control Room còn được gọi là War Room.

Các agent được hỗ trợ

MXterm Pro chạy được 27 coding agent. Danh sách đầy đủ ở trang Agent. Bảng bên dưới liệt kê một số trong đó.

Chọn agent trong danh sách AI agents khi tạo workspace, hoặc đổi agent của một pane sau đó bằng biểu tượng agent ở đầu bên trái header của pane. Pane agent khởi động bằng lệnh bên dưới. Terminal không chạy lệnh nào.

AgentLệnhCờ BypassChấm trạng tháiMCP
Claude Codeclaude--dangerously-skip-permissionsCóTự động
Codexcodex--dangerously-bypass-approvals-and-sandboxCóTự động
OpenCodeopencodeKhông cóCóThủ công
GitHub CopilotcopilotKhông cóKhôngThủ công
Qwen Codeqwen--yoloChỉ khi chờ cấp quyềnThủ công
AmpampKhông cóKhôngThủ công
Gemini CLIgemini--yoloCóTự động
Cursor Agentcursor-agentKhông cóCóThủ công
AntigravityagyKhông cóKhôngThủ công
OMP (Oh My Pi)ompKhông cóChỉ khi chờ cấp quyềnTự động
Grokgrok--always-approveChỉ khi chờ cấp quyềnTự động

Với Claude Code, Codex, Gemini CLI, Cursor Agent, OpenCode và Grok, MXterm Pro tìm file thực thi trong PATH và các thư mục cài đặt thường gặp (trên macOS và Linux, ví dụ /opt/homebrew/bin, ~/.local/bin và ~/.npm-global/bin), rồi đánh dấu Chưa cài đặt nếu không thấy. Gemini CLI cũng được coi là đã cài khi có thư mục ~/.gemini. Các agent còn lại trong bảng luôn hiện trong danh sách; nếu thiếu CLI, shell trong pane sẽ báo không tìm thấy lệnh. Những agent không có trong bảng, như OpenClaw, OpenClaude, Hermes Agent, Devin CLI, Kimi Code, Aider, Cline, Goose, Crush, Kilo Code, Kiro CLI, Auggie, Autohand Code, Codebuff, Command Code và Continue, chỉ hiện trong form tạo workspace sau khi MXterm Pro tìm thấy CLI của chúng. Settings → Agents cho biết trạng thái đã cài của mọi agent; xem Cài đặt.

Chế độ Bypass

Bật Chế độ Bypass (Tự động duyệt quyền CLI) mặc định tắt. Nếu bạn không đụng vào, mọi agent đều hỏi trước khi chạy lệnh hay sửa file, đúng như CLI của chính agent đó vẫn làm.

Nếu bạn tick vào ô này, MXterm Pro khởi động Claude Code với --dangerously-skip-permissions, Codex với --dangerously-bypass-approvals-and-sandbox, Gemini CLI và Qwen Code với --yolo, còn Grok với --always-approve. Các agent này sẽ chạy lệnh và sửa file mà không hỏi bạn trước, còn Codex bỏ qua cả sandbox của nó.

Ô tick nằm trên màn hình tạo workspace, tức màn hình hiện ra khi bạn mở tab mới. Lựa chọn được lưu lại và áp dụng cho mọi pane agent khởi động sau đó, ở mọi workspace. Agent đang chạy vẫn giữ cờ đã dùng lúc khởi động.

Cờ được thêm vào hoặc gỡ ra lúc pane khởi động, nên ô tick này điều khiển mọi agent dùng cờ như nhau. Ngoài năm agent ở trên, MXterm Pro biết cờ bỏ qua xin phép của OpenClaude, Hermes Agent, Devin CLI, Kimi Code, Aider, Crush, Kiro CLI, Autohand Code và Command Code, tổng cộng 14 agent. Goose không có cờ: chế độ tự động của nó là một biến môi trường (GOOSE_MODE=auto) chỉ có trong Cài đặt. Các agent còn lại, trong đó có OpenCode, GitHub Copilot, Amp, Cursor Agent, Antigravity và OMP, luôn khởi động bằng lệnh trơn, vì đoán cờ cho chúng chỉ làm CLI từ chối khởi động.

Trạng thái agent và thông báo

Với Claude Code, Codex, Gemini CLI, Cursor Agent và OpenCode, MXterm Pro đọc màn hình của pane để biết agent đang làm gì. Một chấm màu hiện cạnh pane trong danh sách terminal ở sidebar và trong danh sách thành viên Control Room (trước đây là War Room), và trên tab workspace, nơi hiện chấm cần chú ý nhất trong các pane của tab đó. OMP, Grok và Qwen Code chỉ được đọc cho một việc: khi một trong số đó hiện công cụ đang chờ bạn duyệt, chấm của nó chuyển đỏ. MXterm Pro không có quy tắc nào cho trạng thái đang chạy của chúng. Gemini CLI được đọc ở các hộp thoại duyệt, duyệt kế hoạch, câu hỏi và tin cậy thư mục. Goose cũng được đọc, với các quy tắc chưa được kiểm tra trên một phiên thật. Tổng cộng có 9 agent được nhận diện trạng thái; các agent còn lại không có chấm.

  • Đỏ: agent bị chặn và cần bạn trả lời.
  • Vàng: agent đang làm việc. Các pane khác cũng hiện chấm vàng này khi đang in output.
  • Xanh lá: agent đã xong trong lúc bạn không nhìn vào pane đó. Chấm biến mất khi bạn focus vào pane.

Cài đặt thông báo nằm ở Settings → Notifications, dưới công tắc tổng Thông báo từ agent. Có ba sự kiện báo được, mỗi cái một công tắc, đều đang bật: Agent xong việc, Agent cần bạn trả lời và Agent dừng giữa chừng. Tin Control Room bị giữ lại (xem Gửi tin nhắn trong Control Room) cũng tạo banner Đang có tin chờ gửi, theo công tắc Agent cần bạn trả lời.

Thiết lậpMặc địnhTác dụng
Âm thanh thông báoBậtPhát một tiếng chuông khi một trong ba việc đó xảy ra.
Thông báo hệ thống (Desktop)BậtBanner có tiêu đề gồm tên tab và tên agent, ví dụ my-project · Claude Code, phần nội dung là Đã xong, Đang chờ bạn trả lời, Đã dừng giữa chừng hoặc Đang có tin chờ gửi.
Chỉ khi MXterm Pro chạy nềnTắtTắt thì bạn nhận cả banner của pane ở tab khác trong lúc bạn đang làm việc ở cửa sổ này. Bật thì banner chỉ hiện khi app không được focus.
Hiện chữ từ terminal trong bannerTắtThêm tiêu đề terminal của agent vào banner. Khi tắt, banner kết thúc bằng bấm để mở. Notification Center giữ lại banner và có thể hiện trên màn hình khoá, nên mục này mặc định tắt.
Số trên biểu tượng DockBậtSố pane đang chờ bạn: đã xong mà bạn chưa nhìn tới, hoặc đang cần bạn trả lời. Thiết kế cho Dock của macOS; badge này chưa xác minh trên Windows hay Linux.
Tùy chỉnh thông báo theo AgentBật cho từng agentMột công tắc cho mỗi agent có nhận diện trạng thái.

Bấm vào banner là tới đúng pane mà banner nói tới. Cửa sổ được đưa lên trước, tab đúng được mở, pane đang bị che sau một pane phóng to sẽ được thu lại, pane nhận focus và cuộn xuống phần output mới nhất. Nếu pane đó đã bị đóng, cửa sổ vẫn lên trước và không có gì khác xảy ra.

Việc bấm banner để tới đúng pane cần bản macOS bạn tải về. Trên hệ thống khác, MXterm Pro nhờ hệ thống hiện banner, nhưng thao tác bấm chưa được nối để đưa bạn tới đúng pane. Điều này chưa xác minh trên Windows.

Vài quy tắc giữ cho banner không làm phiền. App không bao giờ báo về pane bạn đang nhìn. Một lượt làm việc xong trong chưa tới 5 giây chỉ được chấm trạng thái chứ không có banner và không có tiếng chuông. Các sự kiện xảy ra sát nhau được gom lại thành một tiếng chuông và một banner. Và trên macOS, khi bạn nhìn vào một pane, banner của pane đó được rút khỏi Notification Center.

Kết nối MCP và status line của Claude

MXterm Pro chạy một MCP server trên 127.0.0.1 với cổng ngẫu nhiên và đặt các biến môi trường sau trong mọi pane: MXTERM_MCP_URL là địa chỉ server, MXTERM_SESSION là token riêng của pane đó, kèm hai tên cũ SWARMTERM_MCP_URL và SWARMTERM_SESSION với cùng giá trị, là hai tên mà các mục cấu hình của agent bên dưới đọc. Agent dùng server này để mở web preview cạnh pane, trao đổi trong Control Room, và tạo hay xóa worktree trong workspace có bật tách worktree.

Các tool có tên mxt_room.*. Các bản trước 1.1.43 đặt tên là war_room.*; tên cũ vẫn chạy trong thời gian tới.

Claude Code, Codex và OMP được kết nối tự động, còn Gemini CLI thì khi pane của nó khởi động. Mỗi lần khởi động, MXterm Pro kiểm tra các file sau và ghi các mục còn thiếu hoặc đã cũ, dù bạn có cài các agent này hay không:

  • ~/.claude.json (hoặc $CLAUDE_CONFIG_DIR/.claude.json): mục mxterm trong mcpServers, lấy URL và token từ biến môi trường của pane. Khi ghi mục này, app cũng thêm "crossSessionInbound": "accept" nếu khóa đó chưa có.
  • ~/.codex/config.toml (hoặc $CODEX_HOME/config.toml): bảng [mcp_servers.mxterm] chứa URL hiện tại của server và không có token: mỗi pane Codex do MXterm Pro khởi động tự gửi token của riêng nó, nên nhiều pane Codex vào được cùng một phòng. URL được ghi lại mỗi lần khởi động vì cổng thay đổi.
  • ~/.omp/agent/mcp.json: mục mxterm trong mcpServers, lấy URL và token từ biến môi trường của pane giống như của Claude Code, kèm một dòng $schema nếu file chưa có.
  • ~/.zshrc, chỉ khi file tồn tại và chưa nhắc tới SWARMTERM_SESSION: thêm dòng export SWARMTERM_SESSION="${SWARMTERM_SESSION:-global}" vào cuối file.

Gemini CLI không đọc được biến môi trường trong cấu hình MCP của nó, nên được thiết lập theo cách khác. Mỗi lần một pane Gemini CLI khởi động trong một thư mục, MXterm Pro ghi <folder>/.gemini/settings.json chứa địa chỉ server và token riêng của pane đó dưới dạng văn bản thuần, đồng thời thêm .gemini/settings.json vào .gitignore của thư mục (tạo file nếu chưa có). Grok đọc mục mxterm trong ~/.claude.json, nên MXterm Pro không ghi thêm gì cho nó. Settings → Agents cho biết agent nào MXterm Pro coi là đã thiết lập.

Các agent khác không được thiết lập tự động, và MXterm Pro chưa xác minh chúng có nhận các tool của app hay không. Nếu agent không hiện tool nào, hãy thêm một MCP server kiểu HTTP với URL $MXTERM_MCP_URL và header Authorization: Bearer $MXTERM_SESSION. Hãy đọc hai giá trị này từ biến môi trường thay vì chép cứng, vì cổng đổi sau mỗi lần khởi động và token khác nhau ở từng pane.

Tích hợp status line của Claude Code được bật mặc định. Mỗi lần khởi động, MXterm Pro đặt statusLine trong ~/.claude/settings.json (hoặc $CLAUDE_CONFIG_DIR/settings.json) thành type: "command", với lệnh chạy file thực thi của MXterm Pro kèm --statusline. Claude Code sẽ hiện mcp ✓ (đã kết nối), mcp … (server phản hồi nhưng Claude chưa gọi tới) hoặc mcp ✗ (không kết nối được), rồi tới mức dùng context, ví dụ ctx 84k/200k 42%. Đây là cài đặt cho cả user, nên Claude Code chạy ở terminal khác cũng hiện phần context. Nếu bạn đã có statusLine riêng thì app không ghi đè. Tắt ở Settings → Terminal → Manage Claude Code's status line; khi tắt, mục này được xóa khỏi file.

Tách agent bằng git worktree

Chọn Tách biệt tính năng bằng Git Worktree trên màn hình tạo workspace để mỗi pane agent có worktree và branch riêng. Tùy chọn này tắt mặc định và chỉ áp dụng cho workspace bạn đang tạo.

  • Mỗi pane agent nhận một branch dạng swarm/brave-otter và một worktree tại <folder>/.worktrees/swarm-brave-otter. Tên branch hiện trên header của pane.
  • Pane Terminal thường vẫn ở ngay thư mục gốc. Pane agent nào không tạo được worktree cũng vậy.
  • Worktree bắt đầu từ commit HEAD hiện tại. Thay đổi chưa commit và file bị ignore như node_modules không được chép sang, nên hãy cài dependency trong từng worktree.
  • MXterm Pro thêm .worktrees/ vào .gitignore của thư mục (tạo file nếu chưa có) và không commit thay đổi đó.
  • Agent trong workspace có thể gọi các MCP tool worktree.spawn, worktree.list và worktree.remove.
Nếu thư mục chưa phải git repository, MXterm Pro không tạo repository giúp bạn. Tuỳ chọn tách worktree bị bỏ qua cho workspace đó và mọi pane dùng chung thư mục trực tiếp; mỗi pane báo một lần bằng một thanh bạn có thể tắt đi: Thư mục này không phải là repo git, nên ô này dùng chung thư mục trực tiếp với các ô khác (không tách biệt worktree). App không init, không stage, không commit gì cả. Còn thư mục *đã là* repository nhưng chưa có commit nào thì vẫn được tạo file rỗng .gitkeep, rồi MXterm Pro chỉ stage và commit đúng file đó thành "Initial commit" (các file khác đã có trong thư mục không được stage), vì worktree cần có một commit để tách nhánh ra từ đó.

Khi bạn không cần các worktree nữa, hãy mở tab Git ở panel bên phải rồi bấm Dọn worktree… cạnh danh sách worktree.

  1. Những mục có thư mục đã biến mất sẽ được dọn ngay, không cần xác nhận.
  2. Phần còn lại mở ra trong hộp thoại Dọn worktree. Worktree không có file nào chưa commit chỉ được đếm ("N worktree sẽ bị xoá (thư mục và nhánh).") và bị xoá khi bạn xác nhận.
  3. Worktree còn dở việc được liệt kê riêng dưới dòng Các mục này còn thay đổi chưa lưu, tick để vẫn xoá:, mỗi cái ghi rõ bao nhiêu file chưa commit và bao nhiêu commit chưa merge. Chúng không được tick sẵn.
  4. Nút Xoá worktree (hoặc Xoá N worktree) xoá từng thư mục và xoá luôn branch của nó. Pane còn đang chạy trong một worktree sẽ được chuyển ra trước.

Các worktree MXterm đã tạo cũng được liệt kê, kèm dung lượng và tuổi, trong Settings → Agents (xem Cài đặt); thẻ đó chỉ xóa một thư mục khi bạn bấm Xóa và luôn giữ lại nhánh. Bạn vẫn dọn tay được bằng git worktree list, git worktree remove và git branch -d từ thư mục gốc. Agent cũng có thể gọi worktree.remove; tool này từ chối khi worktree còn thay đổi chưa commit và không xóa branch.

Ghi chú review trên diff

Tab Git ở panel bên phải hiện các thay đổi trong thư mục hoặc worktree dưới dạng diff. Bạn có thể ghi chú lên một dòng trong đó rồi gửi trọn gói cho agent đã tạo ra các thay đổi ấy.

  1. Rê chuột lên một dòng trong diff rồi bấm biểu tượng ghi chú: Thêm ghi chú cho dòng này, hoặc Sửa ghi chú với dòng đã có ghi chú.
  2. Gõ nội dung ghi chú. Nhấn mod+Enter để lưu ghi chú, Esc để huỷ.
  3. Khi đã viết xong những gì muốn gửi, bấm Gửi N ghi chú ở cuối diff. Nút Xoá mọi ghi chú thì bỏ hết chúng đi.

Mỗi ghi chú tới tay agent gồm tên file, số dòng, đoạn code ở dòng đó và lời bình của bạn. Khối nội dung được dán vào pane của agent nhưng không tự gửi đi: app nhắc bạn tự nhấn Enter trong pane, để bạn còn viết thêm nếu muốn.

App từ chối gửi, kèm lý do ngay trên nút, khi không xác định được nên gửi tới pane nào hoặc pane chưa sẵn sàng: không có pane agent nào làm việc trong worktree đó, có nhiều pane cùng lúc, pane không chạy, pane còn nội dung bạn gõ dở chưa gửi, hoặc pane không nhận khối dán. Quy tắc "đang gõ" ở đây chính là quy tắc Control Room dùng.

Ghi chú chỉ nằm trong bộ nhớ khi app đang mở. Chúng không bao giờ được ghi xuống ổ đĩa, và một ghi chú biến mất khi dòng hoặc file của nó rời khỏi diff.

Chế độ Chat (thử nghiệm)

Chế độ Chat hiện một pane agent dưới dạng bản chat dễ đọc của chính cuộc trò chuyện của agent, vẽ phủ lên terminal. Chế độ này mặc định tắt. Bật bằng Chế độ Chat (thử nghiệm) trong Settings → Terminal.

  • Chế độ này dùng được với Claude Code, Codex, OMP và Grok. Với agent khác, hoặc shell thường, pane báo là Chat không khả dụng. Pane SSH không có chế độ này.
  • Khi bật, pane agent mở ở dạng Chat. Mỗi pane giữ lựa chọn riêng và lựa chọn đó được nhớ qua các lần khởi động lại. Nút trên header của pane hoặc mod+Shift+J chuyển pane đang focus giữa Chat và Terminal. Tắt cài đặt thì mọi pane trở về terminal.
  • Chat chỉ là lớp phủ. Tiến trình terminal bên dưới không bị đụng tới dù bạn chọn cách nào.
  • Trong ô soạn tin, Enter để gửi và Shift+Enter để xuống dòng. Bạn có thể đính kèm file, dán ảnh và chọn model từ một menu.
  • Với Claude Code và Codex, hộp thoại cấp quyền mà MXterm Pro nhận ra sẽ hiện Cho phép một lần và Từ chối và dừng agent. Với các hộp thoại khác, chat báo là agent đang chờ trả lời trong terminal.
  • Nút micro trong ô soạn tin chỉ là bản mô phỏng. Nó không ghi âm, không xin quyền micro và không chèn chữ nào.

Control Room: phòng và thành viên

Control Room cho agent ở các pane khác nhau nhắn tin cho nhau, còn bạn giữ vai Moderator. Nhấn ⌘⌥B trên macOS hoặc Ctrl+Alt+B trên Windows và Linux để mở panel bên phải, rồi chọn tab Control Room. Panel có năm tab: Control Room đứng đầu, rồi Thư mục, Lịch sử, Git và Xem trước. Control Room là tab duy nhất có ghi tên ngay cạnh biểu tượng hai thanh kiếm; bốn tab còn lại chỉ có biểu tượng, tên nằm trong tooltip. Panel mở rộng hơn ở tab Control Room. Mỗi tab workspace có phòng riêng, và panel chỉ hiện các phòng của tab bạn đang xem, phòng chính đứng đầu. Phòng của tab khác nằm trong menu Phòng khác.

Thêm pane bằng nút Control Room (biểu tượng các nút nối nhau) trên header của pane. Thêm pane là panel tự mở sẵn ở tab Control Room, bạn không cần mở trước. Nút hiện dấu + nhỏ khi pane chưa ở phòng nào và, khi đã ở trong phòng, lấy màu riêng của pane. Một dấu nhỏ cạnh biểu tượng cho biết tình trạng tin của pane: chấm đặc là tin mới, vòng rỗng là tin đang chờ đến khi pane rảnh, hình thoi là một việc vừa được giao, và chấm trong vòng là tin cũ đã bị bỏ qua vì hàng chờ đầy. Rê chuột lên dấu để đọc nội dung. Nút này không có ở pane SSH, ở pane gắn từ Machines (pane đó không chạy terminal nào trên máy này nên không vào phòng được) và bị ẩn khi pane quá hẹp. Kéo pane thả vào panel không thêm được pane.

  • Thêm vào Control Room, hoặc Thêm vào "tên phòng" với phòng đã có, sẽ thêm pane và mở panel.
  • Tạo phòng mới tạo một phòng và thêm pane vào đó.
  • Với pane đã ở trong phòng, menu liệt kê các phòng khác dưới mục Chuyển phòng Control Room (chọn một phòng để chuyển pane sang) và có nút Rời khỏi Control Room, nút này hỏi lại một lần trước khi đưa pane ra (phiên vẫn chạy). Mỗi pane chỉ ở một phòng tại một thời điểm.

Menu chuột phải của pane có Sao chép ID pane. Với pane đang ở trong một phòng và đã có handle, menu còn có Sao chép handle phòng, chép handle kèm dấu @, như @claude-2, và Nhắc trong phòng, thêm handle đó vào ô soạn tin của phòng.

Trong panel, tab phòng đang chọn và tab Members hoặc Discussion đang chọn được tô nền, nên dễ thấy bạn đang ở đâu. Dải tab phòng thêm phòng bằng +, đổi tên khi nhấp đúp hoặc bấm biểu tượng bút chì hiện ra khi bạn trỏ vào, và xóa phòng bằng ✕ (phòng chính của một tab không có ✕ và không xóa được). Tab Members liệt kê các pane trong phòng. Nhấp vào một dòng để nhảy tới pane đó; bôi chọn tên hoặc thư mục để sao chép thì không nhảy. Nhấp chuột phải vào một dòng để đổi tên pane. Mỗi dòng có nút sao chép định danh của thành viên, chẳng hạn claude-2 (giá trị agent điền vào to), nút vương miện để đặt hoặc bỏ vai điều phối (xem Control Room: điều phối viên) và nút ✕ luôn hiện để đưa pane ra khỏi phòng sau khi hỏi lại một lần. Điện thoại, hoặc máy tính khác qua bảng Machines của nó (xem Pane và chia màn hình), có bật công tắc Có thể quản lý Control Room ở máy này (xem Remote Access & Devices) cũng tạo được phòng, thêm thành viên, bỏ một thành viên và xóa phòng từ màn hình của nó, theo cùng giới hạn gói Free; phòng chính của một tab thì không xóa được.

Nút Thêm ở đầu tab Members liệt kê trước các pane của tab chứa phòng đó, rồi đến pane của các tab khác dưới tên tab của chúng, nên agent ở tab khác vẫn vào được. Pane SSH thường, vì không chạy được agent, và pane gắn từ Machines không có trong danh sách. Pane đã ở phòng khác bị làm mờ, kèm dòng Đã ở trong "tên phòng". Nhấp vào một dòng để tick, rồi bấm Thêm N pane; Chọn tất cả và Bỏ chọn đổi mọi dấu tick cùng lúc, còn nút + ở cuối dòng thêm ngay riêng pane đó. Thêm từ ba pane trở lên cùng lúc thì app hỏi lại trước (Thêm N pane vào "tên phòng"?). Pane nào không vào được, ví dụ vì phòng đã đủ giới hạn gói Free, sẽ được nêu ở ghi chú dưới nút, với số lượng và lý do, trong khoảng 12 giây.

Một thành viên rời phòng qua nút ✕ của nó, qua Rời khỏi Control Room trong menu của pane, khi bạn chuyển pane sang phòng khác bằng Chuyển phòng Control Room, khi phòng của nó bị xóa, hoặc khi terminal của nó kết thúc. Kéo một dòng không đưa nó ra khỏi phòng. Discussion ghi lại mỗi lần rời phòng và, khi biết lý do, kết thúc dòng bằng lý do đó: (its pane left this window), (removed from the Members list), (left from the pane menu), (its terminal ended) hoặc (its pane was not reopened).

Phòng và thành viên được lưu lại. Sau khi bạn thoát và mở lại app, thành viên nào có pane được khôi phục sẽ quay lại phòng của nó, hiện chưa bắt tay cho tới khi agent của nó gọi mxt_room lần nữa. Thành viên chờ trong danh sách với trạng thái Đang chờ kết nối lại tối đa 5 phút để pane của nó quay lại; nếu pane không quay lại, thành viên rời phòng. Khi một agent thoát về dấu nhắc shell, MXterm Pro nhận ra trong vài giây (app kiểm tra mỗi 3 giây, chỉ trên macOS và Linux) và đánh dấu thành viên đó là mất kết nối; Discussion ghi <tên> disconnected (its agent exited). Thành viên vẫn ở trong phòng và các claim của nó được nhả. Tin nhắn không còn bị gõ vào shell của nó, và tin gửi cho mọi người bỏ qua nó. Nó kết nối lại khi agent được khởi động và gọi mxt_room lần nữa.

Khi bạn thêm một pane agent, MXterm Pro gõ vào prompt của agent một đoạn giới thiệu ngắn, yêu cầu nó gọi mxt_room.list_peers. Pane không thể đóng giả bạn: pane có tên chứa "Moderator", hoa hay thường, vào phòng với tên (pane, not the real Moderator) rồi tới tên của nó, và tên nào nhận vai điều phối viên thì cũng được thêm tiền tố (pane, not the coordinator) theo cách đó. Khi một agent đã thấy các quy tắc vào lại một phòng, nó nhận một dòng duy nhất nêu tên phòng và điều phối viên, thay cho phần giới thiệu đầy đủ. Cho tới khi agent gọi mxt_room lần đầu, thành viên hiện chưa bắt tay và chưa nhận được tin. Shell thường không bao giờ gọi; agent không có MCP tự động cần cấu hình tay như trên. MCP server dặn agent không gọi tool mxt_room nếu bạn chưa thêm pane của nó vào phòng; pane không thuộc phòng nào mà gọi sẽ lỗi, kèm lời nhờ bạn thêm vào. Thành viên đã kết nối hiện im lâu khi MXterm Pro không đọc được trạng thái agent của nó (không rõ, hoặc pane không có bộ nhận diện) và nó không gọi mxt_room quá năm phút.

Pane chưa có tên riêng được đặt tên và định danh từ agent của nó cùng một con số, ví dụ Claude 2 và claude-2. Agent đó là agent pane được mở ra hoặc, với terminal thường, agent MXterm Pro thấy đang chạy trong đó. Con số tăng dần theo từng agent trong phòng và không bao giờ cấp lại cho pane khác, nên định danh cũ không thể gửi nhầm tới người mới. Agent gọi pane bằng định danh này; mã peer- dài vẫn được chấp nhận trong to. Trong Discussion, định danh của thành viên hiện tại hiện thành tên đó. Pane bạn đã đặt tên (xem Đặt tên cho pane) thì dùng tên đó. Pane bạn chưa đặt tên thì phòng tự đặt tên từ tiêu đề terminal của nó, khi tiêu đề đó giữ nguyên 2,5 giây, bỏ ký hiệu trạng thái ở đầu. Tiêu đề chỉ là tên shell, tên của chính agent, một đường dẫn hay user@host thì không được dùng. Tên trong phòng không đổi tên riêng của pane. Trỏ vào nút Control Room của pane để xem phòng và định danh.

Gửi tin nhắn trong Control Room

Tab Discussion hiện tin nhắn của phòng dưới dạng các thẻ: người gửi và giờ, rồi tới người nhận, kèm nhãn Execute nếu là một prompt. Viết trong ô soạn tin ở cuối panel với vai Moderator, chọn người nhận và chế độ, rồi nhấn Enter để gửi (Shift+Enter để xuống dòng). Ô soạn tin ghi Gửi vào phòng: <tên> và bị khoá cho tới khi có ít nhất một thành viên đã kết nối. Bản nháp của bạn được giữ theo từng phòng, kể cả khi chuyển tab, phòng hay workspace, cho tới khi bạn gửi. Gõ @ sẽ liệt kê các thành viên đã kết nối; Enter hoặc Tab chèn định danh của họ, như @claude-2, vào nội dung. Danh sách mở đầu bằng dòng Chủ phòng, chèn @owner cho bạn, và một vương miện đánh dấu người điều phối. Tin nhắc đến @owner có một chấm nhỏ. Lời nhắc tên chỉ gọi tên ai đó trong tin, không đổi người nhận, vì người nhận do bạn chọn ở menu người nhận. Bạn đính kèm được tối đa 5 ảnh, mỗi ảnh tối đa 10 MB, vào một tin của Moderator. MXterm Pro cũng được thiết kế để một điện thoại đã ghép đọc được phòng và gửi tin sau khi bạn bật Cho phép điện thoại xem Control Room; mục này tắt theo mặc định. Khi bạn cuộn lên khỏi tin mới nhất, một nút mũi tên tròn (Xuống tin mới nhất) hiện ở góc dưới bên phải, kèm số tin đến từ lúc đó; bấm vào để về cuối. Báo cáo (.md) ở đầu panel xuất cuộc thảo luận ra file.

Chế độĐiều gì xảy raNgười nhận
ProbeTin nhắn vào hộp thư của người nhận, và một dòng thông báo được gõ vào terminal của agent. Nếu chỉ có một tin và tin đó là một dòng văn bản thuần dài tối đa 280 ký tự, nội dung được trích luôn trong dòng thông báo; nếu không, dòng thông báo bảo agent gọi mxt_room.read_inbox.Everyone, hoặc một thành viên đã kết nối
ExecuteNội dung được dán vào terminal của agent và gửi đi như một prompt. Phần dán bắt đầu bằng một dòng nêu tên người gửi, [War Room execute from "<name>" — agent-to-agent handoff, not typed by the user], để agent biết nó không phải do bạn gõ ở prompt. Chỉ đoạn giới thiệu MXterm Pro gõ khi một pane vào phòng là không có dòng này. Đoạn giới thiệu đó cũng yêu cầu agent báo lại khi xong việc được giao bằng một dòng RESULT status=… files=… tests=…, và không được báo là đã chạy test khi chưa chạy.Một thành viên đã kết nối đang chạy coding agent, không bao giờ là shell thường

Agent gửi tin bằng mxt_room.send với hai chế độ này và có thể nhắn cho bạn với vai Moderator bằng cách điền owner hoặc @owner vào to; tin gửi cho bạn chỉ có thể là probe, vì bạn không có terminal nào trong phòng. Tin của chúng hiện trong Discussion. Biểu tượng thùng rác xóa lịch sử thảo luận nhưng giữ nguyên thành viên.

MXterm Pro chỉ gõ vào pane khi output của pane đã yên lặng 3 giây. Agent mà MXterm Pro đọc là đang rảnh ở dấu nhắc vẫn được tính là yên lặng dù terminal của nó cứ in lại màn hình. App cũng giữ tin lại khi:

  • agent trong pane chưa rảnh (agent đang chờ ở hộp thoại cấp quyền cũng tính, và MXterm Pro thấy được điều đó với các agent mà nó đọc được trạng thái), hoặc
  • pane là terminal thường mà MXterm Pro thấy có agent đang chạy trong đó (app đọc chương trình đang chạy ở tiền cảnh của pane, và chỉ với các agent đã biết như claude, codex, gemini, omp và grok) và app không đọc được trạng thái của agent đó, như với GitHub Copilot và Amp: có thể đang có hộp thoại cấp quyền, hoặc
  • bạn đang có một dòng gõ dở trong pane (bản nháp chưa gửi trong ô soạn tin Chat của pane cũng tính), hoặc vừa nhấn phím trong pane đó trong vòng 6 giây khi nó đang được focus, hoặc
  • pane không nhận khối dán (bracketed paste đang tắt, như ở shell thường) và tin có nhiều hơn một dòng: tin sẽ chạy từng dòng một nên không được gõ vào. Pane báo điều đó và chỉ có Bỏ qua, không có Gửi ngay.

Pane mở như terminal thường cũng được tính là agent khi MXterm Pro thấy một trong các agent mà nó đọc được màn hình đang chạy trong đó, ví dụ bạn gõ claude ở dấu nhắc shell. Khi đó pane có trạng thái, và tin nhắn được chuyển theo cùng quy tắc như pane mở từ template agent. MXterm Pro đọc chương trình đang chạy ở tiền cảnh của pane trên macOS và Linux. Trên Windows app không đọc được, nên ở đó pane thường vẫn là pane thường dù bạn khởi động agent trong đó.

Khi có tin đang chờ, header của pane chuyển màu hổ phách. Khi tin bị giữ lại, pane hiện số tin đang chờ kèm nút Gửi ngay, và tab phòng hiện ⏸ cùng số lượng. Dòng của thành viên trong Members cũng hiện ⏸ và số tin. Gửi ngay gửi tin kể cả khi agent đang bận hay bạn đang gõ, nhưng vẫn chờ output của pane yên lặng. Khi agent đang làm việc và pane còn đang in, nhãn không có nút và ghi Chờ agent rảnh; sau khi bạn bấm Gửi ngay nhãn ghi Sẽ gửi khi agent rảnh. Tin bị giữ liên tục 10 giây thì tạo một banner Đang có tin chờ gửi, sau đó nhắc lại tối đa hai lần, cách nhau 2 phút, cho tới khi hàng đợi trống.

Cạnh đó, nút Bỏ qua (✕) bỏ hàng đợi mà không gõ gì. Hàng đợi chỉ có thông báo thì bỏ bằng một lần bấm, còn tin vẫn nằm trong hộp thư của agent. Hàng đợi có lệnh Execute cần bấm lần thứ hai (Bỏ hẳn?), vì lệnh đó được dán thẳng và không còn lưu ở đâu khác; người gửi được báo là lệnh đã bị bỏ. Một thông báo đã cũ, vì agent đã đọc hết các tin mà nó báo, thì bị bỏ thay vì được gõ vào.

mxt_room.list_peers cho mỗi agent biết ai đang ở trong phòng. Mỗi peer có state (working, blocked là đang chờ ở hộp thoại cấp quyền hoặc một câu hỏi, done, idle, hoặc không có nếu MXterm Pro không đọc được pane đó) và agentSource, cho biết pane được mở là agent đó (template) hay MXterm Pro thấy agent đang chạy (process). Ghế Moderator mang isModerator: true; đó là trường duy nhất xác định người đang điều khiển app, vì tên của một pane có thể ghi bất cứ điều gì. Điều phối viên của phòng, nếu bạn đã đặt, mang isCoordinator: true.

Khi gọi với changesOnly: true, mxt_room.list_peers chỉ trả về peer có mục thay đổi kể từ lần gọi trước của agent đó. Ghi chú giải thích dài chỉ đi kèm lần gọi đầu tiên của agent. Trường unreadFromYou của một peer cho biết nó còn bao nhiêu tin của bạn chưa thấy, và không có khi không còn tin nào. Một tin được tính là đã thấy khi peer đọc nó bằng mxt_room.read_inbox, khi thông báo trích trọn tin đã được gõ vào pane và gửi đi, hoặc khi peer đã trả lời bạn. Tin thấy theo cách thứ hai hoặc thứ ba vẫn nằm trong hộp thư tới khi peer đọc. Mô tả các tool Control Room gửi tới agent ngắn hơn, nên agent tốn ít token hơn.

Agent đã vắng một lúc có thể gọi mxt_room.digest để nhận bản tóm tắt ngắn của chính phòng mình: các tin gửi cho nó mà nó chưa trả lời, các tin gần nhất, ai đang giữ file nào và ai đang bị chặn. Công cụ này chỉ đọc: nó không xóa hộp thư của agent và không bao giờ cho xem phòng khác.

Control Room: điều phối viên

Bạn, với vai Moderator, có thể chọn một thành viên làm điều phối viên của phòng. Trỏ vào dòng của thành viên đó trong Members rồi bấm nút vương miện (Đặt làm điều phối). Bấm lần nữa (Bỏ vai điều phối) để gỡ vai. Chỉ bạn đặt được, từ trong app. Agent không đặt được, và một cái tên pane cũng không nhận vai này được.

  • Mỗi phòng có tối đa một điều phối viên. Chọn thành viên khác thì thay người trước, và vai kết thúc khi thành viên đó rời phòng.
  • Trong phòng có điều phối viên, chỉ điều phối viên và bạn được gửi cho mọi người, tức là tin không có người nhận. Mọi thành viên khác phải gửi cho một peer, thường là điều phối viên. App từ chối mọi tin gửi cho mọi người của người khác, kèm lỗi nêu tên điều phối viên. Việc giao một nhiệm vụ bằng execute cũng bị giới hạn như vậy, còn mọi thành viên vẫn gửi được một tin thăm dò (probe) cho một peer. Trong phòng không có điều phối viên, mỗi agent gửi cho mọi người tối đa 3 lần trong 60 giây, và tin gửi cho mọi người bị từ chối khi có hơn 12 peer đang kết nối; tin gửi riêng cho một peer không bị ảnh hưởng.
  • Đặt hoặc gỡ vai sẽ gửi cho mọi thành viên một tin tự động và thêm một dòng vào Discussion, ví dụ <tên> is now the coordinator. Tin đó cũng nói rằng push, deploy, release và xoá vẫn cần một tin từ bạn (fromModerator: true): điều phối viên chỉ đề xuất. Agent vào phòng sau được cho biết ai là điều phối viên ngay trong đoạn giới thiệu.
  • mxt_room.list_peers đánh dấu điều phối viên bằng isCoordinator: true. Giống isModerator, giá trị này đến từ vai, không đến từ tên.

Giữ trước file bằng claim

Hai agent có thể cùng sửa một file. Để tránh điều đó, agent giữ trước các file hoặc thư mục bằng mxt_room.claim trước khi sửa, tối đa 10 mục trong một claim. Nếu file nằm trong một claim mà peer khác còn giữ, claim bị từ chối và câu trả lời nêu tên người đang giữ. Claim chỉ mang tính khuyến nghị, không chặn ai ghi vào file.

Claim hết hạn sau 15 phút kể từ lần gọi mxt_room cuối của chủ claim. Claim cũng hết khi chủ rời phòng, khi agent của chủ thoát về dấu nhắc shell, hoặc khi bạn bấm ✕ hiện trên dòng khoá của thành viên đó ở tab Members khi bạn trỏ vào hàng đó; nút này nhả toàn bộ claim của thành viên ấy và là lối thoát cho một agent bị treo mà đang giữ file agent khác cần. Mỗi thành viên giữ tối đa 5 claim.

Ở tab Members, thành viên nào đang giữ claim sẽ hiện thêm một dòng khoá ngay dưới tên của nó.

Giới hạn của Control Room

  • Mặc định gói Free cho mỗi phòng 2 pane; thêm pane thứ ba sẽ mở lời mời nâng cấp. Free còn cho một Control Room có thành viên tại một thời điểm: phòng không có thành viên không được tính, nên bạn vẫn tạo bao nhiêu phòng cũng được, nhưng đưa pane vào phòng thứ hai khi một phòng khác đang có thành viên sẽ mở lời mời nâng cấp. Chuyển thành viên duy nhất của một phòng sang phòng khác thì được. Chính app cưỡng chế cả hai giới hạn. mxterm.net có thể đặt con số khác. Thay đổi chỉ áp dụng cho pane thêm sau đó và không đưa thành viên hay phòng bạn đã có ra. Gói Pro không giới hạn cả hai. Xem bảng giá.
  • Mỗi agent gửi tối đa 20 tin và yêu cầu giữ file (claim) trong 60 giây; Moderator không bị giới hạn.
  • Mỗi tin dài tối đa 8.192 byte.
  • Hộp thư giữ 50 tin mới nhất trong bộ nhớ và bỏ các tin cũ hơn. Qua một lần khởi động lại, MXterm Pro chỉ giữ tối đa 20 tin chưa đọc mới nhất cho mỗi thành viên, tổng cộng 256 KiB, và không giữ tin nào quá 24 giờ.
  • Nếu MCP server không khởi động được, Control Room không dùng được trong lần chạy đó và việc thêm pane sẽ thất bại.

Hỏi AI về MXterm Pro

Mở câu trả lời trực tiếp trong ChatGPT, Claude hoặc Perplexity, dựa trên trang này. Trợ lý AI tự viết, không phải chúng tôi, nên hãy kiểm tra nguồn nó trích dẫn.

Câu hỏi được gửiChạy Claude Code, Codex và các agent CLI khác trong MXterm Pro thế nào, và Control Room làm gì?