


























把 Claude Code 接上 iMessage,讓你和家人在群組裡用「觸發詞」呼叫 AI 助理。不需要額外 App,不需要對方有 Claude 帳號,在 iMessage 裡 @雷小蒙(我的 AI 分身) 就能對話。
本來覺得這種比較進階的文章未來再發,但前幾天把這個成果丟到 Threads 上,兩天就超過 7,000 次瀏覽,蠻多人問怎麼做的,所以乾脆整理成完整教學。
我花了一個晚上搞定,跨了四個 session,踩了至少七個坑。
這篇把完整流程、設計決策和所有踩坑一次寫清楚。

Discord Bot 已經很好用了,在團隊伺服器裡,成員可以直接 @雷小蒙 問問題、查資料,它會自動回覆。

但有一個場景它搞不定:家人不在 Discord 上。
我太太日常用 iMessage 跟我聊天,她不可能為了問 AI 一個問題去開 Discord。如果我能把 Claude 接到 iMessage 群組裡,她只要在群組打「雷小蒙,幫我查一下⋯⋯」就好了。
而且做完這個之後,我從 iMessage plugin 的 persistent session 架構學到了東西,回頭把 Discord Bot 從 V0(每次訊息開新 subprocess,25% cache)推到 V2(persistent session,84% cache)。一個專案帶動另一個專案,這就是為什麼我喜歡折騰。
--channels 功能)我是用 24 小時運行的 Mac mini 當主機,這樣即使我不在電腦前,家人傳訊息也會有回應。
Claude Code 有一個官方的 iMessage plugin,但它有點隱藏——不在 marketplace 首頁,需要手動啟用。
# 確認 plugin 已安裝(在 Claude Code 裡執行)
claude plugin list
# 應該看到 imessage@claude-plugins-official
如果沒有,在 Claude Code settings 裡啟用 imessage@claude-plugins-official。
建立設定檔 ~/.claude/channels/imessage/access.json:
{
"dmPolicy": "allowlist",
"allowFrom": [],
"groups": [
{
"chatId": "any;+;你的群組ID",
"requireMention": true,
"mentionPatterns": ["雷小蒙"]
}
],
"ackMessage": "收到任務,處理中⋯"
}
關鍵設定解釋:
dmPolicy: allowlist + 空 allowFrom:不回應任何私訊(安全考量)groups:只在指定群組裡回應requireMention: true:必須提到觸發詞才會回應,不是所有訊息都觸發mentionPatterns:觸發詞,可以設多個ackMessage:收到觸發後的即時確認(讓對方知道 AI 在處理了)這是我踩到的第一個設計坑。
最初的想法很單純:讓太太直接私訊我的 iMessage,Claude 自動回覆。但問題是——iMessage 沒有獨立的 Bot 帳號。Claude 是直接用你的 Apple ID 發訊息。
如果你把太太加進 DM allowlist,Claude 會回覆她傳給你的所有私訊。你們聊「晚餐吃什麼」Claude 也會跳出來回答。
所以正確做法是:建一個專用群組 + 觸發詞。平常聊天走私訊,要問 AI 就去群組喊「雷小蒙」。各走各的,不互相干擾。
Discord Bot 收到訊息可以先按一個 emoji reaction(👀),讓你知道它看到了。但 iMessage 的 Tapback(按讚、愛心)是 Apple 私有 API,AppleScript 完全無法操作。
所以我設計了 ackMessage——Claude 收到觸發詞後,先秒回一句「收到任務,處理中⋯」,然後才去處理。這樣對方不會以為訊息石沉大海。一行設定,體驗差很多。
打開 Messages.app → 選中目標群組 → 在 Claude Code 啟動 iMessage plugin 後,debug log 裡會看到 chat_identifier。格式通常是 any;+;一串 hash。
claude --channels plugin:imessage@claude-plugins-official \
--allowedTools "mcp__plugin_imessage_imessage__reply,mcp__plugin_imessage_imessage__chat_messages"
必須帶的參數:
--channels plugin:imessage@claude-plugins-official:啟動 iMessage 通道--allowedTools:預授權 reply 和讀訊息的工具(非互動 session 不會跳授權對話框)啟動成功後,在群組裡打「雷小蒙,今天天氣怎樣?」,應該會先收到「收到任務,處理中⋯」,然後收到 AI 回覆。
實際跑起來長這樣——左邊是我讓雷小蒙自我介紹,右邊是太太直接問訂閱數據,它查完直接回報:

如果你有一台 24 小時開機的 Mac(像我的 Mac mini),可以寫一個啟動腳本:
#!/bin/bash
# start-claude-imessage.sh
# 進入專案目錄(讓 Claude 有完整的 CLAUDE.md context)
cd ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/Raymond-Agent
# 啟動(帶 debug log 方便排錯)
claude --channels plugin:imessage@claude-plugins-official \
--allowedTools "mcp__plugin_imessage_imessage__reply,mcp__plugin_imessage_imessage__chat_messages" \
--debug-file /tmp/claude-imessage-debug.log
重啟方法(如果 session 斷了):
# 從 SSH 遠端重啟(需要 GUI context 才能存取 Messages.app)
ssh mini 'osascript -e "tell application \"Terminal\" to do script \"bash ~/start-claude-imessage.sh\""'
claude --help 裡面看不到這個 flag。格式必須是 plugin:<name>@<marketplace>,不是直接寫 plugin 名稱。
iMessage plugin 用 AppleScript 讀取訊息,聊天記錄太多(我有 3800+ 筆)會導致 AppleScript 執行逾時。
解法:重啟 Messages.app。重啟後重新建立索引,速度會恢復正常。
iMessage plugin 原版只處理 is_from_me=0(別人發的訊息)。如果你想在群組裡自己也能觸發(例如你自己打「雷小蒙,幫我查⋯⋯」),需要修改 plugin 的 server.ts。
修改位置:~/.claude/share/plugins/imessage@claude-plugins-official/server.ts(marketplace 和 cache 各一份)
修改邏輯:群組 + requireMention + mentionPattern match → 允許 is_from_me=1 觸發,加 echo 防迴圈。
iMessage 沒有「Bot 帳號」的概念。Claude 的回覆會從你的 Apple ID 發出,大頭貼是你自己。為了區分,回覆尾部會帶 Sent by Claude 簽名。
Plugin 啟動時會記錄當下的時間戳(watermark),只處理之後的新訊息。這代表:
這不是 bug,是防止重啟後把歷史訊息全部重新處理的設計。知道就好,遇到「怎麼沒回」先想想是不是剛重啟過。
如果你用 SSH 遠端操作 Mac,直接跑 claude --channels 會失敗——因為 Messages.app 需要 GUI context。
解法:透過 osascript 在 Terminal.app 裡開新視窗執行,這樣就有 GUI context 了。
做完 iMessage plugin 之後,我注意到它的架構跟我的 Discord Bot 有本質差異。
iMessage plugin 是一個 persistent session——啟動後一直活著,所有訊息在同一個 context 裡處理,Claude 可以記住之前的對話。我的 Discord Bot 當時是每收到一則訊息就開一個新的 subprocess,處理完就死掉,什麼都不記得。
更關鍵的是效能差異。Persistent session 的 prompt cache 命中率可以到 84%,因為每次都是在同一個 context 裡追加;subprocess 模式每次冷啟動,cache 命中率只有 25%。

這個發現讓我把 Discord Bot 從 V0 架構推到了 V2,用 Agent SDK 的 persistent session 取代 subprocess。一個 side project 帶動另一個 project 的進化——這就是我喜歡折騰的原因。
整個設定大概 30 分鐘(不算踩坑的話),踩坑加起來大概 2 小時。
最有成就感的瞬間是太太第一次在群組裡打「雷小蒙⋯⋯」然後收到回覆,她說:「這也太方便了吧。」
對我來說,這才是 AI 助理的終極形態——不是你去找工具,而是工具已經在你最常用的地方等著你。iMessage 是很多人每天打開次數最多的 App,把 AI 放進去,使用門檻就歸零了。
🎁 Claude Code 精選中文學習資源&上手包

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。