自架服務
openclaw/imsg avatar
openclaw/imsg

imsg:用於從 macOS 讀取和傳送 iMessage 的 Swift CLI

Apple Messages.app 的 CLI,以便您的代理可以發送和接收簡訊/iMessage。

1,328 個 Star180 個 ForkSwiftMIT

秒懂

它是什麼?
讀取本機 Messages 資料庫,串流更新,並透過 Messages.app 自動化傳送。
適合誰用?
該專案採用 MIT 授權,與 Apple 無關。其讀取路徑避免使用私有框架,而進階功能需要停用 SIP,且目前在 macOS 版本上不保證可用。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Swift(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

從終端機讀取、監看和傳送訊息

imsg 是一個用於 macOS 的 Swift CLI,可以從終端機讀取、監看和傳送 iMessage 和 SMS。它直接讀取本機 Messages 資料庫,透過 Messages.app 自動化傳送,並為腳本和代理提供 NDJSON 和 JSON-RPC。README 用一句話概括了全部要點:直接讀取、串流更新,並讓 Messages.app 傳送。倉庫為 openclaw/imsg,元資料顯示有 1,275 顆星、174 個 fork 和 3 個未解決的問題。該專案與 Apple 無關。README 中的命令範例包括 imsg chats --limit 10 --json、imsg history --chat-id 42 --limit 20 --attachments --json、imsg watch --chat-id 42 --reactions --json 和 imsg send --to "+14155551212" --text "on my way"。這些是 README 中僅有的命令,展示了四個主要操作:列出聊天、讀取歷史、監看更新和傳送。

安裝與 macOS 需求

在 macOS 上安裝透過 Homebrew 完成:brew install steipete/tap/imsg。README 顯示使用 imsg --version 確認安裝。需要 macOS 14 或更高版本。GitHub Releases 還提供簽署的 macOS 建置和 Linux x86_64 唯讀建置。在 Linux 上,該工具讀取從 macOS 複製的 chat.db;它不連接 iMessage 也不傳送訊息。README 為此提供了單獨的 Linux 指南。沒有記錄其他安裝路徑,因此不支援 Windows 等平台。專案首頁是 imsg.sh,提供完整文件。README 還引用了安裝、權限、歷史、監看、傳送、附件、Linux 和疑難排解等文件。

讀取本機歷史並監看更新

讀取之前,必須在系統設定的隱私權與安全性中授予終端機完整磁碟存取權限,然後重新開啟終端機。這是讀取 ~/Library/Messages/chat.db 所必需的。快速入門展示 imsg chats --limit 3 列出聊天並記錄其 id,然後 imsg history --chat-id 42 --limit 10 讀取最近十則訊息。讀取命令以 SQLite 唯讀模式開啟資料庫。watch 命令追蹤資料庫和 WAL 檔案系統事件,當 macOS 丟棄事件或輪換輔助檔案時,會使用輪詢回退。README 指向一個五分鐘快速入門,繼續介紹即時監看和傳送,並單獨提供聊天、群組、歷史、監看、附件和統計文件。

傳送訊息與所需權限

傳送和標準點按回覆除了完整磁碟存取權限外,還需要「自動化 → 訊息」權限。通訊錄存取是選用的,僅新增已解析的名稱。對於 SMS,必須在配對的 iPhone 上啟用文字訊息轉寄。README 指出,imsg send 使用 Messages.app 的 AppleScript 介面,當多個號碼共用一個 Apple ID 時,無法強制指定特定的傳送號碼。權限指南涵蓋父程序授權和過時 TCC 條目,疑難排解文件將常見失敗對應到可能的門檻。傳送命令範例包括 --to 加電話號碼和 --text 加訊息文字。README 還提到透過 react 命令支援標準點按回覆。

NDJSON 輸出與長期執行的 JSON-RPC 傳輸

--json 旗標每行輸出一個 JSON 物件。人類可讀的進度和警告保留在 stderr,因此 stdout 可以安全地用於串流處理。README 顯示將有限命令透過 jq -s 管道以取得單一陣列。JSON schema 記錄了聊天、訊息、附件、反應、投票、排定訊息和統計。imsg rpc 啟動一個長期執行的 stdio 傳輸,供代理和閘道使用;imsg completions llm 產生適合模型的 CLI 幫助。JSON-RPC 參考詳細介紹了該傳輸。README 建議將這些與 jq 和其他可腳本化工具一起使用。

進階功能與注入的輔助程式

常規工作流程(如聊天、歷史、監看、傳送、反應和唯讀 RPC)不使用私有框架或程序注入。進階功能,包括已讀回執、正在輸入指示、富文字傳送、訊息修改、貼紙、投票和聊天管理,使用 Messages.app 內注入的輔助程式。這些進階功能需要停用 SIP,並且可能被目前 macOS 版本上的程式庫驗證或私有權限檢查阻止。README 引導使用者查看 advanced-imcore 指南和 bridge 命令參考,以了解完整的 CLI 介面和 IPC 佈局。

倉庫結構與授權

倉庫分為三部分:IMsgCore 包含可重用的 Swift 核心,imsg 包含 CLI,IMsgHelper 包含選用注入的輔助程式。開發命令為 make lint、make test 和 make build。套件使用 Swift 6,目標為 macOS 14 或更高版本。授權為 MIT,版權歸 Peter Steinberger 所有,2026 年。MIT 文字授予使用、複製、修改、合併、發布、分發、再授權和銷售的權利,並宣告軟體按「原樣」提供,不提供任何擔保。README 明確表示該專案與 Apple 無關,iMessage 和 SMS 是其各自所有者的商標。授權未提及支援、安全保證或維護承諾。

openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。openclaw/imsg 的使用判斷要落在 README 已寫出的介面。快照顯示最新標籤為 v0.14.2,預設分支是 main,授權識別為 MIT。這些資訊只能界定本文的來源範圍。實際操作時,應把 imsg 的命令列參數、輸入格式、輸出欄位與錯誤處理分開看待。若 README 指向 docs、scripts、設定檔或 Releases,應逐一對照其名稱,而不是把專案描述延伸成未經文件證實的能力。對 macOS、Windows、Linux 或瀏覽器等環境的支援,也只能採用來源明確列出的部分。這樣整理後,讀者可以知道哪個判斷來自 openclaw/imsg,哪個問題仍留在文件範圍之外。

編輯結論

該專案採用 MIT 授權,與 Apple 無關。其讀取路徑避免使用私有框架,而進階功能需要停用 SIP,且目前在 macOS 版本上不保證可用。 針對 openclaw/imsg,先依 README 的具體入口檢查 v0.14.2、相關設定與輸出,再決定是否納入工作流程;若環境不符合文件列出的前提,這篇文章不把未說明的相容性視為保證。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記