OpenClaw iMessage dağıtımları için, oturum açılmış bir macOS Messages ana makinesinde
imsg kullanın. Gateway Linux veya Windows üzerinde çalışıyorsa, channels.imessage.cliPath değerini Mac üzerinde imsg çalıştıran bir SSH sarmalayıcısına yönlendirin.Gelen ileti kurtarma otomatiktir. Bir köprü veya Gateway yeniden başlatıldıktan sonra iMessage, kapalı olduğu sırada kaçırılan iletileri yeniden oynatır ve Apple’ın bir Push kurtarmasından sonra boşaltabileceği eski “backlog bomb” yığınını bastırır; hiçbir şeyin iki kez gönderilmemesi için tekilleştirme yapar. Etkinleştirilecek bir yapılandırma yoktur — bkz. Bir köprü veya Gateway yeniden başlatıldıktan sonra gelen ileti kurtarma.imsg rpc sürecini başlatır ve stdio üzerinde JSON-RPC ile iletişim kurar (ayrı daemon/port yoktur). Gelişmiş eylemler imsg launch ve başarılı bir özel API yoklaması gerektirir.
Özel API eylemleri
Yanıtlar, tapback’ler, efektler, anketler, ekler ve grup yönetimi.
Eşleme
iMessage DM’leri varsayılan olarak eşleme modunu kullanır.
SSH üzerinden uzak Mac
Gateway Messages Mac üzerinde çalışmıyorsa bir SSH sarmalayıcısı kullanın.
Yapılandırma başvurusu
Tam iMessage alan başvurusu.
Hızlı kurulum
- Yerel Mac (hızlı yol)
- SSH üzerinden uzak Mac
Gereksinimler ve izinler (macOS)
imsgçalıştıran Mac üzerinde Messages oturumu açılmış olmalıdır.- OpenClaw/
imsgçalıştıran süreç bağlamı için Tam Disk Erişimi gereklidir (Messages DB erişimi). - Messages.app üzerinden ileti göndermek için Otomasyon izni gereklidir.
- Gelişmiş eylemler için (tepki / düzenleme / göndermeyi geri alma / konu içinde yanıt / efektler / anketler / grup işlemleri), Sistem Bütünlüğü Koruması devre dışı bırakılmalıdır — aşağıdaki imsg özel API’sini etkinleştirme bölümüne bakın. Temel metin ve medya gönderme/alma bunun olmadan çalışır.
SSH sarmalayıcı gönderimleri AppleEvents -1743 ile başarısız oluyor
SSH sarmalayıcı gönderimleri AppleEvents -1743 ile başarısız oluyor
Uzak SSH kurulumu sohbetleri okuyabilir, Oturum açmış Mac kullanıcısının TCC veritabanını veya Sistem Ayarları > Gizlilik ve Güvenlik > Otomasyon bölümünü denetleyin. Otomasyon girdisi Bu durumda,
channels status --probe denetiminden geçebilir ve gelen iletileri işleyebilir; ancak giden gönderimler yine de bir AppleEvents yetkilendirme hatasıyla başarısız olabilir:imsg veya yerel shell süreci yerine /usr/libexec/sshd-keygen-wrapper için kaydedilmişse macOS, bu SSH sunucu tarafı istemcisi için kullanılabilir bir Messages anahtarı göstermeyebilir:tccutil reset AppleEvents komutunu tekrarlamak veya aynı SSH sarmalayıcısı üzerinden imsg send komutunu yeniden çalıştırmak başarısız olmaya devam edebilir; çünkü Messages Otomasyonu’na ihtiyaç duyan süreç bağlamı, kullanıcı arayüzünün izin verebileceği bir uygulama değil SSH sarmalayıcısıdır.Bunun yerine desteklenen imsg süreç bağlamlarından birini kullanın:- Gateway’i veya en azından
imsgköprüsünü, oturum açmış Messages kullanıcısının yerel oturumunda çalıştırın. - Aynı oturumdan Tam Disk Erişimi ve Otomasyon izni verdikten sonra Gateway’i bu kullanıcı için bir LaunchAgent ile başlatın.
- İki kullanıcılı SSH topolojisini koruyorsanız kanalı etkinleştirmeden önce, gerçek bir giden
imsg sendkomutunun tam olarak aynı sarmalayıcı üzerinden başarılı olduğunu doğrulayın. Otomasyon izni verilemiyorsa gönderimler için SSH sarmalayıcısına güvenmek yerine tek kullanıcılı birimsgkurulumuna yeniden yapılandırın.
imsg özel API’sini etkinleştirme
imsg iki çalışma moduyla gelir:
- Temel mod (varsayılan, SIP değişikliği gerekmez):
sendüzerinden giden metin ve medya, gelen izleme/geçmiş, sohbet listesi. Yeni birbrew install steipete/tap/imsgkurulumundan ve yukarıdaki standart macOS izinlerinden sonra kutudan çıktığı gibi elde ettiğiniz budur. - Özel API modu:
imsg, dahiliIMCoreişlevlerini çağırmak içinMessages.appiçine bir yardımcı dylib enjekte eder. Bu,react,edit,unsend,reply(konu içinde),sendWithEffect,pollvepoll-vote(yerel Messages anketleri),renameGroup,setGroupIcon,addParticipant,removeParticipant,leaveGroupile yazıyor göstergelerini ve okundu bilgilerini açar.
imsg README gereksinim konusunda açıktır:
Yardımcı enjeksiyon tekniği, Messages özel API’lerine erişmek içinread,typing,launch, köprü destekli zengin gönderim, ileti mutasyonu ve sohbet yönetimi gibi gelişmiş özellikler isteğe bağlıdır. SIP’in devre dışı bırakılmasını veMessages.appiçine bir yardımcı dylib enjekte edilmesini gerektirir. SIP etkin olduğundaimsg launchenjeksiyonu reddeder.
imsg’nin kendi dylib’ini kullanır. OpenClaw iMessage yolunda üçüncü taraf sunucu veya BlueBubbles çalışma zamanı yoktur.
Kurulum
-
Messages.app çalıştıran Mac üzerinde
imsgyükleyin (veya yükseltin):imsg status --jsonçıktısıbridge_version,rpc_methodsve yöntem başınaselectorsbildirir; böylece başlamadan önce geçerli derlemenin neyi desteklediğini görebilirsiniz. -
Sistem Bütünlüğü Koruması’nı ve (modern macOS’ta) Kitaplık Doğrulamasını devre dışı bırakın. Apple imzalı
Messages.appiçine Apple olmayan bir yardımcı dylib enjekte etmek için SIP’in kapalı olması ve kitaplık doğrulamasının gevşetilmesi gerekir. Recovery-mode SIP adımı macOS sürümüne özeldir:- macOS 10.13-10.15 (Sierra-Catalina): Kitaplık Doğrulamasını Terminal üzerinden devre dışı bırakın, Recovery Mode’a yeniden başlatın,
csrutil disableçalıştırın, yeniden başlatın. - macOS 11+ (Big Sur ve sonrası), Intel: Recovery Mode (veya Internet Recovery),
csrutil disable, yeniden başlatın. - macOS 11+, Apple Silicon: Recovery’ye girmek için güç düğmesi başlangıç dizisini kullanın; son macOS sürümlerinde Continue’a tıklarken Left Shift tuşunu basılı tutun, ardından
csrutil disableçalıştırın. Sanal makine kurulumları ayrı bir akış izler; bu nedenle önce bir VM anlık görüntüsü alın.
csrutil disablegenellikle yeterli değildir. Apple,Messages.appbir platform ikilisi olduğundan kitaplık doğrulamasını hâlâ uygular; bu nedenle adhoc imzalı bir yardımcı, SIP kapalı olsa bile reddedilir (Library Validation failed: ... platform binary, but mapped file is not). SIP’i devre dışı bıraktıktan sonra kitaplık doğrulamasını da devre dışı bırakın ve yeniden başlatın:macOS 26 (Tahoe), 26.5.1 üzerinde doğrulandı: SIP kapalı artı yukarıdakiDisableLibraryValidationkomutu, yardımcının 26.0’dan 26.5.x’e kadar enjekte edilmesi için yeterlidir. boot-args gerekmez. plist belirleyici etkendir ve Tahoe’da enjeksiyon başarısız olduğunda en sık eksik olan adımdır:- plist ile:
imsg launchenjekte eder veimsg status,advanced_features: truebildirir. - plist olmadan (SIP kapalı olsa bile):
imsg launch,Failed to launch: Timeout waiting for Messages.app to initializeile başarısız olur. AMFI, adhoc yardımcıyı yükleme sırasında reddeder; bu nedenle köprü hiçbir zaman hazır olmaz ve başlatma zaman aşımına uğrar. Tahoe’da çoğu kişinin karşılaştığı belirti bu zaman aşımıdır ve düzeltme yukarıdaki plist’tir, daha sert bir şey değil.
Messages.appiçine eşlenir ve köprü çalışır; plist’i kaldırıp yeniden başlatıncaimsg launch, dylib eşlenmeden yukarıdaki zaman aşımı hatasını üretir. Ifimsg launchenjeksiyonu veya belirliselectorsdeğerleri bir macOS yükseltmesinden sonra false döndürmeye başlarsa, olağan neden bu geçittir. SIP ve library-validation durumunuzu, SIP adımının kendisinin başarısız olduğunu varsaymadan önce kontrol edin. Bu ayarlar doğruysa ve köprü hâlâ enjekte edemiyorsa,imsg status --jsonileimsg launchçıktısını toplayın ve ek sistem genelindeki güvenlik denetimlerini zayıflatmak yerine bunuimsgprojesine bildirin.imsg launchçalıştırmadan önce SIP’yi devre dışı bırakmak için Apple’ın Mac’inize yönelik Recovery-mode akışını izleyin. - macOS 10.13-10.15 (Sierra-Catalina): Kitaplık Doğrulamasını Terminal üzerinden devre dışı bırakın, Recovery Mode’a yeniden başlatın,
-
Yardımcıyı enjekte edin. SIP devre dışıyken ve Messages.app oturum açmış durumdayken:
imsg launch, SIP hâlâ etkin olduğunda enjeksiyonu reddeder; bu nedenle bu, 2. adımın uygulandığına dair bir doğrulama işlevi de görür. -
Köprüyü OpenClaw’dan doğrulayın:
iMessage girdisi
worksbildirmeli veimsg status --json | jq '{rpc_methods, selectors}'macOS derlemenizin sunduğu yetenekleri göstermelidir. Anket oluşturmaselectors.pollPayloadMessagegerektirir; oy verme hemselectors.pollVoteMessagehem depoll.voteRPC yöntemini gerektirir. OpenClaw Plugin yalnızca önbelleğe alınmış yoklamanın desteklediği eylemleri duyurur; boş bir önbellek ise iyimser kalır ve ilk gönderimde yoklama yapar.
openclaw channels status --probe kanalı works olarak bildiriyor ancak belirli eylemler gönderim sırasında “iMessage <action> requires the imsg private API bridge” hatası veriyorsa, imsg launch komutunu yeniden çalıştırın — yardımcı devreden çıkabilir (Messages.app yeniden başlatması, işletim sistemi güncellemesi vb.) ve önbelleğe alınmış available: true durumu, bir sonraki yoklama yenilenene kadar eylemleri duyurmaya devam eder.
SIP’yi devre dışı bırakamadığınızda
SIP’nin devre dışı olması tehdit modeliniz için kabul edilebilir değilse:imsgtemel moda geri döner — yalnızca metin + medya + alma.- OpenClaw Plugin, metin/medya gönderimini ve gelen izlemeyi duyurmaya devam eder; yalnızca
react,edit,unsend,reply,sendWithEffectve grup işlemlerini eylem yüzeyinden gizler (yöntem başına yetenek geçidine göre). - Birincil cihazlarınızda SIP’yi etkin tutarken, iMessage iş yükü için SIP kapalı ayrı bir Apple Silicon olmayan Mac (veya ayrılmış bir bot Mac) çalıştırabilirsiniz. Aşağıdaki Dedicated bot macOS user (separate iMessage identity) bölümüne bakın.
Erişim denetimi ve yönlendirme
- DM policy
- Group policy + mentions
- Sessions and deterministic replies
channels.imessage.dmPolicy doğrudan mesajları denetler:pairing(varsayılan)allowlistopen(allowFromdeğerinin"*"içermesini gerektirir)disabled
channels.imessage.allowFrom.İzin listesi girdileri gönderenleri tanımlamalıdır: tanıtıcılar veya statik gönderen erişim grupları (accessGroup:<name>). chat_id:*, chat_guid:* veya chat_identifier:* gibi sohbet hedefleri için channels.imessage.groupAllowFrom kullanın; sayısal chat_id kayıt anahtarları için channels.imessage.groups kullanın.ACP konuşma bağlamaları
Eski iMessage sohbetleri ACP oturumlarına da bağlanabilir. Hızlı operatör akışı:- DM veya izin verilen grup sohbeti içinde
/acp spawn codex --bind hereçalıştırın. - Aynı iMessage konuşmasındaki gelecekteki mesajlar, oluşturulan ACP oturumuna yönlendirilir.
/newve/resetaynı bağlı ACP oturumunu yerinde sıfırlar./acp closeACP oturumunu kapatır ve bağlamayı kaldırır.
type: "acp" ve match.channel: "imessage" içeren üst düzey bindings[] girdileri aracılığıyla desteklenir.
match.peer.id şunları kullanabilir:
+15555550123veyauser@example.comgibi normalleştirilmiş DM tanıtıcısıchat_id:<id>(kararlı grup bağlamaları için önerilir)chat_guid:<guid>chat_identifier:<identifier>
Dağıtım kalıpları
Dedicated bot macOS user (separate iMessage identity)
Dedicated bot macOS user (separate iMessage identity)
Bot trafiğinin kişisel Messages profilinizden izole edilmesi için ayrılmış bir Apple ID ve macOS kullanıcısı kullanın.Tipik akış:
- Ayrılmış bir macOS kullanıcısı oluşturun/oturum açın.
- Bu kullanıcıda bot Apple ID’siyle Messages oturumu açın.
- Bu kullanıcıda
imsgkurun. - OpenClaw’ın
imsgkomutunu bu kullanıcı bağlamında çalıştırabilmesi için SSH sarmalayıcısı oluşturun. channels.imessage.accounts.<id>.cliPathve.dbPathdeğerlerini bu kullanıcı profiline yönlendirin.
Remote Mac over Tailscale (example)
Remote Mac over Tailscale (example)
Yaygın topoloji:Hem SSH hem de SCP’nin etkileşimsiz olması için SSH anahtarları kullanın.
Önce ana makine anahtarının güvenilir olduğundan emin olun (örneğin
- gateway Linux/VM üzerinde çalışır
- iMessage +
imsg, tailnet’inizdeki bir Mac üzerinde çalışır cliPathsarmalayıcısıimsgçalıştırmak için SSH kullanırremoteHost, SCP ek getirmelerini etkinleştirir
ssh bot@mac-mini.tailnet-1234.ts.net) ki known_hosts doldurulsun.Multi-account pattern
Multi-account pattern
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.Direct-message history
Direct-message history
Yeni doğrudan mesaj oturumlarını o konuşmaya ait yakın zamanda çözümlenmiş
imsg geçmişiyle başlatmak için channels.imessage.dmHistoryLimit ayarlayın. Gönderen başına geçersiz kılmalar için channels.imessage.dms["<sender>"].historyLimit kullanın; bir gönderen için geçmişi devre dışı bırakmak üzere 0 dahil.iMessage DM geçmişi, gerektikçe imsg üzerinden getirilir. dmHistoryLimit değerini ayarlamamak genel DM geçmişi başlatmayı devre dışı bırakır, ancak pozitif bir gönderen başına channels.imessage.dms["<sender>"].historyLimit değeri yine de o gönderen için başlatmayı etkinleştirir.Medya, parçalama ve teslim hedefleri
Ekler ve medya
Ekler ve medya
- gelen ek alımı varsayılan olarak kapalıdır — fotoğrafları, sesli notları, videoları ve diğer ekleri ajana iletmek için
channels.imessage.includeAttachments: trueayarlayın. Devre dışıyken, yalnızca ek içeren iMessage’lar ajana ulaşmadan bırakılır ve hiçInbound messagegünlük satırı üretmeyebilir. remoteHostayarlandığında uzak ek yolları SCP ile alınabilir- ek yolları izin verilen köklerle eşleşmelidir:
channels.imessage.attachmentRoots(yerel)channels.imessage.remoteAttachmentRoots(uzak SCP modu)- varsayılan kök deseni:
/Users/*/Library/Messages/Attachments
- SCP katı ana makine anahtarı denetimi kullanır (
StrictHostKeyChecking=yes) - giden medya boyutu
channels.imessage.mediaMaxMbkullanır (varsayılan 16 MB)
Giden parçalama
Giden parçalama
- metin parçası sınırı:
channels.imessage.textChunkLimit(varsayılan 4000) - parça modu:
channels.imessage.chunkModelength(varsayılan)newline(önce paragraf bölme)
Adresleme biçimleri
Adresleme biçimleri
Tercih edilen açık hedefler:
chat_id:123(kararlı yönlendirme için önerilir)chat_guid:...chat_identifier:...
imessage:+1555...sms:+1555...user@example.com
Özel API eylemleri
imsg launch çalışırken ve openclaw channels status --probe çıktısı privateApi.available: true bildirirken, ileti aracı normal metin göndermelerine ek olarak iMessage’a özgü eylemleri kullanabilir.
Kullanılabilir eylemler
Kullanılabilir eylemler
- react: iMessage tapback’leri ekleyin/kaldırın (
messageId,emoji,remove). Desteklenen tapback’ler sevgi, beğenme, beğenmeme, gülme, vurgulama ve soru ile eşleşir. - reply: Mevcut bir iletiye iş parçacıklı yanıt gönderin (
messageId,textveyamessage, artıchatGuid,chatId,chatIdentifierveyato). - sendWithEffect: Bir iMessage efektiyle metin gönderin (
textveyamessage,effectveyaeffectId). - edit: Desteklenen macOS/özel API sürümlerinde gönderilmiş bir iletiyi düzenleyin (
messageId,textveyanewText). - unsend: Desteklenen macOS/özel API sürümlerinde gönderilmiş bir iletiyi geri çekin (
messageId). - upload-file: Medya/dosya gönderin (
bufferbase64 olarak veya hydrate edilmişmedia/path/filePath,filename, isteğe bağlıasVoice). Eski takma ad:sendAttachment. - renameGroup, setGroupIcon, addParticipant, removeParticipant, leaveGroup: Geçerli hedef bir grup sohbetiyse grup sohbetlerini yönetin.
- poll: Yerel bir Apple Messages anketi oluşturun (
pollQuestion, 2 ila 12 kez yinelenenpollOption, artıchatGuid,chatId,chatIdentifierveyato). iOS/iPadOS/macOS 26+ üzerindeki alıcılar bunu yerel olarak görür ve oylar; daha eski OS sürümleri"Sent a poll"metin yedeği alır.selectors.pollPayloadMessagegerektirir. - poll-vote: Mevcut bir ankette oy verin (
pollIdveyamessageId, artıpollOptionIndex,pollOptionIdveyapollOptionTextöğelerinden tam olarak biri).selectors.pollVoteMessagevepoll.voteRPC yöntemini gerektirir.
poll-vote için gereken anket ileti kimliğiyle ajan için işlenir.İleti kimlikleri
İleti kimlikleri
Gelen iMessage bağlamı, kullanılabilir olduğunda hem kısa
MessageSid değerlerini hem de tam ileti GUID’lerini içerir. Kısa kimlikler son SQLite destekli yanıt önbelleği kapsamındadır ve kullanılmadan önce geçerli sohbetle denetlenir. Kısa kimliğin süresi dolmuşsa veya başka bir sohbete aitse, tam MessageSidFull ile yeniden deneyin.Yetenek algılama
Yetenek algılama
OpenClaw özel API eylemlerini yalnızca önbelleğe alınmış yoklama durumu köprünün kullanılamadığını söylediğinde gizler. Durum bilinmiyorsa, eylemler görünür kalır ve gönderim yoklamaları tembel biçimde yapar; böylece ilk eylem
imsg launch sonrasında ayrı bir elle durum yenilemesi olmadan başarılı olabilir.Okundu bilgileri ve yazıyor göstergesi
Okundu bilgileri ve yazıyor göstergesi
Özel API köprüsü çalışıyorsa, kabul edilen gelen sohbetler okundu olarak işaretlenir ve doğrudan sohbetler, ajan bağlamı hazırlayıp üretirken tur kabul edilir edilmez yazıyor balonu gösterir. Okundu işaretlemeyi şu şekilde devre dışı bırakın:Yöntem başına yetenek listesinden önceki eski
imsg derlemeleri, yazıyor/okundu bilgisini sessizce kapatır; OpenClaw, eksik okundu bilgisinin nedeni anlaşılabilsin diye her yeniden başlatmada bir kez uyarı günlüğe yazar.Gelen tapback'ler
Gelen tapback'ler
OpenClaw iMessage tapback’lerine abone olur ve kabul edilen tepkileri normal ileti metni yerine sistem olayları olarak yönlendirir; böylece bir kullanıcı tapback’i olağan bir yanıt döngüsünü tetiklemez.Bildirim modu
channels.imessage.reactionNotifications ile denetlenir:"own"(varsayılan): yalnızca kullanıcılar bot tarafından yazılmış iletilere tepki verdiğinde bildir."all": yetkili gönderenlerden gelen tüm tapback’ler için bildir."off": gelen tapback’leri yok say.
channels.imessage.accounts.<id>.reactionNotifications kullanır.Onay tepkileri (👍 / 👎)
Onay tepkileri (👍 / 👎)
approvals.exec.enabled veya approvals.plugin.enabled true olduğunda ve istek iMessage’a yönlendirildiğinde, Gateway onay istemini yerel olarak iletir ve bunu çözmek için bir tapback kabul eder:👍(Beğen tapback’i) →allow-once👎(Beğenme tapback’i) →denyallow-alwayselle kullanılan bir yedek olarak kalır: normal yanıt olarak/approve <id> allow-alwaysgönderin.
channels.imessage.allowFrom içinden (veya channels.imessage.accounts.<id>.allowFrom içinden) okunur; kullanıcının telefon numarasını E.164 biçiminde veya Apple ID e-postasını ekleyin. Joker giriş "*" dikkate alınır ancak herhangi bir gönderenin onaylamasına izin verir. Tepki kısayolu, reactionNotifications, dmPolicy ve groupAllowFrom değerlerini kasıtlı olarak atlar; çünkü onay çözümlemesi için önemli olan tek kapı açık onaylayıcı izin listesidir.Bu sürümle gelen davranış değişikliği: channels.imessage.allowFrom boş değilse, /approve <id> <decision> metin komutu artık daha geniş DM izin listesine göre değil, bu onaylayıcı listesine göre yetkilendirilir. DM izin listesinde izin verilen ancak allowFrom içinde olmayan gönderenler açık bir ret alır. Önceki davranışı korumak için /approve ile (ve tepkilerle) onay verebilmesi gereken her operatörü allowFrom içine ekleyin. allowFrom boş olduğunda eski “aynı sohbet yedeği” yürürlükte kalır ve /approve, DM izin listesinin izin verdiği herkesi yetkilendirmeye devam eder.Operatör notları:- Tepki bağlaması hem bellekte (onay süresiyle eşleşen TTL ile) hem de Gateway’in kalıcı anahtarlı deposunda saklanır; böylece Gateway yeniden başlatıldıktan kısa süre sonra gelen bir tapback yine de onayı çözer.
- Cihazlar arası
is_from_me=truetapback’leri (operatörün eşleştirilmiş bir Apple cihazındaki kendi tepkisi), botun kendi kendini onaylayamaması için kasıtlı olarak yok sayılır. - Eski metin tarzı tapback’ler (çok eski Apple istemcilerinden gelen
Liked "…"düz metni), ileti GUID’i taşımadıkları için onayları çözemez; tepki çözümlemesi, güncel macOS / iOS istemcilerinin yaydığı yapılandırılmış tapback meta verilerini gerektirir.
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:
Bölünmüş gönderimli DM’leri birleştirme (tek kompozisyonda komut + URL)
Bir kullanıcı bir komut ve URL’yi birlikte yazdığında — ör.Dump https://example.com/article — Apple’ın Messages uygulaması gönderimi iki ayrı chat.db satırına böler:
- Bir metin iletisi (
"Dump"). - OG önizleme görsellerinin ek olarak bulunduğu bir URL önizleme balonu (
"https://...").
imsg tarafından eklenen bir şey değildir.
channels.imessage.coalesceSameSenderDms, bir DM’yi aynı gönderenden gelen ardışık satırları arabelleğe almaya dahil eder. imsg, kaynak satırlardan birinde yapısal URL önizleme işaretçisi balloon_bundle_id: "com.apple.messages.URLBalloonProvider" değerini sunduğunda, OpenClaw yalnızca bu gerçek bölünmüş gönderimi birleştirir ve arabelleğe alınmış diğer satırları ayrı turlar olarak tutar. Hiç balon meta verisi yaymayan daha eski imsg derlemelerinde OpenClaw, bölünmüş gönderimi ayrı gönderimlerden ayırt edemez; bu yüzden kovayı birleştirmeye geri döner. Bu, Dump <url> bölünmüş gönderimlerini iki tura geriletmek yerine meta veri öncesi davranışı korur. Grup sohbetleri, çok kullanıcılı tur yapısının korunması için ileti başına gönderilmeye devam eder.
- Ne zaman etkinleştirilmeli
- Etkinleştirme
- Ödünler
Şu durumlarda etkinleştirin:
- Tek iletide
command + payloadbekleyen Skills gönderiyorsanız (dump, paste, save, queue vb.). - Kullanıcılarınız komutların yanına URL yapıştırıyorsa.
- Eklenen DM tur gecikmesini kabul edebiliyorsanız (aşağıya bakın).
- Tek kelimelik DM tetikleyicileri için en düşük komut gecikmesine ihtiyacınız varsa.
- Tüm akışlarınız yük devamı olmayan tek seferlik komutlarsa.
Senaryolar ve aracının gördükleri
“Bayrak açık” sütunu,balloon_bundle_id yayan bir imsg derlemesindeki davranışı gösterir. Hiç balon metaverisi yaymayan eski imsg derlemelerinde, aşağıda “İki tur” / “N tur” olarak işaretlenen satırlar bunun yerine eski bir birleştirmeye (tek tur) geri döner: OpenClaw, bölünmüş gönderimi ayrı gönderimlerden yapısal olarak ayırt edemez, bu yüzden metaveri öncesi birleştirmeyi korur. Kesin ayırma, derleme balon metaverisi yaymaya başladığında etkinleşir.
| Kullanıcı şunu oluşturur | chat.db şunu üretir | Bayrak kapalı (varsayılan) | Bayrak açık + pencere (imsg balon metaverisi yayar) |
|---|---|---|---|
Dump https://example.com (tek gönderim) | ~1 sn arayla 2 satır | İki aracı turu: önce yalnızca “Dump”, sonra URL | Tek tur: birleştirilmiş metin Dump https://example.com |
Save this 📎image.jpg caption (ek + metin) | URL balon metaverisi olmadan 2 satır | İki tur | Metaveri gözlendikten sonra iki tur; eski/mandal öncesi metaverisiz oturumlarda tek birleştirilmiş tur |
/status (bağımsız komut) | 1 satır | Anında gönderim | Pencereye kadar bekle, sonra gönder |
| Tek başına yapıştırılan URL | 1 satır | Anında gönderim | Pencereye kadar bekle, sonra gönder |
| Dakikalar arayla kasıtlı olarak iki ayrı ileti halinde gönderilen metin + URL | Pencere dışında 2 satır | İki tur | İki tur (pencere aralarında sona erer) |
| Hızlı akış (pencere içinde >10 küçük DM) | URL balon metaverisi olmadan N satır | N tur | Metaveri gözlendikten sonra N tur; eski/mandal öncesi metaverisiz oturumlarda tek sınırlı birleştirilmiş tur |
| Grup sohbetinde iki kişi yazıyor | M gönderenden N satır | M+ tur (gönderen kovası başına bir) | M+ tur — grup sohbetleri birleştirilmez |
Köprü veya Gateway yeniden başlatıldıktan sonra gelen ileti kurtarma
iMessage, Gateway kapalıyken kaçırılan iletileri kurtarır ve aynı anda Apple’ın bir Push kurtarmasından sonra boşaltabileceği bayat “birikmiş işler bombası”nı bastırır. Varsayılan davranış her zaman açıktır ve gelen tekilleştirme üzerine kuruludur.- Yeniden oynatma tekilleştirmesi. Gönderilen her gelen ileti, Apple GUID’iyle kalıcı Plugin durumuna (
imessage.inbound-dedupe) kaydedilir; alım sırasında sahiplenilir ve işlendikten sonra işlenmiş olarak kaydedilir (geçici hatada yeniden deneyebilmesi için serbest bırakılır). Zaten işlenmiş olan her şey, iki kez gönderilmek yerine düşürülür. Kurtarmanın ileti başına defter tutmadan agresif biçimde yeniden oynatabilmesini sağlayan şey budur. - Kesinti süresi kurtarması. Başlangıçta izleyici, son gönderilen
chat.dbrowid değerini (hesap başına kalıcı imleç) hatırlar ve bunusince_rowidolarakimsg watch.subscribeöğesine geçirir; böyleceimsg, Gateway kapalıyken gelen satırları yeniden oynatır ve ardından canlı kuyruğu izler. Yeniden oynatma en son satırlarla ve yaklaşık 2 saate kadar eski iletilerle sınırlıdır; tekilleştirme de zaten işlenmiş olan her şeyi düşürür. - Bayat birikmiş işler yaş sınırı. Başlangıç sınırının üzerindeki satırlar gerçekten canlıdır; gönderim tarihi varışından yaklaşık 15 dakikadan daha eski olanlar Push boşaltma birikmiş işleridir ve bastırılır. Yeniden oynatılan satırlar (sınırda veya altında olanlar) bunun yerine daha geniş kurtarma penceresini kullanır; böylece yakın zamanda kaçırılan bir ileti teslim edilirken kadim geçmiş teslim edilmez.
cliPath kurulumlarında çalışır, çünkü since_rowid yeniden oynatması aynı imsg RPC bağlantısı üzerinden yürür. Fark pencerededir: Gateway chat.db okuyabildiğinde (yerel), başlangıç rowid sınırını sabitler, yeniden oynatma aralığını sınırlar ve birkaç saate kadar eski kaçırılmış iletileri teslim eder. Uzak SSH cliPath üzerinden veritabanını okuyamaz; bu yüzden yeniden oynatma sınırsızdır ve her satır canlı yaş sınırını kullanır — yakın zamanda kaçırılan iletileri yine kurtarır ve eski birikmiş işleri yine bastırır, yalnızca daha dar canlı pencereyle. Daha geniş kurtarma penceresi için Gateway’i Messages Mac üzerinde çalıştırın.
Operatöre görünen sinyal
Bastırılan birikmiş işler varsayılan düzeyde günlüklenir, asla sessizce düşürülmez (recovery bayrağı hangi pencerenin uygulandığını gösterir):
Migrasyon
channels.imessage.catchup.* kullanımdan kaldırıldı — kesinti süresi kurtarması artık otomatiktir ve yeni kurulumlar için yapılandırma gerektirmez. catchup.enabled: true içeren mevcut yapılandırmalar, kurtarma yeniden oynatma penceresi için uyumluluk profili olarak desteklenmeye devam eder. Devre dışı catchup blokları (enabled: false veya enabled: true olmayanlar) emekliye ayrıldı; openclaw doctor --fix bunları kaldırır.
Sorun giderme
imsg bulunamadı veya RPC desteklenmiyor
imsg bulunamadı veya RPC desteklenmiyor
İkiliyi ve RPC desteğini doğrulayın:Probe RPC’nin desteklenmediğini bildirirse
imsg öğesini güncelleyin. Özel API eylemleri kullanılamıyorsa oturum açmış macOS kullanıcı oturumunda imsg launch çalıştırın ve yeniden probe edin. Gateway macOS üzerinde çalışmıyorsa varsayılan yerel imsg yolu yerine yukarıdaki SSH üzerinden Uzak Mac kurulumunu kullanın.İletiler gönderiliyor ama gelen iMessage'lar ulaşmıyor
İletiler gönderiliyor ama gelen iMessage'lar ulaşmıyor
Önce iletinin yerel Mac’e ulaşıp ulaşmadığını kanıtlayın. Telefondan gönderilen iletiler yeni satır oluşturmuyorsa OpenClaw yapılandırmasını değiştirmeden önce macOS Messages ve Apple Push katmanını onarın. Tek seferlik bir servis yenilemesi çoğu zaman yeterlidir:Telefondan yeni bir iMessage gönderin ve OpenClaw oturumlarında hata ayıklamadan önce yeni bir
chat.db değişmiyorsa, imsg status --json sağlıklı bir köprü bildirse bile OpenClaw iletiyi alamaz.chat.db satırını veya imsg watch olayını doğrulayın. Bunu periyodik köprü yeniden başlatma döngüsü olarak çalıştırmayın; etkin çalışma sırasında tekrarlanan imsg launch ve Gateway yeniden başlatmaları teslimatları kesintiye uğratabilir ve devam eden kanal çalıştırmalarını yarıda bırakabilir.Gateway macOS üzerinde çalışmıyor
Gateway macOS üzerinde çalışmıyor
Varsayılan Ardından şunu çalıştırın:
cliPath: "imsg", Messages oturumu açılmış Mac üzerinde çalışmalıdır. Linux veya Windows üzerinde, channels.imessage.cliPath değerini o Mac’e SSH yapan ve imsg "$@" çalıştıran bir sarmalayıcı betiğe ayarlayın.DM'ler yok sayılıyor
DM'ler yok sayılıyor
Kontrol edin:
channels.imessage.dmPolicychannels.imessage.allowFrom- eşleştirme onayları (
openclaw pairing list imessage)
Grup iletileri yok sayılıyor
Grup iletileri yok sayılıyor
Kontrol edin:
channels.imessage.groupPolicychannels.imessage.groupAllowFromchannels.imessage.groupsizin listesi davranışı- bahsetme deseni yapılandırması (
agents.list[].groupChat.mentionPatterns)
Uzak ekler başarısız oluyor
Uzak ekler başarısız oluyor
Kontrol edin:
channels.imessage.remoteHostchannels.imessage.remoteAttachmentRoots- Gateway ana makinesinden SSH/SCP anahtar kimlik doğrulaması
- Gateway ana makinesinde
~/.ssh/known_hostsiçinde ana makine anahtarı var - Messages çalıştıran Mac üzerinde uzak yolun okunabilirliği
macOS izin istemleri kaçırıldı
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:OpenClaw/
imsg çalıştıran süreç bağlamı için Full Disk Access + Automation izinlerinin verildiğini doğrulayın.Yapılandırma referansı işaretçileri
İlgili
- Kanallara Genel Bakış — desteklenen tüm kanallar
- BlueBubbles’ın kaldırılması ve imsg iMessage yolu — duyuru ve migrasyon özeti
- BlueBubbles’tan geçiş — yapılandırma çeviri tablosu ve adım adım geçiş
- Eşleştirme — DM kimlik doğrulaması ve eşleştirme akışı
- Gruplar — grup sohbeti davranışı ve bahsetme kapısı
- Kanal Yönlendirme — iletiler için oturum yönlendirme
- Güvenlik — erişim modeli ve sıkılaştırma