Multi-agent
حضور
«حضور» در OpenClaw نمایی سبکوزن و مبتنی بر بهترین تلاش از موارد زیر است:
- خود Gateway، و
- کلاینتهای قابلمشاهده برای کاربر که به Gateway متصلاند (برنامه Mac، WebChat، نودها و غیره)
حضور، فرادادهٔ زندهٔ اتصال را در صفحهٔ Devices در رابط کنترل (در مسیر Settings → Devices) و زبانهٔ Instances در برنامهٔ macOS نمایش میدهد.
این صفحه فهرست کلاینتهای Gateway را پوشش میدهد. برای تشخیص Mac که اخیراً از آن استفاده کردهاید و هدایت هشدارهای نود به آن، به حضور رایانهٔ فعال مراجعه کنید.
فیلدهای حضور (آنچه نمایش داده میشود)
ورودیهای حضور، اشیایی ساختیافته با فیلدهایی مانند موارد زیر هستند:
instanceId(اختیاری، اما اکیداً توصیه میشود): هویت پایدار کلاینت (معمولاًconnect.client.instanceId)host: نام میزبان خوانا برای انسانip: آدرس IP مبتنی بر بهترین تلاشversion: رشتهٔ نسخهٔ کلاینتdeviceFamily/modelIdentifier: اطلاعات راهنمای سختافزارmode:ui،webchat،cli،backend،node،probe،testlastInputSeconds: تعداد ثانیههای سپریشده از آخرین ورودی کاربر، در صورت مشخصبودنreason: رشتهای با قالب آزاد که کلاینت ارائه میکند؛ خود Gateway فقطself،connectوdisconnectرا منتشر میکندdeviceId،roles،scopes: هویت دستگاه و اطلاعات راهنمای نقش/دامنه از دستدهی اتصالts: مُهر زمانی آخرین بهروزرسانی (میلیثانیه از مبدأ زمان)
تولیدکنندگان (حضور از کجا میآید)
ورودیهای حضور توسط چند منبع تولید و ادغام میشوند.
1) ورودی خود Gateway
Gateway همیشه هنگام راهاندازی یک ورودی «خود» ایجاد میکند تا رابطهای کاربری میزبان Gateway را حتی پیش از اتصال هر کلاینتی نمایش دهند.
2) اتصال WebSocket
هر کلاینت WS با یک درخواست connect آغاز میکند. پس از دستدهی موفق،
Gateway یک ورودی حضور را برای آن اتصال درج یا بهروزرسانی میکند.
چرا اتصالهای موقت صفحهٔ کنترل نمایش داده نمیشوند
فرمانهای CLI، کلاینتهای RPC سمت بکاند و کاوشگرها اغلب برای مدت کوتاهی متصل میشوند. برای جلوگیری از
نگهداشتن این تغییرات سریع در تمام مدت TTL حضور، کلاینتهای دارای حالت cli، backend
یا probe به ورودی حضور تبدیل نمیشوند. کلاینتهای حالت آزمون
همچنان ردیابی میشوند، زیرا مجموعهآزمونها از آنها بهعنوان جایگزین کلاینتهای واقعی استفاده میکنند.
3) بیکنهای system-event
کلاینتها میتوانند از طریق متد system-event بیکنهای دورهای غنیتری ارسال کنند. برنامهٔ Mac
از این قابلیت برای گزارش نام میزبان، IP، نسخه و فرادادهٔ زندهبودن استفاده میکند. فعالیت
ورودی فیزیکی بخشی از این بیکن عمومی نیست؛ رویداد بومی نود با هدف مشخص که
در حضور رایانهٔ فعال شرح داده شده است، مالک آن است. Mac این
بیکنها را با system-presence-clear-last-input برچسبگذاری میکند؛ Gatewayهای فعلی
از این نشانگر سازگار با گذشته استفاده میکنند تا هرگونه تازگی ورودی باقیمانده از
برنامهای قدیمی را حذف کنند. این بیکن همچنین یک مقدار ثابت 30روزه حمل میکند تا Gatewayهای قدیمی که
برچسب را نادیده میگیرند، بهجای نگهداشتن تازگی دقیق، آن را بازنویسی کنند. هیچ فعالیت جدیدی
برای این مقدار سازگاری نمونهبرداری نمیشود.
4) اتصال نودها (نقش: نود)
وقتی نودی با role: node از طریق WebSocket مربوط به Gateway متصل میشود، Gateway
یک ورودی حضور برای آن نود درج یا بهروزرسانی میکند (همان جریان سایر کلاینتهای WS).
قواعد ادغام و حذف موارد تکراری (چرا instanceId اهمیت دارد)
ورودیهای حضور در یک نگاشت واحد در حافظه ذخیره میشوند که کلید آن، بدون حساسیت به بزرگی و کوچکی حروف،
بهترتیب نخستین مورد موجود از این موارد است: شناسهٔ دستگاه جفتشده، connect.client.instanceId
یا در آخرین حالت، شناسهٔ مختص هر اتصال.
کلاینتهای موقت صفحهٔ کنترل بهطور کامل از ردیابی کنار گذاشته میشوند (بخش
بالا را ببینید)، بنابراین شناسههای اتصال آنها هرگز به کلید تبدیل نمیشوند. برای هر کلاینت دیگر،
استفاده از شناسهٔ اتصال بهعنوان حالت جایگزین باعث میشود کلاینتی که بدون
instanceId پایدار دوباره متصل میشود، بهصورت یک ردیف تکراری نمایش داده شود.
TTL و اندازهٔ محدود
حضور عمداً موقتی است:
- TTL: ورودیهای قدیمیتر از 5 دقیقه حذف میشوند
- حداکثر ورودیها: 200 (ابتدا قدیمیترینها حذف میشوند)
این کار فهرست را تازه نگه میدارد و از رشد نامحدود حافظه جلوگیری میکند.
ملاحظهٔ اتصال دوردست/تونل (IPهای loopback)
وقتی کلاینتی از طریق تونل SSH / هدایت درگاه محلی متصل میشود، Gateway
ممکن است آدرس دوردست را بهصورت 127.0.0.1 ببیند. برای جلوگیری از ثبت آن آدرس تونل
بهعنوان IP کلاینت، مدیریت اتصال برای کلاینتهایی که محلی تشخیص داده میشوند (loopback)،
بهجای نوشتن آدرس loopback در ورودی، ip را بهطور کامل حذف میکند.
مصرفکنندگان
صفحهٔ Devices در رابط کنترل
صفحهٔ Devices، system-presence را با سوابق پایدار جفتسازی و نود
ترکیب میکند. این صفحه بیکن خود Gateway را در ابتدا سنجاق میکند و برای فرادادهٔ زندهٔ پلتفرم،
نسخه، مدل و تازگی ورودی از شناسههای منطبق دستگاه یا نمونه استفاده میکند.
زبانهٔ Instances در macOS
برنامهٔ macOS خروجی system-presence را نمایش میدهد و بر اساس سن آخرین بهروزرسانی،
یک نشانگر وضعیت کوچک (فعال/بیکار/کهنه) اعمال میکند.
نکات اشکالزدایی
- برای دیدن فهرست خام،
system-presenceرا در Gateway فراخوانی کنید. - اگر موارد تکراری مشاهده میکنید:
- تأیید کنید کلاینتها در دستدهی یک
client.instanceIdپایدار ارسال میکنند - تأیید کنید بیکنهای دورهای از همان
instanceIdاستفاده میکنند - بررسی کنید آیا ورودی مشتقشده از اتصال فاقد
instanceIdاست (وجود موارد تکراری مورد انتظار است)
- تأیید کنید کلاینتها در دستدهی یک
مرتبط
نحوهٔ انتخاب نود فعال توسط ورودی فیزیکی Mac و هدایت هشدارهای اتصال.
زمان ارسال نشانگرهای تایپ و نحوهٔ تنظیم آنها.
جریاندهی خروجی، قطعهبندی و قالببندی مختص هر کانال.
مؤلفههای Gateway و پروتکل WebSocket که بهروزرسانیهای حضور را هدایت میکند.
پروتکل روی سیم برای connect، system-event و system-presence.