CLI commands
การกำหนดค่า
ตัวช่วยการกำหนดค่าสำหรับการแก้ไขแบบไม่โต้ตอบใน openclaw.json: get/set/patch/unset/file/schema/validate ค่าตามพาธ และแสดงไฟล์ config ที่ใช้งานอยู่ เรียกใช้โดยไม่มีคำสั่งย่อยเพื่อเปิดตัวช่วยกำหนดค่า (เหมือนกับ 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 schema ที่สร้างขึ้นสำหรับ openclaw.json ไปยัง stdout เป็น JSON
สิ่งที่รวมอยู่
- สคีมา config ระดับรากปัจจุบัน พร้อมฟิลด์สตริง
$schemaระดับรากสำหรับเครื่องมือแก้ไข - เมตาดาทาเอกสาร
titleและdescriptionของฟิลด์ที่ Control UI ใช้ - โหนดออบเจ็กต์ซ้อน, wildcard (
*) และรายการอาร์เรย์ ([]) จะสืบทอดเมตาดาทาtitle/descriptionเดียวกันเมื่อมีเอกสารฟิลด์ที่ตรงกัน - สาขา
anyOf/oneOf/allOfจะสืบทอดเมตาดาทาเอกสารเดียวกันด้วยเมื่อมีเอกสารฟิลด์ที่ตรงกัน - เมตาดาทาสคีมาของ Plugin + ช่องทางแบบสดเท่าที่ทำได้ เมื่อสามารถโหลด manifest ของ runtime ได้
- สคีมาสำรองที่สะอาด แม้ config ปัจจุบันจะไม่ถูกต้อง
RPC ของ runtime ที่เกี่ยวข้อง
config.schema.lookup คืนพาธ config ที่ทำให้เป็นรูปแบบมาตรฐานแล้วหนึ่งพาธ พร้อมโหนดสคีมาแบบตื้น (title, description, type, enum, const, ขอบเขตทั่วไป), เมตาดาทาคำใบ้ UI ที่ตรงกัน และสรุปลูกโดยตรง ใช้สำหรับการเจาะลึกแบบจำกัดตามพาธใน Control UI หรือไคลเอนต์กำหนดเอง
openclaw config schemaส่งผ่าน pipe ไปยังไฟล์เมื่อคุณต้องการตรวจสอบหรือตรวจสอบความถูกต้องด้วยเครื่องมืออื่น:
openclaw config schema > openclaw.schema.jsonพาธ
พาธใช้รูปแบบ dot หรือ bracket:
openclaw config get agents.defaults.workspaceopenclaw config get agents.list[0].idใช้ดัชนีรายการเอเจนต์เพื่อเจาะจงเอเจนต์ตัวใดตัวหนึ่ง:
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 รองรับรูปแบบการกำหนดค่าสี่แบบ:
โหมดค่า
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การแยกวิเคราะห์แบบแบตช์จะใช้ payload แบตช์ (--batch-json/--batch-file) เป็นแหล่งข้อมูลอ้างอิงหลักเสมอ --strict-json / --json ไม่เปลี่ยนพฤติกรรมการแยกวิเคราะห์แบบแบตช์
config patch
ใช้ config patch เมื่อคุณต้องการวางหรือ pipe แพตช์ที่มีโครงสร้างแบบ config แทนการเรียกใช้คำสั่ง config set แบบอิงพาธจำนวนมาก อินพุตเป็นออบเจ็กต์ JSON5 ออบเจ็กต์จะ merge แบบ recursive ส่วนอาร์เรย์และค่าสเกลาร์จะแทนที่ค่าเป้าหมาย และ null จะลบพาธเป้าหมาย
openclaw config patch --file ./openclaw.patch.json5 --dry-runopenclaw config patch --file ./openclaw.patch.json5คุณยังสามารถ pipe แพตช์ผ่าน 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> เมื่อออบเจ็กต์หรืออาร์เรย์หนึ่งต้องกลายเป็นค่าที่ระบุแบบตรงทั้งหมด แทนที่จะถูกแพตช์แบบ recursive:
openclaw config patch --file ./discord.patch.json5 --replace-path 'channels.discord.guilds["123"].channels'--dry-run รันการตรวจสอบสคีมาและการตรวจสอบว่า SecretRef สามารถ resolve ได้โดยไม่เขียนข้อมูล SecretRef ที่อิง exec จะถูกข้ามโดยค่าเริ่มต้นระหว่างการรันแบบทดลอง เพิ่ม --allow-exec เมื่อคุณตั้งใจให้การรันแบบทดลองเรียกใช้คำสั่งของผู้ให้บริการ
โหมดพาธ/ค่าแบบ JSON ยังคงรองรับทั้ง SecretRef และผู้ให้บริการ:
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 5000การรันแบบทดลอง
ใช้ --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พฤติกรรมของการรันแบบทดลอง
- โหมดตัวสร้าง: รันการตรวจสอบว่า SecretRef สามารถ resolve ได้สำหรับ refs/providers ที่เปลี่ยน
- โหมด JSON (
--strict-json,--jsonหรือโหมดแบตช์): รันการตรวจสอบสคีมา พร้อมการตรวจสอบว่า SecretRef สามารถ resolve ได้ - การตรวจสอบนโยบายจะรันสำหรับพื้นผิวเป้าหมาย SecretRef ที่ทราบว่าไม่รองรับด้วย
- การตรวจสอบนโยบายจะประเมิน config ทั้งหมดหลังการเปลี่ยนแปลง ดังนั้นการเขียนออบเจ็กต์แม่ (เช่น การตั้งค่า
hooksเป็นออบเจ็กต์) จึงไม่สามารถเลี่ยงการตรวจสอบพื้นผิวที่ไม่รองรับได้ - การตรวจสอบ SecretRef แบบ exec จะถูกข้ามโดยค่าเริ่มต้นระหว่างการรันแบบทดลองเพื่อหลีกเลี่ยงผลข้างเคียงของคำสั่ง
- ใช้
--allow-execร่วมกับ--dry-runเพื่อเลือกเปิดใช้การตรวจสอบ SecretRef แบบ exec (อาจเรียกใช้คำสั่งของผู้ให้บริการ) --allow-execใช้ได้เฉพาะการรันแบบทดลองเท่านั้น และจะเกิดข้อผิดพลาดหากใช้โดยไม่มี--dry-run
ฟิลด์ของ --dry-run --json
--dry-run --json แสดงรายงานที่เครื่องอ่านได้:
ok: ระบุว่าการทดลองรันผ่านหรือไม่operations: จำนวนการกำหนดค่าที่ประเมินchecks: ระบุว่ามีการตรวจสอบสคีมา/การ resolve หรือไม่checks.resolvabilityComplete: ระบุว่าการตรวจสอบการ resolve ทำงานจนเสร็จสมบูรณ์หรือไม่ (เป็น false เมื่อข้าม refs แบบ exec)refsChecked: จำนวน refs ที่ resolve จริงระหว่างการทดลองรันskippedExecRefs: จำนวน refs แบบ exec ที่ข้ามเพราะไม่ได้ตั้งค่า--allow-execerrors: ความล้มเหลวของสคีมา/การ resolve แบบมีโครงสร้างเมื่อok=false
รูปแบบเอาต์พุต JSON
{ ok: boolean, operations: number, configPath: string, inputModes: ["value" | "json" | "builder", ...], checks: { schema: boolean, resolvability: boolean, resolvabilityComplete: boolean, }, refsChecked: number, skippedExecRefs: number, errors?: [ { kind: "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: รูปแบบคอนฟิกหลังการเปลี่ยนแปลงของคุณไม่ถูกต้อง ให้แก้พาธ/ค่า หรือรูปแบบออบเจ็กต์ provider/refConfig policy validation failed: unsupported SecretRef usage: ย้าย credential นั้นกลับไปเป็นอินพุตแบบข้อความธรรมดา/string และใช้ SecretRefs เฉพาะบนพื้นผิวที่รองรับเท่านั้นSecretRef assignment(s) could not be resolved: provider/ref ที่อ้างอิงอยู่ไม่สามารถ resolve ได้ในขณะนี้ (env var หายไป, ตัวชี้ไฟล์ไม่ถูกต้อง, provider แบบ exec ล้มเหลว หรือ provider/source ไม่ตรงกัน)Dry run note: skipped <n> exec SecretRef resolvability check(s): การทดลองรันข้าม refs แบบ exec ให้รันซ้ำพร้อม--allow-execหากคุณต้องตรวจสอบการ resolve แบบ exec- สำหรับโหมด batch ให้แก้รายการที่ล้มเหลวแล้วรัน
--dry-runอีกครั้งก่อนเขียน
ความปลอดภัยในการเขียน
openclaw config set และตัวเขียนคอนฟิกอื่นที่ OpenClaw เป็นเจ้าของจะตรวจสอบคอนฟิกเต็มรูปแบบหลังการเปลี่ยนแปลงก่อนบันทึกลงดิสก์ หาก payload ใหม่ไม่ผ่านการตรวจสอบสคีมาหรือดูเหมือนเป็นการเขียนทับที่ทำลายข้อมูล คอนฟิกที่ใช้งานอยู่จะถูกปล่อยไว้เหมือนเดิม และ payload ที่ถูกปฏิเสธจะถูกบันทึกไว้ข้างกันเป็น openclaw.json.rejected.*
ควรใช้ CLI เขียนสำหรับการแก้ไขขนาดเล็ก:
openclaw config set gateway.reload.mode hybrid --dry-runopenclaw config set gateway.reload.mode hybridopenclaw config validateหากการเขียนถูกปฏิเสธ ให้ตรวจสอบ payload ที่บันทึกไว้และแก้รูปแบบคอนฟิกทั้งหมด:
CONFIG="$(openclaw config file)"ls -lt "$CONFIG".rejected.* 2>/dev/null | headopenclaw config validateยังอนุญาตให้เขียนโดยตรงด้วย editor ได้ แต่ Gateway ที่กำลังทำงานจะถือว่าไม่เชื่อถือจนกว่าจะตรวจสอบผ่าน การแก้ไขโดยตรงที่ไม่ถูกต้องจะทำให้การเริ่มต้นล้มเหลวหรือถูกข้ามโดย hot reload; Gateway จะไม่เขียน openclaw.json ใหม่ รัน openclaw doctor --fix เพื่อซ่อมคอนฟิกที่มี prefix/ถูกเขียนทับ หรือกู้คืนสำเนาที่ทราบว่าดีล่าสุด ดู การแก้ปัญหา Gateway
การกู้คืนทั้งไฟล์สงวนไว้สำหรับการซ่อมด้วย doctor การเปลี่ยนแปลงสคีมาของ Plugin หรือความคลาดเคลื่อนของ minHostVersion จะยังแสดงข้อผิดพลาดอย่างชัดเจนแทนที่จะย้อนกลับการตั้งค่าของผู้ใช้ที่ไม่เกี่ยวข้อง เช่น models, providers, auth profiles, channels, gateway exposure, tools, memory, browser หรือ cron config
คำสั่งย่อย
config file: พิมพ์พาธไฟล์คอนฟิกที่ใช้งานอยู่ (resolve จากOPENCLAW_CONFIG_PATHหรือตำแหน่งเริ่มต้น) พาธควรระบุไฟล์ปกติ ไม่ใช่ symlink
รีสตาร์ท gateway หลังการแก้ไข
ตรวจสอบ
ตรวจสอบคอนฟิกปัจจุบันกับสคีมาที่ใช้งานอยู่โดยไม่เริ่ม gateway
openclaw config validateopenclaw config validate --jsonหลังจาก openclaw config validate ผ่านแล้ว คุณสามารถใช้ TUI ภายในเครื่องเพื่อให้เอเจนต์แบบฝังตัวเปรียบเทียบคอนฟิกที่ใช้งานอยู่กับเอกสาร ขณะที่คุณตรวจสอบแต่ละการเปลี่ยนแปลงจากเทอร์มินัลเดียวกัน:
openclaw chatจากนั้นภายใน TUI:
!openclaw config file!openclaw docs gateway auth token secretref!openclaw config validate!openclaw doctorลูปการซ่อมทั่วไป:
เปรียบเทียบกับเอกสาร
ขอให้เอเจนต์เปรียบเทียบคอนฟิกปัจจุบันของคุณกับหน้าเอกสารที่เกี่ยวข้อง และแนะนำการแก้ไขที่เล็กที่สุด
ใช้การแก้ไขแบบเจาะจง
ใช้การแก้ไขแบบเจาะจงด้วย openclaw config set หรือ openclaw configure
ตรวจสอบซ้ำ
รัน openclaw config validate อีกครั้งหลังการเปลี่ยนแปลงแต่ละครั้ง
ใช้ doctor สำหรับปัญหารันไทม์
หากการตรวจสอบผ่านแต่รันไทม์ยังไม่สมบูรณ์ ให้รัน openclaw doctor หรือ openclaw doctor --fix เพื่อรับความช่วยเหลือด้าน migration และการซ่อม