> 此翻譯由 Claude 生成。如有改進建議,歡迎提交 PR。
基於 Ghostty 的 macOS 終端機,具備垂直分頁和為 AI 程式設計代理設計的通知系統
English | 日本語 | Tiếng Việt | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | ភាសាខ្មែរ | Українська
通知提示環當程式設計代理需要您注意時,窗格會顯示藍色光環,分頁會亮起 |
|
通知面板在一處檢視所有待處理通知,快速跳至最新未讀通知 |
|
內建瀏覽器在終端機旁邊分割出瀏覽器窗格,提供從 agent-browser 移植的可指令化 API |
|
垂直 + 水平分頁側邊欄顯示 git 分支、關聯 PR 狀態/編號、工作目錄、監聽連接埠和最新通知文字。支援水平和垂直分割。 |
|
SSHcmux ssh user@remote 為遠端機器建立工作區。瀏覽器窗格透過遠端網路路由,因此 localhost 直接可用。將圖片拖入遠端工作階段即可透過 scp 上傳。
|
|
Claude Code Teamscmux claude-teams 一條指令執行 Claude Code 的隊友模式。隊友以原生分割的形式產生,側邊欄顯示中繼資料和通知。無需 tmux。
|
|
開啟 `.dmg` 檔案並將 cmux 拖曳至「應用程式」資料夾。cmux 透過 Sparkle 自動更新,您只需下載一次。
### Homebrew
```bash
brew tap manaflow-ai/cmux
brew install --cask cmux
```
之後更新:
```bash
brew upgrade --cask cmux
```
首次啟動時,macOS 可能會要求您確認開啟來自已驗證開發者的應用程式。點擊**開啟**即可繼續。
## 為什麼做 cmux?
我同時執行大量 Claude Code 和 Codex 工作階段。之前我用 Ghostty 開了一堆分割窗格,依靠 macOS 原生通知來得知代理何時需要我。但 Claude Code 的通知內容總是千篇一律的「Claude is waiting for your input」,沒有任何上下文資訊,而且分頁一多,連標題都看不清了。
我試過幾個程式設計協調工具,但大多數都是 Electron/Tauri 應用程式,效能讓我不滿意。我也更喜歡終端機,因為 GUI 協調工具會把你鎖定在它們的工作流程裡。所以我用 Swift/AppKit 建構了 cmux,作為一個原生 macOS 應用程式。它使用 libghostty 進行終端機渲染,並讀取您現有的 Ghostty 設定中的主題、字型和色彩設定。
主要新增的是側邊欄和通知系統。側邊欄有垂直分頁,顯示每個工作區的 git 分支、關聯 PR 狀態/編號、工作目錄、監聽連接埠和最新通知文字。通知系統能擷取終端機序列(OSC 9/99/777),並提供 CLI(`cmux notify`),您可以將其接入 Claude Code、OpenCode 等代理的 hooks。當代理等待時,其窗格會顯示藍色光環,分頁會在側邊欄亮起,這樣我就能在多個分割窗格和分頁之間一眼看出哪個需要我。Cmd+Shift+U 可以跳至最新的未讀通知。
內建瀏覽器擁有從 [agent-browser](https://github.com/vercel-labs/agent-browser) 移植的可指令化 API。代理可以擷取無障礙樹快照、取得元素參照、執行點擊、填寫表單和執行 JS。您可以在終端機旁邊分割出瀏覽器窗格,讓 Claude Code 直接與您的開發伺服器互動。
所有操作都可以透過 CLI 和 socket API 進行指令化 — 建立工作區/分頁、分割窗格、傳送按鍵、在瀏覽器中開啟 URL。
## The Zen of cmux
cmux 不規定開發者應該如何使用工具。它是一個帶有 CLI 的終端機和瀏覽器,其餘的由你決定。
cmux 是原語,而非解決方案。它提供終端機、瀏覽器、通知、工作區、分割、分頁,以及控制這一切的 CLI。cmux 不強迫你以特定方式使用程式設計代理。你用這些原語建構什麼,完全取決於你自己。
最優秀的開發者一直在建構自己的工具。還沒有人找到與代理協作的最佳方式,那些建構封閉產品的團隊也沒有找到。最接近自己程式碼庫的開發者會最先找到答案。
給一百萬個開發者可組合的原語,他們會比任何由上而下設計的產品團隊更快地找到最高效的工作流程。
## 文件
有關 cmux 設定的更多資訊,請[前往我們的文件](https://cmux.com/docs/getting-started?utm_source=readme)。
## 鍵盤快捷鍵
### 工作區
| 快捷鍵 | 操作 |
|----------|--------|
| ⌘ N | 新增工作區 |
| ⌘ 1–8 | 跳至工作區 1–8 |
| ⌘ 9 | 跳至最後一個工作區 |
| ⌃ ⌘ ] | 下一個工作區 |
| ⌃ ⌘ [ | 上一個工作區 |
| ⌘ ⇧ W | 關閉工作區 |
| ⌘ ⇧ R | 重新命名工作區 |
| ⌥ ⌘ E | 編輯工作區描述 |
| ⌘ B | 切換側邊欄 |
| ⌥ ⌘ B | 切換右側邊欄 |
| ⌘ ⇧ E | 切換右側邊欄焦點 |
### 介面
| 快捷鍵 | 操作 |
|----------|--------|
| ⌘ T | 新增介面 |
| ⌘ ⇧ ] | 下一個介面 |
| ⌘ ⇧ [ | 上一個介面 |
| ⌃ Tab | 下一個介面 |
| ⌃ ⇧ Tab | 上一個介面 |
| ⌃ 1–8 | 跳至介面 1–8 |
| ⌃ 9 | 跳至最後一個介面 |
| ⌘ W | 關閉介面 |
### 分割窗格
| 快捷鍵 | 操作 |
|----------|--------|
| ⌘ D | 向右分割 |
| ⌘ ⇧ D | 向下分割 |
| ⌥ ⌘ ← → ↑ ↓ | 按方向切換焦點窗格 |
| ⌘ ⇧ H | 閃爍聚焦面板 |
### 瀏覽器
瀏覽器開發者工具快捷鍵遵循 Safari 預設設定,可在 `設定 → 鍵盤快捷鍵` 中自訂。
指令面板導覽快捷鍵(包括 ⌃ P)同樣可自訂,並可清除以便按鍵傳遞到使用中的終端機。
| 快捷鍵 | 操作 |
|----------|--------|
| ⌘ ⇧ L | 在分割中開啟瀏覽器 |
| ⌘ L | 聚焦網址列 |
| ⌘ [ | 上一頁 |
| ⌘ ] | 下一頁 |
| ⌘ R | 重新整理頁面 |
| ⌥ ⌘ I | 切換開發者工具(Safari 預設) |
| ⌥ ⌘ C | 顯示 JavaScript 主控台(Safari 預設) |
### 通知
| 快捷鍵 | 操作 |
|----------|--------|
| ⌘ I | 顯示通知面板 |
| ⌘ ⇧ U | 跳至最新未讀 |
| ⌥ ⌘ U | 切換目前項目的未讀狀態 |
| ⌃ ⌘ U | 將目前項目標記為最早未讀並跳至下一個最新未讀 |
### 尋找
| 快捷鍵 | 操作 |
|----------|--------|
| ⌘ F | 尋找 |
| ⌘ ⇧ F | 在目錄中尋找 |
| ⌘ G / ⌥ ⌘ G | 尋找下一個 / 上一個 |
| ⌥ ⌘ ⇧ F | 隱藏尋找列 |
| ⌘ E | 使用選取內容進行尋找 |
### 終端機
| 快捷鍵 | 操作 |
|----------|--------|
| ⌘ K | 清除回捲緩衝區 |
| ⌘ C | 複製(有選取內容時) |
| ⌘ V | 貼上 |
| ⌘ + / ⌘ - | 放大 / 縮小字型 |
| ⌘ 0 | 重置字型大小 |
### 視窗
| 快捷鍵 | 操作 |
|----------|--------|
| ⌘ ⇧ N | 新增視窗 |
| ⌘ ⇧ O | 重新開啟上一個工作階段 |
| ⌘ , | 設定 |
| ⌘ ⇧ , | 重新載入設定 |
| ⌘ Q | 結束 |
## 每夜建置
[下載 cmux NIGHTLY](https://github.com/manaflow-ai/cmux/releases/download/nightly/cmux-nightly-macos.dmg)
cmux NIGHTLY 是一個擁有獨立 Bundle ID 的單獨應用程式,因此可以與穩定版並行執行。它從最新的 `main` 提交自動建置,並透過獨立的 Sparkle 更新來源自動更新。
請在 [GitHub Issues](https://github.com/manaflow-ai/cmux/issues) 或 [Discord 的 #nightly-bugs 頻道](https://discord.gg/xsgFEVrWCZ) 上回報每夜建置的 bug。
## 工作階段還原
結束 cmux 會儲存目前的工作階段。重新啟動時,cmux 會還原應用程式管理的狀態:
- 視窗/工作區/窗格佈局
- 工作目錄
- 終端機回捲緩衝區(盡力還原)
- 瀏覽器 URL 和導覽歷史
cmux 不會為任意即時程序狀態建立檢查點。tmux、vim、shell 和不支援的終端機應用程式會作為一般終端機重新開啟。
當 hooks 儲存了原生工作階段 ID 時,受支援的 agent 工作階段可以還原。請在安裝 agent CLI 之後再安裝 hooks,以確保其二進位檔位於 `PATH` 上:
```bash
cmux hooks setup
cmux hooks setup codex
cmux hooks setup --agent opencode
```
`cmux hooks setup` 會安裝它能找到的受支援 agent,並為略過的 agent 列印摘要。受支援的還原整合包括 Claude Code、Codex、Grok、OpenCode、Pi、Amp、Cursor CLI、Gemini、Rovo Dev、Copilot、CodeBuddy、Factory 和 Qoder。當在設定中啟用了 Claude 整合時,Claude Code 由 cmux Claude wrapper 處理。
進階使用者和整合可以把自訂還原指令繫結到目前的終端機 surface。這適用於 tmux 工作階段或自訂 agent CLI 等擁有持久狀態的工具:
```bash
cmux surface resume set --kind tmux --checkpoint work --shell "tmux attach -t work"
cmux surface resume show --json
cmux surface resume clear --checkpoint work
```
這個繫結會繼續關聯到 cmux surface。透過公開 CLI 或 socket 建立的繫結會儲存以供檢查和手動還原,除非您為某個簽署指令前綴核准了自動還原。已核准的前綴還會繫結到工作目錄和確切的環境變數值(如果存在)。可在 **設定 > 終端機 > 還原指令** 中檢視或編輯核准項。cmux 只會自動執行它標記為可信的還原繫結,例如從執行中程序偵測到的 tmux 繫結或使用者核准的前綴。權杖、密碼、密鑰和 API key 等敏感環境變數鍵會在儲存還原繫結前被捨棄。
如需讓還原的 agent 終端機保持閒置,而不是自動執行其還原指令,請關閉 **設定 > 終端機 > 重新開啟時還原 Agent 工作階段**,或在 `~/.config/cmux/cmux.json` 中設定:
```json
{
"terminal": {
"autoResumeAgentSessions": false
}
}
```
這只會停用自動的 agent 還原指令。cmux 仍會還原儲存的佈局、工作目錄、回捲緩衝區和瀏覽器歷史。
如果您需要手動重新套用上次儲存的快照,請使用:
- `檔案 > 重新開啟上一個工作階段`
- `⌘ ⇧ O`
- `cmux restore-session`
在底層,cmux 會在 `~/Library/Application Support/cmux/` 下寫入帶版本的快照,agent hooks 會在 `~/.cmuxterm/` 下寫入工作階段對應。還原時,cmux 會先重建佈局,然後在啟用了自動 agent 還原時執行受支援 agent 的原生還原指令。
完整指南請見
WeChat:掃描 QR 碼加入社群。