Diagnostics
ตัวแปรสภาพแวดล้อม
OpenClaw ดึงตัวแปรสภาพแวดล้อมจากหลายแหล่ง กฎคือ ห้ามเขียนทับค่าที่มีอยู่แล้วเด็ดขาด
ไฟล์ .env ของเวิร์กสเปซเป็นแหล่งที่มีความน่าเชื่อถือต่ำกว่า: OpenClaw จะละเว้นข้อมูลรับรองของผู้ให้บริการและตัวควบคุมรันไทม์ที่ได้รับการป้องกันจาก .env ของเวิร์กสเปซก่อนนำลำดับความสำคัญมาใช้
ลำดับความสำคัญ (สูงสุด → ต่ำสุด)
- สภาพแวดล้อมของกระบวนการ (สิ่งที่กระบวนการ Gateway มีอยู่แล้วจากเชลล์/daemon แม่)
.envในไดเรกทอรีทำงานปัจจุบัน (ค่าเริ่มต้นของ dotenv; ไม่เขียนทับ; ข้อมูลรับรองของผู้ให้บริการและตัวควบคุมรันไทม์ที่ได้รับการป้องกันจะถูกละเว้น).envส่วนกลาง ที่~/.openclaw/.env(หรือที่เรียกว่า$OPENCLAW_STATE_DIR/.env; แนะนำสำหรับคีย์ API ของผู้ให้บริการ; ไม่เขียนทับ)- บล็อก
envของการกำหนดค่า ใน~/.openclaw/openclaw.json(นำไปใช้เฉพาะเมื่อขาดหาย) - การนำเข้า login-shell แบบไม่บังคับ (
env.shellEnv.enabledหรือOPENCLAW_LOAD_SHELL_ENV=1) นำไปใช้เฉพาะกับคีย์ที่คาดไว้ซึ่งขาดหาย
ในการติดตั้งใหม่บน Ubuntu ที่ใช้ไดเรกทอรีสถานะค่าเริ่มต้น OpenClaw ยังถือว่า ~/.config/openclaw/gateway.env เป็น fallback เพื่อความเข้ากันได้หลังจาก .env ส่วนกลาง หากทั้งสองไฟล์มีอยู่และค่าไม่ตรงกัน OpenClaw จะใช้ ~/.openclaw/.env ต่อไปและพิมพ์คำเตือน
หากไฟล์การกำหนดค่าหายไปทั้งหมด ขั้นตอนที่ 4 จะถูกข้าม; การนำเข้าเชลล์จะยังคงทำงานหากเปิดใช้งานไว้
ข้อมูลรับรองของผู้ให้บริการและ .env ของเวิร์กสเปซ
อย่าเก็บคีย์ API ของผู้ให้บริการไว้เฉพาะใน .env ของเวิร์กสเปซ OpenClaw จะละเว้นตัวแปรสภาพแวดล้อมข้อมูลรับรองของผู้ให้บริการจากไฟล์ .env ของเวิร์กสเปซ รวมถึงคีย์ทั่วไป เช่น GEMINI_API_KEY, GOOGLE_API_KEY, XAI_API_KEY, MISTRAL_API_KEY, GROQ_API_KEY, DEEPSEEK_API_KEY, PERPLEXITY_API_KEY, BRAVE_API_KEY, TAVILY_API_KEY, EXA_API_KEY, และ FIRECRAWL_API_KEY
ใช้แหล่งที่เชื่อถือได้เหล่านี้สำหรับข้อมูลรับรองของผู้ให้บริการ:
- สภาพแวดล้อมของกระบวนการ Gateway เช่น เชลล์, หน่วย launchd/systemd, secret ของคอนเทนเนอร์ หรือ secret ของ CI
- ไฟล์ dotenv รันไทม์ส่วนกลางที่
~/.openclaw/.envหรือ$OPENCLAW_STATE_DIR/.env - บล็อก
envของการกำหนดค่าใน~/.openclaw/openclaw.json - การนำเข้า login-shell แบบไม่บังคับเมื่อเปิดใช้งาน
env.shellEnv.enabledหรือOPENCLAW_LOAD_SHELL_ENV=1
หากก่อนหน้านี้คุณเก็บคีย์ผู้ให้บริการไว้เฉพาะใน .env ของเวิร์กสเปซ ให้ย้ายไปยังหนึ่งในแหล่งที่เชื่อถือได้ข้างต้น .env ของเวิร์กสเปซยังสามารถให้ตัวแปรโปรเจกต์ทั่วไปที่ไม่ใช่ข้อมูลรับรอง, การเปลี่ยนเส้นทาง endpoint, การ override โฮสต์ หรือการควบคุมรันไทม์ OPENCLAW_*
ดู ไฟล์ .env ของเวิร์กสเปซ สำหรับเหตุผลด้านความปลอดภัย
บล็อก env ของการกำหนดค่า
สองวิธีที่เทียบเท่ากันในการตั้งค่า env vars แบบอินไลน์ (ทั้งสองแบบไม่เขียนทับ):
{ env: { OPENROUTER_API_KEY: "sk-or-...", vars: { GROQ_API_KEY: "gsk-...", }, },}บล็อก env ของการกำหนดค่ารับเฉพาะค่าสตริงตามตัวอักษรเท่านั้น ไม่ขยายค่า
file:...; ตัวอย่างเช่น XAI_API_KEY: "file:secrets/xai-api-key.txt"
จะถูกส่งให้ผู้ให้บริการเป็นสตริงนั้นตรงตัว
สำหรับคีย์ผู้ให้บริการที่อิงไฟล์ ให้ใช้ SecretRef บนฟิลด์ข้อมูลรับรองที่ รองรับ:
{ secrets: { providers: { xai_key_file: { source: "file", path: "~/.openclaw/secrets/xai-api-key.txt", mode: "singleValue", }, }, }, models: { providers: { xai: { apiKey: { source: "file", provider: "xai_key_file", id: "value" }, }, }, },}ดู การจัดการ Secrets และ พื้นผิวข้อมูลรับรอง SecretRef สำหรับ ฟิลด์ที่รองรับ
การนำเข้า env ของเชลล์
env.shellEnv เรียกใช้ login shell ของคุณและนำเข้าเฉพาะคีย์ที่คาดไว้ซึ่ง ขาดหาย:
{ env: { shellEnv: { enabled: true, timeoutMs: 15000, }, },}ค่าตัวแปรสภาพแวดล้อมที่เทียบเท่า:
OPENCLAW_LOAD_SHELL_ENV=1OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000
สแนปช็อตของ exec shell
บนโฮสต์ Gateway ที่ไม่ใช่ Windows คำสั่ง exec ของ bash และ zsh จะใช้สแนปช็อตเริ่มต้นโดยปริยาย
ตั้งค่า OPENCLAW_EXEC_SHELL_SNAPSHOT=0 ในสภาพแวดล้อมของกระบวนการ Gateway เพื่อปิดใช้งานเส้นทางนี้
ค่า false, no, และ off ก็ปิดใช้งานได้เช่นกัน ค่า exec.env ต่อการเรียกไม่สามารถสลับ
สแนปช็อตหรือเปลี่ยนเส้นทางแคชสแนปช็อตได้
Env vars ที่รันไทม์ฉีดเข้าไป
OpenClaw ยังฉีดเครื่องหมายบริบทเข้าไปในกระบวนการลูกที่ spawn:
OPENCLAW_SHELL=exec: ตั้งค่าสำหรับคำสั่งที่รันผ่านเครื่องมือexecOPENCLAW_SHELL=acp: ตั้งค่าสำหรับการ spawn กระบวนการแบ็กเอนด์รันไทม์ ACP (เช่นacpx)OPENCLAW_SHELL=acp-client: ตั้งค่าสำหรับopenclaw acp clientเมื่อ spawn กระบวนการบริดจ์ ACPOPENCLAW_SHELL=tui-local: ตั้งค่าสำหรับคำสั่งเชลล์!ของ TUI ภายในเครื่องOPENCLAW_CLI=1: ตั้งค่าสำหรับกระบวนการลูกที่ spawn โดย entry point ของ CLI
สิ่งเหล่านี้เป็นเครื่องหมายรันไทม์ (ไม่ใช่การกำหนดค่าผู้ใช้ที่จำเป็น) สามารถใช้ในตรรกะ shell/profile เพื่อใช้กฎเฉพาะบริบทได้
Env vars ของ UI
OPENCLAW_THEME=light: บังคับใช้พาเลต TUI แบบสว่างเมื่อเทอร์มินัลของคุณมีพื้นหลังสว่างOPENCLAW_THEME=dark: บังคับใช้พาเลต TUI แบบมืดCOLORFGBG: หากเทอร์มินัลของคุณส่งออกตัวแปรนี้ OpenClaw จะใช้คำใบ้สีพื้นหลังเพื่อเลือกพาเลต TUI อัตโนมัติ
การแทนที่ env var ในการกำหนดค่า
คุณสามารถอ้างอิง env vars โดยตรงในค่าสตริงการกำหนดค่าโดยใช้ไวยากรณ์ ${VAR_NAME}:
{ models: { providers: { "vercel-gateway": { apiKey: "${VERCEL_GATEWAY_API_KEY}", }, }, },}ดู การกำหนดค่า: การแทนที่ env var สำหรับรายละเอียดทั้งหมด
การอ้างอิง Secret เทียบกับสตริง ${ENV}
OpenClaw รองรับรูปแบบที่ขับเคลื่อนด้วย env สองแบบ:
- การแทนที่สตริง
${VAR}ในค่าการกำหนดค่า - ออบเจ็กต์ SecretRef (
{ source: "env", provider: "default", id: "VAR" }) สำหรับฟิลด์ที่รองรับการอ้างอิง secrets
ทั้งสองแบบ resolve จาก env ของกระบวนการ ณ เวลาการเปิดใช้งาน รายละเอียด SecretRef มีบันทึกไว้ใน การจัดการ Secrets
บล็อก env ของการกำหนดค่าเองไม่ resolve SecretRefs หรือค่าชอร์ตแฮนด์
file:...
Env vars ที่เกี่ยวข้องกับพาธ
| ตัวแปร | วัตถุประสงค์ |
|---|---|
OPENCLAW_HOME |
Override ไดเรกทอรี home ที่ใช้สำหรับค่าเริ่มต้นพาธภายในของ OpenClaw (~/.openclaw/, ไดเรกทอรี agent, sessions, credentials, installer onboarding และ checkout dev ค่าเริ่มต้น) มีประโยชน์เมื่อรัน OpenClaw เป็นผู้ใช้บริการเฉพาะ |
OPENCLAW_STATE_DIR |
Override ไดเรกทอรีสถานะ (ค่าเริ่มต้น ~/.openclaw) |
OPENCLAW_CONFIG_PATH |
Override พาธไฟล์การกำหนดค่า (ค่าเริ่มต้น ~/.openclaw/openclaw.json) |
OPENCLAW_INCLUDE_ROOTS |
รายการพาธของไดเรกทอรีที่คำสั่ง $include สามารถ resolve ไฟล์นอกไดเรกทอรีการกำหนดค่าได้ (ค่าเริ่มต้น: ไม่มี — $include ถูกจำกัดไว้ในไดเรกทอรีการกำหนดค่า) ขยาย tilde แล้ว |
การบันทึก log
| ตัวแปร | วัตถุประสงค์ |
|---|---|
OPENCLAW_LOG_LEVEL |
Override ระดับ log สำหรับทั้งไฟล์และคอนโซล (เช่น debug, trace) มีลำดับความสำคัญเหนือ logging.level และ logging.consoleLevel ในการกำหนดค่า ค่าที่ไม่ถูกต้องจะถูกละเว้นพร้อมคำเตือน |
OPENCLAW_DEBUG_MODEL_TRANSPORT |
ส่งออกการวินิจฉัยเวลา request/response ของโมเดลแบบเจาะจงที่ระดับ info โดยไม่ต้องเปิดใช้งาน debug logs ส่วนกลาง |
OPENCLAW_DEBUG_MODEL_PAYLOAD |
การวินิจฉัย payload ของโมเดล: summary, tools, หรือ full-redacted full-redacted ถูกจำกัดขนาดและ redact แล้ว แต่อาจมีข้อความ prompt/message |
OPENCLAW_DEBUG_SSE |
การวินิจฉัย streaming: events สำหรับเวลาครั้งแรก/เสร็จสิ้น, peek เพื่อรวมเหตุการณ์ SSE ที่ redact แล้วห้ารายการแรก |
OPENCLAW_DEBUG_CODE_MODE |
การวินิจฉัยพื้นผิวโมเดลโหมดโค้ด รวมถึงการซ่อนเครื่องมือของผู้ให้บริการและการบังคับใช้เฉพาะ exec/wait |
OPENCLAW_HOME
เมื่อตั้งค่าแล้ว OPENCLAW_HOME จะแทนที่ไดเรกทอรี home ของระบบ ($HOME / os.homedir()) สำหรับค่าเริ่มต้นพาธภายในของ OpenClaw ซึ่งรวมถึงไดเรกทอรีสถานะค่าเริ่มต้น, พาธการกำหนดค่า, ไดเรกทอรี agent, credentials, เวิร์กสเปซ installer onboarding และ checkout dev ค่าเริ่มต้นที่ใช้โดย openclaw update --channel dev
ลำดับความสำคัญ: OPENCLAW_HOME > $HOME > USERPROFILE > fallback home ของ Termux PREFIX บน Android > os.homedir()
ตัวอย่าง (macOS LaunchDaemon):
<key>EnvironmentVariables</key><dict> <key>OPENCLAW_HOME</key> <string>/Users/user</string></dict>OPENCLAW_HOME ยังสามารถตั้งเป็นพาธ tilde ได้ (เช่น ~/svc) ซึ่งจะถูกขยายโดยใช้ลำดับ fallback ของ home ของ OS เดียวกันก่อนใช้งาน
ตัวแปรพาธที่ระบุชัดเจน เช่น OPENCLAW_STATE_DIR, OPENCLAW_CONFIG_PATH, และ OPENCLAW_GIT_DIR ยังคงมีลำดับความสำคัญสูงกว่า งานระดับบัญชี OS เช่น การตรวจหาไฟล์เริ่มต้นของเชลล์, การตั้งค่าตัวจัดการแพ็กเกจ และการขยาย ~ ของโฮสต์ อาจยังใช้ home ระบบจริง
ผู้ใช้ nvm: ความล้มเหลว TLS ของ web_fetch
หากติดตั้ง Node.js ผ่าน nvm (ไม่ใช่ตัวจัดการแพ็กเกจของระบบ) fetch() ในตัวจะใช้
CA store ที่มากับ nvm ซึ่งอาจไม่มี root CAs สมัยใหม่ (ISRG Root X1/X2 สำหรับ Let's Encrypt,
DigiCert Global Root G2 เป็นต้น) สิ่งนี้ทำให้ web_fetch ล้มเหลวด้วย "fetch failed" บนไซต์ HTTPS ส่วนใหญ่
บน Linux OpenClaw จะตรวจหา nvm โดยอัตโนมัติและนำการแก้ไขไปใช้ในสภาพแวดล้อมเริ่มต้นจริง:
openclaw gateway installเขียนNODE_EXTRA_CA_CERTSลงในสภาพแวดล้อมบริการ systemd- entrypoint ของ CLI
openclawจะ re-exec ตัวเองโดยตั้งค่าNODE_EXTRA_CA_CERTSก่อนการเริ่มต้น Node
การแก้ไขด้วยตนเอง (สำหรับเวอร์ชันเก่าหรือการเรียก node ... โดยตรง):
ส่งออกตัวแปรก่อนเริ่ม OpenClaw:
export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crtopenclaw gateway runอย่าพึ่งพาการเขียนตัวแปรนี้เฉพาะลงใน ~/.openclaw/.env; Node อ่าน
NODE_EXTRA_CA_CERTS เมื่อกระบวนการเริ่มต้น
ตัวแปรสภาพแวดล้อมรุ่นเก่า
OpenClaw อ่านเฉพาะตัวแปรสภาพแวดล้อม OPENCLAW_* เท่านั้น prefix รุ่นเก่า
CLAWDBOT_* และ MOLTBOT_* จากรีลีสก่อนหน้าจะถูกละเว้นอย่างเงียบ ๆ
หากยังมีตัวแปรใดตั้งอยู่ในกระบวนการ Gateway ตอนเริ่มต้น OpenClaw จะส่งออก
คำเตือนการเลิกใช้ Node หนึ่งรายการ (OPENCLAW_LEGACY_ENV_VARS) ที่แสดงรายการ
prefix ที่ตรวจพบและจำนวนรวม เปลี่ยนชื่อแต่ละค่าโดยแทนที่
prefix รุ่นเก่าด้วย OPENCLAW_ (ตัวอย่าง CLAWDBOT_GATEWAY_TOKEN →
OPENCLAW_GATEWAY_TOKEN); ชื่อเก่าไม่มีผลใด ๆ