Diagnostics
متغیرهای محیطی
OpenClaw متغیرهای محیطی را از چند منبع میخواند. قاعده این است: هرگز مقدارهای موجود را بازنویسی نکنید.
اولویت (بالاترین → پایینترین)
- محیط فرایند (چیزی که فرایند Gateway از قبل از شل/daemon والد دارد).
.envدر دایرکتوری کاری فعلی (پیشفرض dotenv؛ بازنویسی نمیکند)..envسراسری در~/.openclaw/.env(یا همان$OPENCLAW_STATE_DIR/.env؛ بازنویسی نمیکند).- بلوک
envپیکربندی در~/.openclaw/openclaw.json(فقط اگر موجود نباشد اعمال میشود). - درونریزی اختیاری login-shell (
env.shellEnv.enabledیاOPENCLAW_LOAD_SHELL_ENV=1)، فقط برای کلیدهای مورد انتظارِ ناموجود اعمال میشود.
در نصبهای تازه Ubuntu که از دایرکتوری وضعیت پیشفرض استفاده میکنند، OpenClaw همچنین ~/.config/openclaw/gateway.env را پس از .env سراسری بهعنوان fallback سازگاری در نظر میگیرد. اگر هر دو فایل وجود داشته باشند و با هم متفاوت باشند، OpenClaw مقدار ~/.openclaw/.env را نگه میدارد و یک هشدار چاپ میکند.
اگر فایل پیکربندی کاملاً وجود نداشته باشد، مرحله 4 رد میشود؛ درونریزی شل همچنان اگر فعال باشد اجرا میشود.
بلوک env پیکربندی
دو روش معادل برای تنظیم متغیرهای محیطی درونخطی (هر دو بدون بازنویسی هستند):
{
env: {
OPENROUTER_API_KEY: "sk-or-...",
vars: {
GROQ_API_KEY: "gsk-...",
},
},
}
درونریزی محیط شل
env.shellEnv شل ورود شما را اجرا میکند و فقط کلیدهای مورد انتظارِ ناموجود را درونریزی میکند:
{
env: {
shellEnv: {
enabled: true,
timeoutMs: 15000,
},
},
}
معادلهای متغیر محیطی:
OPENCLAW_LOAD_SHELL_ENV=1OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000
متغیرهای محیطی تزریقشده در زمان اجرا
OpenClaw همچنین نشانگرهای زمینه را به فرایندهای فرزندِ ایجادشده تزریق میکند:
OPENCLAW_SHELL=exec: برای فرمانهایی تنظیم میشود که از طریق ابزارexecاجرا میشوند.OPENCLAW_SHELL=acp: برای ایجاد فرایندهای backend زمان اجرای ACP تنظیم میشود (برای مثالacpx).OPENCLAW_SHELL=acp-client: برایopenclaw acp clientهنگامی تنظیم میشود که فرایند پل ACP را ایجاد میکند.OPENCLAW_SHELL=tui-local: برای فرمانهای شل!در TUI محلی تنظیم میشود.
اینها نشانگرهای زمان اجرا هستند (نه پیکربندی الزامی کاربر). میتوان از آنها در منطق شل/پروفایل برای اعمال قواعد وابسته به زمینه استفاده کرد.
متغیرهای محیطی UI
OPENCLAW_THEME=light: هنگامی که ترمینال شما پسزمینه روشن دارد، پالت روشن TUI را اجباری میکند.OPENCLAW_THEME=dark: پالت تیره TUI را اجباری میکند.COLORFGBG: اگر ترمینال شما آن را صادر کند، OpenClaw از راهنمای رنگ پسزمینه برای انتخاب خودکار پالت TUI استفاده میکند.
جایگزینی متغیر محیطی در پیکربندی
میتوانید با استفاده از نحو ${VAR_NAME} مستقیماً در مقدارهای رشتهای پیکربندی به متغیرهای محیطی ارجاع دهید:
{
models: {
providers: {
"vercel-gateway": {
apiKey: "${VERCEL_GATEWAY_API_KEY}",
},
},
},
}
برای جزئیات کامل، پیکربندی: جایگزینی متغیر محیطی را ببینید.
ارجاعهای محرمانه در برابر رشتههای ${ENV}
OpenClaw از دو الگوی مبتنی بر محیط پشتیبانی میکند:
- جایگزینی رشتهای
${VAR}در مقدارهای پیکربندی. - آبجکتهای SecretRef (
{ source: "env", provider: "default", id: "VAR" }) برای فیلدهایی که از ارجاعهای محرمانه پشتیبانی میکنند.
هر دو در زمان فعالسازی از محیط فرایند resolve میشوند. جزئیات SecretRef در مدیریت محرمانهها مستند شده است.
متغیرهای محیطی مرتبط با مسیر
| متغیر | هدف |
|---|---|
OPENCLAW_HOME |
دایرکتوری خانه استفادهشده برای همه resolveهای مسیر داخلی را بازنویسی میکند (~/.openclaw/، دایرکتوریهای عامل، نشستها، credentials). هنگام اجرای OpenClaw بهعنوان کاربر سرویس اختصاصی مفید است. |
OPENCLAW_STATE_DIR |
دایرکتوری وضعیت را بازنویسی میکند (پیشفرض ~/.openclaw). |
OPENCLAW_CONFIG_PATH |
مسیر فایل پیکربندی را بازنویسی میکند (پیشفرض ~/.openclaw/openclaw.json). |
OPENCLAW_INCLUDE_ROOTS |
فهرست مسیرِ دایرکتوریهایی که directiveهای $include میتوانند فایلهای خارج از دایرکتوری پیکربندی را از آنها resolve کنند (پیشفرض: هیچکدام — $include به دایرکتوری پیکربندی محدود است). Tilde-expanded. |
ثبت گزارش
| متغیر | هدف |
|---|---|
OPENCLAW_LOG_LEVEL |
سطح گزارش را برای فایل و کنسول بازنویسی میکند (مثلاً debug، trace). بر logging.level و logging.consoleLevel در پیکربندی اولویت دارد. مقدارهای نامعتبر با یک هشدار نادیده گرفته میشوند. |
OPENCLAW_HOME
وقتی تنظیم شود، OPENCLAW_HOME دایرکتوری خانه سیستم ($HOME / os.homedir()) را برای همه resolveهای مسیر داخلی جایگزین میکند. این کار ایزولاسیون کامل فایلسیستم را برای حسابهای سرویس headless ممکن میکند.
اولویت: OPENCLAW_HOME > $HOME > USERPROFILE > os.homedir()
مثال (macOS LaunchDaemon):
<key>EnvironmentVariables</key>
<dict>
<key>OPENCLAW_HOME</key>
<string>/Users/user</string>
</dict>
OPENCLAW_HOME همچنین میتواند روی یک مسیر tilde تنظیم شود (مثلاً ~/svc) که پیش از استفاده با استفاده از $HOME گسترش داده میشود.
کاربران nvm: خطاهای TLS در web_fetch
اگر Node.js از طریق nvm نصب شده باشد (نه مدیر بسته سیستم)، fetch() داخلی از CA store همراه nvm استفاده میکند که ممکن است CAهای ریشه مدرن را نداشته باشد (ISRG Root X1/X2 برای Let's Encrypt، DigiCert Global Root G2 و غیره). این باعث میشود web_fetch در بیشتر سایتهای HTTPS با "fetch failed" شکست بخورد.
در Linux، OpenClaw بهصورت خودکار nvm را تشخیص میدهد و اصلاح را در محیط راهاندازی واقعی اعمال میکند:
openclaw gateway installمقدارNODE_EXTRA_CA_CERTSرا در محیط سرویس systemd مینویسد- entrypoint مربوط به CLI با نام
openclawپیش از راهاندازی Node خود را با تنظیمNODE_EXTRA_CA_CERTSدوباره اجرا میکند
اصلاح دستی (برای نسخههای قدیمیتر یا اجراهای مستقیم node ...):
پیش از شروع OpenClaw متغیر را export کنید:
export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt
openclaw gateway run
برای این متغیر فقط به نوشتن در ~/.openclaw/.env تکیه نکنید؛ Node مقدار NODE_EXTRA_CA_CERTS را در زمان راهاندازی فرایند میخواند.
متغیرهای محیطی قدیمی
OpenClaw فقط متغیرهای محیطی OPENCLAW_* را میخواند. پیشوندهای قدیمی CLAWDBOT_* و MOLTBOT_* از انتشارهای قبلی بیصدا نادیده گرفته میشوند.
اگر هرکدام همچنان هنگام راهاندازی روی فرایند Gateway تنظیم شده باشند، OpenClaw یک هشدار deprecation واحد از Node (OPENCLAW_LEGACY_ENV_VARS) منتشر میکند که پیشوندهای تشخیصدادهشده و تعداد کل را فهرست میکند. هر مقدار را با جایگزینی پیشوند قدیمی با OPENCLAW_ تغییر نام دهید (برای مثال CLAWDBOT_GATEWAY_TOKEN → OPENCLAW_GATEWAY_TOKEN)؛ نامهای قدیمی هیچ اثری ندارند.