Mainstream messaging

iMessage

Durum: yerel harici CLI entegrasyonu. Gateway, imsg rpc başlatır ve stdio üzerinden JSON-RPC ile iletişim kurar (ayrı daemon/port yoktur).

Hızlı kurulum

Yerel Mac (hızlı yol)

  • imsg'yi yükleyin ve doğrulayın

    brew install steipete/tap/imsg
    imsg rpc --help
    
  • OpenClaw'u yapılandırın

    {
    channels: {
    imessage: {
    enabled: true,
    cliPath: "/usr/local/bin/imsg",
    dbPath: "/Users/user/Library/Messages/chat.db",
    },
    },
    }
    
  • Gateway'i başlatın

    openclaw gateway
    
  • İlk DM eşleştirmesini onaylayın (varsayılan dmPolicy)

    openclaw pairing list imessage
    openclaw pairing approve imessage <CODE>
    

    Eşleştirme isteklerinin süresi 1 saat sonra dolar.

  • SSH üzerinden uzak Mac

    OpenClaw yalnızca stdio uyumlu bir cliPath gerektirir; bu nedenle cliPath değerini uzak bir Mac'e SSH yapan ve imsg çalıştıran bir sarmalayıcı betiğe yönlendirebilirsiniz.

    #!/usr/bin/env bash
    exec ssh -T gateway-host imsg "$@"
    

    Ekler etkinleştirildiğinde önerilen yapılandırma:

    {
    channels: {
    imessage: {
      enabled: true,
      cliPath: "~/.openclaw/scripts/imsg-ssh",
      remoteHost: "user@gateway-host", // used for SCP attachment fetches
      includeAttachments: true,
      // Optional: override allowed attachment roots.
      // Defaults include /Users/*/Library/Messages/Attachments
      attachmentRoots: ["/Users/*/Library/Messages/Attachments"],
      remoteAttachmentRoots: ["/Users/*/Library/Messages/Attachments"],
    },
    },
    }
    

    remoteHost ayarlanmamışsa OpenClaw, SSH sarmalayıcı betiğini ayrıştırarak bunu otomatik algılamayı dener. remoteHost, host veya user@host olmalıdır (boşluk veya SSH seçenekleri olmadan). OpenClaw, SCP için katı ana makine anahtarı denetimi kullanır; bu nedenle aktarıcı ana makine anahtarı ~/.ssh/known_hosts içinde zaten bulunmalıdır. Ek yolları izin verilen köklere göre doğrulanır (attachmentRoots / remoteAttachmentRoots).

    Gereksinimler ve izinler (macOS)

    • Messages, imsg çalıştıran Mac'te oturum açmış olmalıdır.
    • OpenClaw/imsg çalıştıran süreç bağlamı için Full Disk Access gerekir (Messages DB erişimi).
    • Messages.app üzerinden mesaj göndermek için Automation izni gerekir.

    Erişim denetimi ve yönlendirme

    DM ilkesi

    channels.imessage.dmPolicy, doğrudan mesajları denetler:

    • pairing (varsayılan)
    • allowlist
    • open (allowFrom değerinin "*" içermesini gerektirir)
    • disabled

    İzin listesi alanı: channels.imessage.allowFrom.

    İzin listesi girdileri tanıtıcılar veya sohbet hedefleri olabilir (chat_id:*, chat_guid:*, chat_identifier:*).

    Grup ilkesi + bahsetmeler

    channels.imessage.groupPolicy, grup işlemeyi denetler:

    • allowlist (yapılandırıldığında varsayılan)
    • open
    • disabled

    Grup gönderici izin listesi: channels.imessage.groupAllowFrom.

    Çalışma zamanı yedeği: groupAllowFrom ayarlanmamışsa iMessage grup gönderici denetimleri, mevcut olduğunda allowFrom değerine geri döner. Çalışma zamanı notu: channels.imessage tamamen eksikse çalışma zamanı groupPolicy="allowlist" değerine geri döner ve bir uyarı günlüğe yazar (channels.defaults.groupPolicy ayarlanmış olsa bile).

    Gruplar için bahsetme kapısı:

    • iMessage'da yerel bahsetme meta verisi yoktur
    • bahsetme algılama regex kalıplarını kullanır (agents.list[].groupChat.mentionPatterns, yedek messages.groupChat.mentionPatterns)
    • yapılandırılmış kalıp yoksa bahsetme kapısı uygulanamaz

    Yetkili göndericilerden gelen denetim komutları gruplarda bahsetme kapısını atlayabilir.

    Oturumlar ve belirleyici yanıtlar

    • DM'ler doğrudan yönlendirme kullanır; gruplar grup yönlendirmesi kullanır.
    • Varsayılan session.dmScope=main ile iMessage DM'leri aracının ana oturumuna daraltılır.
    • Grup oturumları yalıtılmıştır (agent:<agentId>:imessage:group:<chat_id>).
    • Yanıtlar, kaynak kanal/hedef meta verileri kullanılarak iMessage'a geri yönlendirilir.

    Grup benzeri ileti dizisi davranışı:

    Bazı çok katılımcılı iMessage ileti dizileri is_group=false ile gelebilir. Bu chat_id, channels.imessage.groups altında açıkça yapılandırılmışsa OpenClaw bunu grup trafiği olarak ele alır (grup kapısı + grup oturumu yalıtımı).

    ACP konuşma bağlamaları

    Eski iMessage sohbetleri ACP oturumlarına da bağlanabilir.

    Hızlı operatör akışı:

    • DM veya izin verilen grup sohbetinin içinde /acp spawn codex --bind here çalıştırın.
    • Aynı iMessage konuşmasındaki sonraki mesajlar, başlatılan ACP oturumuna yönlendirilir.
    • /new ve /reset, aynı bağlı ACP oturumunu yerinde sıfırlar.
    • /acp close, ACP oturumunu kapatır ve bağlamayı kaldırır.

    Yapılandırılmış kalıcı bağlamalar, type: "acp" ve match.channel: "imessage" içeren üst düzey bindings[] girdileriyle desteklenir.

    match.peer.id şunları kullanabilir:

    • +15555550123 veya [email protected] gibi normalleştirilmiş DM tanıtıcısı
    • chat_id:<id> (kararlı grup bağlamaları için önerilir)
    • chat_guid:<guid>
    • chat_identifier:<identifier>

    Örnek:

    {
      agents: {
        list: [
          {
            id: "codex",
            runtime: {
              type: "acp",
              acp: { agent: "codex", backend: "acpx", mode: "persistent" },
            },
          },
        ],
      },
      bindings: [
        {
          type: "acp",
          agentId: "codex",
          match: {
            channel: "imessage",
            accountId: "default",
            peer: { kind: "group", id: "chat_id:123" },
          },
          acp: { label: "codex-group" },
        },
      ],
    }
    

    Paylaşılan ACP bağlama davranışı için ACP Aracıları bölümüne bakın.

    Dağıtım kalıpları

    Ayrılmış bot macOS kullanıcısı (ayrı iMessage kimliği)

    Bot trafiğinin kişisel Messages profilinizden yalıtılması için ayrılmış bir Apple ID ve macOS kullanıcısı kullanın.

    Tipik akış:

    1. Ayrılmış bir macOS kullanıcısı oluşturun/oturum açın.
    2. Bu kullanıcıda bot Apple ID'siyle Messages'a oturum açın.
    3. Bu kullanıcıda imsg yükleyin.
    4. OpenClaw'un bu kullanıcı bağlamında imsg çalıştırabilmesi için SSH sarmalayıcısı oluşturun.
    5. channels.imessage.accounts.<id>.cliPath ve .dbPath değerlerini bu kullanıcı profiline yönlendirin.

    İlk çalıştırma, bu bot kullanıcı oturumunda GUI onayları gerektirebilir (Automation + Full Disk Access).

    Tailscale üzerinden uzak Mac (örnek)

    Yaygın topoloji:

    • gateway Linux/VM üzerinde çalışır
    • iMessage + imsg, tailnet'inizdeki bir Mac üzerinde çalışır
    • cliPath sarmalayıcısı imsg çalıştırmak için SSH kullanır
    • remoteHost, SCP ek getirmelerini etkinleştirir

    Örnek:

    {
    channels: {
    imessage: {
      enabled: true,
      cliPath: "~/.openclaw/scripts/imsg-ssh",
      remoteHost: "[email protected]",
      includeAttachments: true,
      dbPath: "/Users/bot/Library/Messages/chat.db",
    },
    },
    }
    
    #!/usr/bin/env bash
    exec ssh -T [email protected] imsg "$@"
    

    Hem SSH hem de SCP etkileşimsiz olsun diye SSH anahtarları kullanın. known_hosts dosyasının doldurulması için önce ana makine anahtarının güvenilir olduğundan emin olun (örneğin ssh [email protected]).

    Çok hesaplı kalıp

    iMessage, channels.imessage.accounts altında hesap başına yapılandırmayı destekler.

    Her hesap cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, geçmiş ayarları ve ek kökü izin listeleri gibi alanları geçersiz kılabilir.

    Medya, parçalama ve teslim hedefleri

    Ekler ve medya
    • gelen ek alımı isteğe bağlıdır: channels.imessage.includeAttachments
    • remoteHost ayarlandığında uzak ek yolları SCP üzerinden getirilebilir
    • ek yolları izin verilen köklerle eşleşmelidir:
      • channels.imessage.attachmentRoots (yerel)
      • channels.imessage.remoteAttachmentRoots (uzak SCP modu)
      • varsayılan kök kalıbı: /Users/*/Library/Messages/Attachments
    • SCP katı ana makine anahtarı denetimi kullanır (StrictHostKeyChecking=yes)
    • giden medya boyutu channels.imessage.mediaMaxMb kullanır (varsayılan 16 MB)
    Giden parçalama
    • metin parça sınırı: channels.imessage.textChunkLimit (varsayılan 4000)
    • parça modu: channels.imessage.chunkMode
      • length (varsayılan)
      • newline (paragraf öncelikli bölme)
    Adresleme biçimleri

    Tercih edilen açık hedefler:

    • chat_id:123 (kararlı yönlendirme için önerilir)
    • chat_guid:...
    • chat_identifier:...

    Tanıtıcı hedefleri de desteklenir:

    imsg chats --limit 20
    

    Yapılandırma yazmaları

    iMessage, kanal tarafından başlatılan yapılandırma yazmalarına varsayılan olarak izin verir (commands.config: true olduğunda /config set|unset için).

    Devre dışı bırakma:

    {
      channels: {
        imessage: {
          configWrites: false,
        },
      },
    }
    

    Sorun giderme

    imsg bulunamadı veya RPC desteklenmiyor

    İkili dosyayı ve RPC desteğini doğrulayın:

    imsg rpc --help
    openclaw channels status --probe
    

    Probe, RPC'nin desteklenmediğini bildirirse imsg güncelleyin.

    DM'ler yok sayılıyor

    Kontrol edin:

    • channels.imessage.dmPolicy
    • channels.imessage.allowFrom
    • eşleştirme onayları (openclaw pairing list imessage)
    Grup mesajları yok sayılıyor

    Kontrol edin:

    • channels.imessage.groupPolicy
    • channels.imessage.groupAllowFrom
    • channels.imessage.groups izin listesi davranışı
    • bahsetme kalıbı yapılandırması (agents.list[].groupChat.mentionPatterns)
    Uzak ekler başarısız oluyor

    Kontrol edin:

    • channels.imessage.remoteHost
    • channels.imessage.remoteAttachmentRoots
    • gateway ana makinesinden SSH/SCP anahtar kimlik doğrulaması
    • ana makine anahtarının gateway ana makinesindeki ~/.ssh/known_hosts içinde mevcut olması
    • Messages çalıştıran Mac'te uzak yolun okunabilirliği
    macOS izin istemleri kaçırıldı

    Aynı kullanıcı/oturum bağlamında etkileşimli bir GUI terminalinde yeniden çalıştırın ve istemleri onaylayın:

    imsg chats --limit 1
    imsg send <handle> "test"
    

    OpenClaw/imsg çalıştıran süreç bağlamı için Full Disk Access + Automation izinlerinin verildiğini doğrulayın.

    Yapılandırma başvurusu işaretçileri

    İlgili