即時工作階段檢視
時間軸面板實際顯示什麼 — 訊息、工具呼叫、任務與 prompts,全部以事件而非 CLI 卷軸的形式呈現。
當分頁正在執行 Claude Code 時,purplemux 會以結構化的時間軸取代純終端機檢視。一樣的工作階段、一樣的 JSONL 紀錄 — 但被排成可掃視、可滾動、可連結的離散事件。
為何時間軸勝過卷軸
Claude CLI 是互動式的。要查看十五分鐘前它做了什麼,意味著要在終端機中滾過此後發生的所有事情、讀換行包裹的字串、猜某個工具呼叫在哪結束、下一個又從哪開始。
時間軸保留同樣的資料並加上結構:
- 每則訊息、工具呼叫、任務或 prompt 各一列
- 工具輸入與輸出歸在一起
- 永久錨點 — 緩衝區滿了事件也不會滑出頂部
- 目前步驟永遠釘在底部,附上經過時間計數器
你隨時都可以用頂部列的模式切換鈕回到終端機。時間軸是同一工作階段的另一種檢視,而不是另一個工作階段。
你會看到什麼
時間軸中的每一列對應 Claude Code JSONL 紀錄中的一筆條目:
| 類型 | 顯示內容 |
|---|---|
| 使用者訊息 | 你的 prompt,以聊天氣泡呈現。 |
| 助理訊息 | Claude 的回覆,以 Markdown 渲染。 |
| 工具呼叫 | 工具名稱、關鍵參數與回應 — read、edit、bash 等。 |
| 工具群組 | 連續的工具呼叫摺疊成一張卡。 |
| 任務 / 計畫 | 多步驟計畫,含勾選進度。 |
| Sub-agent | Agent 呼叫與其進度群組在一起。 |
| 權限提示 | 攔截到的提示,含 Claude 提供的相同選項。 |
| 壓縮中 | Claude 在自動壓縮 context 時的輕微指示。 |
冗長的助理訊息會摺疊成片段,含展開鈕;冗長的工具輸出會被截斷,附上「顯示更多」切換鈕。
它如何保持即時
時間軸由 /api/timeline 上的 WebSocket 餵入。伺服器對作用中的 JSONL 檔案執行 fs.watch,解析新加入的條目並即時推送給瀏覽器。沒有輪詢、沒有完整重新抓取 — 初始 payload 送出已存在的條目,之後一切都是增量。
當 Claude 處於 busy 時,你還會看到:
- 帶有目前步驟即時經過時間的 spinner
- 目前的工具呼叫(例如「Reading src/lib/auth.ts」)
- 最近一段助理文字的簡短片段
這些來自 JSONL 監看器的 metadata pass,更新時不會改變工作階段狀態。
滾動、錨點與歷史
當你已經在底部時,時間軸會自動滾動;當你向上滾去讀某段內容時則會停住。當你高於最新條目超過一個螢幕時,會出現浮動的 回到底部 按鈕。
對於長工作階段,較舊的條目會在你向上滾動時按需載入。Claude 工作階段 ID 會在恢復時保留,所以你昨天接續下來的工作階段會回到你離開的地方。
行內權限提示
當 Claude 要求執行工具或編輯檔案時,提示會出現在時間軸的行內,而非以 modal 顯示。你可以點選選項、按下對應數字鍵,或不予理會、改從手機透過 Web Push 回應。完整流程請見 權限提示。
單一分頁中的多種模式
頂部列可切換右側面板針對同一工作階段顯示什麼:
- Claude — 時間軸(預設)
- Terminal — 原始 xterm.js 檢視
- Diff — 工作目錄的 Git 變更
切換模式不會重新啟動任何東西。工作階段在三種檢視背後始終在 tmux 上執行。
快速鍵:⌘⇧C · ⌘⇧T · ⌘⇧F。
下一步
- 權限提示 — 行內核可流程。
- 工作階段狀態 — 驅動時間軸指示的徽章。
- 快速 prompts 與附件 — 底部輸入列能做什麼。