Developer and self-hosted
IRC
برای استفاده از OpenClaw در کانالهای کلاسیک (#room) و پیامهای مستقیم، از IRC استفاده کنید.
Plugin رسمی IRC را نصب کنید، سپس آن را در channels.irc پیکربندی کنید.
شروع سریع
- Plugin را نصب کنید:
openclaw plugins install @openclaw/irc- دستکم میزبان، نام مستعار و کانالهایی را که باید به آنها بپیوندد، در
~/.openclaw/openclaw.jsonتنظیم کنید:
{ channels: { irc: { enabled: true, host: "irc.example.com", port: 6697, tls: true, nick: "openclaw-bot", channels: ["#openclaw"], }, },}- Gateway را راهاندازی یا بازراهاندازی کنید:
openclaw gateway runبرای هماهنگی رباتها، یک سرور خصوصی IRC را ترجیح دهید. اگر آگاهانه از یک شبکه عمومی IRC استفاده میکنید، گزینههای رایج شامل Libera.Chat، OFTC و Snoonet هستند. برای ترافیک کانال پشتی ربات یا ازدحام رباتها، از کانالهای عمومی با نامهای قابل پیشبینی پرهیز کنید.
تنظیمات اتصال
| کلید | پیشفرض | توضیحات |
|---|---|---|
host |
هیچکدام (الزامی) | نام میزبان سرور IRC |
port |
6697 با TLS، 6667 بدون رمزنگاری |
۱ تا ۶۵۵۳۵ |
tls |
true |
فقط برای استفاده آگاهانه از متن ساده، آن را روی false تنظیم کنید |
nick |
هیچکدام (الزامی) | نام مستعار ربات |
username |
نام مستعار، وگرنه openclaw |
نام کاربری IRC |
realname |
OpenClaw |
فیلد نام واقعی/GECOS |
password / passwordFile |
هیچکدام | گذرواژه سرور؛ فایل باید یک فایل معمولی باشد |
channels |
هیچکدام | کانالهایی که باید به آنها پیوست (["#openclaw"]) |
accounts / defaultAccount |
هیچکدام | پیکربندی چندحسابی؛ متغیرهای محیطی فقط حساب پیشفرض را تکمیل میکنند |
پیشفرضهای امنیتی
- IRC از سوکتهای خام TCP/TLS خارج از مسیریابی پراکسی روبهجلوی تحت مدیریت اپراتور OpenClaw استفاده میکند. در استقرارهایی که تمام ترافیک خروجی باید از آن پراکسی روبهجلو عبور کند، مگر اینکه خروجی مستقیم IRC صراحتاً تأیید شده باشد،
channels.irc.enabled=falseرا تنظیم کنید. - مقدار پیشفرض
channels.irc.dmPolicyبرابر"pairing"است: فرستندگان ناشناس پیام مستقیم، یک کد جفتسازی دریافت میکنند که باopenclaw pairing approve irc <code>تأییدش میکنید. - مقدار پیشفرض
channels.irc.groupPolicyبرابر"allowlist"است. - با
groupPolicy="allowlist"، برای تعریف کانالهای مجازchannels.irc.groupsرا تنظیم کنید. - مگر اینکه آگاهانه انتقال متن ساده را پذیرفته باشید، از TLS (
channels.irc.tls=true) استفاده کنید.
کنترل دسترسی
برای کانالهای IRC دو «دروازه» جداگانه وجود دارد:
- دسترسی کانال (
groupPolicy+groups): آیا ربات اساساً پیامهای یک کانال را میپذیرد یا نه. - دسترسی فرستنده (
groupAllowFrom/ مقدار کانالمحورgroups["#channel"].allowFrom): چه کسی درون آن کانال مجاز است ربات را فعال کند.
کلیدهای پیکربندی:
- فهرست مجاز پیام مستقیم (دسترسی فرستنده پیام مستقیم):
channels.irc.allowFrom - فهرست مجاز فرستندگان گروه (دسترسی فرستنده کانال):
channels.irc.groupAllowFrom - کنترلهای هر کانال (قواعد کانال، فرستنده و اشاره):
channels.irc.groups["#channel"]همراه باrequireMention،allowFrom،enabled،tools،toolsBySender،skillsوsystemPrompt channels.irc.groupPolicy="open"کانالهای پیکربندینشده را مجاز میکند (اما بهطور پیشفرض همچنان نیازمند اشاره است)
مدخلهای فهرست مجاز باید از هویتهای پایدار فرستنده (nick!user@host) استفاده کنند.
تطبیق فقط بر اساس نام مستعار تغییرپذیر است و تنها هنگامی فعال میشود که channels.irc.dangerouslyAllowNameMatching: true باشد.
اشتباه رایج: allowFrom برای پیامهای مستقیم است، نه کانالها
اگر گزارشهایی مانند این میبینید:
irc: drop group sender alice!ident@host (policy=allowlist)
...یعنی فرستنده برای پیامهای گروهی/کانال مجاز نبوده است. برای رفع آن یکی از این کارها را انجام دهید:
channels.irc.groupAllowFromرا تنظیم کنید (سراسری برای همه کانالها)، یا- فهرستهای مجاز فرستنده را برای هر کانال تنظیم کنید:
channels.irc.groups["#channel"].allowFrom
نمونه (اجازه به همه افراد حاضر در #openclaw برای گفتگو با ربات):
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { allowFrom: ["*"] }, }, }, },}فعالسازی پاسخ (اشارهها)
حتی اگر کانالی مجاز باشد (از طریق groupPolicy + groups) و فرستنده نیز مجاز باشد، OpenClaw در محیطهای گروهی بهطور پیشفرض پاسخ را به اشاره مشروط میکند. وقتی پیام حاوی نام مستعار متصلشده ربات باشد یا با الگوهای اشاره پیکربندیشده شما مطابقت داشته باشد، ربات اشارهشده محسوب میشود.
این یعنی ممکن است گزارشهایی مانند drop channel … (missing-mention) ببینید، مگر اینکه پیام شامل الگویی برای اشاره باشد که با ربات مطابقت دارد.
برای اینکه ربات در یک کانال IRC بدون نیاز به اشاره پاسخ دهد، الزام اشاره را برای آن کانال غیرفعال کنید:
{ channels: { irc: { groupPolicy: "allowlist", groups: { "#openclaw": { requireMention: false, allowFrom: ["*"], }, }, }, },}یا برای مجاز کردن همه کانالهای IRC (بدون فهرست مجاز برای هر کانال) و همچنان پاسخگویی بدون اشاره:
{ channels: { irc: { groupPolicy: "open", groups: { "*": { requireMention: false, allowFrom: ["*"] }, }, }, },}نکته امنیتی (توصیهشده برای کانالهای عمومی)
اگر در یک کانال عمومی allowFrom: ["*"] را مجاز کنید، هر کسی میتواند به ربات فرمان بدهد.
برای کاهش خطر، ابزارهای آن کانال را محدود کنید.
ابزارهای یکسان برای همه افراد کانال
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], tools: { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, }, }, }, },}ابزارهای متفاوت برای هر فرستنده (مالک اختیار بیشتری دارد)
از toolsBySender استفاده کنید تا برای "*" سیاست سختگیرانهتر و برای نام مستعار خودتان سیاست آسانگیرانهتری اعمال شود:
{ channels: { irc: { groups: { "#openclaw": { allowFrom: ["*"], toolsBySender: { "*": { deny: ["group:runtime", "group:fs", "gateway", "nodes", "cron", "browser"], }, "id:alice": { deny: ["gateway", "nodes", "cron"], }, }, }, }, }, },}نکات:
- کلیدهای
toolsBySenderباید از پیشوندهای صریح (channel:،id:،e164:،username:،name:) استفاده کنند. برای IRC ازid:همراه با مقدار هویت فرستنده استفاده کنید:id:aliceیا برای تطبیق قویترid:alice!~alice@203.0.113.7. - کلیدهای قدیمیِ بدون پیشوند همچنان پذیرفته میشوند، فقط بهعنوان
id:تطبیق داده میشوند و یک هشدار منسوخشدن ایجاد میکنند. - نخستین سیاست فرستنده که مطابقت داشته باشد اعمال میشود؛
"*"جایگزین عمومی است.
برای اطلاعات بیشتر درباره تفاوت دسترسی گروه با الزام اشاره (و نحوه تعامل آنها)، به این صفحه مراجعه کنید: /channels/groups.
NickServ
برای احراز هویت نزد NickServ پس از اتصال:
{ channels: { irc: { nickserv: { enabled: true, service: "NickServ", password: "your-nickserv-password", }, }, },}هرگاه گذرواژهای تنظیم شده باشد، احراز هویت NickServ بهطور پیشفرض اجرا میشود (enabled فقط برای انصراف باید false باشد). مقدار پیشفرض service برابر NickServ است؛ passwordFile جایگزینی برای password درونخطی است.
ثبتنام اختیاری و یکباره هنگام اتصال (register: true به registerEmail نیاز دارد):
{ channels: { irc: { nickserv: { register: true, registerEmail: "bot@example.com", }, }, },}پس از ثبت نام مستعار، register را غیرفعال کنید تا از تلاشهای مکرر REGISTER جلوگیری شود.
متغیرهای محیطی
حساب پیشفرض از موارد زیر پشتیبانی میکند:
IRC_HOSTIRC_PORTIRC_TLSIRC_NICKIRC_USERNAMEIRC_REALNAMEIRC_PASSWORDIRC_CHANNELS(جداشده با ویرگول)IRC_NICKSERV_PASSWORDIRC_NICKSERV_REGISTER_EMAIL
IRC_HOST را نمیتوان از یک فایل .env فضای کاری تنظیم کرد؛ به فایلهای .env فضای کاری مراجعه کنید.
عیبیابی
- اگر ربات متصل میشود اما هرگز در کانالها پاسخ نمیدهد،
channels.irc.groupsو اینکه آیا الزام اشاره پیامها را حذف میکند (missing-mention) بررسی کنید. اگر میخواهید بدون اشاره پاسخ دهد، برای کانالrequireMention:falseرا تنظیم کنید. - اگر ورود ناموفق است، در دسترس بودن نام مستعار و گذرواژه سرور را بررسی کنید.
- اگر TLS در یک شبکه سفارشی ناموفق است، میزبان/درگاه و پیکربندی گواهی را بررسی کنید.
مطالب مرتبط
- نمای کلی کانالها — همه کانالهای پشتیبانیشده
- جفتسازی — احراز هویت پیام مستقیم و فرایند جفتسازی
- گروهها — رفتار گفتگوی گروهی و الزام اشاره
- مسیریابی کانال — مسیریابی نشست برای پیامها
- امنیت — مدل دسترسی و مقاومسازی