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را نمایش میدهد.
نصبهای split brain و محافظ config جدیدتر
وقتی Gateway service پس از بهروزرسانی بهطور غیرمنتظره متوقف میشود، یا logها نشان میدهند که یک باینری openclaw قدیمیتر از نسخهای است که آخرین بار openclaw.json را نوشته، از این بخش استفاده کنید.
OpenClaw نوشتن config را با meta.lastTouchedVersion مهر میکند. دستورهای فقطخواندنی همچنان میتوانند config نوشتهشده توسط OpenClaw جدیدتر را بررسی کنند، اما mutationهای process و service از ادامه با باینری قدیمیتر خودداری میکنند. اقدامهای مسدودشده شامل start، stop، restart، uninstall برای gateway service، reinstall اجباری service، startup Gateway در service-mode، و پاکسازی پورت با gateway --force هستند.
which openclawopenclaw --versionopenclaw gateway status --deepopenclaw config get meta.lastTouchedVersionFix PATH
PATH را اصلاح کنید تا openclaw به نصب جدیدتر resolve شود، سپس اقدام را دوباره اجرا کنید.
Reinstall the gateway service
Gateway service مورد نظر را از نصب جدیدتر دوباره نصب کنید:
openclaw gateway install --forceopenclaw gateway restartRemove stale wrappers
بستهٔ سیستمی منسوخ یا wrapper entryهای قدیمی را که هنوز به باینری قدیمی openclaw اشاره میکنند حذف کنید.
symlink مهارت بهدلیل خروج از مسیر رد شد
وقتی logها شامل این مورد هستند از این بخش استفاده کنید:
Skipping escaped skill path outside its configured root: ... reason=symlink-escapeOpenClaw هر ریشهٔ مهارت را بهعنوان مرز containment در نظر میگیرد. یک symlink زیر
~/.agents/skills، <workspace>/.agents/skills، <workspace>/skills یا
~/.openclaw/skills وقتی رد میشود که هدف واقعی آن بیرون از آن root resolve شود،
مگر اینکه هدف بهصراحت trusted باشد.
لینک را بررسی کنید:
ls -l ~/.agents/skills/<name>realpath ~/.agents/skills/<name>openclaw config get skills.loadاگر هدف عمدی است، هم ریشهٔ مستقیم مهارت و هم هدف symlink مجاز را پیکربندی کنید:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}سپس یک session جدید شروع کنید یا منتظر بمانید watcher مربوط به Skills refresh شود. اگر process در حال اجرا قبل از تغییر config شروع شده است، Gateway را restart کنید.
از هدفهای گسترده مانند ~، / یا کل یک پوشهٔ پروژهٔ syncشده استفاده نکنید.
allowSymlinkTargets را به ریشهٔ واقعی مهارت که شامل دایرکتوریهای trusted
SKILL.md است محدود نگه دارید.
مرتبط:
Anthropic 429 برای context طولانی به استفادهٔ اضافی نیاز دارد
وقتی logها/errorها شامل این مورد هستند استفاده کنید: HTTP 429: rate_limit_error: Extra usage is required for long context requests.
openclaw logs --followopenclaw models statusopenclaw config get agents.defaults.modelsدنبال این موارد بگردید:
- مدل انتخابشدهٔ Anthropic Opus/Sonnet دارای
params.context1m: trueاست. - credential فعلی Anthropic واجد شرایط استفاده از long-context نیست.
- درخواستها فقط در sessionها/model runهای طولانی که به مسیر beta یکمیلیونی نیاز دارند fail میشوند.
گزینههای رفع مشکل:
Disable context1m
context1m را برای آن مدل غیرفعال کنید تا به پنجرهٔ context عادی برگردد.
Use an eligible credential
از credential متعلق به Anthropic که واجد شرایط درخواستهای long-context است استفاده کنید، یا به Anthropic API key تغییر دهید.
Configure fallback models
fallback modelها را پیکربندی کنید تا وقتی درخواستهای long-context Anthropic رد میشوند، runها ادامه پیدا کنند.
مرتبط:
بکاند محلی سازگار با OpenAI probeهای مستقیم را پاس میکند اما اجرای agentها fail میشود
وقتی این شرایط وجود دارد استفاده کنید:
curl ... /v1/modelsکار میکند- فراخوانیهای کوچک مستقیم
/v1/chat/completionsکار میکنند - اجرای مدل OpenClaw فقط در turnهای عادی agent fail میشود
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دنبال این موارد بگردید:
- فراخوانیهای کوچک مستقیم موفق میشوند، اما runهای OpenClaw فقط روی promptهای بزرگتر fail میشوند
- خطاهای
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 که فقط با شمار tokenهای prompt بزرگتر یا promptهای کامل runtime agent ظاهر میشوند
Common signatures
model_not_foundبا یک server محلی سبک MLX/vLLM → بررسی کنیدbaseUrlشامل/v1باشد، برای backendهای/v1/chat/completionsمقدارapiبرابر"openai-completions"باشد، وmodels.providers.<provider>.models[].idهمان id محلی bare provider باشد. آن را یکبار با prefix provider انتخاب کنید، برای مثالmlx/mlx-community/Qwen3-30B-A3B-6bit؛ catalog entry را بهشکل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 keyهای مجاز مثل["role","content"]→ backend metadata بازپخش سبک OpenAI را روی پیامهای Chat Completions رد میکند. رفع مشکل:models.providers.<provider>.models[].compat.strictMessageKeys: trueرا تنظیم کنید.incomplete turn detected ... stopReason=stop payloads=0→ backend درخواست Chat Completions را کامل کرده اما برای آن turn هیچ متن assistant قابلمشاهده برای کاربر برنگردانده است. OpenClaw turnهای خالی سازگار با OpenAI را که replay-safe هستند یکبار retry میکند؛ failureهای پایدار معمولاً یعنی backend محتوای خالی/غیرمتنی منتشر میکند یا متن final-answer را suppress میکند.- درخواستهای کوچک مستقیم موفق میشوند، اما runهای agent در OpenClaw با crashهای backend/model fail میشوند (برای مثال Gemma روی بعضی buildهای
inferrs) → transport در OpenClaw احتمالاً از قبل درست است؛ backend روی شکل prompt بزرگتر runtime agent fail میشود. - failureها پس از غیرفعالکردن toolها کمتر میشوند اما از بین نمیروند → schemaهای tool بخشی از فشار بودند، اما مشکل باقیمانده همچنان ظرفیت upstream model/server یا یک bug در backend است.
Fix options
- برای backendهای Chat Completions فقط-string،
compat.requiresStringContent: trueرا تنظیم کنید. - برای backendهای سختگیر Chat Completions که فقط
roleوcontentرا روی هر message میپذیرند،compat.strictMessageKeys: trueرا تنظیم کنید. - برای model/backendهایی که نمیتوانند سطح tool schema در OpenClaw را قابلاعتماد handle کنند،
compat.supportsTools: falseرا تنظیم کنید. - تا جای ممکن فشار prompt را کم کنید: workspace bootstrap کوچکتر، تاریخچهٔ session کوتاهتر، مدل محلی سبکتر، یا backendی با پشتیبانی long-context قویتر.
- اگر درخواستهای کوچک مستقیم همچنان pass میشوند اما turnهای agent در OpenClaw هنوز داخل backend crash میکنند، آن را محدودیت upstream server/model در نظر بگیرید و با شکل payload پذیرفتهشده آنجا یک repro ثبت کنید.
مرتبط:
بدون پاسخ
اگر channelها فعالاند اما چیزی پاسخ نمیدهد، قبل از reconnect کردن هر چیزی routing و policy را بررسی کنید.
openclaw statusopenclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw config get channelsopenclaw logs --followدنبال این موارد بگردید:
- Pairing برای فرستندههای DM در حالت pending است.
- gating مربوط به mention در گروه (
requireMention،mentionPatterns). - ناهماهنگیهای allowlist برای channel/group.
امضاهای رایج:
drop guild message (mention required→ پیام گروه تا زمان mention نادیده گرفته میشود.pairing request→ فرستنده به approval نیاز دارد.blocked/allowlist→ فرستنده/channel توسط policy فیلتر شده است.
مرتبط:
اتصالپذیری UI کنترل داشبورد
وقتی UI داشبورد/کنترل وصل نمیشود، URL، auth mode و فرضهای secure context را اعتبارسنجی کنید.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --jsonدنبال این موارد بگردید:
- URL درست برای probe و URL درست برای dashboard.
- ناهماهنگی auth mode/token بین client و Gateway.
- استفاده از HTTP در جایی که device identity لازم است.
Connect / auth signatures
device identity required→ context غیرامن یا device auth مفقود.origin not allowed→Originمرورگر درgateway.controlUi.allowedOriginsنیست (یا از یک browser origin غیر-loopback بدون allowlist صریح وصل میشوید).device nonce required/device nonce mismatch→ client جریان device auth مبتنی بر challenge را کامل نمیکند (connect.challenge+device.nonce).device signature invalid/device signature expired→ client payload اشتباه (یا timestamp قدیمی) را برای handshake فعلی sign کرده است.AUTH_TOKEN_MISMATCHباcanRetryWithDeviceToken=true→ client میتواند با device token ذخیرهشده یک retry trusted انجام دهد.- آن retry با cached-token از scope set ذخیرهشده همراه با paired device token استفاده میکند. callerهای دارای
deviceTokenصریح /scopesصریح، scope set درخواستی خود را نگه میدارند. AUTH_SCOPE_MISMATCH→ device token شناخته شد، اما scopeهای approveشدهٔ آن این درخواست connect را پوشش نمیدهند؛ بهجای rotate کردن shared gateway token، دوباره pair کنید یا قرارداد scope درخواستی را approve کنید.- خارج از آن مسیر retry، precedence احراز هویت connect ابتدا shared token/password صریح است، سپس
deviceTokenصریح، سپس device token ذخیرهشده، سپس bootstrap token. - در مسیر async Tailscale Serve Control UI، تلاشهای failشده برای همان
{scope, ip}پیش از اینکه limiter failure را ثبت کند serialized میشوند. بنابراین دو retry بد همزمان از همان client میتوانند در تلاش دوم بهجای دو mismatch ساده،retry laterنشان دهند. too many failed authentication attempts (retry later)از یک client مرورگر-origin روی loopback → failureهای تکراری از همانOriginنرمالشده موقتاً lock out میشوند؛ یک localhost origin دیگر از bucket جداگانه استفاده میکند.- تکرار
unauthorizedپس از آن retry → shared token/device token drift؛ config مربوط به token را refresh کنید و در صورت نیاز device token را دوباره approve/rotate کنید. gateway connect failed:→ host/port/url target اشتباه.
نقشهٔ سریع کدهای جزئیات auth
از error.details.code در پاسخ connect ناموفق برای انتخاب اقدام بعدی استفاده کنید:
| کد جزئیات | معنی | اقدام پیشنهادی |
|---|---|---|
AUTH_TOKEN_MISSING |
کلاینت توکن مشترک الزامی را ارسال نکرد. | توکن را در کلاینت وارد/تنظیم کنید و دوباره تلاش کنید. برای مسیرهای داشبورد: openclaw config get gateway.auth.token سپس آن را در تنظیمات رابط کاربری کنترل وارد کنید. |
AUTH_TOKEN_MISMATCH |
توکن مشترک با توکن احراز هویت Gateway مطابقت نداشت. | اگر canRetryWithDeviceToken=true است، اجازه یک تلاش دوباره قابلاعتماد را بدهید. تلاشهای دوباره با توکن کششده از scopeهای تأییدشده ذخیرهشده استفاده میکنند؛ فراخوانهای صریح deviceToken / scopes scopeهای درخواستی را نگه میدارند. اگر همچنان ناموفق بود، چکلیست بازیابی انحراف توکن را اجرا کنید. |
AUTH_DEVICE_TOKEN_MISMATCH |
توکن کششده هر دستگاه قدیمی یا لغوشده است. | با استفاده از CLI دستگاهها، توکن دستگاه را چرخش دهید/دوباره تأیید کنید، سپس دوباره متصل شوید. |
AUTH_SCOPE_MISMATCH |
توکن دستگاه معتبر است، اما نقش/scopeهای تأییدشده آن این درخواست اتصال را پوشش نمیدهد. | دستگاه را دوباره جفت کنید یا قرارداد scope درخواستی را تأیید کنید؛ این را بهعنوان انحراف توکن مشترک تلقی نکنید. |
PAIRING_REQUIRED |
هویت دستگاه به تأیید نیاز دارد. error.details.reason را برای not-paired، scope-upgrade، role-upgrade، یا metadata-upgrade بررسی کنید و در صورت وجود از requestId / remediationHint استفاده کنید. |
درخواست در انتظار را تأیید کنید: openclaw devices list سپس openclaw devices approve <requestId>. ارتقاهای scope/نقش پس از بررسی دسترسی درخواستی از همین جریان استفاده میکنند. |
بررسی مهاجرت احراز هویت دستگاه نسخه ۲:
openclaw --versionopenclaw doctoropenclaw gateway statusاگر لاگها خطاهای nonce/signature را نشان میدهند، کلاینت متصلشونده را بهروزرسانی و آن را تأیید کنید:
منتظر connect.challenge بمانید
کلاینت منتظر connect.challenge صادرشده از سوی Gateway میماند.
payload را امضا کنید
کلاینت payload وابسته به challenge را امضا میکند.
nonce دستگاه را ارسال کنید
کلاینت connect.params.device.nonce را با همان nonce مربوط به challenge ارسال میکند.
اگر openclaw devices rotate / revoke / remove بهطور غیرمنتظره رد شد:
- نشستهای توکن دستگاه جفتشده فقط میتوانند دستگاه خودشان را مدیریت کنند، مگر اینکه فراخوان همچنین
operator.adminداشته باشد openclaw devices rotate --scope ...فقط میتواند scopeهای اپراتوری را درخواست کند که نشست فراخوان از قبل دارد
مرتبط:
- پیکربندی (حالتهای احراز هویت Gateway)
- رابط کاربری کنترل
- دستگاهها
- دسترسی راه دور
- احراز هویت پراکسی مورد اعتماد
سرویس Gateway در حال اجرا نیست
زمانی از این استفاده کنید که سرویس نصب شده اما فرایند پایدار نمیماند.
openclaw gateway statusopenclaw statusopenclaw logs --followopenclaw doctoropenclaw gateway status --deep # also scan system-level servicesدنبال این موارد بگردید:
Runtime: stoppedهمراه با راهنماییهای خروج.- عدم تطابق پیکربندی سرویس (
Config (cli)در برابرConfig (service)). - تداخلهای پورت/listener.
- نصبهای اضافی 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→ اتصال non-loopback بدون مسیر احراز هویت معتبر Gateway (توکن/گذرواژه، یا trusted-proxy در جایی که پیکربندی شده است).another gateway instance is already listening/EADDRINUSE→ تداخل پورت.Other gateway-like services detected (best effort)→ واحدهای قدیمی یا موازی launchd/systemd/schtasks وجود دارند. بیشتر تنظیمات باید برای هر ماشین یک Gateway نگه دارند؛ اگر واقعاً به بیش از یکی نیاز دارید، پورتها + پیکربندی/وضعیت/workspace را جدا کنید. /gateway#multiple-gateways-same-host را ببینید.System-level OpenClaw gateway service detectedاز doctor → یک واحد سیستمی systemd وجود دارد در حالی که سرویس سطح کاربر موجود نیست. پیش از اجازه دادن به doctor برای نصب سرویس کاربر، مورد تکراری را حذف یا غیرفعال کنید، یا اگر واحد سیستمی supervisor مورد نظر است،OPENCLAW_SERVICE_REPAIR_POLICY=externalرا تنظیم کنید.Gateway service port does not match current gateway config→ supervisor نصبشده همچنان--portقدیمی را پین میکند.openclaw doctor --fixیاopenclaw gateway install --forceرا اجرا کنید، سپس سرویس Gateway را دوباره راهاندازی کنید.
مرتبط:
Gateway پیکربندی نامعتبر را رد کرد
زمانی از این استفاده کنید که راهاندازی Gateway با Invalid config شکست میخورد یا لاگهای بارگذاری مجدد داغ میگویند
یک ویرایش نامعتبر را رد کرده است.
openclaw logs --followopenclaw config fileopenclaw config validateopenclaw doctorدنبال این موارد بگردید:
Invalid config at ...config reload skipped (invalid config): ...Config write rejected: ...- یک فایل زماندار
openclaw.json.rejected.*کنار پیکربندی فعال - یک فایل زماندار
openclaw.json.clobbered.*اگرdoctor --fixیک ویرایش مستقیم خراب را تعمیر کرده باشد
چه اتفاقی افتاد
- پیکربندی هنگام راهاندازی، بارگذاری مجدد داغ، یا نوشتن تحت مالکیت OpenClaw اعتبارسنجی نشد.
- راهاندازی Gateway بهجای بازنویسی
openclaw.jsonبهصورت بسته شکست میخورد. - بارگذاری مجدد داغ ویرایشهای خارجی نامعتبر را رد میکند و پیکربندی runtime فعلی را فعال نگه میدارد.
- نوشتنهای تحت مالکیت OpenClaw پیش از commit، payloadهای نامعتبر/مخرب را رد میکنند و
.rejected.*را ذخیره میکنند. openclaw doctor --fixمالک تعمیر است. میتواند پیشوندهای غیر JSON را حذف کند یا آخرین نسخه سالم شناختهشده را بازیابی کند و در همین حال payload ردشده را بهصورت.clobbered.*حفظ کند.
بررسی و تعمیر
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 doctorامضاهای رایج
.clobbered.*وجود دارد → doctor یک ویرایش خارجی خراب را هنگام تعمیر پیکربندی فعال حفظ کرده است..rejected.*وجود دارد → یک نوشتن پیکربندی تحت مالکیت OpenClaw پیش از commit در بررسیهای schema یا clobber شکست خورده است.Config write rejected:→ نوشتن تلاش کرده شکل الزامی را حذف کند، اندازه فایل را بهشدت کاهش دهد، یا پیکربندی نامعتبر را پایدار کند.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→ candidate شامل placeholderهای محرمانه redacted مانند***بوده است.
گزینههای رفع
openclaw doctor --fixرا اجرا کنید تا doctor پیکربندی پیشونددار/clobbered را تعمیر کند یا آخرین نسخه سالم شناختهشده را بازیابی کند.- فقط کلیدهای مورد نظر را از
.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های resolveنشده است.
امضاهای رایج:
SSH tunnel failed to start; falling back to direct probes.→ راهاندازی SSH شکست خورد، اما فرمان همچنان targetهای مستقیم پیکربندیشده/loopback را امتحان کرد.multiple reachable gateways detected→ بیش از یک target پاسخ داد. معمولاً این یعنی یک تنظیم چند-Gateway عمدی یا listenerهای قدیمی/تکراری.Read-probe diagnostics are limited by gateway scopes (missing operator.read)→ اتصال کار کرد، اما RPC جزئیات به scope محدود است؛ هویت دستگاه را جفت کنید یا از credentials باoperator.readاستفاده کنید.Gateway accepted the WebSocket connection, but follow-up read diagnostics failed→ اتصال کار کرد، اما مجموعه کامل RPC تشخیصی timeout شد یا شکست خورد. این را بهعنوان Gateway قابلدسترسی با تشخیصهای تنزلیافته تلقی کنید؛connect.okوconnect.rpcOkرا در خروجی--jsonمقایسه کنید.Capability: pairing-pendingیاgateway closed (1008): pairing required→ Gateway پاسخ داد، اما این کلاینت هنوز پیش از دسترسی عادی اپراتور به pairing/approval نیاز دارد.- متن هشدار SecretRef مربوط به
gateway.auth.*/gateway.remote.*resolveنشده → مواد احراز هویت در این مسیر فرمان برای target شکستخورده در دسترس نبود.
مرتبط:
کانال متصل است، پیامها جریان ندارند
اگر وضعیت کانال متصل است اما جریان پیام متوقف شده، روی خطمشی، مجوزها و قواعد تحویل ویژهٔ کانال تمرکز کنید.
openclaw channels status --probeopenclaw pairing list --channel <channel> [--account <id>]openclaw status --deepopenclaw logs --followopenclaw config get channelsبه دنبال این موارد بگردید:
- خطمشی DM (
pairing،allowlist،open،disabled). - فهرست مجاز گروه و الزامات منشن.
- مجوزها/دامنههای API کانال که وجود ندارند.
امضاهای رایج:
mention required→ پیام بهدلیل خطمشی منشن گروه نادیده گرفته شد.pairing/ ردپاهای تأیید در انتظار → فرستنده تأیید نشده است.missing_scope،not_in_channel،Forbidden،401/403→ مشکل احراز هویت/مجوزهای کانال.
مرتبط:
تحویل Cron و Heartbeat
اگر Cron یا Heartbeat اجرا نشد یا تحویل نداد، ابتدا وضعیت زمانبند را بررسی کنید، سپس مقصد تحویل را.
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وجود دارد اما فقط خطهای خالی / سرآیندهای markdown دارد، بنابراین 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 و وضعیت فهرست مجاز.
امضاهای رایج:
NODE_BACKGROUND_UNAVAILABLE→ برنامهٔ Node باید در پیشزمینه باشد.*_PERMISSION_REQUIRED/LOCATION_PERMISSION_REQUIRED→ مجوز سیستمعامل وجود ندارد.SYSTEM_RUN_DENIED: approval required→ تأیید exec در انتظار است.SYSTEM_RUN_DENIED: allowlist miss→ فرمان توسط فهرست مجاز مسدود شده است.
مرتبط:
ابزار مرورگر شکست میخورد
وقتی کنشهای ابزار مرورگر شکست میخورند، حتی با اینکه خود 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 از طرح پشتیبانینشدهای مثلfile:یاftp:استفاده میکند.browser.cdpUrl has invalid port→ URL پیکربندیشدهٔ CDP پورت بد یا خارج از محدوده دارد.Playwright is not available in this gateway build; '<feature>' is unsupported.→ نصب فعلی Gateway وابستگی زمان اجرای اصلی مرورگر را ندارد؛ OpenClaw را دوباره نصب یا بهروزرسانی کنید، سپس Gateway را بازراهاندازی کنید. اسنپشاتهای ARIA و نماگرفتهای پایهٔ صفحه هنوز میتوانند کار کنند، اما ناوبری، اسنپشاتهای AI، نماگرفتهای عنصر با گزینشگر CSS، و خروجی PDF در دسترس نمیمانند.
امضاهای Chrome MCP / existing-session
Could not find DevToolsActivePort for chrome→ existing-session در Chrome MCP هنوز نتوانست به دایرکتوری دادهٔ مرورگر انتخابشده متصل شود. صفحهٔ inspect مرورگر را باز کنید، اشکالزدایی راهدور را فعال کنید، مرورگر را باز نگه دارید، درخواست اتصال نخست را تأیید کنید، سپس دوباره تلاش کنید. اگر وضعیت ورود به حساب لازم نیست، پروفایل مدیریتشدهٔopenclawرا ترجیح دهید.No Chrome tabs found for profile="user"→ پروفایل اتصال Chrome MCP هیچ زبانهٔ محلی باز Chrome ندارد.Remote CDP for profile "<name>" is not reachable→ نقطهٔ پایانی CDP راهدور پیکربندیشده از میزبان Gateway قابل دسترسی نیست.Browser attachOnly is enabled ... not reachableیاBrowser attachOnly is enabled and CDP websocket ... is not reachable→ پروفایل فقط-اتصال هدف قابل دسترسی ندارد، یا نقطهٔ پایانی HTTP پاسخ داده اما WebSocket CDP همچنان باز نشده است.
امضاهای عنصر / نماگرفت / بارگذاری
fullPage is not supported for element screenshots→ درخواست نماگرفت،--full-pageرا با--refیا--elementترکیب کرده است.element screenshots are not supported for existing-session profiles; use ref from snapshot.→ فراخوانیهای نماگرفت Chrome MCP /existing-sessionباید از گرفتن صفحه یا--refیک اسنپشات استفاده کنند، نه--elementدر CSS.existing-session file uploads do not support element selectors; use ref/inputRef.→ قلابهای بارگذاری Chrome MCP به ارجاعهای اسنپشات نیاز دارند، نه گزینشگرهای CSS.existing-session file uploads currently support one file at a time.→ روی پروفایلهای Chrome MCP در هر فراخوانی یک بارگذاری بفرستید.existing-session dialog handling does not support timeoutMs.→ قلابهای گفتوگو روی پروفایلهای Chrome MCP از بازنویسی مهلت زمانی پشتیبانی نمیکنند.existing-session type does not support timeoutMs overrides.→ برایact:typeروی پروفایلهایprofile="user"/ existing-session در Chrome MCP،timeoutMsرا حذف کنید، یا وقتی مهلت زمانی سفارشی لازم است از پروفایل مرورگر مدیریتشده/CDP استفاده کنید.existing-session evaluate does not support timeoutMs overrides.→ برایact:evaluateروی پروفایلهایprofile="user"/ existing-session در Chrome MCP،timeoutMsرا حذف کنید، یا وقتی مهلت زمانی سفارشی لازم است از پروفایل مرورگر مدیریتشده/CDP استفاده کنید.response body is not supported for existing-session profiles yet.→responsebodyهمچنان به مرورگر مدیریتشده یا پروفایل CDP خام نیاز دارد.- بازنویسیهای کهنهٔ viewport / حالت تیره / locale / آفلاین روی پروفایلهای فقط-اتصال یا CDP راهدور →
openclaw browser stop --browser-profile <name>را اجرا کنید تا نشست کنترل فعال بسته شود و وضعیت شبیهسازی Playwright/CDP بدون بازراهاندازی کل Gateway آزاد شود.
مرتبط:
اگر ارتقا دادید و چیزی ناگهان خراب شد
بیشتر خرابیهای پس از ارتقا ناشی از رانش پیکربندی یا پیشفرضهای سختگیرانهتری است که اکنون اعمال میشوند.
۱. رفتار بازنویسی احراز هویت و URL تغییر کرده است
openclaw gateway statusopenclaw config get gateway.modeopenclaw config get gateway.remote.urlopenclaw config get gateway.auth.modeچه چیزی را بررسی کنید:
- اگر
gateway.mode=remoteباشد، فراخوانیهای CLI ممکن است راهدور را هدف بگیرند، درحالیکه سرویس محلی شما سالم است. - فراخوانیهای صریح
--urlبه اعتبارنامههای ذخیرهشده برنمیگردند.
امضاهای رایج:
gateway connect failed:→ هدف URL اشتباه است.unauthorized→ نقطهٔ پایانی قابل دسترسی است اما احراز هویت اشتباه است.
۲. حفاظهای bind و احراز هویت سختگیرانهتر شدهاند
openclaw config get gateway.bindopenclaw config get gateway.auth.modeopenclaw config get gateway.auth.tokenopenclaw gateway statusopenclaw logs --followچه چیزی را بررسی کنید:
- bindهای غیر local loopback (
lan،tailnet،custom) به یک مسیر معتبر احراز هویت Gateway نیاز دارند: احراز هویت با توکن/رمز عبور مشترک، یا استقرارtrusted-proxyغیر local loopback که درست پیکربندی شده باشد. - کلیدهای قدیمی مثل
gateway.tokenجایگزینgateway.auth.tokenنمیشوند.
امضاهای رایج:
refusing to bind gateway ... without auth→ bind غیر local loopback بدون مسیر معتبر احراز هویت Gateway.Connectivity probe: failedدرحالیکه زمان اجرا در حال اجراست → Gateway زنده است اما با احراز هویت/URL فعلی در دسترس نیست.
۳. وضعیت جفتسازی و هویت دستگاه تغییر کرده است
openclaw devices listopenclaw pairing list --channel <channel> [--account <id>]openclaw logs --followopenclaw doctorچه چیزی را بررسی کنید:
- تأییدهای دستگاه در انتظار برای داشبورد/Nodeها.
- تأییدهای جفتسازی DM در انتظار پس از تغییرات خطمشی یا هویت.
امضاهای رایج:
device identity required→ احراز هویت دستگاه برآورده نشده است.pairing required→ فرستنده/دستگاه باید تأیید شود.
اگر پیکربندی سرویس و زمان اجرا پس از بررسیها همچنان ناسازگار بودند، فرادادهٔ سرویس را از همان دایرکتوری پروفایل/وضعیت دوباره نصب کنید:
openclaw gateway install --forceopenclaw gateway restartمرتبط: