CLI commands

การกำหนดค่า

ตัวช่วยกำหนดค่าสำหรับการแก้ไขแบบไม่โต้ตอบใน openclaw.json: get/set/patch/unset/file/schema/validate ค่าตามพาธ และพิมพ์ไฟล์กำหนดค่าที่ใช้งานอยู่ เรียกใช้โดยไม่มีคำสั่งย่อยเพื่อเปิดวิซาร์ดการกำหนดค่า (เหมือนกับ openclaw configure)

ตัวเลือกราก

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc2VjdGlvbiA8c2VjdGlvbg " type="string"> ตัวกรองส่วนของการตั้งค่าแบบมีคำแนะนำที่ใช้ซ้ำได้เมื่อคุณเรียกใช้ openclaw config โดยไม่มีคำสั่งย่อย

ส่วนแบบมีคำแนะนำที่รองรับ: workspace, model, web, gateway, daemon, channels, plugins, skills, health

ตัวอย่าง

bash
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 --json

config schema

พิมพ์ JSON schema ที่สร้างขึ้นสำหรับ openclaw.json ไปยัง stdout เป็น JSON

What it includes
  • schema กำหนดค่ารากปัจจุบัน พร้อมฟิลด์สตริงราก $schema สำหรับเครื่องมือแก้ไข
  • เมทาดาทาเอกสารของฟิลด์ title และ description ที่ Control UI ใช้
  • โหนดอ็อบเจ็กต์ซ้อน, wildcard (*) และรายการอาร์เรย์ ([]) จะสืบทอดเมทาดาทา title / description เดียวกันเมื่อมีเอกสารฟิลด์ที่ตรงกัน
  • สาขา anyOf / oneOf / allOf จะสืบทอดเมทาดาทาเอกสารเดียวกันด้วยเมื่อมีเอกสารฟิลด์ที่ตรงกัน
  • เมทาดาทา schema ของ Plugin + ช่องทางแบบสดตามความพยายามที่ดีที่สุด เมื่อโหลด manifest ของ runtime ได้
  • schema สำรองที่สะอาดแม้เมื่อ config ปัจจุบันไม่ถูกต้อง
Related runtime RPC

config.schema.lookup ส่งคืนพาธ config ที่ทำให้เป็นมาตรฐานหนึ่งพาธพร้อมโหนด schema แบบตื้น (title, description, type, enum, const, ขอบเขตทั่วไป), เมทาดาทาคำใบ้ UI ที่ตรงกัน และสรุปลูกโดยตรง ใช้สำหรับการเจาะลึกตามพาธใน Control UI หรือไคลเอนต์แบบกำหนดเอง

bash
openclaw config schema

ส่งผ่าน pipe ไปยังไฟล์เมื่อคุณต้องการตรวจสอบหรือ validate ด้วยเครื่องมืออื่น:

bash
openclaw config schema > openclaw.schema.json

พาธ

พาธใช้รูปแบบจุดหรือวงเล็บเหลี่ยม ใส่เครื่องหมายอัญประกาศให้พาธแบบวงเล็บเหลี่ยมในตัวอย่าง shell เพื่อให้ shell เช่น zsh ไม่ขยาย [0] เป็น glob ก่อนที่ OpenClaw จะได้รับพาธ:

bash
openclaw config get agents.defaults.workspaceopenclaw config get 'agents.list[0].id'

ใช้ดัชนีรายการ agent เพื่อกำหนดเป้าหมาย agent เฉพาะ:

bash
openclaw config get agents.listopenclaw config set 'agents.list[1].tools.exec.node' "node-id-or-name"

ค่า

ค่าจะถูกแยกวิเคราะห์เป็น JSON5 เมื่อทำได้ มิฉะนั้นจะถือว่าเป็นสตริง ใช้ --strict-json เพื่อบังคับให้แยกวิเคราะห์เป็น JSON มาตรฐานโดยไม่มีการ fallback เป็นสตริง --json ยังรองรับในฐานะ alias เดิมของ --strict-json

bash
openclaw config set agents.defaults.heartbeat.every "0m"openclaw config set gateway.port 19001 --strict-jsonopenclaw config set channels.whatsapp.groups '["*"]' --strict-json

เมื่อเปิดใช้ --strict-json ไวยากรณ์ที่มีเฉพาะใน JSON5 เช่น comment, trailing comma หรือคีย์อ็อบเจ็กต์ที่ไม่ใส่อัญประกาศจะถูกปฏิเสธ ละ --strict-json สำหรับการแยกวิเคราะห์ค่า JSON5 พร้อม fallback เป็นสตริงดิบ

config get <path> --json พิมพ์ค่าดิบเป็น JSON แทนข้อความที่จัดรูปแบบสำหรับเทอร์มินัล

ใช้ --merge เมื่อเพิ่มรายการเข้า map เหล่านั้น:

bash
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 แบบ:

Value mode

bash
openclaw config set <path> <value>

SecretRef builder mode

bash
openclaw config set channels.discord.token \  --ref-provider default \  --ref-source env \  --ref-id DISCORD_BOT_TOKEN

Provider builder mode

โหมดตัวสร้าง Provider กำหนดเป้าหมายเฉพาะพาธ secrets.providers.<alias> เท่านั้น:

bash
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

Batch mode

bash
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" }  }]'
bash
openclaw config set --batch-file ./config-set.batch.json --dry-run

การแยกวิเคราะห์แบบ batch จะใช้ payload ของ batch (--batch-json/--batch-file) เป็นแหล่งข้อมูลจริงเสมอ --strict-json / --json ไม่เปลี่ยนพฤติกรรมการแยกวิเคราะห์แบบ batch

config patch

ใช้ config patch เมื่อคุณต้องการวางหรือ pipe patch ที่มีรูปทรงเหมือน config แทนการเรียกใช้คำสั่ง config set ตามพาธจำนวนมาก อินพุตเป็นอ็อบเจ็กต์ JSON5 อ็อบเจ็กต์จะ merge แบบ recursive, อาร์เรย์และค่าสเกลาร์จะแทนที่ค่าเป้าหมาย และ null จะลบพาธเป้าหมาย

bash
openclaw config patch --file ./openclaw.patch.json5 --dry-runopenclaw config patch --file ./openclaw.patch.json5

คุณยังสามารถ pipe patch ผ่าน stdin ได้ ซึ่งมีประโยชน์สำหรับสคริปต์ตั้งค่าระยะไกล:

bash
ssh openclaw-host 'openclaw config patch --stdin --dry-run' < ./openclaw.patch.json5ssh openclaw-host 'openclaw config patch --stdin' < ./openclaw.patch.json5

ตัวอย่าง 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> เมื่ออ็อบเจ็กต์หรืออาร์เรย์หนึ่งต้องกลายเป็นค่าที่ระบุไว้อย่างตรงตัว แทนที่จะถูก patch แบบ recursive:

bash
openclaw config patch --file ./discord.patch.json5 --replace-path 'channels.discord.guilds["123"].channels'

--dry-run เรียกใช้การตรวจสอบ schema และความสามารถในการ resolve ของ SecretRef โดยไม่เขียน Exec-backed SecretRefs จะถูกข้ามโดยค่าเริ่มต้นระหว่าง dry-run; เพิ่ม --allow-exec เมื่อคุณตั้งใจให้ dry-run รันคำสั่ง provider

โหมดพาธ/ค่าแบบ JSON ยังคงรองรับทั้ง SecretRefs และ providers:

bash
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

flag ของตัวสร้าง Provider

เป้าหมายของตัวสร้าง Provider ต้องใช้ secrets.providers.<alias> เป็นพาธ

Common flags
  • --provider-source <env|file|exec>
  • --provider-timeout-ms <ms> (file, exec)
Env provider (--provider-source env)
  • --provider-allowlist &lt;ENV_VAR&gt; (ใช้ซ้ำได้)
File provider (--provider-source file)
  • --provider-path <path> (จำเป็น)
  • --provider-mode <singleValue|json>
  • --provider-max-bytes <bytes>
  • --provider-allow-insecure-path
Exec provider (--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 &lt;KEY=VALUE&gt; (ใช้ซ้ำได้)
  • --provider-pass-env &lt;ENV_VAR&gt; (ใช้ซ้ำได้)
  • --provider-trusted-dir <path> (ใช้ซ้ำได้)
  • --provider-allow-insecure-path
  • --provider-allow-symlink-command

ตัวอย่าง exec provider ที่ทำให้ปลอดภัยขึ้น:

bash
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

ใช้ --dry-run เพื่อตรวจสอบการเปลี่ยนแปลงโดยไม่เขียน openclaw.json

bash
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
  • โหมด Builder: รันการตรวจสอบความสามารถในการ resolve ของ SecretRef สำหรับ refs/providers ที่เปลี่ยนแปลง
  • โหมด JSON (--strict-json, --json หรือโหมด batch): รันการตรวจสอบ schema พร้อมกับการตรวจสอบความสามารถในการ resolve ของ SecretRef
  • การตรวจสอบนโยบายจะรันสำหรับพื้นผิวเป้าหมาย SecretRef ที่ทราบว่าไม่รองรับด้วย
  • การตรวจสอบนโยบายประเมิน config ทั้งหมดหลังการเปลี่ยนแปลง ดังนั้นการเขียน parent-object (เช่น การตั้งค่า hooks เป็น object) จึงไม่สามารถเลี่ยงการตรวจสอบพื้นผิวที่ไม่รองรับได้
  • โดยค่าเริ่มต้น การตรวจสอบ Exec SecretRef จะถูกข้ามระหว่าง dry-run เพื่อหลีกเลี่ยงผลข้างเคียงจากคำสั่ง
  • ใช้ --allow-exec พร้อมกับ --dry-run เพื่อเลือกเปิดการตรวจสอบ exec SecretRef (ซึ่งอาจ execute คำสั่ง provider)
  • --allow-exec ใช้ได้เฉพาะ dry-run และจะเกิดข้อผิดพลาดหากใช้โดยไม่มี --dry-run
ฟิลด์ของ --dry-run --json

--dry-run --json พิมพ์รายงานที่เครื่องอ่านได้:

  • ok: dry-run ผ่านหรือไม่
  • operations: จำนวน assignment ที่ประเมิน
  • checks: การตรวจสอบ schema/resolvability ถูกรันหรือไม่
  • checks.resolvabilityComplete: การตรวจสอบความสามารถในการ resolve รันจนเสร็จหรือไม่ (เป็น false เมื่อ exec refs ถูกข้าม)
  • refsChecked: จำนวน refs ที่ถูก resolve จริงระหว่าง dry-run
  • skippedExecRefs: จำนวน exec refs ที่ถูกข้ามเพราะไม่ได้ตั้งค่า --allow-exec
  • errors: ความล้มเหลวแบบมีโครงสร้างของ missing-path, schema หรือ resolvability เมื่อ ok=false

รูปแบบเอาต์พุต JSON

json5
{  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    },  ],}

ตัวอย่างสำเร็จ

json
{  "ok": true,  "operations": 1,  "configPath": "~/.openclaw/openclaw.json",  "inputModes": ["builder"],  "checks": {    "schema": false,    "resolvability": true,    "resolvabilityComplete": true  },  "refsChecked": 1,  "skippedExecRefs": 0}

ตัวอย่างล้มเหลว

json
{  "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"    }  ]}
หาก dry-run ล้มเหลว
  • config schema validation failed: รูปแบบ config หลังการเปลี่ยนแปลงของคุณไม่ถูกต้อง ให้แก้ path/value หรือรูปแบบ object ของ provider/ref
  • Config policy validation failed: unsupported SecretRef usage: ย้าย credential นั้นกลับไปเป็นอินพุต 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): dry-run ข้าม exec refs; รันซ้ำพร้อม --allow-exec หากคุณต้องการตรวจสอบความสามารถในการ resolve ของ exec
  • สำหรับโหมด batch ให้แก้รายการที่ล้มเหลวแล้วรัน --dry-run ซ้ำก่อนเขียน

ความปลอดภัยในการเขียน

openclaw config set และตัวเขียน config อื่นที่ OpenClaw เป็นเจ้าของจะตรวจสอบ config ทั้งหมดหลังการเปลี่ยนแปลงก่อน commit ลงดิสก์ หาก payload ใหม่ไม่ผ่านการตรวจสอบ schema หรือดูเหมือนเป็นการ clobber แบบทำลายข้อมูล active config จะถูกปล่อยไว้ตามเดิม และ payload ที่ถูกปฏิเสธจะถูกบันทึกไว้ข้าง ๆ เป็น openclaw.json.rejected.*

ควรใช้การเขียนผ่าน CLI สำหรับการแก้ไขเล็ก ๆ:

bash
openclaw config set gateway.reload.mode hybrid --dry-runopenclaw config set gateway.reload.mode hybridopenclaw config validate

หากการเขียนถูกปฏิเสธ ให้ตรวจสอบ payload ที่บันทึกไว้และแก้รูปแบบ config ทั้งหมด:

bash
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/clobber หรือกู้คืนสำเนา last-known-good ดู การแก้ปัญหา Gateway

การกู้คืนทั้งไฟล์สงวนไว้สำหรับการซ่อมโดย doctor การเปลี่ยน schema ของ Plugin หรือความคลาดเคลื่อนของ minHostVersion จะยังแสดงข้อผิดพลาดชัดเจนแทนที่จะ rollback การตั้งค่าผู้ใช้อื่นที่ไม่เกี่ยวข้อง เช่น models, providers, auth profiles, channels, gateway exposure, tools, memory, browser หรือ cron config

คำสั่งย่อย

  • config file: พิมพ์ path ของไฟล์ active config (resolve จาก OPENCLAW_CONFIG_PATH หรือตำแหน่งเริ่มต้น) path ควรระบุไฟล์ปกติ ไม่ใช่ symlink

รีสตาร์ท gateway หลังการแก้ไข

ตรวจสอบ

ตรวจสอบ config ปัจจุบันกับ active schema โดยไม่เริ่ม gateway

bash
openclaw config validateopenclaw config validate --json

หลังจาก openclaw config validate ผ่านแล้ว คุณสามารถใช้ TUI ภายในเครื่องเพื่อให้อเจนต์แบบฝังตัวเปรียบเทียบ active config กับเอกสาร ขณะที่คุณตรวจสอบแต่ละการเปลี่ยนแปลงจาก terminal เดียวกัน:

bash
openclaw chat

จากนั้นภายใน TUI:

text
!openclaw config file!openclaw docs gateway auth token secretref!openclaw config validate!openclaw doctor

วงจรการซ่อมทั่วไป:

  • เปรียบเทียบกับเอกสาร

    ขอให้อเจนต์เปรียบเทียบ config ปัจจุบันของคุณกับหน้าเอกสารที่เกี่ยวข้อง และแนะนำการแก้ไขที่เล็กที่สุด

  • ใช้การแก้ไขแบบเจาะจง

    ใช้การแก้ไขแบบเจาะจงด้วย openclaw config set หรือ openclaw configure

  • ตรวจสอบซ้ำ

    รัน openclaw config validate ซ้ำหลังการเปลี่ยนแปลงแต่ละครั้ง

  • Doctor สำหรับปัญหาระหว่าง runtime

    หากการตรวจสอบผ่านแต่ runtime ยังไม่สมบูรณ์ ให้รัน openclaw doctor หรือ openclaw doctor --fix เพื่อขอความช่วยเหลือด้าน migration และการซ่อม

  • ที่เกี่ยวข้อง

    Was this useful?
    On this page

    On this page