iMessage (legacy: imsg)
Rekommenderat: Använd BlueBubbles för nya iMessage-installationer.
Kanalen imsg är en äldre extern CLI-integration och kan tas bort i en framtida version.
Status: äldre extern CLI-integration. Gateway skapar imsg rpc (JSON-RPC över stdio).
Snabb konfiguration (nybörjare)
- Säkerställ att Messages är inloggat på denna Mac.
- Installera
imsg:brew install steipete/tap/imsg
- Konfigurera OpenClaw med
channels.imessage.cliPathochchannels.imessage.dbPath. - Starta gatewayen och godkänn eventuella macOS-dialogrutor (Automation + Full Disk Access).
Vad det är
- iMessage-kanal som backas av
imsgpå macOS. - Deterministisk routning: svar går alltid tillbaka till iMessage.
- DM:er delar agentens huvudsakliga session; grupper är isolerade (
agent:<agentId>:imessage:group:<chat_id>). - Om en tråd med flera deltagare anländer med
is_group=falsekan du ändå isolera den genomchat_idmed hjälp avchannels.imessage.groups(se ”Grupp-liknande trådar” nedan).
Konfigskrivningar
Som standard tillåts iMessage att skriva konfiguppdateringar som triggas av/config set|unset (kräver commands.config: true).
Inaktivera med:
Krav
- macOS med Messages inloggat.
- Full Disk Access för OpenClaw +
imsg(åtkomst till Messages-databasen). - Automation-behörighet vid sändning.
channels.imessage.cliPathkan peka på valfritt kommando som proxar stdin/stdout (till exempel ett wrapper-skript som SSH:ar till en annan Mac och körimsg rpc).
Felsökning av macOS Privacy and Security TCC
Om sändning/mottagning misslyckas (till exempel omimsg rpc avslutas med felkod, får timeout eller gatewayen verkar hänga), är en vanlig orsak en macOS-behörighetsdialog som aldrig godkändes.
macOS beviljar TCC behörigheter per app/processkontext. Godkänn uppmaningar i samma sammanhang som kör imsg (till exempel Terminal/iTerm, en LaunchAgent session eller en SSH-startad process).
Checklista:
- Fullständig diskåtkomst: ge åtkomst för processen som kör OpenClaw (och alla skal/SSH-omvandlare som kör
imsg). Detta krävs för att läsa meddelandedatabasen (‘chat.db’). - Automation → Messages: tillåt processen som kör OpenClaw (och/eller din terminal) att styra Messages.app för utgående sändningar.
imsgCLI-hälsa: verifiera attimsgär installerat och stöder RPC (imsg rpc --help).
Konfigurering (snabb väg)
- Säkerställ att Messages är inloggat på denna Mac.
- Konfigurera iMessage och starta gatewayen.
Dedikerad bot-macOS-användare (för isolerad identitet)
Om du vill att boten ska skicka från en separat iMessage-identitet (och hålla dina personliga Messages rena), använd ett dedikerat Apple‑ID + en dedikerad macOS-användare.- Skapa ett dedikerat Apple‑ID (exempel:
[email protected]).- Apple kan kräva ett telefonnummer för verifiering / 2FA.
- Skapa en macOS-användare (exempel:
openclawhome) och logga in på den. - Öppna Messages i den macOS-användaren och logga in på iMessage med botens Apple‑ID.
- Aktivera Fjärrinloggning (Systeminställningar → Allmänt → Delning → Fjärrinloggning).
- Installera
imsg:brew install steipete/tap/imsg
- Konfigurera SSH så att
ssh <bot-macos-user>@localhost truefungerar utan lösenord. - Peka
channels.imessage.accounts.bot.cliPathpå en SSH-wrapper som körimsgsom bot-användaren.
imsg rpc ser fast eller utträde, logga in i den användaren (Skärm Delning hjälper), kör en engångsimsg chattar --limit 1 / imsg skicka. ., godkänn uppmaningar, försök sedan. Se Felsökning macOS Sekretess och säkerhet TCC.
Exempel omslag (chmod +x). Ersätt <bot-macos-user> med ditt faktiska macOS användarnamn:
channels.imessage.cliPath, channels.imessage.dbPath) i stället för accounts-mappen.
Fjärr-/SSH-variant (valfritt)
Om du vill ha iMessage på en annan Mac, sättchannels.imessage.cliPath till en wrapper som kör imsg på fjärrmacOS värd över SSH. OpenClaw behöver bara stdio.
Exempel-wrapper:
cliPath pekar till en fjärrvärd via SSH, bifogade sökvägar i meddelandedatabasens referensfiler på fjärrmaskinen. OpenClaw kan automatiskt hämta dessa över SCP genom att ställa in channels.imessage.remoteHost:
remoteHost inte är inställd, försöker OpenClaw att automatiskt upptäcka det genom att tolka SSH-kommandot i ditt wrapper-skript. Explicit konfiguration rekommenderas för tillförlitlighet.
Fjärr-Mac via Tailscale (exempel)
Om Gateway körs på en Linux-värd/VM men iMessage måste köras på en Mac, är Tailscale den enklaste bryggan: Gateway pratar med Macen över tailnet, körimsg via SSH och SCP:ar tillbaka bilagor.
Arkitektur:
Konkret konfigexempel (Tailscale-värdnamn):
~/.openclaw/scripts/imsg-ssh):
- Säkerställ att Macen är inloggad i Messages och att Fjärrinloggning är aktiverad.
- Använd SSH-nycklar så att
ssh [email protected]fungerar utan promptar. remoteHostska matcha SSH-målet så att SCP kan hämta bilagor.
channels.imessage.accounts med konfiguration per konto och valfri name. Se gateway/configuration för det delade mönstret. Använd inte ~/.openclaw/openclaw.json (det innehåller ofta tokens).
Åtkomstkontroll (DM:er + grupper)
DM:er:- Standard:
channels.imessage.dmPolicy = "pairing". - Okända avsändare får en parningskod; meddelanden ignoreras tills de godkänns (koder löper ut efter 1 timme).
- Godkänn via:
openclaw pairing list imessageopenclaw pairing approve imessage <CODE>
- Parkoppling är standard token utbyte för iMessage DMs. Detaljer: Pairing
channels.imessage.groupPolicy = open | allowlist | disabled.channels.imessage.groupAllowFromstyr vem som kan trigga i grupper närallowlistär satt.- Mention-gating använder
agents.list[].groupChat.mentionPatterns(ellermessages.groupChat.mentionPatterns) eftersom iMessage saknar inbyggd metadata för omnämnanden. - Multi-agent-override: sätt per-agent-mönster på
agents.list[].groupChat.mentionPatterns.
Hur det fungerar (beteende)
imsgströmmar meddelandehändelser; gatewayen normaliserar dem till det delade kanal-kuvertet.- Svar routas alltid tillbaka till samma chatt-id eller handle.
Grupp-liknande trådar (is_group=false)
Vissa iMessage-trådar kan ha flera deltagare men ändå komma in med is_group=false beroende på hur Messages lagrar chattidentifieraren.
Om du uttryckligen konfigurerar ett chat_id under channels.imessage.groups behandlar OpenClaw den tråden som en ”grupp” för:
- sessionsisolering (separat
agent:<agentId>:imessage:group:<chat_id>-sessionsnyckel) - gruppbaserad tillåtelselista / mention-gating-beteende
Media + begränsningar
- Valfri bilageinmatning via
channels.imessage.includeAttachments. - Mediatak via
channels.imessage.mediaMaxMb.
Begränsningar
- Utgående text delas upp till
channels.imessage.textChunkLimit(standard 4000). - Valfri uppdelning på nya rader: sätt
channels.imessage.chunkMode="newline"för att dela på tomma rader (styckegränser) före längd-uppdelning. - Mediauppladdningar begränsas av
channels.imessage.mediaMaxMb(standard 16).
Adressering / leveransmål
Föredrachat_id för stabil routning:
chat_id:123(föredragen)chat_guid:...chat_identifier:...- direkta handles:
imessage:+1555/sms:+1555/[email protected]
Konfigurationsreferens (iMessage)
Fullständig konfiguration: Konfiguration Leverantörsalternativ:channels.imessage.enabled: aktivera/inaktivera kanalstart.channels.imessage.cliPath: sökväg tillimsg.channels.imessage.dbPath: sökväg till Messages-databasen.channels.imessage.remoteHost: SSH-värd för överföring av SCP-bilagor närcliPathpekar till en fjärr-Mac (t.ex.user@gateway-host). Auto-upptäckt från SSH-omvandlare om ej angiven.channels.imessage.service:imessage | sms | auto.channels.imessage.region: SMS-region.channels.imessage.dmPolicy:pairing | allowlist | open | disabled(standard: parning).channels.imessage.allowFrom: DM allowlist (hanterar, e-postmeddelanden, E.164 nummer ellerchat_id:*).openkräver"*". iMessage har inga användarnamn, använd handtag eller chattmål.channels.imessage.groupPolicy:open | allowlist | disabled(standard: tillåtelselista).channels.imessage.groupAllowFrom: tillåtelselista för gruppavsändare.channels.imessage.historyLimit/channels.imessage.accounts.*.historyLimit: max antal gruppmeddelanden att inkludera som kontext (0 inaktiverar).channels.imessage.dmHistorikLimit: DM historikgräns i användarens varv. Åsidosättningar per användare:channels.imessage.dms["<handle>"].historyLimit.channels.imessage.groups: per-grupp-standarder + tillåtelselista (använd"*"för globala standarder).channels.imessage.includeAttachments: mata in bilagor i kontext.channels.imessage.mediaMaxMb: inkommande/utgående mediatak (MB).channels.imessage.textChunkLimit: utgående chunkstorlek (tecken).channels.imessage.chunkMode:length(standard) ellernewlineför att dela på tomma rader (styckegränser) före längd-uppdelning.
agents.list[].groupChat.mentionPatterns(ellermessages.groupChat.mentionPatterns).messages.responsePrefix.