關掉視窗,
工作仍然接得回來。
先學會建立、暫離、接回。再用工作區、視窗和分割區,整理你的 Agent 與專案。
第一次,照這四步操作
在 Terminal 的一般 shell 提示符輸入指令。不要把 shell 指令貼進正在對話的 Agent 輸入框。下列範例使用你的 PopDaily Hub 作起始目錄。
建立一個叫 popdaily 的工作區
tmux new -s popdaily -c /Users/maki/Documents/popdaily-agent-hub成功後會看到新的 shell,通常底部有狀態列與工作區名稱。-s 是名稱;-c 是起始目錄。若名稱已存在,改用下方的接回指令。
在裡面啟動你平常用的 Agent
例如,選一個輸入:
codex或在另一個視窗用 claude。如果你原本需要其他參數,沿用平常的啟動方式。只有在 tmux 裡新啟動的程序,才屬於這個工作區。
暫離,讓工作留在背景
按 Ctrl+B,全部放開,再按小寫 D。
看到 [detached …] 並回到外層 shell,代表你離開畫面,沒有結束裡面的工作。這個動作叫 detach。
接回剛才的畫面
tmux attach -t popdaily-t 是要接回的目標工作區。這個動作叫 attach。
tmux attach -t popdaily。這裡的 Ctrl 是 Control,不是 Command。工作區、視窗、分割區是什麼?
例如 popdaily、research。把相關視窗收在一起,可以整組接回。
例如 Codex、Claude、Shell。這是 tmux 內部視窗,不是 macOS 視窗。
把同一個視窗左右或上下切開。每塊可各跑一個程式或 shell。
一個專案的示意配置
外面的 Terminal 是用來觀看與操作這些工作區的 client。tmux server 在背景維持工作區與程序;外層視窗不見,不等於工作區被結束。
觀看與輸入→tmux server
保存運行中的工作→Session → Window → Pane
Agent、shell、其他程式
每天怎麼用?
PopDaily、91APP、軒郁:各一個 session
第一次建立三個工作區;之後每天接回,不必每天重建。只要同一台 Mac 上的 tmux server 與 session 還在,昨天的視窗與程序就能接續;重開機後則需重新建立,Agent 的對話另走自己的恢復流程。
popdaily
Codex 視窗
Claude 視窗
Shell/log 視窗
91app
Codex 視窗
Claude 視窗
Shell/log 視窗
shiny
Codex 視窗
Claude 視窗
Shell/log 視窗
shiny 是本指南建議的短名稱,可自行換名。三個視窗是建議配置,不是每個工作區都必須開滿。
A. 第一次:逐個建立,逐個暫離
在 tmux 外層的 Terminal shell 執行第一行。進入後按 Ctrl+B → D 回到外層,再執行下一行;不要把三行一次貼進正在跑的 Agent。
tmux new -A -s popdaily→ 已進入 PopDaily。按 Ctrl+B → D 暫離後,再建立下一個:
tmux new -A -s 91app→ 已進入 91APP。再按 Ctrl+B → D,繼續:
tmux new -A -s shiny→ 已進入軒郁。再暫離一次,在外層查看:
tmux ls驗收:清單中有 popdaily、91app、shiny 三個名稱。-A 代表「有就接回、沒有才建立」,所以重複操作也不會另外建立同名工作區。
B. 每個工作區:配置自己的 Agent 視窗
- 先接回主線,例如在外層輸入
tmux attach -t popdaily。 - 在 shell 切到該主線的實際目錄,執行
pwd確認。下面只提供已確認的 PopDaily Hub 路徑;91APP 與軒郁請使用各自的實際專案/worktree,不猜目錄。 - Ctrl+B → ,,將目前視窗命名為
Codex,Enter 確認,再用平常的指令啟動 Codex。 - Ctrl+B → C 新增視窗,再 Ctrl+B → , 命名為
Claude。確認所在目錄與分配的 worktree,再啟動 Claude。 - 需要時再新增名為
Shell的視窗,留給一般指令或 log。其他兩個 session 也可用同一套方式配置。
cd /Users/maki/Documents/popdaily-agent-hub
pwd這是顧問 Hub 目錄範例;若要修改網站程式碼,須依專案規則切到對應 code repo/worktree。
C. 每天上工:接回今天先做的主線
在外層 shell 選一行執行即可,不需要把三個都重新打開:
tmux attach -t popdailytmux attach -t 91apptmux attach -t shiny先看畫面中的 Agent 是否還在、目前目錄是否正確,再繼續交代工作。attach 不會替你重啟 Agent,也不會自動還原已結束的對話。
D. 白天切主線、切 Agent
| 你要做的事 | 操作 |
|---|---|
| PopDaily → 91APP → 軒郁 | Ctrl+B → S,用方向鍵選工作區、Enter 接回 |
| 同一主線的 Codex → Claude → Shell | Ctrl+B → W,用方向鍵選視窗、Enter 切換 |
| 暫時離席,三條主線留著 | 在目前畫面 Ctrl+B → D;其他 session 不需要逐一關閉 |
| Terminal 掛掉後 | 重新開 Terminal → tmux ls → attach 到目標主線 |
開始工作:沒有就建立,有就接回
在 tmux 外面的 shell 執行:
tmux new-session -A -s popdaily -c /Users/maki/Documents/popdaily-agent-hub-A 讓已有的 session 直接接回。接回時不會把各 pane 的現有目錄重設;先用 pwd 確认所在位置。
同時使用兩個 Agent
- 在第一個視窗啟動 Codex。
- 按 Ctrl+B → ,,輸入
Codex,按 Enter 命名。 - 按 Ctrl+B → C 建立新視窗,再用 Ctrl+B → , 命名為 Claude。
- 在新視窗先
pwd,需要時cd到已分配的專案/worktree,再啟動 Claude。 - 按 Ctrl+B → W,用方向鍵選視窗、Enter 切換。
上述 C、D、W、S、Z 均指小寫字母鍵,不要加 Shift;% 與雙引號則需輸入該符號。
切到另一個專案工作區
先 detach 回外層,再建立自己的研究工作區:
tmux new -s research -c /Users/maki/Documents之後在 tmux 內按 Ctrl+B → S,可挑選工作區。每個工作區能保有自己的視窗組合。
離席與收工:分清楚兩件事
| 你想做什麼 | 怎麼做 | 結果 |
|---|---|---|
| 晚點回來繼續 | Ctrl+B → D | 程序保留;不等於存檔或寫入 Agent 記憶。 |
| 確定結束工作 | 先依 Agent 的流程存檔/交接,正常退出 Agent,再於 shell 輸入 exit | 關閉該 shell pane。最後一個視窗結束後,session 通常也會結束。 |
| 準備重開 Mac | 先完成檔案儲存、工作交接與必要 checkpoint | 單靠 detach 不能跨重開機保留運行中的程序。 |
Terminal 又掛了,這樣接回
- 重新開啟 Terminal。
- 列出仍存在的工作區:
tmux ls若看到 popdaily: … windows,接回它:
tmux attach -t popdaily看到 (attached) 代表有 client 連著,不代表壞掉。一般 attach 可共同觀看同一個 session;不同 client 也可能共同操作同一 pane。
舊 client 還在,我只想從這個視窗接手
以下指令會先讓其他連到此工作區的 client 離開,再讓你接上;不會結束工作區內的程序。有人共用時先對齊。
tmux attach -d -t popdaily出現 no server running / no sessions / can't find session
目前連到的 tmux server 沒有該工作區。先確認名稱、使用者與電腦是否相同,是否用過不同 socket(-L/-S)。若 Mac 已重開、server 已退出,或程序原本不在 tmux 裡,這個 attach 指令不能把它復活。
快捷鍵速查
Ctrl+B → D 暫離;Ctrl+B → S 切主線;Ctrl+B → W 切視窗;Ctrl+B → C 開視窗;Ctrl+B → , 改視窗名稱。
需要時再學:%/雙引號分割、方向鍵換 pane、Z 放大、[ 回捲。
每一列都是先按 Ctrl+B,放開,再按後面的鍵。這是預設鍵位;本機設定若另外改過,以實際設定為準。
| 後面的鍵 | 功能 | 何時用 |
|---|---|---|
| D | 暫離 session | 離席,保留工作。 |
| S | 挑選 session | 切換專案工作區。 |
| C | 新增 window | 再開一個 Agent 或 shell。 |
| , | 命名目前 window | 標成 Codex、Claude、Shell。 |
| W | 挑選 window | 忘記視窗編號時。 |
| N / P | 下一個/上一個 window | 快速切換。 |
| 0…9 | 切到指定編號 window | 編號看底部狀態列。 |
| % | 左右分割 | 並排看兩塊終端。 |
| " | 上下分割 | 上面操作、下面看 log。 |
| 方向鍵 | 切到鄰近 pane | 確認游標在哪裡再輸入。 |
| Z | 放大目前 pane/恢復 | 暫時專心看一塊。 |
| [ | 進入回捲/複製模式 | 查看前面的輸出。 |
| ] | 貼上 tmux buffer | 與 macOS 剪貼簿不同。 |
| ? | 顯示實際鍵位 | 鍵位不如預期時;按 q 離開。 |
用得順,也不容易操作錯
- Session 名稱長期固定。用 popdaily、91app、shiny 對應主線,不必每天加日期開一批。臨時實驗才另開清楚命名的工作區。
- 每個視窗有明確用途。用 Codex、Claude、Shell 等名稱;需要固定名稱時,可在該視窗的 shell 執行
tmux set-option -w automatic-rename off,再以 Ctrl+B → , 命名。這只關閉自動依程序改名,不保證其他應用發出的命名序列也被禁止。 - 先看主線,再看游標,最後才貼指令。確認 session 名稱、視窗名稱與目前 pane;shell 用 pwd 確認目錄。不要把部署指令貼進另一個專案或 Agent 對話框。
- 一個 pane 一個主要工作。Agent 佔著輸入框時,開 Shell 視窗跑一般指令;不用每次中斷 Agent 才能查看檔案。
- 先用視窗,必要時才分割。兩個 Agent 可分不同 window;只有要同時對照 log 才切 pane。畫面太小時 Ctrl+B → Z 暫時放大,再按一次還原。
- 暫離用 detach,別用 Ctrl+C 或 exit。Ctrl+C 通常會向前景程序送出中斷訊號,實際由程式處理;shell 的 exit 會退出該 shell。它們都不是「把工作放到背景」。
- 不要在 tmux 裡反覆啟動另一層 tmux。用 Ctrl+B → S 切工作區;要照本指南建立新 session,先 Ctrl+B → D 回到外層。
- 離席前做簡短 checkpoint。確認 Agent 是否仍執行、是否等你回覆;重要結果存檔,記下下一步。detach 保留程序,不能代替專案交接或對話儲存。
- 定期整理閒置工作。用 Ctrl+B → S/W 檢視工作區與視窗;確定任務結束並保存結果後,正常退出 Agent,再退出不需要的 shell。不要為了整理畫面批次結束所有 session。
- 遠端與本機分清楚。連遠端前後留意主機與目錄;本機 tmux 不等於遠端工作已受保護。不同主線的雲端帳號、資料與 Git 隔離仍照原規則。
每日 30 秒檢查
上工:列出 session → 接回主線 → 看工作目錄與 Agent 狀態。
切換:S 換主線,W 換視窗,確認游標再輸入。
離席:存關鍵結果 → 記下一步 → Ctrl+B、放開、D。
重開 Mac 前:完成正式 checkpoint;不要期待 tmux 自動復活所有工作。
以上是建議工作方式;快捷鍵以預設 prefix Ctrl+B 為準。tmux 不改變原有的操作授權、Git 或資料隔離規則。
滑鼠捲動、選字、複製
本輪讀到你的 ~/.tmux.conf 已有 set -g mouse on,指南沒有修改它。現存 server 是否已載入這個值,要看執行中的設定。
先查,不必重設整份設定檔
在 tmux 裡的 shell 執行;若 Agent 佔著輸入框,先用 Ctrl+B → C 新增 shell 視窗:
tmux show-options -g mouse若是 mouse off,想開啟目前 server 的滑鼠支援,可手動執行:
tmux set-option -g mouse on這會影響目前 server 的工作區,但不改設定檔。要還原可用 tmux set-option -g mouse off。
不靠滑鼠也能看舊輸出
Ctrl+B → [ 進入 copy mode,用方向鍵或 Page Up/Page Down 移動。Mac 可試 Fn+↑/↓。離開鍵依模式而異:emacs 用 Escape;vi 用 q。
查目前視窗採哪一種模式:
tmux show-options -w mode-keys| 模式 | 開始選取 | 複製到 tmux buffer | 離開模式 |
|---|---|---|---|
| emacs | Ctrl+Space | Alt+W | Escape |
| vi | Space | Enter | q |
開始選取後用方向鍵延伸範圍。macOS 可能先攔截 Ctrl+Space;Option 是否送出 Alt 也依 Terminal 設定。遇到衝突可使用滑鼠,或在 shell 輸入 tmux set-option -w mode-keys vi,只調整目前視窗;改回用 emacs。
要貼到 Slack 或瀏覽器?
tmux buffer 與 Mac 剪貼簿不是同一件事。先完成上面的 tmux 複製,再於這台 Mac 的 shell執行:
tmux save-buffer - | pbcopy然後到目標 App 按 Command+V。這會以最新的 tmux buffer 覆蓋 Mac 剪貼簿;若 tmux 跑在 Linux 遠端,不能直接套用此方法。
兩分鐘演練:不用真的弄掛 Terminal
這段用獨立的 tmux-demo 工作區,不放真實任務。先 detach 離開原本的 session,再在外層 shell 做:
tmux new -s tmux-demo進入後,記下 shell PID:
echo "我的 shell PID:$$"- 記住顯示的數字。
- Ctrl+B → D 暫離。
- 在外層執行下方指令接回。
tmux attach -t tmux-demo再跑一次 echo "我的 shell PID:$$";數字相同,代表接回同一個 shell。這驗證 detach/attach,沒有刻意觸發 App 當機。
演練完成,在 demo 的 shell 輸入 exit,正常結束這個練習工作區。不要在有真實工作正在跑的 pane 裡照做。
常見問題
現在已經跑到一半的 Agent,可以直接搬進去嗎?
這份指南的流程不會搬移現有程序。先讓目前工作完成 checkpoint,下一次從 tmux 裡啟動 Agent。不要為了導入 tmux 直接中斷未保存的任務。
tmux 會幫我記住 Agent 的對話嗎?
它維持程序與終端狀態,不代替 Agent 的持久化對話、AMH、檔案或 Git。Agent 自己 crash 後是否能 resume,依該工具功能與已保存紀錄而定。
關蓋睡眠後,工作會繼續算嗎?
tmux 不負責讓 Mac 保持喚醒。請把「session 可接回」與「睡眠期間持續運算、網路不中斷」分開看;後兩者不能靠 tmux 保證。
按快捷鍵沒反應,或出現 sessions should be nested with care?
先切到英文輸入,確認用的是 Control+B,放開後再按下一鍵。若出現巢狀提示,先不要再建立內層 tmux;用 Ctrl+B → S 切 session,或 detach 後再操作。在 shell 執行 printenv TMUX 可查看環境提示,但單靠環境變數不能驗證 server 健康。
不同視窗會共用同一個 cd 目錄嗎?
每個 pane 的 shell 各有自己的目前目錄;在其中一個執行 cd 不會替其他 pane 切目錄。建立新視窗時的起點受命令及設定影響,先 pwd 確認最清楚。
本機 tmux 裡跑 SSH,遠端工作也受保護嗎?
本機 tmux 保留的是本機 SSH 程序;網路斷線仍可能讓遠端工作中止。要保留遠端程序,通常需在遠端主機內使用 tmux。這份指南不建立遠端連線;仍須遵守各主機的操作授權。
來源與版本
指令與預設鍵位以本機 tmux 3.7c 的 man tmux 核對;搭配 tmux 官方 Getting Started 與 完整指令手冊。實際結果可能受既有設定影響。
- 已安裝版本 ← tool:2026-09-17 執行
tmux -V→tmux 3.7c。 - 本機滑鼠設定 ← tool:唯讀檢查
~/.tmux.conf的 mouse 設定;未更動。 - session/window/pane、attach/detach 與鍵位 ← tool:本機
/opt/homebrew/share/man/man1/tmux.1。 - 一專案一工作區、Agent 分視窗 ← 操作建議;不代表 Git 或檔案隔離。
本文件是操作指南。指南本身不會安裝軟體、套用設定、啟動 Agent 或遷移現有工作。