OpenClaw ดึงตัวแปรสภาพแวดล้อมจากหลายแหล่ง กฎคือ ห้ามเขียนทับค่าที่มีอยู่แล้วเด็ดขาดDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
ลำดับความสำคัญ (สูงสุด → ต่ำสุด)
- สภาพแวดล้อมของโปรเซส (สิ่งที่โปรเซส Gateway มีอยู่แล้วจากเชลล์/ดีมอนแม่)
.envในไดเรกทอรีทำงานปัจจุบัน (ค่าเริ่มต้นของ dotenv; ไม่เขียนทับ).envส่วนกลาง ที่~/.openclaw/.env(หรือ$OPENCLAW_STATE_DIR/.env; ไม่เขียนทับ)- บล็อก
envในคอนฟิก ใน~/.openclaw/openclaw.json(ใช้เฉพาะเมื่อค่านั้นหายไป) - การนำเข้าจาก login shell แบบเลือกได้ (
env.shellEnv.enabledหรือOPENCLAW_LOAD_SHELL_ENV=1) ใช้เฉพาะกับคีย์ที่คาดไว้แต่ยังหายไป
~/.config/openclaw/gateway.env เป็น fallback เพื่อความเข้ากันได้หลัง .env ส่วนกลางด้วย หากทั้งสองไฟล์มีอยู่และค่าไม่ตรงกัน OpenClaw จะคง ~/.openclaw/.env ไว้และพิมพ์คำเตือน
หากไฟล์คอนฟิกหายไปทั้งหมด ขั้นตอนที่ 4 จะถูกข้าม; การนำเข้าจากเชลล์ยังคงทำงานหากเปิดใช้งานไว้
บล็อก env ในคอนฟิก
มีสองวิธีที่เทียบเท่ากันในการตั้งค่าตัวแปร env แบบอินไลน์ (ทั้งคู่ไม่เขียนทับ):
การนำเข้า env จากเชลล์
env.shellEnv จะรัน login shell ของคุณและนำเข้าเฉพาะคีย์ที่คาดไว้แต่ยัง หายไป:
OPENCLAW_LOAD_SHELL_ENV=1OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000
ตัวแปร env ที่แทรกตอนรันไทม์
OpenClaw ยังแทรกตัวทำเครื่องหมายบริบทลงในโปรเซสลูกที่ถูกสร้างขึ้น:OPENCLAW_SHELL=exec: ตั้งค่าสำหรับคำสั่งที่รันผ่านเครื่องมือexecOPENCLAW_SHELL=acp: ตั้งค่าสำหรับการสร้างโปรเซสแบ็กเอนด์รันไทม์ ACP (เช่นacpx)OPENCLAW_SHELL=acp-client: ตั้งค่าสำหรับopenclaw acp clientเมื่อสร้างโปรเซสบริดจ์ ACPOPENCLAW_SHELL=tui-local: ตั้งค่าสำหรับคำสั่งเชลล์!ของ TUI แบบโลคัล
ตัวแปร env สำหรับ UI
OPENCLAW_THEME=light: บังคับใช้พาเลต TUI แบบสว่างเมื่อเทอร์มินัลของคุณมีพื้นหลังสว่างOPENCLAW_THEME=dark: บังคับใช้พาเลต TUI แบบมืดCOLORFGBG: หากเทอร์มินัลของคุณส่งออกค่านี้ OpenClaw จะใช้คำใบ้สีพื้นหลังเพื่อเลือกพาเลต TUI อัตโนมัติ
การแทนค่าตัวแปร env ในคอนฟิก
คุณสามารถอ้างอิงตัวแปร env โดยตรงในค่าสตริงของคอนฟิกได้โดยใช้ไวยากรณ์${VAR_NAME}:
การอ้างอิงความลับกับสตริง ${ENV}
OpenClaw รองรับสองรูปแบบที่ขับเคลื่อนด้วย env:
- การแทนค่าสตริง
${VAR}ในค่าคอนฟิก - อ็อบเจกต์ SecretRef (
{ source: "env", provider: "default", id: "VAR" }) สำหรับฟิลด์ที่รองรับการอ้างอิงความลับ
ตัวแปร env ที่เกี่ยวข้องกับพาธ
| ตัวแปร | วัตถุประสงค์ |
|---|---|
OPENCLAW_HOME | เขียนทับไดเรกทอรี home ที่ใช้สำหรับการ resolve พาธภายในทั้งหมด (~/.openclaw/, ไดเรกทอรีเอเจนต์, เซสชัน, ข้อมูลรับรอง) มีประโยชน์เมื่อรัน OpenClaw เป็นผู้ใช้บริการเฉพาะ |
OPENCLAW_STATE_DIR | เขียนทับไดเรกทอรีสถานะ (ค่าเริ่มต้น ~/.openclaw) |
OPENCLAW_CONFIG_PATH | เขียนทับพาธไฟล์คอนฟิก (ค่าเริ่มต้น ~/.openclaw/openclaw.json) |
OPENCLAW_INCLUDE_ROOTS | รายการพาธของไดเรกทอรีที่คำสั่ง $include สามารถ resolve ไฟล์นอกไดเรกทอรีคอนฟิกได้ (ค่าเริ่มต้น: ไม่มี — $include ถูกจำกัดไว้ในไดเรกทอรีคอนฟิก) ขยาย tilde แล้ว |
การบันทึกล็อก
| ตัวแปร | วัตถุประสงค์ |
|---|---|
OPENCLAW_LOG_LEVEL | เขียนทับระดับล็อกสำหรับทั้งไฟล์และคอนโซล (เช่น debug, trace) มีความสำคัญเหนือ logging.level และ logging.consoleLevel ในคอนฟิก ค่าที่ไม่ถูกต้องจะถูกละเว้นพร้อมคำเตือน |
OPENCLAW_DEBUG_MODEL_TRANSPORT | ส่งออกการวินิจฉัยเวลา request/response ของโมเดลแบบเจาะจงที่ระดับ info โดยไม่ต้องเปิดใช้งานล็อก debug ทั่วทั้งระบบ |
OPENCLAW_DEBUG_MODEL_PAYLOAD | การวินิจฉัย payload ของโมเดล: summary, tools หรือ full-redacted ค่า full-redacted ถูกจำกัดขนาดและปกปิดข้อมูลแล้ว แต่อาจมีข้อความ prompt/message รวมอยู่ด้วย |
OPENCLAW_DEBUG_SSE | การวินิจฉัยสตรีมมิง: events สำหรับเวลาตั้งแต่เริ่มถึงเสร็จสิ้น, peek เพื่อรวมเหตุการณ์ SSE ห้ารายการแรกที่ปกปิดข้อมูลแล้ว |
OPENCLAW_DEBUG_CODE_MODE | การวินิจฉัยพื้นผิวโมเดลของโหมดโค้ด รวมถึงการซ่อนเครื่องมือของ provider และการบังคับใช้เฉพาะ exec/wait |
OPENCLAW_HOME
เมื่อตั้งค่าแล้ว OPENCLAW_HOME จะแทนที่ไดเรกทอรี home ของระบบ ($HOME / os.homedir()) สำหรับการ resolve พาธภายในทั้งหมด ซึ่งทำให้บัญชีบริการแบบ headless แยกระบบไฟล์ได้เต็มรูปแบบ
ลำดับความสำคัญ: OPENCLAW_HOME > $HOME > USERPROFILE > os.homedir()
ตัวอย่าง (macOS LaunchDaemon):
OPENCLAW_HOME ยังสามารถตั้งเป็นพาธ tilde ได้ (เช่น ~/svc) ซึ่งจะถูกขยายโดยใช้ $HOME ก่อนใช้งาน
ผู้ใช้ nvm: ความล้มเหลว TLS ของ web_fetch
หากติดตั้ง Node.js ผ่าน nvm (ไม่ใช่ตัวจัดการแพ็กเกจของระบบ)fetch() ในตัวจะใช้
ที่เก็บ CA ที่มาพร้อมกับ nvm ซึ่งอาจไม่มี root CA รุ่นใหม่ (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:
~/.openclaw/.env เพียงอย่างเดียว; Node อ่าน
NODE_EXTRA_CA_CERTS ตอนเริ่มต้นโปรเซส
ตัวแปรสภาพแวดล้อมรุ่นเก่า
OpenClaw อ่านเฉพาะตัวแปรสภาพแวดล้อมOPENCLAW_* เท่านั้น คำนำหน้าเดิม
CLAWDBOT_* และ MOLTBOT_* จากรุ่นก่อนหน้าจะถูกละเว้นอย่างเงียบ ๆ
หากค่ายังถูกตั้งอยู่ในโปรเซส Gateway ตอนเริ่มต้น OpenClaw จะส่งออก
คำเตือนการเลิกใช้ Node หนึ่งรายการ (OPENCLAW_LEGACY_ENV_VARS) ที่แสดง
คำนำหน้าที่ตรวจพบและจำนวนรวม เปลี่ยนชื่อแต่ละค่าโดยแทนที่
คำนำหน้าเดิมด้วย OPENCLAW_ (เช่น CLAWDBOT_GATEWAY_TOKEN →
OPENCLAW_GATEWAY_TOKEN); ชื่อเก่าไม่มีผลใด ๆ