#من الان داخل ui OpenClaw خودم هستم فقط میخوام از تریق ui API keys اضافه کنم . راهی برای این کار بلدی
1 messages · Page 1 of 1 (latest)
الان توی Control UI خود OpenClaw، (فعلاً) یه صفحهی اختصاصی “Add API key” برای کلیدهای مدلها (OpenAI/Anthropic/OpenRouter/…) نداره؛ ولی دو راه عملی داری:
1) راه پیشنهادی (روی سرور/همون ماشینی که Gateway اجرا میشه)
روی همون سیستم اجرا کن:
openclaw models auth add(تعاملـی، راحتترین)
یاopenclaw onboard(و بخش Auth/Models رو دوباره تنظیم کن)
(برای Anthropic setup-token هم از همین مسیرها/دستورهای openclaw models auth setup-token|paste-token باید استفاده بشه.)
2) اگر حتماً میخوای از داخل UI انجام بدی (راه میانبُر)
در Control UI → تب Config (Raw JSON یا فرم)، کلیدت رو داخل بخش env بذار و بعد Apply / Apply+Restart بزن.
مثالها:
{
env: {
OPENAI_API_KEY: "sk-...",
ANTHROPIC_API_KEY: "sk-ant-...",
OPENROUTER_API_KEY: "sk-or-..."
}
}
بعدش Gateway باید ریستارت بشه تا کلیدها اعمال بشن (از خود UI اگر دکمهاش هست، وگرنه از ترمینال: openclaw gateway restart).
مستندات مرتبط:
- Control UI: https://docs.openclaw.ai/web/control-ui
- Auth: https://docs.openclaw.ai/gateway/authentication
اگر بگی دقیقاً API key برای کدوم سرویسه (OpenAI؟ Anthropic؟ OpenRouter؟ یا کلیدِ یه skill مثل Brave/Firecrawl)، دقیقاً همون مسیر درستش رو میگم.
openrouter.ai من از استفاده میکنم برا api
برای OpenRouter اگر میخوای فقط از طریق UI کلید رو اضافه کنی، بهترین راه اینه که کلید رو داخل config به عنوان env ذخیره کنی و بعد Gateway رو ریستارت کنی:
مراحل داخل Control UI
- برو به Config (یا Settings/Configuration)
- در Raw JSON (یا بخش env اگر فرم دارد) اینو اضافه کن:
{
env: {
OPENROUTER_API_KEY: "sk-or-..."
}
}
- Apply / Save رو بزن (اگر گزینهی Apply + Restart هست همون بهتره)
- اگر خودش ریستارت نکرد، دستی ریستارت کن:
openclaw gateway restart
نکته مهم
- API Key رو اینجا توی Discord نفرست (عمومی میمونه). فقط داخل UI خودت واردش کن.
- بعد از ذخیره، برای اطمینان میتونی از UI بخش Status/Models استفاده کنی (یا از ترمینال
openclaw models status) تا ببینی provider شناسایی شده.
اگر بگی Gateway رو روی همون سیستم UI باز کردی یا ریموت (VPS/Tailscale)، میگم دقیقاً کدوم دکمه/مسیر UI احتمالاً تو نسخهی تو اسمش چیه.
داخل config اینا وجود ندارن یا Settings/Configuration)
اگر توی UI گزینهی Config / Settings / Configuration رو اصلاً نمیبینی، تقریباً همیشه یعنی شما داخل WebChat (اپ macOS/iOS یا چت ساده) هستی، نه داخل Control UI (داشبورد مرورگری ادمین).
1) اول مطمئن شو کدوم UI هستی
- WebChat: فقط چت دارد (History/Send) و معمولاً منوی “Config” ندارد.
- Control UI (Dashboard): معمولاً منوی کناری دارد مثل: Chat / Channels / Sessions / Cron / Skills / Nodes / Config / Logs / Update و داخلش میشود کانفیگ را ویرایش کرد.
2) اگر هدفت “فقط از طریق UI” اضافه کردن OpenRouter API Key است
باید با Control UI در مرورگر وصل بشی:
روی همون ماشینی که Gateway روش اجرا میشه این دستور رو بزن:
openclaw dashboard
این یک لینکِ توکندار بهت میدهد. همون لینک رو در مرورگر باز کن.
بعد داخل Control UI برو به Config و در Raw editor این رو اضافه کن (حتی اگر env وجود ندارد، خودت ایجادش کن):
{
env: {
OPENROUTER_API_KEY: "sk-or-..."
}
}
بعد Apply / Save و اگر لازم بود Restart.
(کلید رو اینجا توی Discord نفرست—فقط داخل UI خودت واردش کن.)
3) برای اینکه دقیقتر راهنمایی کنم
این 3 تا رو بگو:
- UI رو از کجا باز کردی؟ (آدرسش/URL چی هست؟ مثلاً
http://...:18789/یا داخل اپ؟) openclaw --versionچی میزند؟- توی صفحهای که الان هستی منوی کناری (Chat/Channels/…/Config) داری یا فقط چت؟
فکر کنم داخل وب چت هستم روی کروم
Health
اول وب با moltbot-scaled شروع میشه
اگه فقط WebChat رو توی کروم باز کرده باشی (جایی که معمولاً فقط Chat/Health میبینی)، اون UI فعلاً برای اضافه کردن API key مدلها (مثل OpenRouter) گزینهی “Config/Settings” نداره.
برای اضافه کردن OpenRouter API Key عملاً یکی از این دو راه لازمه:
راه 1) رفتن به Control UI واقعی (که Config دارد)
روی همون ماشینی که Gateway اجرا میشه اینو بزن:
openclaw dashboard
لینک توکندار میده؛ همونو توی کروم باز کن. توی اون داشبورد باید در منوی کناری گزینهای مثل Config (یا تنظیمات گیتوی) داشته باشی و اونجا اینو اضافه کنی:
{
env: { OPENROUTER_API_KEY: "sk-or-..." }
}
بعد Apply/Save و اگر خواست Restart.
راه 2) اگر فقط CLI داری (سریعترین برای OpenRouter)
روی gateway host:
openclaw models auth paste-token --provider openrouter
و کلید رو paste کن. (کلید رو داخل Discord نفرست.)
برای اینکه دقیق بگم چطور از همون صفحهای که الان هستی به Control UI برسی، این دوتا رو بفرست (بدون توکن):
- URL دقیق صفحهای که باز کردی (هرچی بعدش
token=هست رو پاک کن) - توی منو/سایدبار دقیقاً چه گزینههایی میبینی؟ (مثلاً فقط Chat و Health یا چیزهای دیگه مثل Channels/Sessions/Cron/Config)
Overview
Direct g
Channels
(())
Instances
Sessions
*Cron Jobs
Agent
4
Skills
Nodes
A
Settings
Config
Debug
Logs پنل کناری اینا رو دارم
عالی — این یعنی داخل Control UI درست هستی (چون Channels / Cron / Skills / Config / Logs داری).
برای اضافه کردن API Keyِ OpenRouter از همین UI:
- از سایدبار برو Config
- داخل ادیتور (Raw/JSON5) دنبال بخش
envبگرد:
- اگر
envداری، فقط این خط رو داخلش اضافه کن - اگر نداری، یک
envدر ریشهی کانفیگ (کنارgateway/agents/ …) اضافه کن
مثال:
{
// ... بقیه کانفیگت رو دست نزن
env: {
OPENROUTER_API_KEY: "sk-or-..."
}
}
- Save / Apply رو بزن
- اگر UI گزینهی Restart یا Apply + Restart داد، انجام بده (برای اینکه کلید حتماً لود بشه).
بعدش برای چک کردن:
- برو Debug یا Overview و دنبال بخش وضعیت مدلها/auth بگرد (یا هر چیزی شبیه “models status”) تا ببینی OpenRouter ok شده.
نکته: کلیدت رو اینجا داخل Discord نفرست؛ فقط داخل Config خودت وارد کن.
قسمت یک رو رفتم قسمت دو گیج شدم ادیتور نداره
تو صفحه Config ادیتور هست، فقط احتمالاً روی حالت Form هستی و چیزی نمایش نمیده.
این کار رو بکن:
- برو Config
- تو همون صفحه، پایینِ سایدبار سمت چپ (آخر لیست Settingها) یه سوییچ داری: Form / Raw
- روی Raw کلیک کن
- وسط صفحه باید یک textarea با عنوان Raw JSON5 بیاد (اون ادیتوره)
بعد داخل همون Raw JSON5، (بدون اینکه بقیه کانفیگت رو پاک کنی) این رو اضافه کن:
اگر env داری:
env: {
OPENROUTER_API_KEY: "sk-or-..."
}
اگر env نداری، در ریشهی فایل اضافهاش کن، مثلاً:
{
env: { OPENROUTER_API_KEY: "sk-or-..." },
}
- بالا سمت راست Save رو بزن
- بعد Apply رو بزن (Apply باعث ریستارت و اعمال شدن تنظیمات میشه)
اگر هنوز “Raw” رو پیدا نمیکنی، یه اسکرینشات از صفحه Config بفرست (فقط مطمئن شو هیچ توکنی/کلیدی داخلش دیده نشه).
واکی اما چطوری مدل هوش مصنوعی رو انتخاب کنم از openrouter.a استفاده میکنم من . میخوام از مدل Kimi K2.5 استفاده کنم
برای انتخاب مدل وقتی از OpenRouter استفاده میکنی، دو راه داری: موقت (فقط همین چت) یا پیشفرض (برای همهی چتها).
راه سریع (موقت، بدون دست زدن به Config)
در تب Chat همین Control UI این دستور رو بفرست:
/model openrouter/moonshotai/kimi-k2.5
بعد برای اطمینان بزن:
/model status
این حالت فقط برای همین session مدل رو عوض میکنه.
راه دائمی (پیشفرض برای همه)
برو Config → پایینِ سایدبار Raw رو انتخاب کن → داخل Raw JSON5 این مقدار رو توی کانفیگت اضافه کن (یا اگر agents/defaults داری، فقط همون قسمت model رو اضافه کن):
{
agents: {
defaults: {
model: {
primary: "openrouter/moonshotai/kimi-k2.5",
},
},
},
}
بعد بالا Save و بعد Apply رو بزن (Apply معمولاً ریاستارت هم میکند تا تنظیمات اعمال شوند).
اگر بعدش خطای No API key found for provider "openrouter" دیدی، یعنی کلید OpenRouter هنوز برای Gateway لود نشده و باید مطمئن شی OPENROUTER_API_KEY رو در env گذاشتی و Apply کردی.
disconnected (1006): no reason
disconnected (1006): no reason یعنی اتصال WebSocket یهدفعه قطع شده (بدون پیام خطای دقیق). دو حالت خیلی رایج داره:
1) همین الان روی Apply (یا Update) زدی؟
اگر Apply زدی، کاملاً طبیعیه: Gateway برای اعمال Config ریستارت میشه و UI چند ثانیه قطع میشه.
کارهایی که انجام بده:
- 10 تا 30 ثانیه صبر کن
- صفحه رو Refresh کن
- دوباره برو تب Overview ببین وصل میشه یا نه
2) اگر بعد از Refresh هم برنمیگرده
اونوقت معمولاً یکی از ایناست:
A) Config نامعتبر شده و Gateway بالا نمیاد
وقتی config اشتباه باشه، Gateway ممکنه اصلاً بوت نشه و UI قطع میمونه.
روی سرور/ماشین Gateway اینا رو چک کن:
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
(لاگها دقیق میگن کدوم کلید/فرمت مشکل داره.)
B) پشت پروکسی/لودبالنسر هستی و WebSocket درست عبور نمیکنه
چون گفتی آدرس با moltbot-scaled... شروع میشه، احتمالاً پشت یه proxy هستی. بعضی proxyها WebSocket رو میبندن یا timeout میزنن.
بهترین تست: مستقیم به پورت Gateway وصل شو (معمولاً :18789) یا از Tailscale Serve / SSH tunnel استفاده کن.
اگر بگی Apply رو زدی یا نه و اینکه URL با http هست یا https، دقیقتر میگم کدوم سناریو محتملتره و چطور درستش کنی.
اری استارت شد اما ای ای جواب نمیده پیام میدم
اگه بعد از ریستارت UI وصل میشه ولی وقتی پیام میدی هیچ جوابی نمیاد، معمولاً یعنی موقع اجرای مدل یه خطای auth / مدل / provider میخوره و باید خطاش رو ببینیم.
این ۳ تا کار رو انجام بده و نتیجهش رو همینجا بفرست (بدون هیچ API key):
1) داخل تب Chat این دو دستور رو بزن
اول مدل رو ست کن:
/model openrouter/moonshotai/kimi-k2.5
بعد وضعیت رو ببین:
/model status
خروجی /model status مشخص میکنه الان واقعاً داره از کدوم provider/model استفاده میکنه و آیا auth مشکل داره یا نه.
2) تب Logs رو باز کن
- برو Logs
- یه پیام تست تو Chat بفرست
- همون لحظه تو Logs معمولاً خطایی مثل اینها میاد:
No API key found for provider "openrouter"All models failedUnknown model ...401/403
اون خطا رو کپی کن (فقط مراقب باش چیزی مثل sk-or-... داخلش نباشه).
3) اگر میخوای دائمی بشه (نه فقط همین چت)
در Config → Raw JSON5 مطمئن شو هر دو تا هست:
{
env: { OPENROUTER_API_KEY: "sk-or-..." },
agents: { defaults: { model: { primary: "openrouter/moonshotai/kimi-k2.5" } } },
}
بعد Save و Apply.
اگر خروجی /model status یا خطای Logs رو بفرستی، دقیق میگم مشکل از کجاست (کلید، مدل، یا تنظیمات).
Hey — hi! 👋 How can I help you today? موفق شدیم جواب داد
خوبه—پس Gateway و مدل الان دارن کار میکنن و مشکل از همون ریستارت/اتصال بوده.
برای اینکه مطمئن شی واقعاً روی Kimi K2.5 (OpenRouter) هستی:
- تو Chat بزن:
/model status
- اگر میخوای همیشه پیشفرض همین باشه (بعد از هر ریستارت هم):
تو Config → Raw اینو داشته باش:
{
env: { OPENROUTER_API_KEY: "sk-or-..." },
agents: {
defaults: {
model: { primary: "openrouter/moonshotai/kimi-k2.5" },
},
},
}
بعد Save و Apply.
اگر خواستی چند مدل داشته باشی و بینشون سریع سوییچ کنی، هر وقت میتونی تو همون چت با /model ... عوضش کنی.
میخوام با دستور تو چت تلگرام رو وصل کنم به ربات
برای وصل کردن تلگرام به OpenClaw “فقط با دستور داخل چت تلگرام” عملاً از صفر ممکن نیست، چون اول باید توکن Bot روی خود Gateway ست بشه تا اصلاً تلگرام بالا بیاد. ولی بعد از اینکه کانال تلگرام فعال شد، داخل تلگرام میتونی با دستورها (مثل /model) کار کنی.
مرحله 1) گرفتن توکن ربات تلگرام
- داخل Telegram برو به @BotFather
- دستور
/newbotو در آخر یک توکن میگیری (مثل123:ABC...)
مرحله 2) اضافه کردن توکن در Control UI (همون UI که الان داری)
برو: Config → Raw و اینو به config اضافه کن (توکن رو اینجا در Discord نفرست):
{
channels: {
telegram: {
enabled: true,
botToken: "123:ABC...",
dmPolicy: "pairing", // امنترین حالت
},
},
}
بعد Save و سپس Apply (ریستارت میشود).
مرحله 3) Pairing (اجازه دادن به اکانت تلگرام خودت)
- به رباتت در تلگرام DM بده (مثلاً “hi”)
- ربات یک pairing code میفرستد
- روی همان ماشین Gateway این دستور را بزن:
openclaw pairing approve telegram <CODE> --notify
بعد از این، از تلگرام به بعد ربات باید جواب بده.
اگر به ترمینال دسترسی نداری
موقتاً میتونی DM را “باز” کنی تا بدون approve کار کند (بعداً حتماً ببندش):
{
channels: {
telegram: {
dmPolicy: "open",
},
},
}
(بعد که وصل شدی، بهتره برگردونی روی pairing یا allowlist.)
اگر بگی به سرور/ترمینال دسترسی داری یا نه، دقیقاً بهترین حالت (pairing vs allowlist) رو هم برات میچینم.
پنل ui مگه خودش یه جای نزاشته دستی وارد کنیم راحت؟
آره، توی همین Control UI جا داره — لازم نیست حتماً فایل Raw رو دستی ادیت کنی.
گزینهی راحت داخل UI (بدون رفتن به Raw Config)
- از سایدبار برو Channels
- تو کارت Telegram اسکرول کن پایین — باید یک بخش تنظیمات/فرم ببینی (ممکنه اولش بنویسه Loading config schema… چند ثانیه صبر کن)
- اونجا اینها رو تنظیم کن:
enabled: truebotToken: ...(توکن BotFather رو اینجا Paste کن)dmPolicy: "pairing"(پیشنهادی و امن) یا اگر میخوای خیلی سریع بدون تایید کار کنه:dmPolicy: "open"
- دکمه Save همون زیرِ بخش Telegram رو بزن
- بعد دکمه Probe رو بزن تا وضعیت Running/Configured رو چک کنه.
یک نکته مهم (Pairing)
اگر dmPolicy: "pairing" باشه، وقتی به ربات تو تلگرام پیام بدی، بهت کد Pairing میده و تا تاییدش نکنی جواب نمیده. تاییدش فعلاً از UI نیست و با CLI انجام میشه:
openclaw pairing approve telegram <CODE> --notify
اگر به ترمینال دسترسی نداری و میخوای کلاً بدون این مرحله جواب بده، موقتاً dmPolicy: "open" بذار (بعداً بهتره برگردونی روی pairing/allowlist).
اگر بگی الان تو کارت Telegram دقیقاً چه فیلدهایی میبینی (یا یک اسکرینشات بدون توکن/کلید)، دقیق میگم کجاش باید botToken رو بزنی.
چطوری میتونم به ربات اموزش بدم چیزی ؟ کسب درامد داشته باشه 🧐 یه کاربری هست تو توییتر ربات ساخته کسب درامد داره از کریپتو @LaylaEleira
مثلا بات سراغ منو بگیره خودش بهم پیام بده برنامه ریزی کنه
میتونی، ولی دو تا واقعیت مهم هست:
- «آموزش دادن» به معنی اینکه مدل واقعاً یاد بگیره نیست؛ تو باید برایش دستورالعمل/دانش بسازی (فایل، memory، یا skill) تا هر بار ازش استفاده کنه.
- برای «کسب درآمد از کریپتو» خیلی مراقب باش: پرریسکه، پر از کلاهبرداری/اغراقه، و هیچ تضمینی نیست. من میتونم کمک کنم سیستم پایش + گزارش + یادآوری + مدیریت ریسک بسازی، ولی پیشنهاد خرید/فروش شخصیسازیشده یا وعدهی سود نمیدم.
1) چطور به ربات “چیزی یاد بدی” (قابل اتکا و دائمی)
بهترین روش در OpenClaw اینه که یک “Playbook” بسازی:
گزینه A) فایل/Memory (سادهترین)
در Control UI:
- برو Agent (یا Agents) → فایلهای workspace / memory
- یک فایل بساز مثل:
memory/crypto-playbook.md - داخلش بنویس:
- اهداف تو (مثلاً فقط swing، یا فقط long-term)
- قوانین ریسک (مثلاً «حداکثر ۲٪ سرمایه در هر معامله»، «بدون اهرم»، …)
- منابعی که باید چک کنه
- فرمت خروجی گزارش (چکلیست، جدول، …)
بعد هر بار بهش بگو: «طبق crypto-playbook عمل کن».
گزینه B) Skill اختصاصی (حرفهایتر)
اگر خواستی کار جدیتر بشه، یه skill میسازی که:
- قیمتها/خبرها رو از API میگیره
- خلاصه میکنه
- فقط به شکل “سیگنال قطعی” خروجی نمیده، بلکه “تحلیل + ریسک + سناریو” میده
این مرحله کمی کدنویسی میخواد.
2) چطور کاری کنی خودش بهت پیام بده (پرواکتیو)
این دقیقاً با Cron Jobs انجام میشه.
نکته تلگرام
بات تلگرام فقط بعد از اینکه تو یک بار بهش پیام بدی میتونه بهت پیام proactive بده (قانون تلگرامه). پس اول حتماً DM رو شروع کن.
روش (داخل UI)
- برو Cron Jobs
- یک job جدید بساز (مثلاً هر روز ساعت ۹ صبح)
- متن پیام (payload) رو اینطوری بذار، که ازت وضعیت بپرسه و برنامه بده:
نمونه پیام:
«چکاین روزانه کریپتو:
- امروز هدفت چیه؟ (تحلیل/معامله/یادگیری)
- سرمایه قابل ریسک چقدره؟
- لیست ۵ کوینی که میخوای بررسی کنیم رو بفرست
بعدش من طبق playbook گزارش میدم.»
و Delivery رو بذار روی همون چتی که میخوای (Telegram/…).
3) “کسب درآمد” واقعبینانه با این ابزار
چیزهایی که معمولاً واقعاً جواب میده:
- گزارش روزانه/هفتگی بازار + هشدارها (بدون ترید خودکار)
- ژورنال معاملاتی (ثبت معاملات، دلیل ورود/خروج، نتیجه)
- قوانین ریسک و جلوگیری از تصمیم احساسی
- بکتست ایدهها (اگر دیتاش رو داشته باشی)
ترید خودکار با پول واقعی؟ ممکنه، ولی خطرناکترین بخشه و نیاز به امنیت کلیدها + محدودیت دسترسی + تایید انسانی داره.
برای اینکه دقیقاً همون چیزی که میخوای رو بچینم، این ۳ تا رو بگو:
- میخوای پیام proactive روی تلگرام بیاد یا همین Discord؟
- هر روز چه ساعتی؟ (timezone خودت)
- هدف: فقط «گزارش و هشدار» یا «پیشنهاد سناریو» یا «ترید خودکار» هم میخوای؟
پس دیدم بات خود جوش پیام میده فعالیت میکنه... کار های دیگه عجببه
دقیقاً میتونه «خودجوش» به نظر بیاد، ولی پشتش معمولاً یکی از این مکانیسمهاست:
چرا بعضی باتها خودشون پیام میدن؟
بات به شکل جادویی “تصمیم نمیگیره” هر وقت دلش خواست پیام بده؛ باید تریگر داشته باشه:
-
Cron Jobs (زمانبندی)
مثلاً هر روز ساعت ۹ صبح چکاین بفرسته، یا هر ۳۰ دقیقه وضعیت رو بررسی کنه و اگر شرطی برقرار بود پیام بده. -
Heartbeat (پالس دورهای برای چکلیستها)
برای اینکه ربات هر X دقیقه/ساعت یک بار یه کار روتین انجام بده (مثل “چیز جدیدی هست؟” یا “یادآوری برنامه امروز”). -
Webhook / Event (رویداد خارجی)
مثلاً یک سرویس قیمت/خبر وقتی اتفاقی افتاد به Gateway خبر میده و بات پیام میفرسته.
پس چیزی که تو توییتر میبینی معمولاً همینهاست: زمانبندی + رویداد + چند تا قانون.
تو OpenClaw چطور همون حس “فعال بودن” رو بسازی؟
سادهترینش از داخل UI:
- برو Cron Jobs
- یک job بساز (مثلاً هر روز / هر ساعت)
- متن job رو طوری بنویس که “اول سراغت رو بگیره” یا “گزارش بده” و خروجی رو به تلگرام/چت موردنظر ارسال کنه.
نکته مهم برای تلگرام: اول باید خودت یک بار به بات DM بدی تا اجازه ارسال پیام داشته باشه.
ایدههای کمریسک و کاربردی (بهجای وعده پول)
- چکاین روزانه: برنامه امروز، کارهای مهم، یادآوریها
- گزارش هفتگی: کارهایی که انجام دادی + برنامه هفته بعد
- هشدارهای عمومی (بدون ترید خودکار): “اگر فلان شرط/خبر بود، فقط اطلاع بده”
اگر بگی میخوای این پیامهای خودکار روی کدوم جا بیاد (تلگرام یا همین دیسکورد) و چه ساعتهایی، دقیقاً یک سناریوی Cron آماده میکنم که هم “پیام بده”، هم مزاحم و اسپمی نشه.
میتونی بری توییتر پیام بخونی؟
برای توییتر (X) دو حالت داریم:
1) توییتها/پستهای عمومی
آره — اگر لینک توییت یا پروفایل عمومی رو بدی، OpenClaw میتونه با ابزار مرورگر/وب اون صفحه رو باز کنه و متنش رو بخونه/خلاصه کنه.
(حتی سادهتر: لینک رو اینجا بفرست یا متن رو کپی کن.)
2) پیامهای خصوصی (DM) یا محتوای پشت لاگین
بهصورت پیشفرض نه. چون:
- DMها پشت لاگین هستن و بدون دسترسی به اکانتت قابل خواندن نیستن.
- OpenClaw کانال رسمی “Twitter DM” مثل تلگرام/واتساپ نداره.
- میشه با Browser automation و با لاگین دستی داخل مرورگر، به DMها رسید، ولی قابلاعتماد نیست (X ضدبات/کپچا/لاگین مجدد زیاد داره) و از نظر امنیتی هم حساسه.
اگر هدفت اینه که “پیامهای یک اکانت مثل @LaylaEleira” رو دنبال کنی:
- بهترین راه: لینک توییتها/رشتهها رو بده تا خلاصه کنیم
- یا یک برنامهی زمانبندی (Cron) بذاریم که هر روز/هر ساعت صفحهی پروفایل/لیست خاصی رو چک کنه و فقط “تغییرات مهم” رو گزارش بده (برای محتوای عمومی)
بگو دقیقاً منظورته DMهای خودت رو بخونه یا فقط توییتهای عمومی اون کاربر رو رصد کنه؟
بله، پستهای عمومی توی X رو اگر لینک بدی میتونم بخونم (DMها/پیامهای خصوصی نه).
لینکی که فرستادی مربوط به این پست از اکانت @LaylaEleira هست و متنش اینه:
“My AI just bet me a DARE on what our next 2 hrs returns are going to be. What should I dare him to do if I win … Wait what could he possibly dare me with …”
یعنی: «هوش مصنوعیام با من سر بازده ۲ ساعت آینده شرط “جرأت/چالش” بسته؛ اگر من بردم چه کاری ازش بخوام انجام بده؟ و اگر اون برد چی میتونه از من بخواد؟»
این توییت خودش هیچ سیگنال/جزئیات معاملاتی مشخصی نمیده (بیشتر حالت شوخی/تیزر داره) و یک عکس هم ضمیمه کرده.
اگر هدفت اینه که این اکانت/چند اکانت رو “رصد” کنی و رباتت هر روز خلاصهی توییتهای جدید رو بده، میتونیم با Cron Jobs داخل OpenClaw برنامهریزی کنیم که مثلاً روزی ۱ بار/هر چند ساعت، توییتهای جدید رو چک کنه و گزارش بده. فقط بگو گزارش رو کجا میخوای بفرسته: تلگرام یا همین دیسکورد؟
چکار میتونم کنم هوش مصنوعی خودکار کار کنه بدون دستور من
برای اینکه OpenClaw «خودکار کار کنه» بدون اینکه هر بار تو دستور بدی، باید براش تریگر (Trigger) تعریف کنی. رایجترینها:
1) زمانبندی (Cron Jobs) — سادهترین و بهترین
تا وقتی Gateway روشن باشه، میتونه سرِ ساعت خودش اجرا بشه و بهت پیام بده.
از داخل Control UI
- برو Cron Jobs
- یک Job جدید بساز:
- Schedule: مثلاً Every 1 hour یا Every day 09:00
- Payload: معمولاً Agent message / agentTurn (یعنی خودش یک “پیام” به هوش مصنوعی میفرسته)
- Delivery: روی announce بگذار تا نتیجه را برایت بفرستد (به “last” یا تلگرام)
نمونه Payload آماده (چکاین روزانه)
«چکاین روزانه: وضعیت کارهای امروز رو از من بپرس، بعد ۳ کار اولویتدار پیشنهاد بده، و اگر چیزی معوقه هست یادآوری کن. خروجی کوتاه و bullet باشد.»
نمونه Payload برای بازار (کمریسک)
«یک گزارش کوتاه از وضعیت بازار امروز بده: ۳ خبر مهم، ۳ ریسک اصلی، و ۳ سناریو. هیچ توصیه خرید/فروش قطعی نده. فقط تحلیل و هشدار.»
نکته: توی تلگرام، برای اینکه بات بتواند “خودش” بهت پیام بده، اول باید یک بار خودت به بات DM بدی (قانون تلگرام).
2) رویدادمحور (Webhooks / Alerts) — وقتی “اتفاقی افتاد” اجرا شود
اگر میخوای مثلاً:
- قیمت به یک عدد رسید
- TradingView alert آمد
- RSS/خبر جدید آمد
اون سرویس یک Webhook میزند و OpenClaw اجرا میشود و پیام میفرستد. این مدل از Cron هم “خودکارتر” حس میشود چون بر اساس رخداد است.
3) Heartbeat (چک دورهای سبک)
برای “یادآوریها/پیگیری روتین” خوبه، ولی اگر هدفت کارهای مشخص و خروجی قابل کنترل است، Cron واضحتر و قابل مدیریتتره.
مهم: “خودکار” را خیلی باز نگذار
اگر job را خیلی زیاد/بدون محدودیت بگذاری (مثلاً هر ۱ دقیقه)، ممکنه هم هزینه بالا بره هم اسپم شود. بهتر:
- هر ۳۰ دقیقه / ۱ ساعت
- یا روزی ۱–۲ بار
- و خروجی کوتاه + فقط اگر چیزی مهم بود پیام بده
بگو میخوای خودکار بودن برای چه کاری باشه؟
- پیام بده و سراغت رو بگیره/برنامه روزانه بده؟
- رصد توییتر/خبرها؟
- رصد قیمت کریپتو و هشدار؟
و خروجی را کجا میخوای بفرسته: تلگرام یا همین Discord؟
here is the true insane use case of openclaw
︀︀
︀︀i’m on an 8 hour flight rn to finland and the airplane wifi doesn’t work at all on laptop
︀︀
︀︀but it works for discord on my phone
︀︀
︀︀so i’ve been talking to Midir (my openclaw) and i’ve been..
︀︀
︀︀1. PLANNING MY ENTIRE WEDDING
︀︀2. Going over my finances
︀︀3. Figuring out what to charge for my Quran app
︀︀4. Orchestrating his Hackathon submission
︀︀5. Feeding him personal info to get more assistant use cases
︀︀6. Gave him all my blood, gene, and semen tests and created a plan for my health
︀︀
︀︀here’s him emailing 4 different vendors for my wedding
︀︀
︀︀if you STILL think this isn’t useful you’re crazy
این لینک یه توییت از کاربری به اسم ashen هست و خلاصه/متن اصلیش اینه:
میگه “واقعاً use case دیوانهوار OpenClaw اینه که من توی پرواز ۸ ساعتهام، وایفای هواپیما روی لپتاپ کار نمیکنه ولی روی گوشی برای Discord کار میکنه، پس دارم با OpenClaw خودم (اسمش Midir) حرف میزنم و این کارها رو انجام دادم:”
- برنامهریزی کل عروسی
- مرور/مدیریت مالی
- تعیین قیمت برای اپ قرآنش
- هماهنگ کردن سابمیشن هکاتون
- دادن اطلاعات شخصی برای پیدا کردن use caseهای بیشتر
- دادن نتایج آزمایشهای پزشکی و گرفتن برنامه سلامت
و میگه حتی «برای عروسی به چند vendor ایمیل زده» (اسکرینشات هم گذاشته).
نکته مهم: این “خودکار بودن” که ازش حرف میزنه، معمولاً یعنی:
- همیشه در دسترس روی یک چت (مثل Discord)
- و کارهای زماندار/پیگیریها با Cron/یادآوری
نه اینکه بدون هیچ سیاستی خودش هر کاری خواست انجام بده.
اگر دوست داری دقیقاً همین مدل استفاده رو برای خودت بسازیم، بگو:
- میخوای تمرکز روی چی باشه؟ (کارهای روزانه، مالی، سلامت، کریپتو، پروژهها)
- ربات بهت پیام بده روی تلگرام یا دیسکورد؟
روی تلگرام همه موارد
روی تلگرام هم میتونی “همهچی” رو داشته باشی، ولی باید براش روتینهای خودکار (Cron) و قانونها تعریف کنی؛ وگرنه ربات نمیدونه “الان چی کار کنه؟”.
قدم 1) تلگرام رو کامل وصل کن (که پیام خودکار هم بتونه بده)
- مطمئن شو ربات تلگرام رو از @BotFather ساختی و botToken داری.
- در Control UI برو Channels → Telegram و اینها رو ست کن:
enabled: truebotToken: ...dmPolicy: "pairing"(امنتر)
اگر نمیخوای گیر pairing بیفتی، موقتاً بذار"open"تا سریع راه بیفته.
- Save بزن و بعد Probe.
- حتماً یک بار در تلگرام به رباتت DM بده (قانون تلگرام: بدون شروع DM، ربات نمیتونه خودجوش بهت پیام بده).
اگر dmPolicy: "pairing" باشه، بعد از اولین پیام، ربات یک کد pairing میده که باید با CLI تأیید بشه:
openclaw pairing approve telegram <CODE> --notify
قدم 2) “خودکار شدن” روی تلگرام = Cron Jobs + پیامهای برنامهریزیشده
در Control UI برو Cron Jobs و ۳ تا کار استاندارد بساز (اینها واقعاً حس “فعال بودن” میده):
A) چکاین صبح (هر روز)
-
Schedule: هر روز ساعت 9 (به وقت خودت)
-
Payload (Agent message) مثلا:
«چکاین صبح: ازم 3 هدف امروز رو بپرس. بعد برنامهی 2 ساعته پیشنهاد بده. اگر کار عقبافتاده دارم یادآوری کن. خروجی کوتاه و bullet.»
-
Delivery:
announceبه تلگرام (یا رویlastاگر آخرین چتت تلگرامه)
B) جمعبندی شب (هر روز)
- ساعت 21:30
- Payload:
«جمعبندی شب: بپرس امروز چی انجام شد/نشد. فردا 3 کار اولویتدار پیشنهاد بده. اگر چیزی باید پیگیری کنم یادآوری کن.»
C) برنامهریزی هفتگی (هفتهای یک بار)
- مثلاً جمعه یا یکشنبه
- Payload:
«برنامه هفتگی: 3 هدف هفته آینده، 3 ریسک/مانع، و 3 اقدام اول را پیشنهاد بده. اگر لازم است سوال بپرس.»
قدم 3) “همه موارد” یعنی دقیقاً چی؟ (برای اینکه درست تنظیمش کنم)
معمولاً مردم اینها رو میخوان، ولی بهتره با احتیاط فعال بشن:
1) کریپتو
- پیشنهاد من: فقط رصد/گزارش/هشدار (نه ترید خودکار).
- اگر میخوای رصد قیمت واقعی و دقیق داشته باشی، بهتره با Webhook/TradingView alerts یا یک API قیمت وصلش کنیم (وگرنه وبگردی ممکنه ناقص/کند باشه).
2) توییتر/X
- میتونه لینکهای عمومی رو بخونه و خلاصه کنه.
- “چک کردن خودکار X هر ساعت” ممکنه بعضی وقتها به خاطر محدودیتهای X بهم بخوره؛ ولی میشه با Cron هم تست کرد.
3) کارهای شخصی (مالی/سلامت/پروژهها)
- شدنیه، ولی برای موارد حساس (پول/سلامت) بهتره یک فایل “قانونها” داشته باشیم: چه چیزهایی مجازه، چه چیزهایی نیاز به تأیید تو داره.
دو سوال کوتاه تا دقیق برات بچینم:
- منطقه زمانیات چیه؟ (مثلاً Iran / Tehran) و چه ساعتهایی میخوای پیام بده؟
- از بین اینها، اولویتهات چیه: (برنامه روزانه / کریپتو / توییتر / مالی / سلامت / پروژهها)؟ (۳ تای اول رو بگو)
بعدش دقیقاً میگم تو Cron Jobs چه jobهایی بسازی و متن آمادهشون رو هم میدم.
https://x.com/i/status/2018402519580594424
قابل عتماد هست این کار ؟
نه، من به این چیزی که تو اون پست نوشته شده «قابل اعتماد» نمیگم — حداقل نه بدون بررسی فنی خیلی جدی. متنش پر از ادعاهای تبلیغاتی و چند تا “پرچم قرمز” واضح دارد:
پرچمهای قرمز مهم در همان توضیح
-
«همهچیز داخل NFT metadata ذخیره میشود»
- متادیتای NFT معمولاً عمومی است. اگر واقعاً “کلیدها/credentialها/brain” را آنجا میگذارند، از نظر امنیتی بسیار مشکوک/خطرناک است مگر اینکه دقیقاً توضیح دهند چطور رمزنگاری، مدیریت کلید، و دسترسی انجام میشود.
-
«یک بار ۲۵ دلار، صفر هزینه ماهانه، برای همیشه»
- این مدل “free forever” معمولاً یا بعداً عوض میشود، یا با ریسکهای پنهان (تبلیغات، فروش داده، کنترل متمرکز سرویس) جبران میشود.
-
«بات خودش ترید میکند/کیف پول دارد/پول جابهجا میکند»
- هر چیزی که کلید خصوصی یا دسترسی برداشت داشته باشد، ریسک هک/سوءاستفادهاش خیلی بالاست.
- وعدههای مثل “win rate 94%” هم عملاً نشانهی بازاریابی/اغراق است، نه سند قابل اتکا.
-
مدل درآمدی با تبلیغات داخل پاسخهای AI
- یعنی انگیزهی سرویس لزوماً همراستا با منفعت تو نیست (ممکن است جهتدهی/توصیههای جانبدارانه ایجاد کند).
اگر بخواهی واقعاً ارزیابی کنی (چکلیست سریع)
قبل از اینکه حتی ۱ دلار/۱ کلید وصل کنی، اینها را میخواهم ببینم:
- آیا کد و معماری شفاف و قابل بررسی است؟ (Open-source؟)
- آیا قراردادهای NFT/Wallet audit شدهاند؟ توسط چه شرکتی؟
- کیف پول واقعاً غیرامانی (non-custodial) است؟ یعنی کلید خصوصی فقط دست خودت است و میتوانی خارجش کنی؟
- اگر سرویس خاموش شد یا تیم ناپدید شد، آیا هنوز به دادهها/agent دسترسی داری؟
- “R2 credentials در NFT” دقیقاً یعنی چه؟ اگر واقعاً credential خام باشد، فاجعه امنیتی است.
- محدودیتهای امنیتی: سقف خرج، اجازه برداشت، whitelist مقصدها، تایید انسانی، لاگها.
توصیه عملی (امنتر)
اگر هدف تو “هوش مصنوعی خودکار” است، امنترین مسیر این است:
- خود OpenClaw را نگه داری (کنترل دست خودت)
- خودکارسازی را با Cron Jobs / Webhook انجام بده
- برای پول/کریپتو: نهایتاً هشدار و گزارش؛ اگر ترید هم میخواهی، با کیف پول جدا + مبلغ خیلی کم + بدون دسترسی برداشت/بدون seed در سرویس و ترجیحاً با تایید دستی.
اگر دوست داری، بگو دقیقاً از آن پست کدام بخش برایت جذاب است (NFT؟ خودکار بودن؟ ترید؟ دسترسی از همهجا؟) تا همان قابلیت را با OpenClaw به شکل کمریسکتر طراحی کنیم.
بخوام مثل این هذینه خیلی کمی بکونم . و ai رو سیستم خودم نباشه باید چکار کنم . چون ai رو سیستم خودم کند اجرا میشه و رو مخ میره بخواتر اینترنت ضعیف
اگر میخوای مثل اون مثالها هزینه کم بدی و OpenClaw روی سیستم خودت نباشه، راه استانداردش اینه که Gateway رو روی یک VPS (سرور ارزان) اجرا کنی و تو فقط از طریق تلگرام باهاش حرف بزنی.
ولی یک نکتهی مهم:
اگر اینترنت خودت خیلی ضعیف/قطعووصل باشه، هر چیزی که آنلاین کار میکنه بالاخره به اینترنت نیاز داره. مزیت VPS اینه که ارتباط VPS ↔ مدلها (OpenRouter) روی اینترنت خوبِ دیتاسنتر انجام میشه و از سمت تو فقط پیامهای کوتاه تلگرام رد و بدل میشه (سبکتر و معمولاً قابل تحملتر از UI/مرورگر).
بهترین معماری کمهزینه + کمدردسر
1) Gateway روی VPS
- VPS نزدیک به کشور/منطقهی خودت بگیر (برای latency کمتر)
- حداقل پیشنهادی: 1 vCPU / 1GB RAM (برای شروع)
- هزینه معمولاً حدود ۵ تا ۱۰ دلار در ماه (بسته به شرکت)
2) مدلها با OpenRouter (مثل الان)
- API Key روی VPS ذخیره میشود
- پردازش اصلی درخواستها روی VPS انجام میشود
3) استفاده از تلگرام به عنوان رابط اصلی
- تو با تلگرام پیام میدی
- ربات جواب میده
- نیاز نیست UI سنگین همیشه باز باشه
مراحل کلی راهاندازی (خلاصه)
- VPS بگیر و SSH بزن داخلش
- نصب OpenClaw:
curl -fsSL https://openclaw.ai/install.sh | bash openclaw onboard --install-daemon - در onboarding:
- OpenRouter API Key رو بده
- Telegram bot token رو بده
- برای دسترسی امن به داشبورد:
- یا با
openclaw dashboard+ SSH tunnel - یا بهتر: Tailscale Serve (امن و راحت)
- یا با
مستندات:
- FAQ و ریموت: https://docs.openclaw.ai/help/faq
- Control UI / Dashboard: https://docs.openclaw.ai/web/control-ui
- Telegram channel: https://docs.openclaw.ai/channels/telegram
- VPS/Remote access: https://docs.openclaw.ai/gateway/remote
اگر اینترنتت “واقعاً” ضعیف است
چند توصیه عملی:
- تلگرام معمولاً روی اینترنت ضعیف بهتر از Web UI دوام میاره → پس “تلگراممحور” بچین.
- VPS رو نزدیکتر انتخاب کن.
- کارهای خودکار رو زیاد نکن (Cron هر ۵ دقیقه نذار؛ از روزی ۱–۲ بار یا هر ۱ ساعت شروع کن).
اگر بگی:
- کجایی؟ (کشور/منطقه)
- بودجه ماهانهات چقدره؟ (مثلاً ۵ دلار؟ ۱۰ دلار؟)
- بیشتر با موبایل تلگرام کار میکنی یا لپتاپ؟
بهت پیشنهاد میدم کدوم VPS/لوکیشن مناسبتره و دقیقاً چه تنظیماتی تو Control UI بزنی.
Vps برا هر ماه گرونه انگار کاربر خا راه های بهتری پیدا کردن برا نصب ai
حق داری؛ خیلیها دنبال راهی هستن که بدون VPS ماهانه کار کنه. ولی واقعیت اینه که اگر میخوای OpenClaw روی سیستم خودت نباشه، باید یک جایی همیشه روشن باشه که Gateway رو اجرا کنه — این “جایی” معمولاً یکی از اینهاست، و هر کدوم هزینه/ریسک خودش رو داره:
گزینههای واقعی (از کمهزینه تا راحتتر)
1) Oracle Cloud “Always Free” (۰ دلار در ماه)
این بهترین گزینهی «تقریباً رایگان» برای خیلیهاست (ولی ثبتنام/ظرفیتش بعضی وقتها دردسر دارد).
- مزیت: 0$/ماه
- عیب: ممکنه سخت ثبتنام بشه، ظرفیت خالی پیدا نشه، یا منطقه نزدیکت موجود نباشه
راهنما: https://docs.openclaw.ai/platforms/oracle
هاب VPSها: https://docs.openclaw.ai/vps
2) سرویسهای One‑click مثل Railway / Northflank
نصب راحتتره، ولی معمولاً رایگانِ پایدار نیست (بعد از یه حدی هزینه میگیرن).
- Railway: https://docs.openclaw.ai/railway
- Northflank: https://docs.openclaw.ai/northflank
3) “VPS خیلی کوچیک” (ارزانترین حالت پولی)
اگر مشکل اصلیت کندی به خاطر اینترنت خونهست و از OpenRouter استفاده میکنی، این گزینه از نظر تجربه کاربری معمولاً بهترینه، چون:
- تماس به OpenRouter از دیتاسنتر انجام میشه (اینترنت قوی)
- تو فقط با تلگرام پیام کوتاه میفرستی (سبکتر از وبUI)
راهنماهای رسمی:
4) دستگاه همیشه روشن توی خونه (بدون VPS)
مثل Raspberry Pi / مینیPC / لپتاپ قدیمی.
- مزیت: ماهانه پول نمیدی
- عیب بزرگ: اگر اینترنت خونهات ضعیفه، هنوز تماس به OpenRouter کند میمونه (پس مشکل اصلیت شاید حل نشه)
نکته خیلی مهم درباره “Pay once forever / NFT agent”
این مدلها معمولاً در عمل یک سرویس متمرکز پشت صحنه دارن (کانتینر، استوریج، پراکسی، تبلیغات…) و ریسکهای جدی میارن:
- معلوم نیست “کلیدها/دادهها” واقعاً کجا و چطور نگهداری میشن
- ممکنه قوانین/هزینهها عوض بشه
- برای کریپتو/کیف پول ریسک خیلی بالاست
سوال کلیدی برای اینکه بهترین مسیر رو بدم
تو مشکل اصلیت کدومه؟
- کندی به خاطر اینترنت ضعیف (یعنی درخواست به OpenRouter دیر میره/میاد)
- کندی به خاطر سختافزار ضعیف (مثلاً داری مدل لوکال اجرا میکنی)
اگر الان داری از OpenRouter استفاده میکنی (که گفتی)، پس مشکل ۹۰٪ “اینترنت خونه تا OpenRouter” هست و بهترین درمانش اینه که Gateway رو ببری روی یک سرور با اینترنت خوب (که یا Oracle Free میشه، یا VPS خیلی ارزون).
بگو کشور/منطقهات کجاست و ماهانه نهایتاً چه بودجهای رو “قابل تحمل” میدونی (مثلاً 0$، 3$، 5$)، تا دقیق بگم کدوم گزینه برای تو عملیتره.
Vps سراغ نداری با ماهی 1 دلار تموم بشه 😂😂🤣
ماهی ۱ دلار برای VPS «همیشه روشن» که پایدار باشه، واقعاً خیلی نادره. معمولاً این پلنها یکی از اینها هستن:
- فقط ماه اول ۱ دلار (بعدش گرون میشه)
- یا باید یکساله پیشپرداخت کنی تا میانگینش نزدیک ۱ دلار دربیاد
- یا منابعش خیلی کمه (مثلاً 256–512MB RAM) و برای Node + Gateway ممکنه اذیت کنه / مدام کرش کنه
- یا کیفیت شبکه/پشتیبانی ضعیفه (برای بات تلگرام اعصابخوردکن میشه)
اگر هدفت «کمهزینه و روی سیستم خودم نباشه» است، بهترین گزینهها:
-
Oracle Cloud Always Free (۰ دلار/ماه)
از همه نزدیکتر به “تقریباً رایگان” و واقعاً کاربردیه (ولی ثبتنام/ظرفیتش گاهی سخت میشه).
راهنما: https://docs.openclaw.ai/platforms/oracle -
VPS ارزان واقعی (معمولاً ۳ تا ۶ دلار/ماه)
برای OpenClaw (فقط Gateway + تلگرام + OpenRouter) معمولاً همین کف منطقیه.
نکته: وقتی Gateway روی VPS باشه، اینترنت ضعیف تو کمتر اذیت میکنه چون تو فقط پیام تلگرام میفرستی؛ ارتباط سنگین VPS ↔ OpenRouter روی اینترنت دیتاسنتره. -
One-click ها (Railway/Northflank)
نصب راحتتره ولی معمولاً برای “همیشه روشن” یا بعد از مدتی هزینه میافته/سرویس sleep میکنه (برای بات پیامرسان خوب نیست).
هاب: https://docs.openclaw.ai/vps
جمعبندی واقعبینانه
- “۱ دلار/ماه پایدار و همیشه روشن” = خیلی بعید (مگر آفرهای خاص/پیشپرداخت سالانه، با ریسک).
- “۰ دلار/ماه” = Oracle Always Free بهترین شانس.
- “۳–۶ دلار/ماه” = واقعبینانهترین برای تجربه روان.
اگر بگی کجایی (کشور/منطقه) و اینکه میخوای فقط تلگرام کار کنه یا Control UI هم لازم داری، میگم کدوم مسیر کمهزینهتر و کمریسکتره و چه تنظیماتی بزنی که روی اینترنت ضعیف هم قابل تحمل بشه.
Google Cloud نمیشه انداخت
آره، میشه روی Google Cloud انداخت — ولی چند تا شرط/نکته داره که معمولاً باعث میشه مردم فکر کنن “نمیشه”:
چرا بعضیها روی GCP گیر میکنن؟
- حتماً باید Billing فعال کنی (کارت بانکی/کردیت لازم داره)، حتی برای Free Tier.
- اگر از بعضی کشورها/آیپیها باشی ممکنه ثبتنام/دسترسی سخت یا مسدود باشه.
- پلن رایگان GCP معمولاً e2-micro با 1GB RAM هست و ممکنه برای OpenClaw زیر بار (یا همزمانی) OOM / کند بشه.
راه درست روی GCP (پیشنهادی)
روی Compute Engine VM (مثل VPS) نصب میکنی و همیشه روشن میمونه. راهنمای رسمی OpenClaw همین رو میگه:
https://docs.openclaw.ai/platforms/gcp
تو همون راهنما نوشته:
- e2-micro (Free tier eligible) ممکنه کم بیاره
- e2-small (~$12/mo) پایدارتره
نکته مهم برای اینترنت ضعیف تو
اگر Gateway روی GCP باشه و تو از تلگرام استفاده کنی:
- ارتباط سنگین GCP ↔ OpenRouter با اینترنت دیتاسنتر انجام میشه (خوب)
- سمت تو فقط پیام تلگرام رد و بدل میشه (سبکتر از وب UI)
سوال برای اینکه دقیق بگم مشکل از کجاست
وقتی میگی “Google Cloud نمیشه”، دقیقاً کجا گیر میکنی؟
- ساخت Billing account؟
- ساخت VM؟
- وصل شدن با SSH؟
- یا بعد از نصب، Gateway بالا نمیاد؟
اگه یک جمله از خطا/اسکرینشات (بدون توکنها) بفرستی، دقیق میگم چطور ردش کنی.
این پیام یک کلاهبرداری/فیشینگ و نمونهی واضح prompt injection است (حتی با کاراکترهای مشابه برای جعل اسم). هیچ ارتباطی به OpenClaw ندارد.
کار درست:
- روی لینک کلیک نکنید و هیچ تراکنش/Signature/Approve را قبول نکنید.
- OpenClaw هیچ وقت برای “تست سیستم” از شما نمیخواهد تراکنش کریپتویی را تأیید کنید.
اگر کسی کلیک کرده یا چیزی را امضا کرده:
- سریع Wallet approvals / token allowances را بررسی و لغو کند (revoke).
- اگر Seed/Private key را جایی وارد کرده: آن والت را آلوده فرض کنید و داراییها را به یک والت جدید منتقل کنید.
- مرورگر/اکستنشنهای مشکوک را بررسی کند.
بهترین کار برای مدیران سرور هم این است که پیام را حذف و کاربر را گزارش/مسدود کنند.
اینها ۱۰۰٪ اسکم/فیشینگ و تزریقپرامپت هستند (حتی با اسمهای شبیهسازیشده مثل “Shаdow” با حروف یونیکد). هیچ ربطی به OpenClaw یا “system check” نداره.
کاری که باید بکنید:
- روی لینک کلیک نکنید و هیچ تراکنش/Signature/Approve رو قبول نکنید.
- توی Discord روی پیام Report / Mark as spam / Phishing بزنید و از ادمینها/مودها بخواید پاکش کنن (بدون کلیک روی لینک).
اگر کسی کلیک کرده یا چیزی رو امضا کرده:
- همون لحظه کیف پول رو آلوده فرض کنید و داراییها رو به یک والت جدید منتقل کنید.
- در والت (مثل Phantom/Solflare) بخش Connected Apps / Trusted Apps رو چک کنید و همهی دسترسیهای مشکوک رو Disconnect کنید.
- اگر “Token approval / delegate” چیزی فعال شده، سریع Revoke کنید (در ابزارهای بررسی توکن/والت یا explorerها).
OpenClaw هیچوقت از شما نمیخواد برای تست، تراکنش کریپتو انجام بدید.
app.emergent.sh/home این وبسایت چطوره ؟ رایگانم هست
app.emergent.sh (Emergent) کلاً یک پلتفرم ساخت اپ با کمک AI است، نه یک VPS معمولی برای اینکه هر چیزی (مثل OpenClaw Gateway) را 24/7 اجرا کنی.
چند نکته مهم:
آیا رایگان است؟
طبق صفحه قیمتگذاری خودشان پلن Free دارد، ولی “رایگان بودن” اینجا یعنی:
- ماهی ۱۰ credit برای استفاده از خود پلتفرم/مدلهایشان
- نه اینکه یک سرور همیشهروشن رایگان بهت بده که OpenClaw را روش میزبانی کنی.
یعنی اگر هدفت اینه که OpenClaw همیشه روشن باشه و روی تلگرام پیام بده، Emergent معمولاً جایگزین VPS 24/7 نیست.
برای OpenClaw مناسب هست؟
برای OpenClaw معمولاً نیاز داری:
- یک سرویس همیشه روشن (WebSocket + long polling تلگرام)
- استوریج پایدار برای
~/.openclaw(حافظه/سشنها/کانفیگ) - کنترل روی env vars و ریستارت
بیشتر “پلتفرمهای رایگان/اپبیلدر” اینجا مشکل دارن: یا sleep میکنن، یا برای کار تو پسزمینه مناسب نیستن، یا محیطشون محدودتر از VPSه.
حتی اگر Gateway را جای دیگری ببری، “رایگان” نمیشود
تو گفتی از OpenRouter استفاده میکنی → هزینهی اصلی معمولاً توکنهای مدله، نه خود Gateway. پس هر جایی هم اجرا کنی، مصرف مدل (Kimi و …) هزینه خودش رو داره.
جمعبندی پیشنهادی
اگر دنبال “تقریباً رایگان و همیشه روشن” هستی، گزینهی واقعیتر:
- Oracle Cloud Always Free (۰ دلار/ماه) (اگر ثبتنامش برات ممکنه)
و اگر “واقعاً پایدار” بخوای، معمولاً کف بازار میافته حدود ۳ تا ۶ دلار/ماه.
اگه بگی دقیقاً میخوای Emergent رو برای چی استفاده کنی (ساخت اپ؟ یا فقط میخوای OpenClaw همیشه آنلاین باشه؟) میگم آیا اصلاً به کارت میاد یا وقت تلف کردنه.
{
"meta": {
"lastTouchedVersion": "2026.1.24-3",
"lastTouchedAt": "2026-02-08T05:42:48.102Z"
},
"models": {
"mode": "merge",
"providers": {
"emergent-gpt": {
"baseUrl": "https://integrations.emergentagent.com/llm/",
"apiKey": "sk-",
"api": "openai-completions",
"models": [
میخوام به جای این سرویس دهنده از
http://openrouter.ai
استفاده کنم باید کل این کد ها رو تغییر بدم
لازم نیست «کل کدها» رو از نو بنویسی — برای OpenRouter معمولاً فقط اینها تغییر میکنه:
- API Key رو اضافه کنی
- مدلِ پیشفرض (و هر جایی که اسم provider قبلی رو گذاشتی) رو از
emergent-gpt/...بهopenrouter/...تغییر بدی
آیا از داخل UI میشه API Key اضافه کرد؟
بله، سادهترین راهِ UI-only اینه که توی Control UI → Config (Raw JSON/JSON5) کلید رو داخل env بذاری (این همون کاریه که docs پیشنهاد میده).
مثال حداقلی:
{
env: {
OPENROUTER_API_KEY: "sk-or-..."
},
agents: {
defaults: {
model: { primary: "openrouter/anthropic/claude-sonnet-4-5" },
// اگر allowlist داری، اینم لازم میشه:
// models: { "openrouter/anthropic/claude-sonnet-4-5": {} },
}
}
}
بعد Apply/Save که بزنی، گیتوی ریستارت میشه و باید با OpenRouter بالا بیاد.
دربارهی این بلوک models.providers که فرستادی
اون بخش (models.providers.emergent-gpt { baseUrl, apiKey, api, models: [...] }) برای تعریف provider سفارشی (OpenAI-compatible proxy) هست.
برای خودِ OpenRouter معمولاً نیازی نیست چنین provider سفارشی بسازی؛ چون OpenClaw خودش provider openrouter رو میشناسه و فقط با OPENROUTER_API_KEY کار میکنه.
پس:
- اگر فقط میخوای از OpenRouter استفاده کنی: میتونی اون provider سفارشی رو دست نزنی/حتی حذف نکنی، فقط مدل پیشفرضت رو ببر روی
openrouter/.... - اگر قبلاً جایی مدلهات با
emergent-gpt/...ست شده، همونجاها باید بهopenrouter/...تغییر کنه.
نکته مهم
- OpenRouter رو با HTTPS استفاده کن:
https://openrouter.ai(اگه خواستی baseUrl بدی هم معمولاًhttps://openrouter.ai/api/v1هست) - کلید API رو توی دیسکورد کامل نفرست (الان هم اگه واقعی هست سریع عوضش کن)
لینک داکس مربوط:
- https://docs.openclaw.ai/providers/openrouter
- https://docs.openclaw.ai/help/faq#how-do-i-add-models-from-other-providers-like-openrouter-or-zai
اگر بگی الان مدل پیشفرضت توی config دقیقاً چی هست (قسمت agents.defaults.model یا هرجایی که ست کردی)، دقیقاً میگم کدوم خطها باید از emergent-gpt به openrouter تغییر کنه.
{
"meta": {
"lastTouchedVersion": "2026.1.24-3",
"lastTouchedAt": "2026-02-08T05:42:48.102Z"
},
"models": {
"mode": "merge",
"providers": {
"emergent-gpt": {
"baseUrl": "https://integrations.emergentagent.com/llm/",
"apiKey": "sk-",
"api": "openai-completions",
"models": [
خودت میتونی این کد رو اصلاح کنی میخوام از چت جی پی تی 5 استفاده کنم
میتونم؛ فقط قبلش دو نکته:
- کلید
sk-...رو اینجا کامل نذار (تو اسکرینشات/چت عمومی هم خطرناکه). - بهترین روش برای OpenRouter اینه که provider سفارشی نسازی و از provider آمادهی
openrouterاستفاده کنی.
راه پیشنهادی (تمیزترین) — فقط از داخل UI
در Control UI → Config → Raw JSON این تغییرات رو اعمال کن:
1) کلید OpenRouter را اضافه کن
{
env: {
OPENROUTER_API_KEY: "sk-or-..."
}
}
2) مدل پیشفرض را بگذار روی GPT‑5 از OpenRouter
مدلها در OpenRouter معمولاً این شکلی صدا زده میشن: openrouter/openai/<model-id>
مثلاً (مدل دقیق ممکنه gpt-5 یا gpt-5.2 باشد، بسته به لیست OpenRouter شما):
{
agents: {
defaults: {
model: { primary: "openrouter/openai/gpt-5.2" }
}
}
}
اگر شما allowlist مدلها را هم داری (agents.defaults.models)، باید همون مدل را آنجا هم اضافه کنی، وگرنه میگه “Model is not allowed”:
{
agents: {
defaults: {
models: {
"openrouter/openai/gpt-5.2": {}
}
}
}
}
بعد Apply/Save → گیتوی ریستارت میشه.
چطور مدل دقیق GPT‑5 رو پیدا کنم؟
چون اسم دقیق مدل روی OpenRouter ممکنه فرق کنه، داخل همون UI (بخش Chat) این رو بزن:
/model list(یا فقط/model)
و ببین GPT‑5 را دقیقاً با چه ID نشان میدهد.
اگر اصرار داری همین بلوک models.providers.emergent-gpt رو “اصلاح” کنیم
میشه، ولی توصیه نمیکنم (چون داری OpenRouter رو به شکل “پروکسی OpenAI-compatible” جا میزنی). اگر با این روش خواستی ادامه بدی، باید:
baseUrlبشهhttps://openrouter.ai/api/v1apiKeyازOPENROUTER_API_KEYبیاد- و بعد مدل پیشفرضت را روی همون provider ست کنی (مثلاً
emergent-gpt/openai/gpt-5.2)
ولی دوباره: روش اول استانداردتره.
اگر یه تیکهی بیشتری از configت رو (قسمت agents.defaults...) paste کنی (بدون کلیدها)، دقیقاً نسخهی نهاییِ آمادهی paste رو برات میسازم.
{
"meta": {
"lastTouchedVersion": "2026.1.24-3",
"lastTouchedAt": "2026-02-08T05:42:48.102Z"
},
"models": {
"mode": "merge",
"providers": {
"emergent-gpt": {
"baseUrl": "https://integrations.emergentagent.com/llm/",
"apiKey": "sk-",
"api": "openai-completions",
"models": [
تو این کد من چیا رو الان باید پاک کنم کلیدی که گفتی اضافه کن من به آخر کدو بزارمش یا نه
هیچی رو “اجباری” لازم نیست پاک کنی. میتونی provider فعلی (emergent-gpt) رو نگه داری، فقط OpenRouter رو اضافه کن و مدل پیشفرض رو ببری روی اون.
1) کلید OpenRouter رو کجا اضافه کنم؟
نه، لازم نیست «آخر فایل» بذاری. توی JSON/JSON5 جای کلیدها مهم نیست؛ مهم اینه که داخل آبجکت اصلی config باشه.
بهترین جا اینه که کنار بقیهی تنظیمات بالا/همون حوالی، یک env اضافه کنی:
{
meta: { ... },
env: {
OPENROUTER_API_KEY: "sk-or-..."
},
models: { ... },
agents: { ... }
}
اگر الان env داری، فقط همونجا یک خط اضافه کن.
2) از این بخش models.providers.emergent-gpt چی رو پاک کنم؟
فعلاً هیچچی. پاک کردنش اختیاریه.
اگر نگهش داری، فقط بهعنوان یک provider اضافی میمونه و مشکلی ایجاد نمیکنه.
3) برای اینکه واقعاً از OpenRouter استفاده کنی باید چی رو تغییر بدی؟
باید مدل پیشفرض رو عوض کنی. یعنی این قسمت (یا مشابهش) داخل configت باید به OpenRouter اشاره کنه:
agents: {
defaults: {
model: { primary: "openrouter/openai/gpt-5.2" }
}
}
نکته: اسم دقیق GPT‑5 روی OpenRouter ممکنه gpt-5 یا gpt-5.2 باشه. برای اینکه دقیقش رو پیدا کنی داخل چت UI بزن:
/model list
و همون مدلی که میخوای رو از لیست انتخاب کن.
اگر یک تیکه از configت رو هم بفرستی که شامل agents هست (بدون کلیدها/توکنها)، دقیقاً میگم کدوم خط رو کجا اضافه/تغییر بدی تا paste کنی و تمام.
{
"meta": {
"lastTouchedVersion": "2026.1.24-3",
"lastTouchedAt": "2026-02-08T05:42:48.102Z"
},
"models": {
"mode": "merge",
"providers": {
"emergent-gpt": {
"baseUrl": "https://integrations.emergentagent.com/llm/",
"apiKey": "sk-",
"api": "openai-completions",
"models": [
کلن این قسمت رو برام از نو بنویس مخصوص OpenRouter
این رو میتونی کامل جایگزین همون بخش models فعلیات کنی (یعنی emergent-gpt رو بردار و openrouter بذار):
models: {
mode: "merge",
providers: {
openrouter: {
baseUrl: "https://openrouter.ai/api/v1",
apiKey: "${OPENROUTER_API_KEY}", // یا مستقیم sk-or-... بذار
api: "openai-completions",
models: [
{ id: "openai/gpt-5.2", name: "GPT-5.2 (via OpenRouter)" },
],
},
},
},
ولی برای اینکه واقعاً ازش استفاده بشه، این دوتا رو هم باید در config اصلی داشته باشی (اگر نداری اضافه کن):
env: { OPENROUTER_API_KEY: "sk-or-..." },
agents: {
defaults: {
model: { primary: "openrouter/openai/gpt-5.2" },
},
},
نکته: اگر openrouter/openai/gpt-5.2 کار نکرد، داخل همون UI در چت بزن /model list تا اسم دقیق GPT‑5 روی OpenRouter رو ببینی و همون رو جایگزین کنی.
{
"meta": {
"lastTouchedVersion": "2026.1.24-3",
"lastTouchedAt": "2026-02-08T05:42:48.102Z"
},
"models": {
"mode": "merge",
"providers": {
"emergent-gpt": {
"baseUrl": "https://integrations.emergentagent.com/llm/",
"apiKey": "",
"api": "openai-completions",
"models": [
{
"id": "gpt-5.2",
"name": "GPT-5.2",
"reasoning": true,
"input": [
"text"
],
"cost": {
"input": 0.00000175,
"output": 0.000014,
"cacheRead": 1.75e-7,
"cacheWrite": 0.00000175
},
"contextWindow": 400000,
"maxTokens": 128000
}
]
},
"emergent-claude": {
"baseUrl": "https://integrations.emergentagent.com/llm",
"apiKey": "",
"api": "anthropic-messages",
"authHeader": true,
"models": [
{
"id": "claude-sonnet-4-5",
"name": "Claude Sonnet 4.5",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0.000003,
"output": 0.000015,
"cacheRead": 3e-7,
"cacheWrite": 0.00000375
},
"contextWindow": 200000,
"maxTokens": 64000
},
{
"id": "claude-opus-4-5",
"name": "Claude Opus 4.5",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0.000005,
"output": 0.000025,
"cacheRead": 5e-7,
"cacheWrite": 0.00000625
},
"contextWindow": 200000,
"maxTokens": 64000
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "emergent-claude/claude-sonnet-4-5"
},
"models": {
"emergent-gpt/gpt-5.2": {
"alias": "gpt-5.2"
},
"emergent-claude/claude-sonnet-4-5": {
"alias": "sonnet"
}
},
"workspace": "/root/clawd",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
}
}
},
"messages": {
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"channels": {
"telegram": {
"enabled": true,
"dmPolicy": "pairing",
"botToken": "",
"allowFrom": [
1761439034
],
"groupPolicy": "allowlist",
"streamMode": "partial"
}
},
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"enabled": true,
"allowInsecureAuth": true
},
"auth": {
"mode": "token",
"token": ""
}
},
"plugins": {
"entries": {
"telegram": {
"enabled": true
}
}
}
} این کد چرا انقدر ای پی ای داره میشع کل کد رو اصلاح کرد . اگه میشه انجام بده
این بخش models رو میتونی کلاً با این نسخهی مخصوص OpenRouter جایگزین کنی (یعنی داخل models.providers بهجای emergent-gpt و emergent-claude فقط openrouter رو داشته باشی):
models: {
mode: "merge",
providers: {
openrouter: {
baseUrl: "https://openrouter.ai/api/v1",
apiKey: "${OPENROUTER_API_KEY}",
api: "openai-completions",
models: [
{
id: "openai/gpt-5.2",
name: "GPT-5.2 (OpenRouter)",
reasoning: true,
input: ["text"],
// بقیه فیلدها مثل cost/contextWindow/maxTokens اختیاریه؛ میتونی حذفشون کنی
},
],
},
},
},
ولی دوتا چیز مهم که باید جای دیگری در config (بالا/کنار models) اضافه/تنظیم کنی تا واقعاً از OpenRouter استفاده بشه:
1) کلید API را اضافه کن (تو Discord نفرست)
env: {
OPENROUTER_API_KEY: "sk-or-..."
},
2) مدل پیشفرض agent را روی OpenRouter بگذار
agents: {
defaults: {
model: { primary: "openrouter/openai/gpt-5.2" },
},
},
نکته: ترتیب قرارگیری (env اول باشد یا آخر) مهم نیست؛ فقط باید در سطح ریشهی config باشد.
اگر بعد از این تغییرات ارور “unknown model” یا “model not allowed” دیدی، توی همون UI داخل چت بزن /model list و اسم دقیق GPT‑5 رو که لیست میکنه، همونو دقیقاً جایگزین "openrouter/openai/gpt-5.2" کن.
دلیل اینکه تو config تو “اینقدر API / provider” میبینی اینه که الان دو تا provider سفارشی داری (emergent-gpt و emergent-claude) و هر کدوم جداگانه کلید میخوان. اگر هدفت اینه که فقط با OpenRouter کار کنی، میتونی کل اون بخشها رو حذف کنی و خیلی سادهترش کنی (فقط ۱ کلید: OPENROUTER_API_KEY).
مهم: توکن/کلید واقعی رو اینجا نفرست. اگر قبلاً فرستادی، سریع عوضش کن.
نسخهی “اصلاحشدهی کل config” با OpenRouter (آمادهی Paste در UI)
این همون ساختار خودته، فقط:
- کل
models.providers.emergent-*حذف شده env.OPENROUTER_API_KEYاضافه شده- مدل پیشفرض رفته روی GPT‑5 از OpenRouter
- allowlist مدلها هم اصلاح شده
{
meta: {
lastTouchedVersion: "2026.1.24-3",
lastTouchedAt: "2026-02-08T05:42:48.102Z",
},
// فقط همین یک کلید کافیست (تو Discord نفرست)
env: {
OPENROUTER_API_KEY: "sk-or-...",
},
// این بخش رو میتونی کلاً حذف کنی چون openrouter provider داخلیه
// models: { mode: "merge", providers: {} },
agents: {
defaults: {
// مدل پیشفرض: GPT-5 از OpenRouter
// اگر این دقیق کار نکرد، داخل چت UI بزن /model list و اسم دقیق رو جایگزین کن.
model: {
primary: "openrouter/openai/gpt-5.2",
},
// اگر این allowlist رو داری، باید مدلهای جدید رو اینجا هم بذاری
models: {
"openrouter/openai/gpt-5.2": { alias: "gpt-5.2" },
"openrouter/anthropic/claude-sonnet-4-5": { alias: "sonnet" }, // اختیاری
},
workspace: "/root/clawd",
maxConcurrent: 4,
subagents: { maxConcurrent: 8 },
},
},
messages: { ackReactionScope: "group-mentions" },
commands: { native: "auto", nativeSkills: "auto" },
channels: {
telegram: {
enabled: true,
dmPolicy: "pairing",
botToken: "PUT_YOUR_TELEGRAM_BOT_TOKEN_HERE",
allowFrom: [1761439034],
groupPolicy: "allowlist",
streamMode: "partial",
},
},
gateway: {
port: 18789,
mode: "local",
bind: "lan",
controlUi: {
enabled: true,
allowInsecureAuth: true,
},
auth: {
mode: "token",
token: "PUT_YOUR_GATEWAY_TOKEN_HERE",
},
},
plugins: {
entries: {
telegram: { enabled: true },
},
},
}
بعد از Paste چی کار کنی؟
- تو UI دکمه Apply/Save رو بزن (Gateway ریستارت میشه)
- تو چت UI بزن:
/model statusیا/model list- اگر دیدی
openrouter/openai/gpt-5.2دقیقاً وجود نداره، همونجا اسم درست GPT‑5 رو انتخاب کن و بذار به عنوان primary.
- اگر دیدی
اگر خواستی، اسکرینشات/متن خروجی /model list رو بفرست (بدون کلیدها) تا دقیقاً بگم کدوم model-id رو بذاری که ۱۰۰٪ کار کنه.
میخوام از kimi-k2.5 روی OpenRouter استفاده کنم اما روی سرورfireworks
OpenRouter خودش fireworks رو داره
اما نمیدونم چطوری باید رو fireworks استفاده کنم
برای اینکه kimi-k2.5 روی OpenRouter دقیقاً روی provider = fireworks اجرا بشه، باید از قابلیت Provider Routing خود OpenRouter استفاده کنی (یعنی داخل request یه فیلد provider بفرستی).
در OpenClaw بهترین راه اینه که برای همون مدل، داخل agents.defaults.models یک params بذاری تا به body درخواست OpenRouter اضافه بشه.
1) اول مدل درست OpenRouter را بگذار
(اسم دقیق مدل را اگر شک داری، بعد از ست کردن کلید، داخل UI بزن /model list.)
معمولاً Kimi این شکلیه:
openrouter/moonshotai/kimi-k2.5
2) کانفیگ نمونه (Fireworks-only)
این تکه را داخل configت اضافه/جایگزین کن:
env: {
OPENROUTER_API_KEY: "sk-or-..." // تو دیسکورد نفرست
},
agents: {
defaults: {
model: { primary: "openrouter/moonshotai/kimi-k2.5" },
// اگر allowlist داری (که تو configت داری)، حتماً اینجا هم باید مدل رو تعریف کنی
models: {
"openrouter/moonshotai/kimi-k2.5": {
alias: "kimi",
params: {
provider: {
order: ["fireworks"],
allow_fallbacks: false
}
}
}
}
}
}
نکتههای مهم
order: ["fireworks"]یعنی اولویت/اجبار روی fireworks (slug باید دقیقاً همین lowercase باشه).allow_fallbacks: falseیعنی اگر fireworks در دسترس نبود، دیگه به providerهای دیگه نره و خطا بده.
اگر میخوای “ترجیحاً fireworks ولی در صورت مشکل بقیه هم باشن”، بذارtrue.
3) اگر کار نکرد، 2 تا علت رایجه
- Fireworks واقعاً برای اون مدل فعال نیست (روی صفحهی همون مدل در OpenRouter باید provider=fireworks جزو Providers باشه).
- اسم مدل فرق دارد (مثلاً
kimi-k2.5دقیقاً همین نباشه). اینجا/model listکمک میکنه.
اگر خروجی /model list (فقط قسمت مربوط به kimi) رو paste کنی، دقیقاً همون model-id صحیح رو برات میذارم تو config تا ۱۰۰٪ درست بشه.
{
"meta": {
"lastTouchedVersion": "2026.1.24-3",
"lastTouchedAt": "2026-02-09T10:00:00.000Z"
},
"env": {
"OPENROUTER_API_KEY": "PUT_YOUR_OPENROUTER_KEY_HERE"
},
"agents": {
"defaults": {
"model": {
"primary": "openrouter/openai/gpt-5-mini"
},
"models": {
"openrouter/openai/gpt-5-mini": { "alias": "gpt-5-mini" },
"openrouter/anthropic/claude-sonnet-4-5": { "alias": "sonnet" } // اختیاری
},
"workspace": "/root/clawd",
"maxConcurrent": 4,
"subagents": { "maxConcurrent": 8 },
"compaction": { "mode": "safeguard" }
}
},
"messages": { "ackReactionScope": "group-mentions" },
"commands": { "native": "auto", "nativeSkills": "auto" },
"channels": {
"telegram": {
"enabled": true,
"dmPolicy": "pairing",
"botToken": "PUT_YOUR_TELEGRAM_BOT_TOKEN_HERE",
"allowFrom": [1761439034],
"groupPolicy": "allowlist",
"streamMode": "partial"
}
},
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": { "enabled": true, "allowInsecureAuth": true },
"auth": { "mode": "token", "token": "PUT_YOUR_GATEWAY_TOKEN_HERE" }
},
"plugins": {
"entries": { "telegram": { "enabled": true } }
}
} مشکلات این کد چیه
میتونی از خود Control UI هم API key اضافه کنی — ولی نه بهصورت “key manager” جدا؛ عملاً از طریق ویرایش Config (یا در بعضی موارد بخش Skills برای کلیدهای مخصوصِ skillها).
1) اضافه کردن API Key از داخل UI
در Control UI برو به Config (یا Configuration) و اینو اضافه/تکمیل کن:
{
env: {
OPENROUTER_API_KEY: "sk-or-...."
}
}
بعد Apply / Restart (یا Apply config که گیتوی ریاستارت میشود).
نکته امنیتی: اگر این UI رو روی LAN با HTTP باز کردی، کلیدها رو توی چت/دیسکورد نفرست. اگر حتی یک بار کلید واقعی رو public گذاشتی، سریعاً rotate کن.
2) مشکلات/ایرادهای کانفیگای که فرستادی
کانفیگت کلیتاً نزدیکه، ولی چند مورد مهم داره:
A) commands.nativeSkills احتمالاً کلیدِ معتبر نیست
در داک فعلی commands اینهاست: native, text, bash, config, debug, restart, …
ولی nativeSkills داخل reference نیست و ممکنه:
- یا کلاً نادیده گرفته بشه
- یا در بعضی بیلدها باعث خطای validation بشه
پیشنهاد: حذفش کن:
commands: { native: "auto" }
B) plugins.entries.telegram لازم نیست (و ممکنه گیجکننده باشه)
تلگرام “channel built-in” هست و معمولاً نیازی به plugins.entries.telegram نداره. اگر هم پلاگینی با id=telegram وجود نداشته باشه، این قسمت بیاثر میشه.
پیشنهاد: حذفش کن مگر دقیقاً میدونی داری چی رو override میکنی.
C) تلگرام گروهها: groupPolicy: "allowlist" گذاشتی ولی groupAllowFrom نداری
این یعنی در گروهها عملاً کسی اجازه نداره (همه block میشن). اگر فقط DM میخوای، خوبه؛ ولی اگر گروه هم میخوای باید groupAllowFrom بذاری یا groupPolicy رو تغییر بدی.
مثال:
channels: {
telegram: {
groupPolicy: "allowlist",
groupAllowFrom: [1761439034],
}
}
D) gateway.controlUi.allowInsecureAuth: true + bind: "lan" ریسکیه
این ترکیب یعنی روی شبکه (HTTP) با توکن ساده هم میشه وصل شد و device auth عملاً دور زده میشه. برای تست ok ـه، ولی برای استفاده واقعی پیشنهاد بهتر:
- یا UI رو فقط روی
127.0.0.1باز کن - یا از HTTPS مثل Tailscale Serve استفاده کن و
allowInsecureAuthرو false نگه دار
E) دقت کن agents.defaults.models نقش allowlist هم دارد
تو فقط دو مدل رو allow کردی. اگر بعداً مدل دیگری انتخاب کنی (/model ...) یا جایی به مدل دیگری نیاز شود، خطای “model not allowed/unknown” میگیری. پس هر مدلی که میخوای استفاده کنی باید داخل agents.defaults.models هم باشد.
3) بهترین راه برای اینکه دقیق بفهمیم کجا گیر میکنه
اگر به شِل دسترسی داری، خروجی اینها خیلی کمک میکنه (بدون کلیدها):
openclaw --version
openclaw status --all
openclaw models status --probe
openclaw doctor
اگر بگی هدفت فقط تلگرام DM هست یا گروه هم میخوای، کانفیگ رو دقیقتر و مینیمالتر برات جمعوجور میکنم.
"lastTouchedVersion": "2026.1.24-3",
"lastTouchedAt": "2026-02-09T09:15:27.116Z"
},
"models": {
"mode": "merge",
"providers": {
"emergent-gpt": {
"baseUrl": "https://integrations.emergentagent.com/llm/",
"apiKey": "sk-e2B9016a68296",
"api": "openai-completions",
"models": [
{
"id": "gpt-5.2",
"name": "GPT-5.2",
"reasoning": true,
"input": [
"text"
],
"cost": {
"input": 0.00000175,
"output": 0.000014,
"cacheRead": 1.75e-7,
"cacheWrite": 0.00000175
},
"contextWindow": 400000,
"maxTokens": 128000
}
]
},
"emergent-claude": {
"baseUrl": "https://integrations.emergentagent.com/llm",
"apiKey": "sk-emer9016a68296",
"api": "anthropic-messages",
"authHeader": true,
"models": [
{
"id": "claude-sonnet-4-5",
"name": "Claude Sonnet 4.5",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0.000003,
"output": 0.000015,
"cacheRead": 3e-7,
"cacheWrite": 0.00000375
},
"contextWindow": 200000,
"maxTokens": 64000
},
{
"id": "claude-opus-4-5",
"name": "Claude Opus 4.5",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0.000005,
"output": 0.000025,
"cacheRead": 5e-7,
"cacheWrite": 0.00000625
},
"contextWindow": 200000,
"maxTokens": 64000
}
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "emergent-claude/claude-sonnet-4-5"
},
"models": {
"emergent-gpt/gpt-5.2": {
"alias": "gpt-5.2"
},
"emergent-claude/claude-sonnet-4-5": {
"alias": "sonnet"
}
},
"workspace": "/root/clawd",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
}
}
},
"messages": {
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"channels": {
"telegram": {
"enabled": true,
"dmPolicy": "pairing",
"botToken": "8224136031:AAH9RGB91-RKgmRz5c",
"groups": {
"*": {
"requireMention": true
}
},
"allowFrom": [
"1761439034"
],
"groupAllowFrom": [
"1761439034"
],
"groupPolicy": "allowlist",
"streamMode": "partial"
}
},
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"enabled": true,
"allowInsecureAuth": true
},
"auth": {
"mode": "token",
"token": "14ebe70f36b9d158306d9d8"
}
},
"plugins": {
"entries": {
"telegram": {
"enabled": true
}
}
}
}
من میخوام کلن از یک مدل ai استفاده کنم . اونم از اشرکت https://openrouter.ai/ . میخوام کد رو کلن برام اصلاح کنی مخصوی/openrouter و فقط یک مدل
اول از همه: کلیدهای API واقعی رو همین الان از این چت/دیسکورد پاک کن و سریعاً Rotate کن.
چون تو پیامت apiKey ها لو رفته و هر کسی میتونه ازش سوءاستفاده کنه. (حتی اگر بعداً پاکش کنی، ممکنه در لاگ/نوتیف/کش باقی مونده باشه.)
آیا این تکهکانفیگ “اشکال” دارد؟
از نظر ساختار OpenClaw، این بخش در کل درست است و دقیقاً برای همین سناریوست:
models: { mode: "merge", providers: {...} }معتبر است.providers.<id>.baseUrl / apiKey / api / models[]همون فرمتیه که OpenClaw برای custom provider ها میپذیره.- گزینهی
authHeader: trueهم (طبق pi-coding-agent) برای اینه که به صورت خودکارAuthorization: Bearer <apiKey>اضافه بشه.
ولی چند نکتهی رایج که باعث “کار نکردن” میشود:
- این مدلها تا وقتی در allowlist مدلها نباشن قابل انتخاب نیستن
اگر در کانفیگتagents.defaults.modelsداری (مثل نمونهای که قبلاً فرستادی)، باید مدلهای جدید رو هم اضافه کنی، وگرنه/modelیا انتخاب مدل تو UI ممکنه خطای not allowed / unknown بده.
مثال:
{
agents: {
defaults: {
model: { primary: "emergent-gpt/gpt-5.2" },
models: {
"emergent-gpt/gpt-5.2": { alias: "gpt52" },
"emergent-claude/claude-sonnet-4-5": { alias: "sonnet" }
}
}
}
}
baseUrlباید دقیقاً مطابق API آن سرویس باشد
برایapi: "openai-completions"معمولاً baseUrl باید OpenAI-compatible باشد (اغلب چیزی شبیه.../v1).
تو یکی .../llm/ گذاشتی و اون یکی .../llm (بدون اسلش آخر). ممکنه مشکلی نباشه، ولی اگر سرویست انتظار /v1 داشته باشه، همین باعث fail میشه.
- کلیدها را داخل خود provider ننویس (بهتر: env + جایگذاری)
هم از نظر امنیتی بهتره هم مدیریت راحتتره. این شکلی:
{
env: {
EMERGENT_GPT_KEY: "…",
EMERGENT_CLAUDE_KEY: "…"
},
models: {
mode: "merge",
providers: {
"emergent-gpt": {
baseUrl: "https://…",
apiKey: "${EMERGENT_GPT_KEY}",
api: "openai-completions",
models: [{ id: "gpt-5.2", name: "GPT-5.2" }]
}
}
}
}
اضافه کردن API key از داخل UI (راه درست)
Control UI → Config → در env یا models.providers...apiKey اضافه کن → Apply/Restart.
(راه امنتر از UI نیست؛ امنترین راه “auth profiles” با CLI هست، ولی چون گفتی فقط UI میخوای، همین مسیر Config بهترینه.)
برای اینکه دقیق بگم کجاش مشکل داره
لطفاً بدون کلیدها یکی از اینها رو بفرست:
- اسکرین/متن خطای UI موقع Apply (Validation error)
- یا چند خط از
openclaw logs --followکه همون لحظهی fail اتفاق میافته
و حتماً قبلش کلیدها رو rotate کن.
این بخشِ models.providers...models[] که فرستادی از نظر ساختار اوکیه (id/name/cost/contextWindow/maxTokens همگی در schema سفارشیِ provider قابل قبولن). ولی چند نکته که معمولاً باعث “کار نکردن” میشه:
-
کلیدها رو اینجا/دیسکورد نفرست
اگر داخل کانفیگapiKeyواقعی گذاشتی و اینجا paste کردی، حتماً rotate کن و بعدش کلید رو فقط در UI/روی سرور نگه دار. -
اگر
agents.defaults.modelsداری، باید این مدلها رو هم allow کنی
وگرنه OpenClaw ممکنه مدل رو “allowed/known” ندونه. مثال:
{
agents: {
defaults: {
model: { primary: "emergent-claude/claude-sonnet-4-5" },
models: {
"emergent-claude/claude-sonnet-4-5": { alias: "sonnet" },
"emergent-claude/claude-opus-4-5": { alias: "opus" }
}
}
}
}
-
reasoning: false
این یعنی از دید catalog، این مدل “reasoning/thinking” حساب نمیشود.
اگر backend شما واقعاً thinking را پشتیبانی میکند و میخوای ازش استفاده کنی، میتونیreasoning: trueبذاری. اگر مطمئن نیستی، همونfalseهم مشکلی ایجاد نمیکنه (فقط قابلیت reasoning/Thinking ممکنه فعال نشه). -
بهتره apiKey رو با env بذاری، نه داخل provider
هم امنتره هم تمیزتر:
{
env: { EMERGENT_CLAUDE_KEY: "..." },
models: {
providers: {
"emergent-claude": {
apiKey: "${EMERGENT_CLAUDE_KEY}"
}
}
}
}
اگر بگی دقیقاً چه خطایی میگیری (مثلاً موقع Apply/Restart یا موقع تست مدل)، با همون خطا میگم مشکل از baseUrl/api/authHeader هست یا از allowlist/انتخاب مدل.
چند تا مشکل/نکته خیلی مهم تو همین config که فرستادی هست (بعضیهاش هم امنیتیان):
0) فوری: همهی اینها لو رفته → Rotate کن
تو همین پیامها اینها لو رفتهن:
channels.telegram.botTokengateway.auth.token- و قبلاً هم
models.providers.*.apiKey
حتماً:
- توکن تلگرام رو از BotFather ریجنریت کن
gateway.auth.tokenرو عوض کن (بهتره خیلی طولانیتر باشه، مثلاً 32 bytes random)- کلیدهای provider رو هم rotate کن
- پیامهای حاوی کلید رو از Discord پاک کن (ولی باز هم rotate لازمه)
1) commands.nativeSkills کلید معتبر نیست
طبق داک فعلی، داخل commands چیزی به اسم nativeSkills نداریم. ممکنه بیاثر باشه یا بعضی نسخهها باعث validation error بشه. حذفش کن:
commands: { native: "auto" }
2) plugins.entries.telegram لازم نیست (و بهتره حذف بشه)
Telegram کانال built‑in هست، نه plugin. این بخش رو حذف کن مگر دقیقاً plugin خاصی نصب کردی که id اش telegram باشه:
plugins: { /* ... */ }
3) allowFrom و groupAllowFrom بهتره با فرمت tg:<id> باشه
تو config reference نمونهها این شکلیه:
allowFrom: ["tg:1761439034"],
groupAllowFrom: ["tg:1761439034"]
تو الان فقط "1761439034" گذاشتی. ممکنه بعضی جاها کار کنه، ولی برای اینکه ۱۰۰٪ مطابق داک باشه، tg: رو اضافه کن.
4) امنیت: bind:"lan" + allowInsecureAuth:true خیلی ریسکیه
این یعنی Control UI روی شبکه با توکن ساده باز میشه و device‑auth عملاً دور زده میشه. برای تست بد نیست، ولی برای استفاده واقعی پیشنهاد بهتر:
- یا
gateway.bind: "loopback"و از همون سرور با127.0.0.1باز کن - یا اگر ریموت میخوای: Tailscale Serve (HTTPS) یا SSH tunnel
- و در حالت ایدهآل
allowInsecureAuth: false
(داک: https://docs.openclaw.ai/web/control-ui)
5) توکن Gateway کوتاهه
14ebe70f36b9d158306d9d8 خیلی کوتاهه. بهتره این باشه:
openssl rand -hex 32(میشه 64 کاراکتر hex)
اگر بگی دقیقاً “چه خطایی” میبینی (هنگام Apply در UI؟ یا موقع اجرا/مدل؟)، همون رو هدفمند میگم کدوم بخش باعثشه. ولی همین 4 مورد بالا، هم احتمال خطا رو کم میکنه هم امنیتت رو درست میکنه.
حتماً — اگر میخوای فقط OpenRouter باشه و فقط یک مدل استفاده کنی، باید کل بخش models.providers (مثل emergent-*) رو کلاً حذف کنی و فقط OPENROUTER_API_KEY + یک agents.defaults.model.primary داشته باشی.
قبلش هم: چون تو پیامهای قبلی توکن تلگرام / توکن گیتوی / API keyها لو رفتن، حتماً Rotate کن.
کانفیگ تمیز (فقط OpenRouter + فقط یک مدل)
این رو توی Control UI → Config بذار و فقط جاهای PUT_... و <OPENROUTER_MODEL> رو پر کن:
{
// (اختیاری)
meta: {
lastTouchedVersion: "2026.2.x",
lastTouchedAt: "2026-02-09T00:00:00.000Z",
},
// فقط کلید OpenRouter
env: {
OPENROUTER_API_KEY: "PUT_YOUR_OPENROUTER_KEY_HERE",
},
agents: {
defaults: {
// فقط یک مدل:
// فرمتش باید این شکلی باشه: openrouter/<provider>/<model>
model: {
primary: "openrouter/<OPENROUTER_MODEL>",
// اگر میخوای *واقعاً فقط همین یک مدل* باشه، fallback نذار
fallbacks: [],
},
// allowlist فقط همون یک مدل
models: {
"openrouter/<OPENROUTER_MODEL>": { alias: "main" },
},
workspace: "/root/clawd",
maxConcurrent: 4,
subagents: { maxConcurrent: 8 },
compaction: { mode: "safeguard" },
},
},
// اگر تلگرام میخوای نگه دار
channels: {
telegram: {
enabled: true,
dmPolicy: "pairing",
botToken: "PUT_YOUR_TELEGRAM_BOT_TOKEN_HERE",
// بهتره با پیشوند tg: باشه
allowFrom: ["tg:1761439034"],
// اگر گروه لازم نداری، امنترین حالت:
// groupPolicy: "disabled",
// اگر گروه لازم داری:
groupPolicy: "allowlist",
groupAllowFrom: ["tg:1761439034"],
groups: { "*": { requireMention: true } },
streamMode: "partial",
},
},
commands: {
native: "auto",
// nativeSkills رو کلاً حذف کن (کلید معتبری نیست)
},
gateway: {
port: 18789,
mode: "local",
// پیشنهاد امنتر: "loopback"
// اگر واقعاً میخوای از LAN بازش کنی: "lan"
bind: "loopback",
controlUi: { enabled: true },
auth: {
mode: "token",
token: "PUT_A_LONG_RANDOM_TOKEN_HERE",
},
},
// اینو حذف کن (telegram plugin لازم نیست)
// plugins: { ... }
}