不想每次都重開AI?他用Claude Channels,4步驟打造24小時的AI助理
不想每次都重開AI?他用Claude Channels,4步驟打造24小時的AI助理

近期有不少科技創作者開始分享這種做法:把 Claude 跑在一台永不關機的 Mac mini 上,搭配 Telegram 遠端下指令,讓 AI 助理真正 24 小時待命。

其中架構整理最清楚的,來自 X 上的 Nick Spisak。他展示了如何用 Claude Code 內建的 Channels 功能取代 OpenClaw,整套設定官方說法是 15 分鐘。

一般人用 Claude 的方式,是打開瀏覽器或 App 直接對話;這個方法則是把 Claude 跑在一台永不關機的 Mac mini 上,接管你的本地檔案與工具,然後透過 Telegram 接受遠端指令。

為什麼這個架構有效?

Claude Code Channels 本質上是一個訊息橋接層:Telegram 接收你的指令,轉給正在 Mac mini 上持續運行的 Claude 工作階段(session),Claude 用你的真實本地資料完成任務,再把結果送回 Telegram。

這套架構能運作的關鍵有兩個。

第一,Mac mini 不會睡眠,Claude 的 session 能保持常駐。Channels 沒有訊息佇列,Claude 不在線時傳過去的訊息直接消失,不會等到下次再送。筆電合蓋就會斷線,Mac mini 不會。

第二,Syncthing 讓兩台機器共享相同的 Skills、指令與設定,不需要在 Mac mini 上重新建置所有配置。

核心步驟

第一步:讓 Mac mini 永不入睡

進入「系統設定」→「能源」,將 Mac mini 設為永不睡眠。這是整個架構的地基,後面所有步驟都建立在機器保持清醒的前提上。

第二步:用 Syncthing 同步兩台機器的設定檔

Syncthing 是一套開放原始碼的點對點同步工具,2013 年上線至今被數萬名開發者使用,資料不經過任何雲端伺服器,直接在同一區域網路的兩台機器間傳輸,費用為零。

在 Mac mini 與筆電上分別執行:

brew install syncthing
brew services start syncthing

開啟瀏覽器前往 localhost:8384,兩台機器互相加入對方的裝置 ID,再選擇要同步的資料夾。

需要同步的資料夾:

~/.claude/skills/
~/.claude/commands/
~/.claude/settings.json
你的知識庫(Obsidian vault、參考文件等)
MCP 工具設定

絕對不能同步的檔案:

在 Syncthing 介面中,每個同步資料夾都可以設定「忽略清單」,也就是 .stignore 檔案。做法是在 Syncthing 的網頁介面(localhost:8384)點進對應的資料夾,選擇「Edit Ignores」,把以下內容貼入儲存即可,不需要自己手動建立檔案。

提醒:請在「第一次同步之前」就先把忽略清單設好,再按下同步。否則第一次 full sync 已經把不該同步的東西推過去,再改 .stignore 就只是「以後不要再犯同樣的錯」,救不了已經混在一起的紀錄。

settings.local.json   ← 各機器獨立的覆寫設定
history.jsonl         ← 各機器獨立的對話紀錄
projects/             ← Claude 用絕對路徑追蹤專案,不同機器路徑不同會衝突
node_modules/
.git/
.env

有一個細節要特別強調:Claude Code 用「完整絕對路徑」追蹤專案。如果筆電的路徑是 /Users/nick/Projects/,Mac mini 是 /Users/admin/Projects/,Claude 會認為是兩個不同的專案。

解法:兩台機器使用相同的使用者名稱。

第三步:在 Mac mini 安裝並設定 Telegram Bot

確認 Bun 已安裝(在終端機輸入 bun --version,如果報錯先執行安裝):

curl -fsSL https://bun.sh/install | bash

接著在 Telegram 找 @BotFather,傳送 /newbot,依指示完成後複製取得的 Token。

回到 Mac mini 的 Claude Code,依序執行:

/plugin install telegram@claude-plugins-official
/reload-plugins
/telegram:configure <貼上你的 Token>

以下指令用來啟動附帶 Channels 的 Claude:

claude --channels plugin:telegram@claude-plugins-official

啟動後,在 Telegram 對你的 Bot 傳送任意訊息,Bot 會回覆一組配對碼。回到 Claude Code 輸入:

/telegram:access pair <配對碼>
/telegram:access policy allowlist

最後一行是鎖定權限,避免陌生人也能操控你的機器。

第四步:建立自動重啟機制,讓 Claude 真正跑好跑滿

Claude 可能因為各種原因中斷,需要一個定期重啟的機制讓它保持穩定。原文使用 macOS 的 LaunchAgent 而非 cron,原因是 cron 運行在精簡環境中,無法存取登入憑證,而 Claude Code 需要使用者認證;LaunchAgent 跑在使用者工作階段內,能拿到正確的認證。

需要說明的是,這套機制提供的是「定時重啟」,不是「崩潰偵測後立即恢復」。LaunchAgent 會在開機時啟動一次、每天凌晨 4 點重啟一次,但如果 Claude 在下午 2 點意外中斷,不會自動拉起來,要等到凌晨 4 點才恢復。對大多數非緊急任務來說這已足夠,但若有時效性較高的工作流程,部署前請將這點納入考量。

第四步 A:建立重啟腳本

mkdir -p ~/.claude/scripts
nano ~/.claude/scripts/claude-channels-restart.sh

將以下內容貼入:

#!/bin/zsh
# 確保 PATH 在 LaunchAgent 環境下也找得到 tmux、claude 等工具
export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"

# 關閉現有的 Claude session,從乾淨狀態重新啟動
# (tmux 是「背景終端機」,讓程式在你不看的時候繼續執行)
# (2>/dev/null 的意思是:如果沒有 session 可關閉,不要顯示錯誤)
tmux kill-session -t claude-channels 2>/dev/null

# 等待 2 秒讓清理完成
sleep 2

# 開啟新的背景終端機工作階段
# -d = 在背景啟動,-s = 命名為 "claude-channels",-c = 從 Projects 資料夾開始
tmux new-session -d -s claude-channels -c ~/Projects

# 清除一個會讓 Claude 誤以為自己已在執行的環境變數
tmux send-keys -t claude-channels "unset CLAUDECODE" Enter

# 啟動 Claude Code 並連接 Telegram
tmux send-keys -t claude-channels "claude --channels plugin:telegram@claude-plugins-official" Enter

# 等待 20 秒讓 Claude 完全啟動
sleep 20

# 告訴 Claude 開始監聽你的訊息
tmux send-keys -t claude-channels "Resume monitoring. Check channels for any messages." Enter

儲存後(Ctrl+X、Y、Enter),賦予執行權限:

chmod +x ~/.claude/scripts/claude-channels-restart.sh

第四步 B:建立 LaunchAgent

nano ~/Library/LaunchAgents/com.claude.channels.plist

貼入以下設定:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.claude.channels</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/zsh</string>
        <string>-c</string>
        <string>~/.claude/scripts/claude-channels-restart.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>4</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
    <key>StandardOutPath</key>
    <string>/tmp/claude-channels.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/claude-channels.log</string>
</dict>
</plist>

儲存後啟用:

launchctl load ~/Library/LaunchAgents/com.claude.channels.plist

RunAtLoad 讓 Claude 在開機時自動啟動;StartCalendarInterval 設定每天凌晨 4 點自動重啟清空 session。

第四步 C:驗證是否正常運作

launchctl list | grep claude

若看到 com.claude.channels,代表 LaunchAgent 已正確載入。接著在 Telegram 傳訊息給 Bot,確認有回應。

測試手動重啟流程:

tmux kill-session -t claude-channels
~/.claude/scripts/claude-channels-restart.sh

手動刪除 session 再執行重啟腳本,確認整個流程跑得通。這也是 Claude 意外中斷時你可以立刻手動呼叫的恢復指令。

這套架構的前提條件

這個設定有幾個限制需要誠實說明。

第一,你需要一台實體桌機或常時開機的機器,Mac mini 或任何不睡眠的 macOS 機器皆可,但這意味著一筆額外硬體成本或持續的電費支出。

第二,Channels 目前處於 research preview 階段,需要 Claude Code v2.1.80 以上版本,且必須登入 claude.ai 帳號才能使用。執行前請先確認版本:claude --version

第三,整套流程涉及終端機指令、tmux、LaunchAgent,技術門檻不算低。若你從未接觸過 launchctl 或 tmux,需要預留時間排查問題。

第四,Syncthing 的同步設定若出錯(特別是誤把 projects/history.jsonl 同步進去),會讓 Claude 在兩台機器上產生路徑衝突或混用對話紀錄。.stignore 的設定必須在第一次同步前就確認正確。

工具不決定效果,常駐才決定效果

OpenClaw 做的事,Claude Channels 現在內建了。差別只在你的架構夠不夠穩,例如機器會不會睡、session 會不會斷、崩潰了有沒有人把它叫回來。

最後要說的是,本文整理自 Nick Spisak 的公開分享,編輯過程中已逐一核對指令語法,但不同的 macOS 版本、Claude Code 版本、網路環境,都可能讓某個步驟的行為跟這裡寫的不一樣。

建議動手前,先備份現有的 Claude 設定,遇到問題優先查官方文件或原文討論串。套一句投資圈的名言:Do your own research(DYOR)。

延伸閱讀:「軟體設計流程已死!」Anthropic設計總監:拒用Claude Code的主管,決策將嚴重脫節

資料來源:Nick Spisak(@NickSpisak_)

本文初稿為 AI 編撰,整理・編輯/李先泰

關鍵字: #AI工具 #OpenClaw

登入數位時代會員

開啟專屬自己的主題內容,

每日推播重點文章

閱讀會員專屬文章

請先登入數位時代會員

看更多獨享內容

請先登入數位時代會員

開啟收藏文章功能,

請先登入數位時代會員

開啟訂閱文章分類功能,

請先登入數位時代會員

我還不是會員, 註冊去!
追蹤我們
AI全球100+台灣20
© 2026 Business Next Media Corp. All Rights Reserved. 本網站內容未經允許,不得轉載。
106 台北市大安區光復南路102號9樓