功能

保留你的 Claude Code、Codex 和 OpenCode 終端機,或從應用程式工作

Happier 把它們當成你自己會啟動的同一個工作階段來執行 — 所以你可以從它們自己的 TUI、從你的手機,或兩者同時驅動它,而工作階段不會察覺。

如果你活在終端機裡,大多數關於從手機執行程式設計代理程式的文字,讀起來都像是在要求你停下來。拒絕它是合理的。對於你真正擅長的那部分工作,手機螢幕沒有一點比 tmux 加一個鍵盤更好。

所以這裡的主張比較窄。一個 Happier 工作階段是一個工作階段配兩個前端:做事那台電腦上的終端機是其中一個,你手機上的應用程式是另一個。在它們之間切換不會啟動任何新東西 — session id、對話紀錄、權限模式和排隊的訊息,在切換的另一側都是同樣的物件。

在終端機或應用程式裡開始,並在兩者之間移動

從終端機開始
在儲存庫裡執行 happier,你會得到預設的代理程式,並附帶應用程式。happier codexhappier opencodehappier gemini 和登錄庫裡其餘的都是同一件事,只是指向不同的 CLI。你在自己的終端機裡、自己的 shell 裡、用自己的別名;應用程式在旁邊看著。
從應用程式開始,在終端機收尾
在火車上從手機啟動一個工作階段,坐下來後再執行 happier attach <session-id>。不帶 id 時,它會開啟一個這台電腦上執行中工作階段的選擇器,並把無法 attach 的那些標上原因,而不是把它們藏起來。
把工作階段交回應用程式
取得本機控制要從終端機開始;交回去則可以從應用程式提出。Happier 會先等目前的終端機回合到達一個安全的停頓點,因為硬把一則提示塞進忙碌的 TUI,正是你會弄丟它做到一半的成果的方式。
使用應用程式內建的終端機
連線電腦上的一個即時 shell,可停靠在底部面板、側邊欄或詳細資料面板,能撐過頁面重新整理,而且在你移動它時保持同一個 shell。它和應用程式用來執行供應商登入的是同一套終端機傳輸。

哪些代理程式能在終端機和應用程式之間移動工作階段

十三個裡的三個,而且它們的行為並不相同。Codex 是獨佔的 — 一次只能有一個驅動者。OpenCode 不是,而 Claude Code 兩者皆可,取決於你用哪一種執行環境啟動它。

代理程式終端機與應用程式同時重新 attach 的途徑在實務上的意思
Claude Code一次一個,或兩者同時tmux在預設的執行環境上,當你正在驅動終端機時從應用程式送出的訊息會待在佇列裡,而不是被輸入你的工作階段;權限提示仍會轉發到應用程式,而那道橋接預設是開啟的。統一終端機執行環境就是「兩者同時」的情況 — 見下方。
Codex一次一個tmux同樣的獨佔性。Happier 會等本機的回合結束、中止或退出,才把工作階段收回並送出你排入佇列的內容。
OpenCode兩者同時OpenCode 自己的 attach共用本機控制,不必先啟用什麼:OpenCode TUI 接上時應用程式仍可寫入,而且不涉及任何多工器。

Happier 執行的另外十個代理程式,仍然可以用 happier <agent> 從終端機啟動,也仍然會出現在你的手機上。它們做不到的是讓你在進行到一半時把工作階段帶回它們自己的 TUI。

從終端機和應用程式兩邊驅動同一個 Claude Code 工作階段

引導和中斷是不同的動作。中斷會停止正在執行的回合,並從你的訊息開始另一個。引導則是加進正在執行的回合裡 — 工作繼續下去,只是現在知道了你剛告訴它的事。兩者都有用,而當你從手機抬起頭、發現它正要把錯的檔案改名時,你想要的是第二種。

Anthropic 把 Agent SDK 的串流輸入記載為依序處理的排隊訊息,並具備中斷的能力。那是 Happier 預設用於 Claude Code 的執行環境,對多數工作階段來說也是對的那一個。Claude Code 自己的終端機接受的是另一種訊息:在它工作時輸入,指示就會加入已在進行中的工作。

統一終端機執行環境是應用程式達成那件事的方式。Happier 會在一個共用的終端機主機裡啟動真正的 claude TUI — 你有 tmux 的話就用 tmux,否則用 Happier 隨附的 zellij — 把那個終端機串流到你登入的每一台裝置,並把你從應用程式送出的內容輸入到你自己原本會輸入的同一個輸入框裡。一個 Claude Code 行程,一個工作階段,兩個鍵盤在上面。你可以在辦公桌前的 TUI 裡打字,同時同一個工作階段從手機被回應,而兩端都不會把另一端鎖在外面。

在你開啟它之前它是關閉的,開關在 Claude Code 供應商設定裡。它需要 tmux 或隨附的 zellij,所以今天這代表 macOS 和 Linux;在 Windows 上,CLI 會告訴你改用 WSL2,而不是啟動一個它無法驗證的東西。而當終端機處於輸入會不安全的狀態時 — 有對話框開著,或你自己打了一半的一行字 — Happier 會保留你的訊息,而不是打在你上面。

attach 需要什麼:tmux、同一台電腦、執行中的 daemon

最常絆倒人的一點:在 macOS 和 Linux 上,要 attach 到從應用程式啟動的 Claude Code 或 Codex 工作階段,必須在那個工作階段啟動之前就已啟用 tmux 整合。事後才開啟,已經在執行的工作階段就無法 attach — 它一開始就不是在 tmux 裡啟動的。你也必須從擁有該工作階段的同一台電腦、用啟動它的同一個帳號來 attach。

Windows 不使用 tmux。那裡的工作階段是以 Hidden、在 Windows Terminal 裡,或在主控台裡啟動,而 happier attach 會聚焦已經存在的那個主機,而不是重新接上一個多工器。這是逐機器、逐工作階段的選擇,不是全域的。

內嵌終端機需要你所指向那台電腦的 daemon 正在執行且已連線。如果 daemon 離線,Happier 會顯示錯誤狀態,而不是一個安靜地什麼都不做的 shell。

tmux、Windows 工作階段模式,以及終端機停靠在哪裡

如果你從終端機啟動工作階段,這一頁上的東西都不需要設定 — 那條路徑在 CLI 安裝好的那一刻就能用。真正需要做決定的設定是 tmux 整合、Windows 工作階段模式,以及內嵌終端機停靠在哪裡,這三項都在設定參考裡。