從手機遙控 Claude Code:為甚麼 Telegram wrapper 幾乎都離不開 tmux

有時候人已經離開電腦,腦裡還在跑一個未完成的問題。放工路上想追問 Claude 一個 follow-up,或者出門後才發現某個 refactor 還要跑半小時,這時候如果能在手機上繼續同一個 session,而不需要帶住部 laptop,會方便很多。

Telegram wrapper bot 就是這樣出現的。它把 Telegram 變成一個輕量遠端介面,讓你在手機上跟 Claude Code、OpenCode 等 AI coding agent 互動。但不同工具背後的架構差別頗大,最明顯的一條分水嶺是:到底要不要用 tmux。

Telegram wrapper 解決了甚麼問題?

簡單來說,它是一個橋接 bot。你在自己的機器上跑某個 AI coding agent,再讓一個 Telegram bot 連接到它。之後你可以透過 Telegram 的訊息介面發指令、看輸出、回應 agent 的提示,甚至批准或否決它提出的改動。

對我來說,這不是為了取代桌面上的開發環境,而是為了「補位」——在不方便開電腦的時候,仍然能夠監控、追問、或者做幾個簡單決定。

Claude Code 的生態:tmux 為甚麼幾乎是標準配置

Claude Code 本質上是一個 TUI(terminal user interface)應用,它活在終端機裡。你關掉 SSH、蓋上 laptop,那個 process 就會斷。要在手機和電腦之間無縫切換,背後需要一個持久化的終端 session,這就是 tmux 的角色。

1. Session persistence

tmux 讓整個 session 在背景繼續跑。你可以用手機透過 Telegram 開一個長 refactor,蓋上 laptop 去搭車,之後再用任何終端機 reattach 回去。對話狀態、上下文、甚至未完成的提示,全部都在那個 tmux pane 裡。

2. Bridge 架構

多數 Claude Code 的 Telegram wrapper 並不是直接調用 Claude Code 的 SDK,而是把 Telegram 訊息翻譯成 tmux 指令:

你的手機(Telegram)→ wrapper bot → tmux send-keys → Claude Code(在 tmux pane 內跑)
然後輸出反向傳回:Claude Code 的 terminal output → wrapper bot → Telegram

舉幾個具體例子:

  • CCBot(six-ddc):一個 Telegram topic 對應一個 tmux window,直接在 pane 上操作。
  • CCGram(alexei-led):每個 Forum topic 綁定一個 tmux window,訊息當成 keystrokes 送進去,回應從 session transcript 讀回。
  • MateCode:用 shell script 幫你起 tmux 和掛 hook,tmux 是必要依賴。

3. Terminal 作為 single source of truth

這個做法最大的好處,是 context 不會散。你從 laptop 開的 session,和手機上看到的輸出,是同一個 tmux session。中間沒有額外的 API state 要同步,也沒有兩套記憶需要對齊。

OpenCode 的不同思路:不用 tmux 也可以

OpenCode 的設計從一開始就是 client-server。opencode-telegram-bot(由 grinev 開發)會把 OpenCode 當成 server subprocess 跑,再透過 SSE(Server-Sent Events)直接連接 OpenCode 的 API。【待查證:完整 GitHub URL】

它的 session state 由 OpenCode 自己的 in-memory manager 維持,不需要 tmux 來保活。這不是因為它「比較先進」,而是因為 OpenCode 生來就是為了被程序化地調用;Claude Code 則生來是給人坐在終端機前用的。

兩種架構的比較

Wrapper 用 tmux 嗎? 原因
CCBot(Claude Code) ✅ 是,核心依賴 把 keystrokes 送到 tmux pane
CCGram(Claude Code) ✅ 是,核心依賴 一個 topic 對應一個 tmux window
MateCode(Claude Code) ✅ 是,必需 用 shell script 起 tmux 和掛 hook
Anthropic 官方插件 ⚠️ 建議使用 文件建議用 tmux 做 24/7 背景模式
opencode-telegram-bot ❌ 不需要 直接調用 OpenCode server API
telecode(multi-CLI) ✅ 是(支援多種 CLI) Claude Code 相關部分用 tmux

實際用起來要留意的幾點

安全比方便更重要

這類 wrapper 本質上讓一個 bot 有權限對你機器發指令。我會建議用 private bot、限制可存取的 chat ID,並且不要在公眾網絡或你不信任的環境下開啟雙向控制。一開始可以先做「唯讀」觀察,確保你明白它會做甚麼,才開啟回覆功能。

多 project 的管理方式不同

Claude Code 這邊通常用 tmux window 或 Telegram topic 來區分不同專案;OpenCode 那邊則靠它內建的 session manager。選工具之前,先想清楚你通常同時開幾個 project、有沒有需要快速切換。

手機不適合寫長 code

我會把手機定位成「輔助介面」:批准、追問、看輸出、下簡單指令。真的要改大量 code 或做複雜重構,還是回到電腦前比較舒服,也更不容易出錯。

一個可以今晚試的小建議

如果你已經在用 Claude Code,不妨先在本機開一個 tmux session 跑起它,再用 CCBot 或 CCGram 連到 Telegram。但第一步不要讓 bot 有寫入權限——先只看輸出,觀察一兩天,確認你理解它會對你機器做甚麼,才開啟雙向控制。這樣你就能安全地體驗,從電腦到手機之間無縫切換是甚麼感覺。