CLI commands
การกำหนดค่า
ตัวช่วยการกำหนดค่าสำหรับการแก้ไขแบบไม่โต้ตอบใน openclaw.json: รับ/ตั้งค่า/แพตช์/ยกเลิกการตั้งค่า/ไฟล์/สคีมา/ตรวจสอบความถูกต้องของค่าตามพาธ และพิมพ์ไฟล์กำหนดค่าที่ใช้งานอยู่ รันโดยไม่มีคำสั่งย่อยเพื่อเปิดตัวช่วยกำหนดค่า (เหมือนกับ openclaw configure)
ตัวเลือกระดับราก
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc2VjdGlvbiA8c2VjdGlvbg
" type="string">
ตัวกรองส่วนของการตั้งค่าแบบมีคำแนะนำที่ระบุซ้ำได้ เมื่อคุณรัน openclaw config โดยไม่มีคำสั่งย่อย
ส่วนที่รองรับสำหรับการตั้งค่าแบบมีคำแนะนำ: workspace, model, web, gateway, daemon, channels, plugins, skills, health
ตัวอย่าง
openclaw config fileopenclaw config --section modelopenclaw config --section gateway --section daemonopenclaw config schemaopenclaw config get browser.executablePathopenclaw config set browser.executablePath "/usr/bin/google-chrome"openclaw config set browser.profiles.work.executablePath "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"openclaw config set agents.defaults.heartbeat.every "2h"openclaw config set 'agents.list[0].tools.exec.node' "node-id-or-name"openclaw config set agents.defaults.models '{"openai/gpt-5.4":{}}' --strict-json --mergeopenclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKENopenclaw config set secrets.providers.vaultfile --provider-source file --provider-path /etc/openclaw/secrets.json --provider-mode jsonopenclaw config patch --file ./openclaw.patch.json5 --dry-runopenclaw config unset plugins.entries.brave.config.webSearch.apiKeyopenclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN --dry-runopenclaw config validateopenclaw config validate --jsonconfig schema
พิมพ์สคีมา JSON ที่สร้างขึ้นสำหรับ openclaw.json ไปยัง stdout เป็น JSON
สิ่งที่รวมอยู่
- สคีมาการกำหนดค่าระดับรากปัจจุบัน พร้อมฟิลด์สตริง
$schemaระดับรากสำหรับเครื่องมือแก้ไข - เมตาดาต้าเอกสาร
titleและdescriptionของฟิลด์ที่ Control UI ใช้ - โหนดอ็อบเจ็กต์ซ้อน, wildcard (
*) และรายการอาร์เรย์ ([]) จะสืบทอดเมตาดาต้าtitle/descriptionเดียวกันเมื่อมีเอกสารของฟิลด์ที่ตรงกัน - สาขา
anyOf/oneOf/allOfจะสืบทอดเมตาดาต้าเอกสารเดียวกันด้วยเมื่อมีเอกสารของฟิลด์ที่ตรงกัน - เมตาดาต้าสคีมาของ Plugin + ช่องทางแบบสดอย่างเต็มความสามารถ เมื่อโหลดแมนิเฟสต์รันไทม์ได้
- สคีมาสำรองที่สะอาด แม้ว่าการกำหนดค่าปัจจุบันจะไม่ถูกต้อง
RPC รันไทม์ที่เกี่ยวข้อง
config.schema.lookup ส่งคืนพาธการกำหนดค่าที่ทำให้เป็นมาตรฐานแล้วหนึ่งรายการ พร้อมโหนดสคีมาแบบตื้น (title, description, type, enum, const, ขอบเขตทั่วไป), เมตาดาต้าคำใบ้ UI ที่ตรงกัน และสรุปลูกโดยตรง ใช้สำหรับการเจาะลึกแบบจำกัดตามพาธใน Control UI หรือไคลเอนต์แบบกำหนดเอง
openclaw config schemaไพป์ไปยังไฟล์เมื่อคุณต้องการตรวจสอบหรือตรวจสอบความถูกต้องด้วยเครื่องมืออื่น:
openclaw config schema > openclaw.schema.jsonพาธ
พาธใช้สัญลักษณ์จุดหรือวงเล็บเหลี่ยม ใส่เครื่องหมายคำพูดให้พาธแบบวงเล็บเหลี่ยมในตัวอย่างเชลล์ เพื่อให้เชลล์อย่าง zsh ไม่ขยาย [0] เป็น glob ก่อนที่ OpenClaw จะได้รับพาธ:
openclaw config get agents.defaults.workspaceopenclaw config get 'agents.list[0].id'ใช้ดัชนีรายการ agent เพื่อกำหนดเป้าหมาย agent เฉพาะ:
openclaw config get agents.listopenclaw config set 'agents.list[1].tools.exec.node' "node-id-or-name"ค่า
ค่าจะถูกแยกวิเคราะห์เป็น JSON5 เมื่อทำได้ มิฉะนั้นจะถือว่าเป็นสตริง ใช้ --strict-json เพื่อบังคับให้แยกวิเคราะห์ JSON5 --json ยังคงรองรับในฐานะนามแฝงแบบเก่า
openclaw config set agents.defaults.heartbeat.every "0m"openclaw config set gateway.port 19001 --strict-jsonopenclaw config set channels.whatsapp.groups '["*"]' --strict-jsonconfig get <path> --json พิมพ์ค่าดิบเป็น JSON แทนข้อความที่จัดรูปแบบสำหรับเทอร์มินัล
ใช้ --merge เมื่อเพิ่มรายการไปยัง map เหล่านั้น:
openclaw config set agents.defaults.models '{"openai/gpt-5.4":{}}' --strict-json --mergeopenclaw config set models.providers.ollama.models '[{"id":"llama3.2","name":"Llama 3.2"}]' --strict-json --mergeใช้ --replace เฉพาะเมื่อคุณตั้งใจให้ค่าที่ให้มาเป็นค่าเป้าหมายทั้งหมด
โหมดของ config set
openclaw config set รองรับรูปแบบการกำหนดค่า 4 แบบ:
โหมดค่า
openclaw config set <path> <value>โหมดตัวสร้าง SecretRef
openclaw config set channels.discord.token \ --ref-provider default \ --ref-source env \ --ref-id DISCORD_BOT_TOKENโหมดตัวสร้างผู้ให้บริการ
โหมดตัวสร้างผู้ให้บริการกำหนดเป้าหมายเฉพาะพาธ secrets.providers.<alias> เท่านั้น:
openclaw config set secrets.providers.vault \ --provider-source exec \ --provider-command /usr/local/bin/openclaw-vault \ --provider-arg read \ --provider-arg openai/api-key \ --provider-timeout-ms 5000โหมดแบตช์
openclaw config set --batch-json '[ { "path": "secrets.providers.default", "provider": { "source": "env" } }, { "path": "channels.discord.token", "ref": { "source": "env", "provider": "default", "id": "DISCORD_BOT_TOKEN" } }]'openclaw config set --batch-file ./config-set.batch.json --dry-runการแยกวิเคราะห์แบบแบตช์ใช้เพย์โหลดแบตช์ (--batch-json/--batch-file) เป็นแหล่งความจริงเสมอ --strict-json / --json ไม่เปลี่ยนพฤติกรรมการแยกวิเคราะห์แบบแบตช์
config patch
ใช้ config patch เมื่อคุณต้องการวางหรือไพป์แพตช์รูปทรงการกำหนดค่า แทนการรันคำสั่ง config set ตามพาธจำนวนมาก อินพุตคืออ็อบเจ็กต์ JSON5 อ็อบเจ็กต์จะรวมแบบเรียกซ้ำ อาร์เรย์และค่าสเกลาร์จะแทนที่ค่าเป้าหมาย และ null จะลบพาธเป้าหมาย
openclaw config patch --file ./openclaw.patch.json5 --dry-runopenclaw config patch --file ./openclaw.patch.json5คุณยังสามารถไพป์แพตช์ผ่าน stdin ได้ ซึ่งมีประโยชน์สำหรับสคริปต์ตั้งค่าระยะไกล:
ssh openclaw-host 'openclaw config patch --stdin --dry-run' < ./openclaw.patch.json5ssh openclaw-host 'openclaw config patch --stdin' < ./openclaw.patch.json5ตัวอย่างแพตช์:
{ channels: { slack: { enabled: true, mode: "socket", botToken: { source: "env", provider: "default", id: "SLACK_BOT_TOKEN" }, appToken: { source: "env", provider: "default", id: "SLACK_APP_TOKEN" }, groupPolicy: "open", requireMention: false, }, discord: { enabled: true, token: { source: "env", provider: "default", id: "DISCORD_BOT_TOKEN" }, dmPolicy: "disabled", dm: { enabled: false }, groupPolicy: "allowlist", }, }, agents: { defaults: { model: { primary: "openai/gpt-5.5" }, models: { "openai/gpt-5.5": { params: { fastMode: true } }, }, }, },}ใช้ --replace-path <path> เมื่ออ็อบเจ็กต์หรืออาร์เรย์หนึ่งรายการต้องกลายเป็นค่าที่ให้มาอย่างแน่นอนแทนที่จะถูกแพตช์แบบเรียกซ้ำ:
openclaw config patch --file ./discord.patch.json5 --replace-path 'channels.discord.guilds["123"].channels'--dry-run รันการตรวจสอบสคีมาและการแก้ไขได้ของ SecretRef โดยไม่เขียน Exec-backed SecretRefs จะถูกข้ามโดยค่าเริ่มต้นระหว่าง dry-run; เพิ่ม --allow-exec เมื่อคุณตั้งใจให้ dry-run เรียกใช้คำสั่งของผู้ให้บริการ
โหมดพาธ/ค่า JSON ยังคงรองรับทั้ง SecretRefs และผู้ให้บริการ:
openclaw config set channels.discord.token \ '{"source":"env","provider":"default","id":"DISCORD_BOT_TOKEN"}' \ --strict-json openclaw config set secrets.providers.vaultfile \ '{"source":"file","path":"/etc/openclaw/secrets.json","mode":"json"}' \ --strict-jsonแฟล็กตัวสร้างผู้ให้บริการ
เป้าหมายของตัวสร้างผู้ให้บริการต้องใช้ secrets.providers.<alias> เป็นพาธ
แฟล็กทั่วไป
--provider-source <env|file|exec>--provider-timeout-ms <ms>(file,exec)
ผู้ให้บริการ Env (--provider-source env)
--provider-allowlist <ENV_VAR>(ระบุซ้ำได้)
ผู้ให้บริการไฟล์ (--provider-source file)
--provider-path <path>(จำเป็น)--provider-mode <singleValue|json>--provider-max-bytes <bytes>--provider-allow-insecure-path
ผู้ให้บริการ Exec (--provider-source exec)
--provider-command <path>(จำเป็น)--provider-arg <arg>(ระบุซ้ำได้)--provider-no-output-timeout-ms <ms>--provider-max-output-bytes <bytes>--provider-json-only--provider-env <KEY=VALUE>(ระบุซ้ำได้)--provider-pass-env <ENV_VAR>(ระบุซ้ำได้)--provider-trusted-dir <path>(ระบุซ้ำได้)--provider-allow-insecure-path--provider-allow-symlink-command
ตัวอย่างผู้ให้บริการ exec ที่เสริมความปลอดภัย:
openclaw config set secrets.providers.vault \ --provider-source exec \ --provider-command /usr/local/bin/openclaw-vault \ --provider-arg read \ --provider-arg openai/api-key \ --provider-json-only \ --provider-pass-env VAULT_TOKEN \ --provider-trusted-dir /usr/local/bin \ --provider-timeout-ms 5000Dry run
ใช้ --dry-run เพื่อตรวจสอบการเปลี่ยนแปลงโดยไม่เขียน openclaw.json
openclaw config set channels.discord.token \ --ref-provider default \ --ref-source env \ --ref-id DISCORD_BOT_TOKEN \ --dry-run openclaw config set channels.discord.token \ --ref-provider default \ --ref-source env \ --ref-id DISCORD_BOT_TOKEN \ --dry-run \ --json openclaw config set channels.discord.token \ --ref-provider vault \ --ref-source exec \ --ref-id discord/token \ --dry-run \ --allow-execพฤติกรรม dry-run
- โหมดตัวสร้าง: รันการตรวจสอบการแก้ไขได้ของ SecretRef สำหรับ refs/providers ที่เปลี่ยน
- โหมด JSON (
--strict-json,--jsonหรือโหมดแบตช์): รันการตรวจสอบสคีมาพร้อมการตรวจสอบการแก้ไขได้ของ SecretRef - การตรวจสอบนโยบายยังรันสำหรับพื้นผิวเป้าหมาย SecretRef ที่ทราบว่าไม่รองรับ
- การตรวจสอบนโยบายประเมินการกำหนดค่าหลังการเปลี่ยนแปลงทั้งหมด ดังนั้นการเขียนอ็อบเจ็กต์แม่ (เช่น การตั้งค่า
hooksเป็นอ็อบเจ็กต์) จึงไม่สามารถข้ามการตรวจสอบพื้นผิวที่ไม่รองรับได้ - การตรวจสอบ Exec SecretRef จะถูกข้ามโดยค่าเริ่มต้นระหว่าง dry-run เพื่อหลีกเลี่ยงผลข้างเคียงของคำสั่ง
- ใช้
--allow-execกับ--dry-runเพื่อเลือกเปิดใช้การตรวจสอบ Exec SecretRef (อาจเรียกใช้คำสั่งของผู้ให้บริการ) --allow-execใช้ได้เฉพาะ dry-run และจะเกิดข้อผิดพลาดหากใช้โดยไม่มี--dry-run
ฟิลด์ --dry-run --json
--dry-run --json พิมพ์รายงานที่เครื่องอ่านได้:
ok: การรันจำลองผ่านหรือไม่operations: จำนวนการกำหนดค่าที่ประเมินแล้วchecks: มีการตรวจสอบ schema/การ resolve หรือไม่checks.resolvabilityComplete: การตรวจสอบการ resolve ทำงานจนเสร็จสมบูรณ์หรือไม่ (เป็น false เมื่อข้าม exec refs)refsChecked: จำนวน refs ที่ถูก resolve จริงระหว่างการรันจำลองskippedExecRefs: จำนวน exec refs ที่ถูกข้ามเพราะไม่ได้ตั้งค่า--allow-execerrors: ความล้มเหลวแบบมีโครงสร้างสำหรับ path ที่ขาดหาย, schema, หรือการ resolve เมื่อok=false
รูปแบบเอาต์พุต JSON
{ ok: boolean, operations: number, configPath: string, inputModes: ["value" | "json" | "builder" | "unset", ...], checks: { schema: boolean, resolvability: boolean, resolvabilityComplete: boolean, }, refsChecked: number, skippedExecRefs: number, errors?: [ { kind: "missing-path" | "schema" | "resolvability", message: string, ref?: string, // present for resolvability errors }, ],}ตัวอย่างสำเร็จ
{ "ok": true, "operations": 1, "configPath": "~/.openclaw/openclaw.json", "inputModes": ["builder"], "checks": { "schema": false, "resolvability": true, "resolvabilityComplete": true }, "refsChecked": 1, "skippedExecRefs": 0}ตัวอย่างล้มเหลว
{ "ok": false, "operations": 1, "configPath": "~/.openclaw/openclaw.json", "inputModes": ["builder"], "checks": { "schema": false, "resolvability": true, "resolvabilityComplete": true }, "refsChecked": 1, "skippedExecRefs": 0, "errors": [ { "kind": "resolvability", "message": "Error: Environment variable \"MISSING_TEST_SECRET\" is not set.", "ref": "env:default:MISSING_TEST_SECRET" } ]}หากการรันจำลองล้มเหลว
config schema validation failed: รูปแบบ config หลังการเปลี่ยนแปลงของคุณไม่ถูกต้อง; แก้ path/value หรือรูปแบบอ็อบเจกต์ provider/refConfig policy validation failed: unsupported SecretRef usage: ย้ายข้อมูลประจำตัวนั้นกลับไปเป็นอินพุต plaintext/string และใช้ SecretRefs เฉพาะบนพื้นผิวที่รองรับเท่านั้นSecretRef assignment(s) could not be resolved: provider/ref ที่อ้างอิงไม่สามารถ resolve ได้ในขณะนี้ (env var ขาดหาย, file pointer ไม่ถูกต้อง, exec provider ล้มเหลว, หรือ provider/source ไม่ตรงกัน)Dry run note: skipped <n> exec SecretRef resolvability check(s): การรันจำลองข้าม exec refs; รันซ้ำพร้อม--allow-execหากคุณต้องการตรวจสอบการ resolve ของ exec- สำหรับโหมดแบตช์ ให้แก้รายการที่ล้มเหลวแล้วรัน
--dry-runซ้ำก่อนเขียน
ความปลอดภัยในการเขียน
openclaw config set และตัวเขียน config อื่นที่ OpenClaw เป็นเจ้าของจะตรวจสอบ config หลังการเปลี่ยนแปลงทั้งหมดก่อน commit ลงดิสก์ หาก payload ใหม่ไม่ผ่านการตรวจสอบ schema หรือดูเหมือนเป็นการเขียนทับแบบทำลายข้อมูล config ที่ใช้งานอยู่จะไม่ถูกแตะต้อง และ payload ที่ถูกปฏิเสธจะถูกบันทึกไว้ข้างกันเป็น openclaw.json.rejected.*
ควรใช้ CLI เขียนสำหรับการแก้ไขเล็ก ๆ:
openclaw config set gateway.reload.mode hybrid --dry-runopenclaw config set gateway.reload.mode hybridopenclaw config validateหากการเขียนถูกปฏิเสธ ให้ตรวจสอบ payload ที่บันทึกไว้และแก้รูปแบบ config ทั้งหมด:
CONFIG="$(openclaw config file)"ls -lt "$CONFIG".rejected.* 2>/dev/null | headopenclaw config validateยังอนุญาตให้เขียนโดยตรงผ่าน editor ได้ แต่ Gateway ที่กำลังทำงานจะถือว่าไม่น่าเชื่อถือจนกว่าจะผ่านการตรวจสอบ การแก้ไขโดยตรงที่ไม่ถูกต้องจะทำให้ startup ล้มเหลวหรือถูกข้ามโดย hot reload; Gateway จะไม่เขียน openclaw.json ใหม่ รัน openclaw doctor --fix เพื่อซ่อม config ที่มี prefix/ถูกเขียนทับ หรือกู้คืนสำเนา last-known-good ดู การแก้ปัญหา Gateway
การกู้คืนทั้งไฟล์สงวนไว้สำหรับการซ่อมของ doctor การเปลี่ยนแปลง schema ของ Plugin หรือความคลาดเคลื่อนของ minHostVersion จะส่งเสียงเตือนต่อไปแทนที่จะ rollback การตั้งค่าผู้ใช้ที่ไม่เกี่ยวข้อง เช่น models, providers, auth profiles, channels, gateway exposure, tools, memory, browser, หรือ cron config
คำสั่งย่อย
config file: พิมพ์ path ของไฟล์ config ที่ใช้งานอยู่ (resolve จากOPENCLAW_CONFIG_PATHหรือตำแหน่งเริ่มต้น) path ควรระบุไฟล์ปกติ ไม่ใช่ symlink
รีสตาร์ท gateway หลังแก้ไข
ตรวจสอบความถูกต้อง
ตรวจสอบ config ปัจจุบันกับ schema ที่ใช้งานอยู่โดยไม่ต้องเริ่ม gateway
openclaw config validateopenclaw config validate --jsonหลังจาก openclaw config validate ผ่านแล้ว คุณสามารถใช้ TUI ภายในเครื่องเพื่อให้ agent แบบฝังตัวเปรียบเทียบ config ที่ใช้งานอยู่กับเอกสาร ขณะที่คุณตรวจสอบแต่ละการเปลี่ยนแปลงจาก terminal เดียวกัน:
openclaw chatจากนั้นภายใน TUI:
!openclaw config file!openclaw docs gateway auth token secretref!openclaw config validate!openclaw doctorลูปการซ่อมทั่วไป:
เปรียบเทียบกับเอกสาร
ขอให้ agent เปรียบเทียบ config ปัจจุบันของคุณกับหน้าเอกสารที่เกี่ยวข้อง และแนะนำวิธีแก้ที่เล็กที่สุด
ใช้การแก้ไขแบบเจาะจง
ใช้การแก้ไขแบบเจาะจงด้วย openclaw config set หรือ openclaw configure
ตรวจสอบซ้ำ
รัน openclaw config validate ซ้ำหลังการเปลี่ยนแปลงแต่ละครั้ง
Doctor สำหรับปัญหา runtime
หากการตรวจสอบผ่านแล้วแต่ runtime ยังไม่สมบูรณ์ ให้รัน openclaw doctor หรือ openclaw doctor --fix เพื่อรับความช่วยเหลือด้าน migration และการซ่อม