Developer and self-hosted
Tlon
Tlon یک پیامرسان غیرمتمرکز است که بر پایه Urbit ساخته شده است. OpenClaw به کشتی Urbit شما متصل میشود و به پیامهای مستقیم و پیامهای گفتوگوی گروهی پاسخ میدهد. پاسخهای گروهی بهطور پیشفرض به اشاره با @ نیاز دارند و قواعد مجوزدهی و فرایند تأیید مالک نیز بر آن اعمال میشوند.
وضعیت: Plugin همراه. پیامهای مستقیم، اشارهها در گروه، رشتهها، متن غنی، بارگذاری/دریافت تصویر و یک سامانه تأیید مالک پشتیبانی میشوند. واکنشها و نظرسنجیها پشتیبانی نمیشوند.
Plugin همراه
Tlon همراه نسخههای فعلی OpenClaw عرضه میشود؛ بیلدهای بستهبندیشده به نصب جداگانه نیاز ندارند.
در بیلدی قدیمیتر یا نصب سفارشی که آن را شامل نمیشود، از npm نصب کنید:
openclaw plugins install @openclaw/tlonبرای دنبالکردن برچسب نسخه فعلی، از نام ساده بسته استفاده کنید. یک نسخه را (@openclaw/tlon@x.y.z)
فقط برای نصبهای بازتولیدپذیر ثابت کنید.
از یک checkout محلی:
openclaw plugins install ./path/to/local/tlon-pluginجزئیات: Pluginها
راهاندازی
openclaw channels add --channel tlon --ship ~sampel-palnet --url https://your-ship-host --code lidlut-tabwed-pillex-ridrupیا پیکربندی را مستقیماً ویرایش کنید:
{ channels: { tlon: { enabled: true, ship: "~sampel-palnet", url: "https://your-ship-host", code: "lidlut-tabwed-pillex-ridrup", ownerShip: "~your-main-ship", // توصیهشده: کشتی شما که همیشه مجاز است }, },}پس از ویرایش مستقیم پیکربندی، Gateway را راهاندازی مجدد کنید. سپس به ربات پیام مستقیم بدهید یا در یک کانال گروهی با @ به آن اشاره کنید.
کشتیهای خصوصی/LAN
OpenClaw برای محافظت در برابر SSRF، نامهای میزبان و بازههای IP خصوصی/داخلی را بهطور پیشفرض مسدود میکند. اگر کشتی شما در یک شبکه خصوصی اجرا میشود (localhost، IP شبکه LAN یا نام میزبان داخلی)، صریحاً آن را فعال کنید:
{ channels: { tlon: { url: "http://localhost:8080", network: { dangerouslyAllowPrivateNetwork: true, }, }, },}این تنظیم برای مقصدهایی مانند http://localhost:8080، http://192.168.x.x:8080 و
http://my-ship.local:8080 اعمال میشود. آن را فقط برای URL کشتی مورداعتماد فعال کنید؛ این کار محافظت
SSRF را برای درخواستهای HTTP آن حساب غیرفعال میکند.
کانالهای گروهی
کانالها را بهصورت دستی سنجاق کنید یا کشف خودکار را فعال کنید:
{ channels: { tlon: { groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"], autoDiscoverChannels: true, }, },}اگر autoDiscoverChannels در پیکربندی تنظیم نشده باشد، مقدار پیشفرض آن false است؛ راهنمای راهاندازی، پاسخ
پیشفرض درخواست را بله قرار میدهد و true را صریحاً مینویسد. با فعالبودن آن، OpenClaw هنگام آغاز به کار گروههای پیوستهشده را جستوجو میکند،
با پذیرفتهشدن دعوتهای گروهی کانالهای جدید را زیر نظر میگیرد و هر ۲ دقیقه دوباره بررسی میکند.
کنترل دسترسی
فهرست مجاز پیامهای مستقیم (خالی = هیچ پیام مستقیمی مجاز نیست، مگر اینکه فرستنده ownerShip باشد):
{ channels: { tlon: { dmAllowlist: ["~zod", "~nec"], }, },}مجوزدهی گروه بهطور پیشفرض در هر کانال restricted است. برای تعیین یک مبنا، defaultAuthorizedShips را تنظیم
کنید و آن را برای هر آشیانه کانال بازنویسی کنید:
{ channels: { tlon: { defaultAuthorizedShips: ["~zod"], authorization: { channelRules: { "chat/~host-ship/general": { mode: "restricted", allowedShips: ["~zod", "~nec"], }, "chat/~host-ship/announcements": { mode: "open", }, }, }, }, },}پس از اینکه ربات درون یک رشته پاسخ داد، بدون نیاز به اشارهای دیگر، به پیامهای بعدی آن رشته پاسخ میدهد.
مالک و سامانه تأیید
{ channels: { tlon: { ownerShip: "~your-main-ship", }, },}کشتی مالک در همهجا مجاز است: دعوتهای پیام مستقیم همیشه بهطور خودکار پذیرفته میشوند، دعوتهای گروهی
همیشه بهطور خودکار پذیرفته میشوند و پیامهای کانال همیشه مجوزدهی را با موفقیت پشت سر میگذارند. لازم نیست مالک
در dmAllowlist، defaultAuthorizedShips یا groupInviteAllowlist باشد.
وقتی ownerShip تنظیم شده باشد، درخواستهای غیرمجاز صرفاً کنار گذاشته نمیشوند؛ آنها یک
تأیید در انتظار را در صف قرار میدهند و به مالک پیام مستقیم میفرستند:
- درخواستهای پیام مستقیم از کشتیهایی که در
dmAllowlistنیستند - اشارهها در کانالهایی که فرستنده مجوز لازم را ندارد
- دعوتهای گروهی از کشتیهایی که در
groupInviteAllowlistنیستند (وقتی پذیرش خودکار خاموش است، یا روشن است اما دعوتکننده در فهرست مجاز نیست)
مالک برای اقدام درباره یک درخواست، در پیام مستقیم پاسخ میدهد:
| پاسخ مالک | اثر |
|---|---|
approve / deny / block |
روی جدیدترین تأیید در انتظار اقدام میکند |
approve <id> / deny <id> |
با استفاده از شناسه روی یک تأیید مشخص اقدام میکند |
block |
کشتی را بهصورت بومی نیز مسدود میکند تا نتواند دوباره متصل شود |
unblock ~ship |
مسدودسازی بومی را برمیگرداند |
blocked |
کشتیهای مسدودشده فعلی را فهرست میکند |
pending |
درخواستهای تأیید در انتظار را فهرست میکند |
اگر ownerShip پیکربندی نشده باشد، پیامهای مستقیم و اشارههای کانال غیرمجاز صرفاً کنار گذاشته و ثبت میشوند؛
هیچ درخواست تأییدی وجود ندارد.
تنظیمات پذیرش خودکار
دعوتهای پیام مستقیم از کشتیهایی را که از قبل در dmAllowlist هستند بهطور خودکار بپذیرید (مالک صرفنظر از
این پرچم همیشه بهطور خودکار پذیرفته میشود):
{ channels: { tlon: { autoAcceptDmInvites: true, }, },}دعوتهای گروهی را از یک فهرست مجاز بهطور خودکار بپذیرید (در حالت خطا بسته میماند: با autoAcceptGroupInvites: true و
groupInviteAllowlist خالی، هیچ دعوتی از سوی غیرمالک پذیرفته نمیشود):
{ channels: { tlon: { autoAcceptGroupInvites: true, groupInviteAllowlist: ["~zod"], }, },}بارگذاری مجدد فوری از طریق مخزن تنظیمات Urbit
بیشتر تنظیمات بالا (dmAllowlist، groupInviteAllowlist، groupChannels،
defaultAuthorizedShips، autoDiscoverChannels، autoAcceptDmInvites،
autoAcceptGroupInvites، ownerShip، showModelSignature) در نخستین اجرا در عامل
%settings کشتی (میز moltbot، سطل tlon) بازتاب داده میشوند و سپس بهصورت زنده از آنجا خوانده میشوند؛
بنابراین تغییرات انجامشده از طریق یک کلاینت Landscape یا فرمانهای تنظیمات Skill همراه، بدون
راهاندازی مجدد Gateway اعمال میشوند. channelRules و تأییدهای در انتظار نیز بهصورت JSON در آنجا پایدار میشوند. پیکربندی
فایل برای مقادیری که هرگز در مخزن تنظیمات نوشته نشدهاند، منبع حقیقت باقی میماند.
مقصدهای تحویل (CLI/Cron)
همراه openclaw message send یا تحویل Cron استفاده کنید:
- پیام مستقیم:
~sampel-palnetیاdm/~sampel-palnet - گروه:
chat/~host-ship/channelیاgroup:~host-ship/channel
Skill همراه
این Plugin شامل @tloncorp/tlon-skill است؛ یک CLI برای
عملیات مستقیم Urbit که پس از نصب Plugin بهطور خودکار در دسترس قرار میگیرد:
- فعالیت: اشارهها، پاسخها، موارد خواندهنشده
- کانالها: فهرستکردن، ایجاد، تغییر نام
- مخاطبان: فهرستکردن/دریافت/بهروزرسانی نمایهها
- گروهها: ایجاد، پیوستن، جریانهای دعوت/درخواست، نقشها
- قلابها: مدیریت قلابهای کانال
- پیامها: تاریخچه، جستوجو
- پیامهای مستقیم: ارسال، واکنش، پذیرش/رد
- پستها: واکنش، حذف
- دفترچه: ارسال پست به کانالهای روزانه
- تنظیمات: بارگذاری مجدد فوری پیکربندی Plugin از طریق مخزن تنظیمات بالا
قابلیتها
| ویژگی | وضعیت |
|---|---|
| پیامهای مستقیم | پشتیبانی میشود |
| گروهها/کانالها | پشتیبانی میشود (بهطور پیشفرض مشروط به اشاره) |
| رشتهها | پشتیبانی میشود (پس از پیوستن، به پاسخدادن ادامه میدهد) |
| متن غنی | Markdown به قالب بومی Tlon تبدیل میشود |
| تصاویر | ورودیها دریافت و خروجیها بارگذاری میشوند |
| واکنشها | فقط از طریق Skill همراه |
| نظرسنجیها | پشتیبانی نمیشود |
| فرمانهای بومی | بهطور پیشفرض فقط برای مالک |
عیبیابی
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctorخطاهای رایج:
- پیامهای مستقیم نادیده گرفته میشوند: فرستنده در
dmAllowlistنیست و هیچownerShipبرای جریان تأیید پیکربندی نشده است. - پیامهای گروهی نادیده گرفته میشوند: کانال کشف/سنجاق نشده است، یا فرستنده مجوز لازم را ندارد و
هیچ
ownerShipبرای صفکردن تأیید وجود ندارد. - خطاهای اتصال: بررسی کنید URL کشتی قابل دسترس باشد؛ برای کشتیهای محلی
network.dangerouslyAllowPrivateNetworkرا تنظیم کنید. - خطاهای احراز هویت: کدهای ورود بهصورت دورهای تغییر میکنند؛ کد فعلی را از کشتی خود کپی کنید.
مرجع پیکربندی
پیکربندی کامل: پیکربندی
| کلید | مفهوم |
|---|---|
channels.tlon.enabled |
آغاز به کار کانال را فعال/غیرفعال میکند. |
channels.tlon.ship |
نام کشتی Urbit ربات (برای مثال ~sampel-palnet). |
channels.tlon.url |
URL کشتی (برای مثال https://sampel-palnet.tlon.network). |
channels.tlon.code |
کد ورود کشتی. |
channels.tlon.network.dangerouslyAllowPrivateNetwork |
URL کشتیهای localhost/LAN را مجاز میکند (فعالسازی صریح SSRF). |
channels.tlon.ownerShip |
کشتی مالک: همیشه مجاز است و درخواستهای تأیید را دریافت میکند. |
channels.tlon.dmAllowlist |
کشتیهای مجاز به ارسال پیام مستقیم (خالی = فقط مالک). |
channels.tlon.autoAcceptDmInvites |
پیامهای مستقیم کشتیهای موجود در dmAllowlist را خودکار میپذیرد. |
channels.tlon.autoAcceptGroupInvites |
دعوتهای گروهی از groupInviteAllowlist را خودکار میپذیرد. |
channels.tlon.groupInviteAllowlist |
کشتیهایی که دعوتهای گروهیشان بهطور خودکار پذیرفته میشود. |
channels.tlon.autoDiscoverChannels |
کانالهای گروهی پیوستهشده را خودکار کشف میکند (پیشفرض: false). |
channels.tlon.groupChannels |
آشیانههای کانال که بهصورت دستی سنجاق شدهاند. |
channels.tlon.defaultAuthorizedShips |
کشتیهای مجاز برای همه کانالها (وقتی هیچ قاعدهای منطبق نیست). |
channels.tlon.authorization.channelRules |
حالت احراز مجوز و فهرست مجاز برای هر آشیانه کانال. |
channels.tlon.showModelSignature |
عبارت _[Generated by <model>]_ را به پاسخها میافزاید. |
channels.tlon.responsePrefix |
پیشوند ثابتی که به ابتدای پاسخهای خروجی افزوده میشود. |
channels.tlon.accounts.<id> |
حسابهای نامگذاریشده اضافی (راهاندازیهای چندکشتی). |
نکات
- پاسخهای گروهی به اشاره با @ (برای مثال
~your-bot-ship) نیاز دارند، مگر اینکه ربات از قبل به آن رشته پیوسته باشد. - پاسخهای رشتهای درون همان رشته قرار میگیرند؛ همچنین ۱۰ پیام آخر زمینه رشته پیش از ورودی عامل افزوده میشوند.
- متن غنی (پررنگ، مورب، کد، عنوانها، فهرستها) به قالب بومی Tlon تبدیل میشود.
- ارسال پیام ورودیای که خلاصه یک کانال را درخواست کند (برای مثال «این کانال را خلاصه کن») بهجای جریان پاسخ عادی، خلاصهسازی داخلی تاریخچه را فعال میکند.
مرتبط
- نمای کلی کانالها — همه کانالهای پشتیبانیشده
- جفتسازی — احراز هویت پیام مستقیم و جریان جفتسازی
- گروهها — رفتار گفتوگوی گروهی و الزام اشاره
- مسیریابی کانال — مسیریابی نشست برای پیامها
- امنیت — مدل دسترسی و مقاومسازی