Gateway
عیبیابی
این صفحه runbook عمیق است. اگر ابتدا جریان triage سریع را میخواهید، از /help/troubleshooting شروع کنید.
نردبان فرمانها
ابتدا اینها را به همین ترتیب اجرا کنید:
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probeنشانههای مورد انتظار برای وضعیت سالم:
openclaw gateway status،Runtime: running،Connectivity probe: ok، و یک خطCapability: ...را نشان میدهد.openclaw doctorهیچ مشکل مسدودکنندهای در config/service گزارش نمیکند.openclaw channels status --probeوضعیت زنده transport برای هر حساب را نشان میدهد و، در موارد پشتیبانیشده، نتایج probe/audit مانندworksیاaudit okرا نمایش میدهد.
پس از یک بهروزرسانی
وقتی بهروزرسانی تمام شده اما Gateway پایین است، channelها خالی هستند، یا فراخوانیهای مدل با خطاهای 401 شکست میخورند، از این بخش استفاده کنید.
openclaw status --allopenclaw update status --jsonopenclaw gateway status --deepopenclaw doctor --fixopenclaw gateway restartدنبال این موارد بگردید:
Update restartدرopenclaw status/openclaw status --all. handoffهای در انتظار یا شکستخورده فرمان بعدی برای اجرا را شامل میشوند.plugin load failed: dependency tree corrupted; run openclaw doctor --fixزیر Channels. این یعنی config مربوط به channel هنوز وجود دارد، اما ثبت Plugin پیش از آنکه channel بتواند بارگذاری شود شکست خورده است.- خطاهای 401 provider پس از احراز هویت دوباره.
openclaw doctor --fixوجود سایههای auth قدیمی OAuth برای هر agent را بررسی میکند و نسخههای قدیمی را حذف میکند تا همه agentها profile مشترک فعلی را resolve کنند.
نصبهای split brain و نگهبان config جدیدتر
وقتی یک سرویس gateway پس از بهروزرسانی بهطور غیرمنتظره متوقف میشود، یا logها نشان میدهند که یک باینری openclaw قدیمیتر از نسخهای است که آخرین بار openclaw.json را نوشته، از این بخش استفاده کنید.
OpenClaw نوشتنهای config را با meta.lastTouchedVersion نشانگذاری میکند. فرمانهای فقطخواندنی همچنان میتوانند config نوشتهشده توسط OpenClaw جدیدتر را بررسی کنند، اما mutationهای process و service از ادامه دادن با یک باینری قدیمیتر خودداری میکنند. اقدامهای مسدودشده شامل شروع، توقف، restart، uninstall سرویس gateway، reinstall اجباری service، راهاندازی gateway در حالت service، و پاکسازی port با gateway --force هستند.
which openclawopenclaw --versionopenclaw gateway status --deepopenclaw config get meta.lastTouchedVersionFix PATH
PATH را اصلاح کنید تا openclaw به نصب جدیدتر resolve شود، سپس اقدام را دوباره اجرا کنید.
Reinstall the gateway service
سرویس gateway موردنظر را از نصب جدیدتر دوباره نصب کنید:
openclaw gateway install --forceopenclaw gateway restartRemove stale wrappers
بستههای سیستمی قدیمی یا entryهای wrapper قدیمی را که هنوز به یک باینری قدیمی openclaw اشاره میکنند حذف کنید.
ناسازگاری protocol پس از rollback
وقتی پس از downgrade یا rollback کردن OpenClaw، logها همچنان protocol mismatch چاپ میکنند، از این بخش استفاده کنید. این یعنی یک Gateway قدیمیتر در حال اجراست، اما یک process کلاینت محلی جدیدتر هنوز تلاش میکند با بازه protocolی reconnect کند که Gateway قدیمیتر نمیتواند صحبت کند.
openclaw --versionwhich -a openclawopenclaw gateway status --deepopenclaw doctor --deepopenclaw logs --followدنبال این موارد بگردید:
protocol mismatch ... client=... v<version> min=<n> max=<n> expected=<n>در logهای Gateway.Established clients:درopenclaw gateway status --deepیاGateway clientsدرopenclaw doctor --deep. این فهرست کلاینتهای TCP فعال متصل به port Gateway را نشان میدهد، از جمله PIDها و command lineها وقتی OS اجازه دهد.- یک process کلاینت که command line آن به نصب یا wrapper جدیدتر OpenClaw اشاره میکند که از آن rollback کردهاید.
رفع:
- process کلاینت قدیمی OpenClaw را که
gateway status --deepنشان میدهد متوقف یا restart کنید. - appها یا wrapperهایی را که OpenClaw را embed میکنند restart کنید، مانند داشبوردهای محلی، ویرایشگرها، helperهای app-server، یا shellهای بلندمدت
openclaw logs --follow. openclaw gateway status --deepیاopenclaw doctor --deepرا دوباره اجرا کنید و تأیید کنید PID کلاینت قدیمی حذف شده است.
یک Gateway قدیمیتر را وادار نکنید protocol جدیدتر ناسازگار را بپذیرد. افزایشهای protocol از قرارداد wire محافظت میکنند؛ بازیابی rollback مسئله پاکسازی process/version است.
Symlink مربوط به Skill بهعنوان خروج از path نادیده گرفته شد
وقتی logها شامل این مورد هستند از این بخش استفاده کنید:
Skipping escaped skill path outside its configured root: ... reason=symlink-escapeOpenClaw هر root مربوط به skill را یک مرز containment در نظر میگیرد. یک symlink زیر
~/.agents/skills، <workspace>/.agents/skills، <workspace>/skills، یا
~/.openclaw/skills وقتی target واقعی آن بیرون از آن root resolve شود نادیده گرفته میشود،
مگر اینکه target بهصراحت trusted باشد.
link را بررسی کنید:
ls -l ~/.agents/skills/<name>realpath ~/.agents/skills/<name>openclaw config get skills.loadاگر target عمدی است، هم root مستقیم skill و هم target مجاز symlink را configure کنید:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}سپس یک session جدید شروع کنید یا منتظر بمانید watcher مربوط به skills refresh شود. اگر process در حال اجرا پیش از تغییر config شروع شده، gateway را restart کنید.
از targetهای گسترده مانند ~، /، یا یک پوشه پروژه synced کامل استفاده نکنید.
allowSymlinkTargets را به root واقعی skill که directoryهای trusted
SKILL.md را شامل میشود محدود نگه دارید.
اگر apply در Skill Workshop نیز باید از طریق همان pathهای trusted و symlinked
workspace skill بنویسد، skills.workshop.allowSymlinkTargetWrites را فعال کنید. آن را
برای rootهای skill مشترک فقطخواندنی غیرفعال نگه دارید.
مرتبط:
مصرف اضافی Anthropic 429 برای context طولانی لازم است
وقتی logها/خطاها شامل این مورد هستند از این بخش استفاده کنید: HTTP 429: rate_limit_error: Extra usage is required for long context requests.
openclaw logs --followopenclaw models statusopenclaw config get agents.defaults.modelsدنبال این موارد بگردید:
- مدل Anthropic انتخابشده یک مدل 1M Claude 4.x با قابلیت GA است، یا مدل دارای
params.context1m: trueقدیمی است. - credential فعلی Anthropic برای استفاده از context طولانی واجد شرایط نیست.
- requestها فقط در sessionهای طولانی/اجرای مدلهایی شکست میخورند که به مسیر context 1M نیاز دارند.
گزینههای رفع:
Use a standard context window
به مدلی با window استاندارد تغییر دهید، یا context1m قدیمی را از config مدلهای قدیمیتری که برای context 1M قابلیت GA ندارند حذف کنید.
Use an eligible credential
از credential مربوط به Anthropic که برای requestهای context طولانی واجد شرایط است استفاده کنید، یا به یک Anthropic API key تغییر دهید.
Configure fallback models
مدلهای fallback را configure کنید تا وقتی requestهای context طولانی Anthropic رد میشوند، اجراها ادامه پیدا کنند.
مرتبط:
پاسخهای مسدودشده 403 از upstream
وقتی یک provider بالادستی LLM یک 403 عمومی مانند
Your request was blocked برمیگرداند، از این بخش استفاده کنید.
فرض نکنید این همیشه یک مشکل configuration در OpenClaw است. پاسخ میتواند از یک لایه امنیتی بالادستی مانند CDN، WAF، قاعده bot-management، یا reverse proxy جلوی یک endpoint سازگار با OpenAI بیاید.
openclaw statusopenclaw gateway statusopenclaw logs --followدنبال این موارد بگردید:
- چندین مدل زیر یک provider یکسان به همان شکل شکست میخورند
- متن HTML یا security عمومی بهجای خطای عادی API مربوط به provider
- eventهای security سمت provider در همان زمان request
- یک probe مستقیم کوچک با
curlموفق میشود در حالی که requestهای عادی با شکل SDK شکست میخورند
وقتی evidence به block توسط WAF/CDN اشاره میکند، ابتدا filtering سمت provider را رفع کنید. یک قاعده allow یا skip با scope محدود برای path مربوط به API که OpenClaw استفاده میکند ترجیح دارد، و از غیرفعال کردن protection برای کل site خودداری کنید.
مرتبط:
backend محلی سازگار با OpenAI از probeهای مستقیم عبور میکند اما اجراهای agent شکست میخورند
وقتی این موارد برقرار است از این بخش استفاده کنید:
curl ... /v1/modelsکار میکند- فراخوانیهای مستقیم کوچک
/v1/chat/completionsکار میکنند - اجرای مدل OpenClaw فقط در turnهای عادی agent شکست میخورد
curl http://127.0.0.1:1234/v1/modelscurl http://127.0.0.1:1234/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"<id>","messages":[{"role":"user","content":"hi"}],"stream":false}'openclaw infer model run --model <provider/model> --prompt "hi" --jsonopenclaw logs --followدنبال این موارد بگردید:
- فراخوانیهای مستقیم کوچک موفق میشوند، اما اجرای OpenClaw فقط روی promptهای بزرگتر شکست میخورد
- خطاهای
model_not_foundیا 404، با وجود اینکه/v1/chat/completionsمستقیم با همان bare model id کار میکند - خطاهای backend درباره اینکه
messages[].contentباید string باشد - هشدارهای متناوب
incomplete turn detected ... stopReason=stop payloads=0با یک backend محلی سازگار با OpenAI - crashهای backend که فقط با تعداد prompt-token بزرگتر یا promptهای کامل runtime مربوط به agent ظاهر میشوند
Common signatures
model_not_foundبا یک server محلی سبک MLX/vLLM → بررسی کنیدbaseUrlشامل/v1باشد،apiبرای backendهای/v1/chat/completionsبرابر"openai-completions"باشد، وmodels.providers.<provider>.models[].idهمان bare provider-local id باشد. آن را یکبار با prefix مربوط به provider انتخاب کنید، برای مثالmlx/mlx-community/Qwen3-30B-A3B-6bit؛ entry مربوط به catalog را بهشکلmlx-community/Qwen3-30B-A3B-6bitنگه دارید.messages[...].content: invalid type: sequence, expected a string→ backend بخشهای محتوای structured مربوط به Chat Completions را رد میکند. رفع:models.providers.<provider>.models[].compat.requiresStringContent: trueرا تنظیم کنید.validation.keysیا کلیدهای مجاز message مانند["role","content"]→ backend metadata مربوط به replay به سبک OpenAI را روی messageهای Chat Completions رد میکند. رفع:models.providers.<provider>.models[].compat.strictMessageKeys: trueرا تنظیم کنید.incomplete turn detected ... stopReason=stop payloads=0→ backend درخواست Chat Completions را کامل کرده اما برای آن turn هیچ متن assistant قابل مشاهده برای کاربر برنگردانده است. OpenClaw turnهای خالی و replay-safe سازگار با OpenAI را یکبار retry میکند؛ شکستهای پایدار معمولاً یعنی backend محتوای خالی/غیرمتنی emit میکند یا متن final-answer را سرکوب میکند.- requestهای مستقیم کوچک موفق میشوند، اما اجرای agent در OpenClaw با crashهای backend/model شکست میخورد (برای مثال Gemma روی بعضی buildهای
inferrs) → transport مربوط به OpenClaw احتمالاً از قبل درست است؛ backend روی شکل prompt بزرگتر runtime مربوط به agent شکست میخورد. - پس از غیرفعال کردن toolها failureها کمتر میشوند اما حذف نمیشوند → schemaهای tool بخشی از فشار بودند، اما مسئله باقیمانده همچنان ظرفیت model/server بالادستی یا bug در backend است.
Fix options
- برای backendهای Chat Completions فقط-string،
compat.requiresStringContent: trueرا تنظیم کنید. - برای backendهای strict Chat Completions که روی هر message فقط
roleوcontentرا میپذیرند،compat.strictMessageKeys: trueرا تنظیم کنید. - برای مدلها/backendهایی که نمیتوانند سطح schemaهای tool مربوط به OpenClaw را قابلاعتماد مدیریت کنند،
compat.supportsTools: falseرا تنظیم کنید. - فشار prompt را تا حد امکان کاهش دهید: bootstrap کوچکتر workspace، history کوتاهتر session، مدل محلی سبکتر، یا backendی با پشتیبانی قویتر از context طولانی.
- اگر requestهای مستقیم کوچک همچنان موفق میشوند اما turnهای agent در OpenClaw هنوز داخل backend crash میکنند، آن را یک محدودیت server/model بالادستی در نظر بگیرید و با شکل payload پذیرفتهشده، آنجا repro ثبت کنید.
مرتبط:
بدون پاسخ
اگر کانالها فعال هستند اما چیزی پاسخ نمیدهد، پیش از اتصال دوباره هر چیز، مسیریابی و سیاست را بررسی کنید.
openclaw statusopenclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw config get channelsopenclaw logs --followبه دنبال این موارد باشید:
- جفتسازی در انتظار برای فرستندگان پیام مستقیم.
- دروازهگذاری اشاره در گروه (
requireMention,mentionPatterns). - ناهماهنگیهای فهرست مجاز کانال/گروه.
نشانههای رایج:
drop guild message (mention required→ پیام گروه تا زمان اشاره نادیده گرفته میشود.pairing request→ فرستنده به تأیید نیاز دارد.blocked/allowlist→ فرستنده/کانال توسط سیاست فیلتر شده است.
مرتبط:
اتصال رابط کنترل داشبورد
وقتی داشبورد/رابط کنترل وصل نمیشود، URL، حالت احراز هویت، و فرضهای زمینه امن را اعتبارسنجی کنید.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --jsonبه دنبال این موارد باشید:
- URL درست برای کاوش و URL درست داشبورد.
- ناهماهنگی حالت احراز هویت/توکن بین کلاینت و Gateway.
- استفاده از HTTP جایی که هویت دستگاه لازم است.
اگر مرورگر محلی پس از بهروزرسانی نمیتواند به 127.0.0.1:18789 وصل شود، ابتدا
سرویس Gateway محلی را بازیابی کنید و تأیید کنید که داشبورد را ارائه میکند:
openclaw gateway restartlsof -i :18789curl http://127.0.0.1:18789اگر curl HTML مربوط به OpenClaw را برگرداند، Gateway کار میکند و مشکل باقیمانده
احتمالاً کش مرورگر، یک پیوند عمیق قدیمی، یا وضعیت کهنه تب است. http://127.0.0.1:18789
را مستقیماً باز کنید و از داشبورد پیمایش کنید. اگر راهاندازی دوباره سرویس را در حال اجرا
باقی نمیگذارد، openclaw gateway start را اجرا کنید و دوباره openclaw gateway status
را بررسی کنید.
نشانههای اتصال / احراز هویت
device identity required→ زمینه ناامن یا احراز هویت دستگاه وجود ندارد.origin not allowed→ مقدارOriginمرورگر درgateway.controlUi.allowedOriginsنیست (یا از یک مبدأ مرورگر غیر loopback بدون فهرست مجاز صریح وصل میشوید).device nonce required/device nonce mismatch→ کلاینت جریان احراز هویت دستگاه مبتنی بر چالش را کامل نمیکند (connect.challenge+device.nonce).device signature invalid/device signature expired→ کلاینت بار داده نادرست (یا برچسب زمانی کهنه) را برای دستدهی فعلی امضا کرده است.AUTH_TOKEN_MISMATCHباcanRetryWithDeviceToken=true→ کلاینت میتواند یک تلاش مجدد مورد اعتماد با توکن دستگاه کششده انجام دهد.- آن تلاش مجدد با توکن کششده از مجموعه محدوده کششدهای استفاده میکند که همراه توکن دستگاه جفتشده ذخیره شده است. فراخوانندگان دارای
deviceTokenصریح /scopesصریح بهجای آن مجموعه محدوده درخواستی خود را نگه میدارند. AUTH_SCOPE_MISMATCH→ توکن دستگاه شناخته شد، اما محدودههای تأییدشده آن این درخواست اتصال را پوشش نمیدهند؛ بهجای چرخاندن یک توکن مشترک Gateway، دوباره جفتسازی کنید یا قرارداد محدوده درخواستی را تأیید کنید.- خارج از آن مسیر تلاش مجدد، اولویت احراز هویت اتصال ابتدا توکن/رمز عبور مشترک صریح، سپس
deviceTokenصریح، سپس توکن دستگاه ذخیرهشده، و سپس توکن راهانداز است. - در مسیر ناهمگام رابط کنترل Tailscale Serve، تلاشهای ناموفق برای همان
{scope, ip}پیش از ثبت شکست توسط محدودکننده، سریالی میشوند. بنابراین دو تلاش مجدد همزمان نامعتبر از همان کلاینت میتوانند در تلاش دوم بهجای دو ناهماهنگی ساده،retry laterرا نشان دهند. too many failed authentication attempts (retry later)از یک کلاینت loopback با مبدأ مرورگر → شکستهای تکراری از همانOriginنرمالسازیشده بهطور موقت قفل میشوند؛ یک مبدأ localhost دیگر از سبد جداگانهای استفاده میکند.unauthorizedتکراری پس از آن تلاش مجدد → رانش توکن مشترک/توکن دستگاه؛ پیکربندی توکن را تازه کنید و در صورت نیاز توکن دستگاه را دوباره تأیید/چرخش دهید.gateway connect failed:→ هدف میزبان/درگاه/url نادرست است.
نقشه سریع کدهای جزئیات احراز هویت
از error.details.code در پاسخ ناموفق connect استفاده کنید تا اقدام بعدی را انتخاب کنید:
| کد جزئیات | معنا | اقدام پیشنهادی |
|---|---|---|
AUTH_TOKEN_MISSING |
کلاینت توکن مشترک لازم را نفرستاده است. | توکن را در کلاینت جایگذاری/تنظیم کنید و دوباره تلاش کنید. برای مسیرهای داشبورد: openclaw config get gateway.auth.token و سپس در تنظیمات رابط کنترل جایگذاری کنید. |
AUTH_TOKEN_MISMATCH |
توکن مشترک با توکن احراز هویت Gateway مطابقت نداشت. | اگر canRetryWithDeviceToken=true است، یک تلاش مجدد مورد اعتماد را مجاز کنید. تلاشهای مجدد با توکن کششده از محدودههای تأییدشده ذخیرهشده استفاده میکنند؛ فراخوانندگان دارای deviceToken / scopes صریح محدودههای درخواستی را نگه میدارند. اگر همچنان ناموفق بود، فهرست بررسی بازیابی رانش توکن را اجرا کنید. |
AUTH_DEVICE_TOKEN_MISMATCH |
توکن کششده هر دستگاه کهنه یا لغو شده است. | توکن دستگاه را با استفاده از CLI دستگاهها بچرخانید/دوباره تأیید کنید، سپس دوباره وصل شوید. |
AUTH_SCOPE_MISMATCH |
توکن دستگاه معتبر است، اما نقش/محدودههای تأییدشده آن این درخواست اتصال را پوشش نمیدهند. | دستگاه را دوباره جفت کنید یا قرارداد محدوده درخواستی را تأیید کنید؛ این مورد را بهعنوان رانش توکن مشترک در نظر نگیرید. |
PAIRING_REQUIRED |
هویت دستگاه به تأیید نیاز دارد. error.details.reason را برای not-paired، scope-upgrade، role-upgrade، یا metadata-upgrade بررسی کنید و هنگام وجود، از requestId / remediationHint استفاده کنید. |
درخواست در انتظار را تأیید کنید: openclaw devices list سپس openclaw devices approve <requestId>. ارتقاهای محدوده/نقش پس از بررسی دسترسی درخواستی از همان جریان استفاده میکنند. |
بررسی مهاجرت احراز هویت دستگاه نسخه ۲:
openclaw --versionopenclaw doctoropenclaw gateway statusاگر لاگها خطاهای nonce/امضا نشان میدهند، کلاینت متصلشونده را بهروزرسانی و آن را تأیید کنید:
در انتظار connect.challenge بمانید
کلاینت منتظر connect.challenge صادرشده توسط Gateway میماند.
بار داده را امضا کنید
کلاینت بار داده وابسته به چالش را امضا میکند.
nonce دستگاه را بفرستید
کلاینت connect.params.device.nonce را با همان nonce چالش میفرستد.
اگر openclaw devices rotate / revoke / remove بهطور غیرمنتظره رد شد:
- نشستهای توکن دستگاه جفتشده فقط میتوانند دستگاه خودشان را مدیریت کنند، مگر اینکه فراخواننده
operator.adminهم داشته باشد openclaw devices rotate --scope ...فقط میتواند محدودههای اپراتوری را درخواست کند که نشست فراخواننده از قبل دارد
مرتبط:
- پیکربندی (حالتهای احراز هویت Gateway)
- رابط کنترل
- دستگاهها
- دسترسی راه دور
- احراز هویت پراکسی مورد اعتماد
سرویس Gateway در حال اجرا نیست
از این مورد زمانی استفاده کنید که سرویس نصب شده اما فرایند پایدار نمیماند.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --deep # also scan system-level servicesبه دنبال این موارد باشید:
Runtime: stoppedهمراه با راهنماییهای خروج.- ناهماهنگی پیکربندی سرویس (
Config (cli)در برابرConfig (service)). - تداخلهای درگاه/شنونده.
- نصبهای اضافی launchd/systemd/schtasks هنگام استفاده از
--deep. - راهنماییهای پاکسازی
Other gateway-like services detected (best effort).
نشانههای رایج
Gateway start blocked: set gateway.mode=localیاexisting config is missing gateway.mode→ حالت Gateway محلی فعال نیست، یا فایل پیکربندی بازنویسی شده وgateway.modeرا از دست داده است. رفع:gateway.mode="local"را در پیکربندی خود تنظیم کنید، یاopenclaw onboard --mode local/openclaw setupرا دوباره اجرا کنید تا پیکربندی مورد انتظار حالت محلی دوباره مهر شود. اگر OpenClaw را از طریق Podman اجرا میکنید، مسیر پیشفرض پیکربندی~/.openclaw/openclaw.jsonاست.refusing to bind gateway ... without auth→ اتصال غیر loopback بدون مسیر احراز هویت معتبر Gateway (توکن/رمز عبور، یا trusted-proxy در صورت پیکربندی).another gateway instance is already listening/EADDRINUSE→ تداخل درگاه.Other gateway-like services detected (best effort)→ واحدهای کهنه یا موازی launchd/systemd/schtasks وجود دارند. بیشتر راهاندازیها باید یک Gateway برای هر ماشین نگه دارند؛ اگر واقعاً به بیش از یکی نیاز دارید، درگاهها + پیکربندی/وضعیت/فضای کاری را جدا کنید. /gateway#multiple-gateways-same-host را ببینید.System-level OpenClaw gateway service detectedاز doctor → یک واحد systemd سیستمی وجود دارد در حالی که سرویس سطح کاربر وجود ندارد. پیش از اجازه دادن به doctor برای نصب سرویس کاربر، نسخه تکراری را حذف یا غیرفعال کنید، یا اگر واحد سیستمی ناظر مورد نظر استOPENCLAW_SERVICE_REPAIR_POLICY=externalرا تنظیم کنید.Gateway service port does not match current gateway config→ ناظر نصبشده هنوز--portقدیمی را ثابت نگه داشته است.openclaw doctor --fixیاopenclaw gateway install --forceرا اجرا کنید، سپس سرویس Gateway را دوباره راهاندازی کنید.
مرتبط:
Gateway در macOS بیصدا از پاسخگویی بازمیایستد، سپس وقتی داشبورد را لمس میکنید از سر میگیرد
از این مورد زمانی استفاده کنید که کانالها (Telegram، WhatsApp، و غیره) روی میزبان macOS برای چند دقیقه تا چند ساعت در هر نوبت ساکت میشوند، و به نظر میرسد Gateway همان لحظهای که رابط کنترل را باز میکنید، با SSH وارد میشوید، یا به هر شکل دیگری با میزبان تعامل میکنید، دوباره برمیگردد. معمولاً در openclaw status نشانه آشکاری وجود ندارد، چون تا وقتی بررسی میکنید Gateway دوباره زنده شده است.
ls ~/.openclaw/logs/stability/ | tail -5openclaw gateway stability --bundle latestpmset -g log | grep -iE "sleep|wake|maintenance" | tail -50launchctl print gui/$UID/ai.openclaw.gateway | grep -E "state|last exit|runs"دنبال این موارد بگردید:
- یک یا چند بسته
*-uncaught_exception.jsonدر~/.openclaw/logs/stability/کهerror.codeدر آنها روی یک کد شبکه گذرا مانندENETDOWN،ENETUNREACH،EHOSTUNREACHیاECONNREFUSEDتنظیم شده باشد. - خطوط
pmset -g logمانندEntering Sleep state due to 'Maintenance Sleep'یاen0 driver is slow (msg: WillChangeState to 0)که با زمانهای خرابی همزمان باشند. Power Nap / Maintenance Sleep برای مدت کوتاهی درایور Wi-Fi را در وضعیت 0 قرار میدهد؛ هرconnect()خروجی که در آن بازه رخ دهد میتواند باENETDOWNشکست بخورد، حتی روی میزبانی که در حالت عادی اتصال شبکه کامل دارد. - خروجی
launchctl printکهstate = not runningرا همراه با چندrunsاخیر و یک کد خروج نشان میدهد، بهویژه وقتی فاصله بین خرابی و اجرای بعدی در حد یک ساعت باشد، نه چند ثانیه. launchd در macOS پس از یک موج خرابی، یک دروازه محافظت در برابر اجرای دوباره اعمال میکند که مستند نشده است و میتواند تا زمان یک محرک خارجی مانند ورود تعاملی، اتصال داشبورد، یاlaunchctl kickstart، دیگر بهKeepAlive=trueعمل نکند.
امضاهای رایج:
- یک بسته پایداری که
error.codeآنENETDOWNیا یک کد همخانواده است و پشته فراخوانی بهlookupAndConnect/Socket.connectدرnetمربوط به Node اشاره میکند. OpenClaw2026.5.26و نسخههای جدیدتر این موارد را بهعنوان خطاهای شبکه گذرای بیخطر دستهبندی میکنند تا دیگر به هندلر سطح بالای uncaught منتقل نشوند؛ اگر روی نسخه قدیمیتر هستید، ابتدا ارتقا دهید. - دورههای طولانی سکوت که درست همان لحظهای تمام میشوند که به رابط کاربری کنترل وصل میشوید یا با SSH وارد میزبان میشوید: فعالیت قابل مشاهده برای کاربر همان چیزی است که دروازه اجرای دوباره launchd را دوباره مسلح میکند، نه کاری که داشبورد با Gateway انجام میدهد.
- افزایش شمارنده
runsدر طول روز بدون خط متناظرreceived SIG*; shutting downدر~/Library/Logs/openclaw/gateway.log: خاموشیهای تمیز یک سیگنال را ثبت میکنند؛ خرابیهای گذرا این کار را نمیکنند.
چه باید کرد:
-
اگر نسخهای قبل از
2026.5.26را اجرا میکنید، Gateway را ارتقا دهید. پس از ارتقا، خطاهای آیندهENETDOWNبهجای پایان دادن به فرایند، بهصورت هشدار ثبت میشوند. -
روی میزبانهای Mac mini / دسکتاپ که قرار است سرور همیشهروشن باشند، فعالیت maintenance sleep را کاهش دهید:
bash sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0این کار نوسان زیربنایی درایور را بهطور قابل توجهی کاهش میدهد، اما کاملا حذف نمیکند. سیستم همچنان میتواند صرفنظر از این پرچمها، برای TCP keepalive و نگهداری mDNS برخی maintenance sleepها را انجام دهد.
-
یک watchdog زندهبودن اضافه کنید تا موج خرابی آینده که توسط launchd متوقف میشود، سریع شناسایی شود:
bash # Example launchd-aware liveness check, suitable for a 5-minute cron or LaunchAgentstate=$(launchctl print gui/$UID/ai.openclaw.gateway 2>/dev/null | awk -F'= ' '/state =/ {print $2; exit}')if [ "$state" != "running" ]; then launchctl kickstart -k gui/$UID/ai.openclaw.gatewayfiهدف این است که دروازه اجرای دوباره از بیرون دوباره مسلح شود؛
KeepAlive=trueبهتنهایی پس از یک موج خرابی در macOS کافی نیست.
مرتبط:
خروج Gateway هنگام مصرف بالای حافظه
وقتی Gateway زیر بار ناپدید میشود، سرپرست یک راهاندازی مجدد شبیه OOM گزارش میکند، یا لاگها به critical memory pressure bundle written اشاره میکنند، از این بخش استفاده کنید.
openclaw gateway status --deepopenclaw logs --followopenclaw gateway stability --bundle latestopenclaw gateway diagnostics exportدنبال این موارد بگردید:
Reason: diagnostic.memory.pressure.criticalدر آخرین بسته پایداری.Memory pressure:همراه باcritical/rss_threshold،critical/heap_threshold، یاcritical/rss_growth.- مقادیر
V8 heap:نزدیک به حد heap. - ورودیهای
Largest session files:مانندagents/<agent>/sessions/<session>.jsonlیاsessions/<session>.jsonl. - شمارندههای حافظه cgroup در Linux وقتی Gateway داخل یک کانتینر یا سرویس با محدودیت حافظه اجرا میشود.
امضاهای رایج:
critical memory pressure bundle writtenکمی قبل از راهاندازی مجدد ظاهر میشود → OpenClaw یک بسته پایداری پیش از OOM ثبت کرده است. آن را باopenclaw gateway stability --bundle latestبررسی کنید.memory pressure: level=critical ... memoryPressureSnapshot=disabledدر لاگهای Gateway ظاهر میشود → OpenClaw فشار بحرانی حافظه را تشخیص داده، اما snapshot پایداری پیش از OOM خاموش است.Largest session files:به یک مسیر transcript ویرایششده بسیار بزرگ اشاره میکند → تاریخچه نگهداریشده session را کاهش دهید، رشد session را بررسی کنید، یا پیش از راهاندازی مجدد transcriptهای قدیمی را از store فعال خارج کنید.- بایتهای استفادهشده در
V8 heap:نزدیک به حد heap هستند → فشار prompt/session را کم کنید، کار همزمان را کاهش دهید، یا فقط پس از تأیید اینکه بار کاری مورد انتظار است، حد heap مربوط به Node را افزایش دهید. Memory pressure: critical/rss_growth→ حافظه در یک پنجره نمونهبرداری بهسرعت رشد کرده است. آخرین لاگها را برای یک import بزرگ، خروجی بیمهار ابزار، تلاشهای تکراری، یا مجموعهای از کارهای agent در صف بررسی کنید.- فشار بحرانی حافظه در لاگها دیده میشود اما بستهای وجود ندارد → این حالت پیشفرض است.
diagnostics.memoryPressureSnapshot: trueرا تنظیم کنید تا در رویدادهای آینده فشار بحرانی حافظه، بسته پایداری پیش از OOM ثبت شود.
بسته پایداری بدون payload است. این بسته شواهد عملیاتی حافظه و مسیرهای نسبی فایل بهصورت ویرایششده را شامل میشود، نه متن پیام، بدنههای Webhook، اعتبارنامهها، توکنها، کوکیها یا شناسههای خام session. بهجای کپی کردن لاگهای خام، خروجی diagnostics را به گزارشهای باگ پیوست کنید.
مرتبط:
Gateway پیکربندی نامعتبر را رد کرد
وقتی راهاندازی Gateway با Invalid config شکست میخورد یا لاگهای hot reload میگویند
یک ویرایش نامعتبر را نادیده گرفته است، از این بخش استفاده کنید.
openclaw logs --followopenclaw config fileopenclaw config validateopenclaw doctorدنبال این موارد بگردید:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- یک فایل دارای timestamp با نام
openclaw.json.rejected.*کنار پیکربندی فعال - یک فایل دارای timestamp با نام
openclaw.json.clobbered.*اگرdoctor --fixیک ویرایش مستقیم خراب را تعمیر کرده باشد - OpenClaw برای هر مسیر پیکربندی، آخرین 32 فایل
.clobbered.*را نگه میدارد و فایلهای قدیمیتر را میچرخاند
What happened
- پیکربندی هنگام راهاندازی، hot reload، یا نوشتنِ تحت مالکیت OpenClaw اعتبارسنجی نشد.
- راهاندازی Gateway بهجای بازنویسی
openclaw.jsonبهصورت بسته شکست میخورد. - hot reload ویرایشهای خارجی نامعتبر را رد میکند و پیکربندی runtime فعلی را فعال نگه میدارد.
- نوشتنهای تحت مالکیت OpenClaw، payloadهای نامعتبر/مخرب را پیش از commit رد میکنند و
.rejected.*را ذخیره میکنند. openclaw doctor --fixمالک تعمیر است. میتواند پیشوندهای غیر JSON را حذف کند یا آخرین نسخه سالم شناختهشده را بازیابی کند، در حالی که payload ردشده را بهصورت.clobbered.*حفظ میکند.- وقتی تعمیرهای زیادی برای یک مسیر پیکربندی رخ دهد، OpenClaw فایلهای قدیمیتر
.clobbered.*را میچرخاند تا جدیدترین payload تعمیرشده همچنان در دسترس باشد.
Inspect and repair
CONFIG="$(openclaw config file)"ls -lt "$CONFIG".clobbered.* "$CONFIG".rejected.* 2>/dev/null | headdiff -u "$CONFIG" "$(ls -t "$CONFIG".clobbered.* 2>/dev/null | head -n 1)"openclaw config validateopenclaw doctorCommon signatures
.clobbered.*وجود دارد → doctor هنگام تعمیر پیکربندی فعال، یک ویرایش خارجی خراب را حفظ کرده است..rejected.*وجود دارد → یک نوشتن پیکربندی تحت مالکیت OpenClaw پیش از commit در بررسی schema یا clobber شکست خورده است.Config write rejected:→ نوشتن تلاش کرده shape لازم را حذف کند، فایل را بهطور شدید کوچک کند، یا پیکربندی نامعتبر را پایدار کند.config reload skipped (invalid config):→ یک ویرایش مستقیم در اعتبارسنجی شکست خورد و توسط Gateway در حال اجرا نادیده گرفته شد.Invalid config at ...→ راهاندازی پیش از بالا آمدن سرویسهای Gateway شکست خورد.missing-meta-vs-last-good،gateway-mode-missing-vs-last-good، یاsize-drop-vs-last-good:*→ یک نوشتن تحت مالکیت OpenClaw رد شد چون نسبت به پشتیبان آخرین نسخه سالم شناختهشده، فیلدها یا اندازه را از دست داده بود.Config last-known-good promotion skipped→ نامزد شامل placeholderهای secret ویرایششده مانند***بود.
Fix options
openclaw doctor --fixرا اجرا کنید تا doctor پیکربندی دارای پیشوند/خرابشده را تعمیر کند یا آخرین نسخه سالم شناختهشده را بازیابی کند.- فقط کلیدهای مورد نظر را از
.clobbered.*یا.rejected.*کپی کنید، سپس آنها را باopenclaw config setیاconfig.patchاعمال کنید. - پیش از راهاندازی مجدد،
openclaw config validateرا اجرا کنید. - اگر دستی ویرایش میکنید، پیکربندی کامل JSON5 را نگه دارید، نه فقط آبجکت جزئیای را که میخواستید تغییر دهید.
مرتبط:
هشدارهای probe برای Gateway
وقتی openclaw gateway probe به چیزی میرسد، اما همچنان یک بلوک هشدار چاپ میکند، از این بخش استفاده کنید.
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --ssh user@gateway-hostدنبال این موارد بگردید:
warnings[].codeوprimaryTargetIdدر خروجی JSON.- اینکه هشدار درباره fallback مربوط به SSH، چند Gateway، scopeهای گمشده، یا auth refهای حلنشده است.
امضاهای رایج:
SSH tunnel failed to start; falling back to direct probes.→ راهاندازی SSH شکست خورد، اما فرمان همچنان اهداف پیکربندیشده/loopback مستقیم را امتحان کرد.multiple reachable gateway identities detected→ Gatewayهای متمایز پاسخ دادند، یا OpenClaw نتوانست ثابت کند اهداف در دسترس همان Gateway هستند. یک تونل SSH، نشانی proxy، یا نشانی remote پیکربندیشده به همان Gateway، حتی وقتی پورتهای transport متفاوت باشند، بهعنوان یک Gateway با چند transport در نظر گرفته میشود.Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ اتصال برقرار شد، اما RPC جزئیات بهدلیل scope محدود شده است؛ هویت دستگاه را pair کنید یا از اعتبارنامههایی باoperator.readاستفاده کنید.Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ اتصال برقرار شد، اما مجموعه کامل RPCهای diagnostic timeout شد یا شکست خورد. این را بهعنوان یک Gateway در دسترس با diagnostics تنزلیافته در نظر بگیرید؛connect.okوconnect.rpcOkرا در خروجی--jsonمقایسه کنید.Capability: pairing-pendingیاgateway closed (1008): pairing required→ Gateway پاسخ داد، اما این client هنوز پیش از دسترسی عادی operator به pairing/approval نیاز دارد.- متن هشدار SecretRef حلنشده
gateway.auth.*/gateway.remote.*→ ماده auth در این مسیر فرمان برای هدف شکستخورده در دسترس نبود.
مرتبط:
کانال وصل است، اما پیامها جریان ندارند
اگر وضعیت کانال connected است اما جریان پیام قطع شده، روی policy، permissionها و قواعد تحویل مخصوص کانال تمرکز کنید.
openclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw status --deepopenclaw logs --followopenclaw config get channelsدنبال این موارد بگردید:
- policy مربوط به DM (
pairing،allowlist،open،disabled). - allowlist گروه و الزامات mention.
- permissionها/scopeهای گمشده API کانال.
امضاهای رایج:
mention required→ پیام بهدلیل policy مربوط به mention گروه نادیده گرفته شد.- ردپاهای
pairing/ pending approval → فرستنده تأیید نشده است. missing_scope،not_in_channel،Forbidden،401/403→ مشکل auth/permission کانال.
مرتبط:
تحویل Cron و Heartbeat
اگر Cron یا Heartbeat اجرا نشد یا تحویل داده نشد، ابتدا وضعیت scheduler و سپس هدف تحویل را بررسی کنید.
openclaw cron statusopenclaw cron listopenclaw cron runs --id <jobId> --limit 20openclaw system heartbeat lastopenclaw logs --followدنبال این موارد بگردید:
- Cron فعال باشد و بیدارباش بعدی موجود باشد.
- وضعیت تاریخچه اجرای کار (
ok،skipped،error). - دلایل رد شدن Heartbeat (
quiet-hours،requests-in-flight،cron-in-progress،lanes-busy،alerts-disabled،empty-heartbeat-file،no-tasks-due).
امضاهای رایج
cron: scheduler disabled; jobs will not run automatically→ cron غیرفعال است.cron: timer tick failed→ تیک زمانبند شکست خورد؛ خطاهای فایل/لاگ/زمان اجرا را بررسی کنید.heartbeat skippedباreason=quiet-hours→ خارج از بازه ساعتهای فعال.heartbeat skippedباreason=empty-heartbeat-file→HEARTBEAT.mdوجود دارد اما فقط شامل فضای خالی، کامنت، سربرگ، حصار، یا داربست چکلیست خالی است، بنابراین OpenClaw فراخوانی مدل را رد میکند.heartbeat skippedباreason=no-tasks-due→HEARTBEAT.mdشامل یک بلوکtasks:است، اما هیچکدام از کارها در این تیک موعد اجرا ندارند.heartbeat: unknown accountId→ شناسه حساب برای مقصد تحویل Heartbeat نامعتبر است.heartbeat skippedباreason=dm-blocked→ مقصد Heartbeat به یک مقصد سبک DM تبدیل شده، در حالی کهagents.defaults.heartbeat.directPolicy(یا بازنویسی مخصوص عامل) رویblockتنظیم شده است.
مرتبط:
Node جفت شده، ابزار شکست میخورد
اگر یک node جفت شده اما ابزارها شکست میخورند، وضعیت پیشزمینه، مجوز، و تأیید را جداگانه بررسی کنید.
openclaw nodes statusopenclaw nodes describe --node <idOrNameOrIp>openclaw approvals get --node <idOrNameOrIp>openclaw logs --followopenclaw statusدنبال این موارد بگردید:
- Node آنلاین با قابلیتهای مورد انتظار.
- اعطای مجوزهای سیستمعامل برای دوربین/میکروفون/مکان/صفحهنمایش.
- تأییدهای exec و وضعیت allowlist.
امضاهای رایج:
NODE_BACKGROUND_UNAVAILABLE→ برنامه node باید در پیشزمینه باشد.*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ مجوز سیستمعامل موجود نیست.SYSTEM_RUN_DENIED: approval required→ تأیید exec در انتظار است.SYSTEM_RUN_DENIED: allowlist miss→ فرمان توسط allowlist مسدود شده است.
مرتبط:
ابزار مرورگر شکست میخورد
وقتی کنشهای ابزار مرورگر شکست میخورند اما خود gateway سالم است، از این استفاده کنید.
openclaw browser statusopenclaw browser start --browser-profile openclawopenclaw browser profilesopenclaw logs --followopenclaw doctorدنبال این موارد بگردید:
- اینکه آیا
plugins.allowتنظیم شده و شاملbrowserهست یا نه. - مسیر اجرایی معتبر مرورگر.
- دسترسپذیری پروفایل CDP.
- دسترسپذیری Chrome محلی برای پروفایلهای
existing-session/user.
امضاهای Plugin / فایل اجرایی
unknown command "browser"یاunknown command 'browser'→ plugin مرورگر همراه، توسطplugins.allowحذف شده است.- ابزار مرورگر گمشده / در دسترس نیست در حالی که
browser.enabled=true→plugins.allowشاملbrowserنیست، بنابراین plugin هرگز بارگذاری نشده است. Failed to start Chrome CDP on port→ فرایند مرورگر اجرا نشد.browser.executablePath not found→ مسیر پیکربندیشده نامعتبر است.browser.cdpUrl must be http(s) or ws(s)→ URL پیکربندیشده CDP از یک scheme پشتیبانینشده مانندfile:یاftp:استفاده میکند.browser.cdpUrl has invalid port→ URL پیکربندیشده CDP پورت بد یا خارج از محدوده دارد.Playwright is not available in this gateway build; '<feature>' is unsupported.→ نصب فعلی gateway وابستگی اصلی زمان اجرای مرورگر را ندارد؛ OpenClaw را دوباره نصب یا بهروزرسانی کنید، سپس gateway را بازراهاندازی کنید. snapshotهای ARIA و screenshotهای پایه صفحه همچنان میتوانند کار کنند، اما ناوبری، snapshotهای AI، screenshotهای عنصر با selector CSS، و خروجی PDF همچنان در دسترس نمیمانند.
امضاهای Chrome MCP / نشست موجود
Could not find DevToolsActivePort for chrome→ نشست موجود Chrome MCP هنوز نتوانسته به data dir مرورگر انتخابشده متصل شود. صفحه inspect مرورگر را باز کنید، remote debugging را فعال کنید، مرورگر را باز نگه دارید، نخستین درخواست attach را تأیید کنید، سپس دوباره تلاش کنید. اگر وضعیت ورود به حساب لازم نیست، پروفایل مدیریتشدهopenclawرا ترجیح دهید.No Chrome tabs found for profile="user"→ پروفایل attach در Chrome MCP هیچ تب محلی باز Chrome ندارد.Remote CDP for profile "<name>" is not reachable→ endpoint ریموت CDP پیکربندیشده از میزبان gateway قابل دسترسی نیست.Browser attachOnly is enabled ... not reachableیاBrowser attachOnly is enabled and CDP websocket ... is not reachable→ پروفایل فقط-attach هیچ هدف قابل دسترسی ندارد، یا endpoint HTTP پاسخ داده اما WebSocket مربوط به CDP همچنان باز نشده است.
امضاهای عنصر / screenshot / upload
fullPage is not supported for element screenshots→ درخواست screenshot،--full-pageرا با--refیا--elementترکیب کرده است.element screenshots are not supported for existing-session profiles; use ref from snapshot.→ فراخوانیهای screenshot در Chrome MCP /existing-sessionباید از capture صفحه یا--refمربوط به snapshot استفاده کنند، نه--elementدر CSS.existing-session file uploads do not support element selectors; use ref/inputRef.→ hookهای upload در Chrome MCP به refهای snapshot نیاز دارند، نه selectorهای CSS.existing-session file uploads currently support one file at a time.→ روی پروفایلهای Chrome MCP در هر فراخوانی یک upload ارسال کنید.existing-session dialog handling does not support timeoutMs.→ hookهای dialog روی پروفایلهای Chrome MCP از بازنویسی timeout پشتیبانی نمیکنند.existing-session type does not support timeoutMs overrides.→ برایact:typeروی پروفایلهایprofile="user"/ نشست موجود Chrome MCP،timeoutMsرا حذف کنید، یا وقتی timeout سفارشی لازم است از یک پروفایل مرورگر مدیریتشده/CDP استفاده کنید.existing-session evaluate does not support timeoutMs overrides.→ برایact:evaluateروی پروفایلهایprofile="user"/ نشست موجود Chrome MCP،timeoutMsرا حذف کنید، یا وقتی timeout سفارشی لازم است از یک پروفایل مرورگر مدیریتشده/CDP استفاده کنید.response body is not supported for existing-session profiles yet.→responsebodyهمچنان به مرورگر مدیریتشده یا پروفایل CDP خام نیاز دارد.- بازنویسیهای کهنه viewport / dark-mode / locale / offline روی پروفایلهای فقط-attach یا CDP ریموت → برای بستن نشست کنترل فعال و آزاد کردن وضعیت emulation در Playwright/CDP بدون بازراهاندازی کل gateway،
openclaw browser stop --browser-profile <name>را اجرا کنید.
مرتبط:
اگر ارتقا دادید و چیزی ناگهان خراب شد
بیشتر خرابیهای پس از ارتقا ناشی از drift پیکربندی یا اعمال شدن پیشفرضهای سختگیرانهتر است.
۱. رفتار بازنویسی احراز هویت و URL تغییر کرده است
openclaw gateway statusopenclaw config get gateway.modeopenclaw config get gateway.remote.urlopenclaw config get gateway.auth.modeچه چیزی را بررسی کنید:
- اگر
gateway.mode=remoteباشد، فراخوانیهای CLI ممکن است remote را هدف بگیرند در حالی که سرویس محلی شما سالم است. - فراخوانیهای صریح
--urlبه credentials ذخیرهشده fallback نمیکنند.
امضاهای رایج:
gateway connect failed:→ هدف URL اشتباه است.unauthorized→ endpoint قابل دسترسی است اما احراز هویت اشتباه است.
۲. محافظهای bind و auth سختگیرانهتر هستند
openclaw config get gateway.bindopenclaw config get gateway.auth.modeopenclaw config get gateway.auth.tokenopenclaw gateway statusopenclaw logs --followچه چیزی را بررسی کنید:
- bindهای غیر-loopback (
lan،tailnet،custom) به یک مسیر معتبر auth برای gateway نیاز دارند: احراز هویت با توکن/گذرواژه مشترک، یا یک استقرارtrusted-proxyغیر-loopback که درست پیکربندی شده باشد. - کلیدهای قدیمی مانند
gateway.tokenجایگزینgateway.auth.tokenنمیشوند.
امضاهای رایج:
refusing to bind gateway ... without auth→ bind غیر-loopback بدون مسیر معتبر auth برای gateway.Connectivity probe: failedدر حالی که runtime در حال اجراست → gateway زنده است اما با auth/url فعلی قابل دسترسی نیست.
۳. وضعیت جفتسازی و هویت دستگاه تغییر کرده است
openclaw devices listopenclaw pairing list --channel <channel> [--account <id>]openclaw logs --followopenclaw doctorچه چیزی را بررسی کنید:
- تأییدهای در انتظار دستگاه برای داشبورد/nodes.
- تأییدهای در انتظار جفتسازی DM پس از تغییرات سیاست یا هویت.
امضاهای رایج:
device identity required→ احراز هویت دستگاه برآورده نشده است.pairing required→ فرستنده/دستگاه باید تأیید شود.
اگر پیکربندی سرویس و runtime پس از بررسیها همچنان با هم اختلاف دارند، metadata سرویس را از همان دایرکتوری profile/state دوباره نصب کنید:
openclaw gateway install --forceopenclaw gateway restartمرتبط: