Mainstream messaging
مهاجرت از BlueBubbles
پشتیبانی از BlueBubbles حذف شده است. OpenClaw فقط از طریق Plugin همراه imessage از iMessage پشتیبانی میکند؛ این Plugin، steipete/imsg را از طریق JSON-RPC راهاندازی میکند و به همان سطح API خصوصی دسترسی دارد که BlueBubbles داشت (react، edit، unsend، reply، sendWithEffect، نظرسنجیهای بومی، مدیریت گروه و پیوستها). یک فایل اجرایی CLI جایگزین سرور BlueBubbles، برنامهٔ کارخواه و زیرساخت Webhook میشود: بدون نقطهٔ پایانی REST و بدون احراز هویت Webhook.
این راهنما پیکربندیهای قدیمی channels.bluebubbles را به channels.imessage منتقل میکند. هیچ مسیر انتقال پشتیبانیشدهٔ دیگری وجود ندارد. در نسخهٔ فعلی OpenClaw، بلوک باقیماندهٔ channels.bluebubbles غیرفعال است — هیچ بخش زمان اجرایی آن را نمیخواند.
فهرست بررسی انتقال
اگر از قبل پیکربندی قدیمی BlueBubbles خود را میشناسید، کوتاهترین مسیر امن چنین است:
imsgرا مستقیماً روی Mac اجراکنندهٔ Messages.app بررسی کنید (imsg chats،imsg history،imsg send،imsg rpc --help).- کلیدهای رفتاری را از
channels.bluebubblesبهchannels.imessageکپی کنید:dmPolicy،allowFrom،groupPolicy،groupAllowFrom،groups،includeAttachments،attachmentRoots،mediaMaxMb،textChunkLimit،coalesceSameSenderDmsوactions. - کلیدهای انتقالی را که دیگر وجود ندارند حذف کنید:
serverUrl،password، نشانیهای Webhook و راهاندازی سرور BlueBubbles. - اگر Gateway روی Mac مربوط به Messages اجرا نمیشود،
channels.imessage.cliPathرا روی یک پوشش SSH تنظیم کنید و برای دریافت پیوستها از راه دور،remoteHostرا تنظیم کنید. channels.imessageرا فعال و Gateway را بازراهاندازی کنید، سپسopenclaw channels status --probe --channel imessageرا اجرا کنید.- یک پیام مستقیم، یک گروه مجاز، در صورت فعال بودن پیوستها و همهٔ کنشهای API خصوصی مورد انتظار برای استفادهٔ عامل را آزمایش کنید.
- پس از تأیید مسیر iMessage، سرور BlueBubbles و پیکربندی قدیمی
channels.bluebubblesرا حذف کنید.
کارکرد imsg
imsg یک CLI محلی macOS برای Messages است. OpenClaw، imsg rpc را بهعنوان فرایند فرزند آغاز میکند و از طریق ورودی/خروجی استاندارد با JSON-RPC ارتباط برقرار میکند. هیچ سرور HTTP، نشانی Webhook، خدمت پسزمینه، عامل راهانداز یا درگاهی برای در معرض دسترس قرار دادن وجود ندارد.
- خواندنها با استفاده از یک دستهٔ فقطخواندنی SQLite از
~/Library/Messages/chat.dbانجام میشوند. - پیامهای ورودی زنده از
imsg watch/watch.subscribeدریافت میشوند که رویدادهای سامانهٔ فایلchat.dbرا با یک سازوکار پشتیبانِ نظرسنجی دنبال میکند. - ارسال متن عادی و فایل با خودکارسازی Messages.app انجام میشود.
- کنشهای پیشرفته از
imsg launchبرای تزریق دستیارimsgبه Messages.app استفاده میکنند. این قابلیت، رسید خواندن، نشانگرهای تایپ، ارسالهای غنی، ویرایش، لغو ارسال، پاسخ رشتهای، واکنشها، نظرسنجیها و مدیریت گروه را فعال میکند. - ساختهای Linux میتوانند یک
chat.dbکپیشده را بررسی کنند، اما نمیتوانند پیام ارسال کنند، پایگاه دادهٔ زندهٔ Mac را پایش کنند یا Messages.app را کنترل کنند. برای iMessage در OpenClaw،imsgرا روی Mac واردشده به حساب اجرا کنید یا از یک پوشش SSH برای اتصال به آن Mac استفاده کنید.
پیش از شروع
-
imsgرا روی Mac اجراکنندهٔ Messages.app نصب کنید:bash brew install steipete/tap/imsgbrew update && brew upgrade imsgimsg --versionimsg chats --limit 3در راهاندازی معمول محلی، فرایند راهاندازی OpenClaw میتواند نصب یا بهروزرسانی
imsgبا Homebrew را روی Mac واردشده به Messages، پس از تأیید کاربر، پیشنهاد دهد. راهاندازی دستی و توپولوژیهای پوشش SSH همچنان باید توسط راهبر مدیریت شوند: بهروزرسانی Homebrew را در همان زمینهٔ کاربر محلی یا راه دور کهimsgرا اجرا خواهد کرد، تکرار کنید. اگرimsg chatsبا خطایunable to open database file، خروجی خالی یاauthorization deniedمواجه شد، دسترسی کامل دیسک را به پایانه، ویرایشگر، فرایند Node، سرویس Gateway یا فرایند والد SSH کهimsgرا اجرا میکند بدهید، سپس آن فرایند والد را دوباره باز کنید. -
پیش از تغییر پیکربندی OpenClaw، سطوح خواندن، پایش، ارسال و RPC را بررسی کنید:
bash imsg chats --limit 10 --json | jq -simsg history --chat-id 42 --limit 10 --attachments --json | jq -simsg watch --chat-id 42 --reactions --jsonimsg send --chat-id 42 --text "OpenClaw imsg test"imsg rpc --help42را با شناسهٔ واقعی یک گفتگو ازimsg chatsجایگزین کنید. ارسال به مجوز Automation برای Messages.app نیاز دارد. اگر OpenClaw از طریق SSH اجرا خواهد شد، این فرمانها را از طریق همان پوشش SSH یا زمینهٔ کاربری اجرا کنید که OpenClaw استفاده خواهد کرد. اگر خواندن انجام میشود اما ارسال با خطای AppleEvents-1743ناموفق است، بررسی کنید که آیا مجوز Automation به/usr/libexec/sshd-keygen-wrapperاختصاص یافته است؛ به شکست ارسالهای پوشش SSH با AppleEvents -1743 مراجعه کنید. -
پل API خصوصی را فعال کنید. استفاده از آن برای iMessage در OpenClaw اکیداً توصیه میشود، زیرا پاسخها، واکنشها، جلوهها، نظرسنجیها، پاسخ به پیوستها و کنشهای گروه به آن وابستهاند:
bash imsg launchimsg status --jsonimsg launchنیازمند غیرفعال بودن SIP است (و در نسخههای جدید macOS، اعتبارسنجی کتابخانه نیز باید آسانگیرانهتر شود — به فعالسازی API خصوصی imsg مراجعه کنید). ارسال پایه، تاریخچه و پایش بدونimsg launchکار میکنند؛ اما مجموعهٔ کامل کنشهای iMessage در OpenClaw در دسترس نخواهد بود. -
پس از فعالسازی
channels.imessageو راهاندازی Gateway، پل را از طریق OpenClaw بررسی کنید:bash openclaw channels status --probeحساب iMessage باید وضعیت
worksرا گزارش کند؛ با--json، بار دادهٔ بررسی شاملprivateApi.available: trueاست. اگر مقدارfalseگزارش شد، ابتدا آن را برطرف کنید — به تشخیص قابلیتها مراجعه کنید. بررسی به Gateway قابلدسترسی نیاز دارد (در غیر این صورت، CLI فقط خروجی مبتنی بر پیکربندی ارائه میدهد) و فقط حسابهای پیکربندیشده و فعال را بررسی میکند. -
از پیکربندی خود یک نسخهٔ لحظهای تهیه کنید:
bash cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak
تبدیل پیکربندی
iMessage و BlueBubbles بیشتر کلیدهای رفتاری سطح کانال را مشترک دارند. آنچه تغییر میکند، سازوکار انتقال (سرور REST در برابر CLI محلی) و قالب کلید دفتر ثبت گروهها است.
| BlueBubbles | iMessage همراهشده | یادداشتها |
|---|---|---|
channels.bluebubbles.enabled |
channels.imessage.enabled |
معنا و رفتار یکسان است (پس از وجود بلوک، مقدار پیشفرض true است). |
channels.bluebubbles.serverUrl |
(حذفشده) | سرور REST وجود ندارد — Plugin، دستور imsg rpc را از طریق stdio اجرا میکند. |
channels.bluebubbles.password |
(حذفشده) | نیازی به احراز هویت Webhook نیست. |
| (ضمنی) | channels.imessage.cliPath |
مسیر imsg (پیشفرض imsg)؛ برای SSH از اسکریپت پوششی استفاده کنید. |
| (ضمنی) | channels.imessage.dbPath |
بازنویسی اختیاری مسیر chat.db مربوط به Messages.app؛ در صورت حذف، بهطور خودکار شناسایی میشود. |
| (ضمنی) | channels.imessage.remoteHost |
host یا user@host — فقط زمانی لازم است که cliPath یک پوشش SSH باشد و بخواهید پیوستها از طریق SCP دریافت شوند. |
channels.bluebubbles.dmPolicy |
channels.imessage.dmPolicy |
مقادیر یکسان (pairing / allowlist / open / disabled)؛ پیشفرض pairing است. |
channels.bluebubbles.allowFrom |
channels.imessage.allowFrom |
قالب شناسهها یکسان است (+15555550123، user@example.com). تأییدهای ذخیرهشده در مخزن جفتسازی منتقل نمیشوند — پایینتر را ببینید. |
channels.bluebubbles.groupPolicy |
channels.imessage.groupPolicy |
مقادیر یکسان (allowlist / open / disabled)؛ پیشفرض allowlist است. |
channels.bluebubbles.groupAllowFrom |
channels.imessage.groupAllowFrom |
یکسان است. اگر تنظیم نشده باشد، iMessage از allowFrom استفاده میکند؛ مقدار صریحاً خالی groupAllowFrom: [] همه گروهها را در حالت groupPolicy: "allowlist" مسدود میکند. |
channels.bluebubbles.groups |
channels.imessage.groups |
ورودی عام "*" را عیناً کپی کنید؛ کلید ورودیهای هر گروه را با chat_id عددی iMessage جایگزین کنید — بخش «دام رجیستری گروه» را ببینید. گزینههای requireMention، tools، toolsBySender و systemPrompt بدون تغییر منتقل میشوند. |
channels.bluebubbles.sendReadReceipts |
channels.imessage.sendReadReceipts |
پیشفرض true است. با Plugin همراهشده، این گزینه فقط زمانی فعال میشود که کاوش API خصوصی برقرار باشد. |
channels.bluebubbles.includeAttachments |
channels.imessage.includeAttachments |
ساختار یکسان و در هر دو حالت بهطور پیشفرض غیرفعال است. اگر پیوستها در BlueBubbles منتقل میشدند، این گزینه را صریحاً تنظیم کنید — تا پیش از آن، عکسها و رسانههای ورودی بیصدا حذف میشوند (بدون خط گزارش Inbound message). |
channels.bluebubbles.attachmentRoots |
channels.imessage.attachmentRoots |
ریشههای محلی؛ قواعد نویسه عام یکسان است. |
| (قابلاعمال نیست) | channels.imessage.remoteAttachmentRoots |
فقط زمانی استفاده میشود که remoteHost برای دریافت از طریق SCP تنظیم شده باشد. |
channels.bluebubbles.mediaMaxMb |
channels.imessage.mediaMaxMb |
پیشفرض در iMessage برابر ۱۶ مگابایت است (پیشفرض BlueBubbles برابر ۸ مگابایت بود). برای حفظ سقف پایینتر، آن را صریحاً تنظیم کنید. |
channels.bluebubbles.textChunkLimit |
channels.imessage.textChunkLimit |
پیشفرض در هر دو ۴۰۰۰ است. |
channels.bluebubbles.coalesceSameSenderDms |
channels.imessage.coalesceSameSenderDms |
همان گزینه انتخابی است. فقط برای پیام خصوصی — گروهها ارسال جداگانه هر پیام را حفظ میکنند. مگر اینکه messages.inbound.byChannel.imessage یا مقدار سراسری messages.inbound.debounceMs تنظیم شده باشد، تأخیر تجمیع پیشفرض ورودی را به ۷۰۰۰ میلیثانیه افزایش میدهد. بخش تجمیع پیامهای خصوصی چندبخشی را ببینید. |
channels.bluebubbles.enrichGroupParticipantsFromContacts |
(قابلاعمال نیست) | imsg از قبل نام نمایشی فرستندگان را از chat.db ارائه میکند. |
channels.bluebubbles.actions.* |
channels.imessage.actions.* |
کلیدهای فعالسازی هر کنش یکساناند (reactions، edit، unsend، reply، sendWithEffect، renameGroup، setGroupIcon، addParticipant، removeParticipant، leaveGroup، sendAttachment) و گزینه جدید polls نیز اضافه شده است. همه بهطور پیشفرض فعالاند؛ کنشهای API خصوصی همچنان به پل نیاز دارند. |
پیکربندیهای چندحسابی (channels.bluebubbles.accounts.*) بهصورت یکبهیک به channels.imessage.accounts.* تبدیل میشوند.
دام رجیستری گروه
Plugin همراهشده iMessage دو دروازه گروه را پشتسرهم اجرا میکند. پیام گروهی برای رسیدن به عامل باید از هر دو عبور کند:
- فهرست مجاز فرستنده / مقصد گپ (
channels.imessage.groupAllowFrom) — با شناسه فرستنده یا مقصد گپ (ورودیهایchat_id:،chat_guid:وchat_identifier:) تطبیق داده میشود. اگرgroupAllowFromتنظیم نشده باشد، این دروازه ازallowFromاستفاده میکند؛ مقدار صریحgroupAllowFrom: []این بازگشت را غیرفعال میکند و در حالتgroupPolicy: "allowlist"همه پیامهای گروهی را کنار میگذارد. - رجیستری گروه (
channels.imessage.groups) — باchat_idعددی iMessage کلیدگذاری میشود:- بدون بلوک
groups(یا با بلوک خالی): تا زمانی که دروازه ۱ یک فهرست مجاز مؤثر و غیرخالی برای فرستندگان داشته باشد، گروهها از این دروازه عبور میکنند؛ پالایش فرستنده دسترسی را کنترل میکند و هشدار حذف همه در زمان راهاندازی صادر نمیشود. groupsدارای ورودی، اما بدون"*": فقط کلیدهایchat_idفهرستشده عبور میکنند. فهرستکردن هر گروهی، رجیستری را حتی در حالتgroupPolicy: "open"به فهرست مجاز تبدیل میکند.groups: { "*": { ... } }: همه گروهها از این دروازه عبور میکنند.
- بدون بلوک
دام مهاجرت این است: BlueBubbles ورودیهای groups را با GUID گپ / شناسه گپ کلیدگذاری میکرد، اما رجیستری iMessage از chat_id عددی استفاده میکند. کپی عینی ورودیهای هر گروه، رجیستری غیرخالیای ایجاد میکند که کلیدهایش هرگز تطبیق نمییابند؛ بنابراین همه پیامهای گروهی در دروازه ۲ کنار گذاشته میشوند. ورودی عام "*" را عیناً کپی کنید؛ کلید ورودیهای گروههای مشخص را با مقادیر chat_id برگرفته از imsg chats جایگزین کنید.
هر دو مسیر حذف در سطح پیشفرض گزارش، از طریق خطوط warn قابل مشاهدهاند:
- یک بار برای هر حساب هنگام راهاندازی، وقتی
groupPolicy: "allowlist"تنظیم شده اما فهرست مجاز مؤثر فرستندگان گروه خالی است:imessage: groupPolicy="allowlist" for account "<id>" but no group sender allowlist is configured .... برای پذیرش فرستندگان،groupAllowFrom(یاallowFrom) را تنظیم کنید؛ افزودن صرفgroupsدروازه فرستنده را برآورده نمیکند. - یک بار برای هر
chat_idهنگام اجرا، وقتی رجیستری گروهی را حذف میکند:imessage: dropping group message from chat_id=<id> ... not in channels.imessage.groups allowlistکه کلید دقیق لازم برای افزودن را مشخص میکند.
پیامهای خصوصی در هر دو حالت همچنان کار میکنند — آنها مسیر کد متفاوتی دارند، بنابراین موفقیت پیام خصوصی، مسیریابی صحیح گروه را اثبات نمیکند.
حداقل پیکربندی محدودشده به فرستنده با groupPolicy: "allowlist":
{ channels: { imessage: { groupPolicy: "allowlist", groupAllowFrom: ["+15555550123", "chat_guid:any;-;..."], }, },}این پیکربندی فرستندگان تنظیمشده را در هر گروهی میپذیرد. برای محدودکردن گپهای مجاز یا تنظیم گزینههای هر گپ مانند requireMention، ورودیهای groups را اضافه کنید؛ ورودی "*" از BlueBubbles را عیناً کپی کنید، اما کلید ورودیهای مشخص را با مقادیر عددی chat_id مربوط به iMessage جایگزین کنید.
گامبهگام
-
پیکربندی را منتقل کنید. هنگام ویرایش، بلوک جدید را غیرفعال نگه دارید؛ بلوک قدیمی
channels.bluebubblesدر نسخهٔ فعلی OpenClaw نادیده گرفته میشود و میتواند برای مرجع در کنار آن باقی بماند:json5 { channels: { imessage: { enabled: false, // flip to true when ready to cut over cliPath: "/opt/homebrew/bin/imsg", dmPolicy: "pairing", allowFrom: ["+15555550123"], // copy from bluebubbles.allowFrom groupPolicy: "allowlist", groupAllowFrom: [], // copy from bluebubbles.groupAllowFrom groups: { "*": { requireMention: true } }, // wildcard copies verbatim; re-key per-chat entries by chat_id // actions default to enabled; set individual toggles false to disable }, },} -
انتقال را انجام دهید و بررسی کنید. مقدار
channels.imessage.enabled: trueرا تنظیم کنید، Gateway را راهاندازی مجدد کنید و مطمئن شوید کانال وضعیت سالم گزارش میکند:bash openclaw gateway restartopenclaw channels status --probe --channel imessage # expect "works"; --json shows privateApi.available: trueاین بررسی به یک Gateway در دسترس نیاز دارد و فقط حسابهای پیکربندیشده و فعال را بررسی میکند. برای اعتبارسنجی خود Mac، از فرمانهای مستقیم
imsgدر پیش از شروع استفاده کنید. -
پیامهای مستقیم را بررسی کنید. یک پیام مستقیم برای عامل ارسال کنید و مطمئن شوید پاسخ دریافت میشود.
-
گروهها را جداگانه بررسی کنید. پیامهای مستقیم و گروهها از مسیرهای کد متفاوتی عبور میکنند — موفقیت پیام مستقیم ثابت نمیکند که مسیریابی گروهها درست کار میکند. در یک گفتوگوی گروهی مجاز پیامی ارسال کنید و مطمئن شوید پاسخ دریافت میشود. اگر گروه ساکت ماند (نه پاسخی از عامل و نه خطایی)، گزارش Gateway را برای دو خط
warnبخش "Group registry footgun" در بالا بررسی کنید. هشدار هنگام راهاندازی یعنی فهرست مجاز مؤثر فرستندگان خالی است؛ هشدار مربوط به یکchat_idمشخص یعنی رجیستری پرشدهٔgroupsشامل آن گفتوگو نیست. -
سطح کنشها را بررسی کنید. از طریق یک پیام مستقیم جفتشده، از عامل بخواهید واکنش نشان دهد، ویرایش کند، ارسال را لغو کند، پاسخ دهد، عکس بفرستد و در یک گروه، نام گروه را تغییر دهد یا شرکتکنندهای را اضافه/حذف کند. هر کنش باید بهصورت بومی در Messages.app اعمال شود. اگر هر کنشی خطای
iMessage <action> requires the imsg private API bridgeایجاد کرد، دوبارهimsg launchرا اجرا کنید و باopenclaw channels status --probeوضعیت را تازهسازی کنید. -
پس از تأیید پیامهای مستقیم، گروهها و کنشهای iMessage، سرور BlueBubbles و بلوک
channels.bluebubblesرا حذف کنید. OpenClaw مقدارchannels.bluebubblesرا نمیخواند.
مقایسهٔ سریع قابلیتهای کنش
| کنش | BlueBubbles قدیمی | iMessage همراه بسته |
|---|---|---|
| ارسال متن / بازگشت به SMS | ✅ | ✅ |
| ارسال رسانه (عکس، ویدئو، فایل، صدا) | ✅ | ✅ |
پاسخ رشتهای (reply_to_guid) |
✅ | ✅ (مسئلهٔ #51892 را حل میکند) |
واکنش Tapback (react) |
✅ | ✅ |
| ویرایش / لغو ارسال (گیرندگان macOS 13+) | ✅ | ✅ |
| ارسال با جلوهٔ صفحه | ✅ | ✅ (بخشی از #9394 را حل میکند) |
| متن غنی پررنگ / مورب / زیرخطدار / خطخورده | ✅ | ✅ (قالببندی اجرای نوعدار از طریق attributedBody) |
| نظرسنجیهای بومی Messages (ایجاد و رأیدادن) | ❌ | ✅ (actions.polls؛ گیرندگان برای نمایش بومی به iOS/macOS 26+ نیاز دارند) |
| تغییر نام گروه / تنظیم نماد گروه | ✅ | ✅ |
| افزودن / حذف شرکتکننده، ترک گروه | ✅ | ✅ |
| رسید خواندن و نشانگر تایپ | ✅ | ✅ (مشروط به موفقیت بررسی API خصوصی) |
| ادغام پیامهای مستقیم از یک فرستنده | ✅ | ✅ (فقط پیام مستقیم؛ فعالسازی اختیاری از طریق channels.imessage.coalesceSameSenderDms) |
| بازیابی ورودیها پس از راهاندازی مجدد | ✅ | ✅ (خودکار: بازپخش since_rowid + حذف موارد تکراری با GUID؛ پنجرهٔ گستردهتر در حالت محلی) |
iMessage پیامهایی را که هنگام ازکارافتادگی Gateway از دست رفتهاند بازیابی میکند: هنگام راهاندازی، از آخرین rowid ارسالشده با استفاده از since_rowid در imsg watch.subscribe بازپخش میکند، موارد تکراری را بر اساس GUID حذف میکند و یک محدودیت سنی برای صف قدیمی، «انفجار صف» ناشی از تخلیهٔ Push را مهار میکند. این فرایند از طریق اتصال RPC مربوط به imsg اجرا میشود، بنابراین برای راهاندازیهای cliPath از راه دور با SSH نیز کار میکند؛ راهاندازیهای محلی پنجرهٔ بازیابی گستردهتری دارند، زیرا میتوانند chat.db را بخوانند. به بازیابی ورودیها پس از راهاندازی مجدد پل یا Gateway مراجعه کنید.
جفتسازی، نشستها و اتصالهای ACP
- فهرستهای مجاز بر اساس شناسه منتقل میشوند.
channels.imessage.allowFromهمان رشتههای+15555550123/user@example.comرا که BlueBubbles استفاده میکرد تشخیص میدهد — آنها را بدون تغییر کپی کنید. - تأییدیههای مخزن جفتسازی منتقل نمیشوند. مخزن جفتسازی مختص هر کانال است و هیچچیز مخزن قدیمی BlueBubbles را منتقل نمیکند. فرستندگانی که فقط از طریق جفتسازی تأیید شده بودند، باید یکبار دیگر در iMessage جفت شوند یا باید شناسههایشان را به
allowFromاضافه کنید. - نشستها همچنان به هر عامل + گفتوگو محدود میمانند. با مقدار پیشفرض
session.dmScope=main، پیامهای مستقیم در نشست اصلی عامل ادغام میشوند؛ نشستهای گروهی برای هرchat_idجدا میمانند (agent:<agentId>:imessage:group:<chat_id>). تاریخچهٔ قدیمی گفتوگوها در کلیدهای نشست BlueBubbles به نشستهای iMessage منتقل نمیشود. - اتصالهای ACP که به
match.channel: "bluebubbles"ارجاع میدهند باید به"imessage"تغییر کنند. قالبهایmatch.peer.id(chat_id:،chat_guid:،chat_identifier:و شناسهٔ خام) یکسان هستند.
نبود کانال بازگشت
هیچ محیط اجرایی پشتیبانیشدهای از BlueBubbles برای بازگشت وجود ندارد. اگر تأیید iMessage ناموفق بود، مقدار channels.imessage.enabled: false را تنظیم کنید، Gateway را راهاندازی مجدد کنید، مانع مربوط به imsg را برطرف کنید و انتقال را دوباره امتحان کنید.
حافظهٔ نهان پاسخ در وضعیت SQLite مربوط به Plugin نگهداری میشود. در صورت وجود فایل جانبی قدیمی imessage/reply-cache.jsonl، فرمان openclaw doctor --fix آن را وارد و بایگانی میکند.
مطالب مرتبط
- حذف BlueBubbles و مسیر iMessage مبتنی بر imsg — اطلاعیهای کوتاه و خلاصهای برای اپراتورها.
- iMessage — مرجع کامل کانال iMessage، شامل راهاندازی
imsg launchو تشخیص قابلیتها. /channels/bluebubbles— نشانی قدیمی که به این راهنمای مهاجرت هدایت میشود.- جفتسازی — احراز هویت پیام مستقیم و فرایند جفتسازی.
- مسیریابی کانال — نحوهٔ انتخاب کانال توسط Gateway برای پاسخهای خروجی.