คีย์การกำหนดค่าระดับ Agent ภายใต้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.
agents.*, multiAgent.*, session.*,
messages.* และ talk.* สำหรับช่องทาง เครื่องมือ รันไทม์ของ Gateway และคีย์ระดับบนสุดอื่นๆ
ดู ข้อมูลอ้างอิงการกำหนดค่า
ค่าเริ่มต้นของ Agent
agents.defaults.workspace
ค่าเริ่มต้น: ~/.openclaw/workspace
agents.defaults.repoRoot
รากของที่เก็บแบบไม่บังคับที่แสดงในบรรทัด Runtime ของ system prompt หากไม่ได้ตั้งค่า OpenClaw จะตรวจจับโดยอัตโนมัติด้วยการไล่ขึ้นจาก workspace
agents.defaults.skills
allowlist Skills เริ่มต้นแบบไม่บังคับสำหรับ agent ที่ไม่ได้ตั้งค่า
agents.list[].skills
- ละ
agents.defaults.skillsเพื่อให้ใช้ skills ได้ไม่จำกัดโดยค่าเริ่มต้น - ละ
agents.list[].skillsเพื่อสืบทอดค่าเริ่มต้น - ตั้งค่า
agents.list[].skills: []เพื่อไม่ให้มี skills - รายการ
agents.list[].skillsที่ไม่ว่างเปล่าคือชุดสุดท้ายสำหรับ agent นั้น และ จะไม่รวมกับค่าเริ่มต้น
agents.defaults.skipBootstrap
ปิดใช้งานการสร้างไฟล์ bootstrap ของ workspace โดยอัตโนมัติ (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md)
agents.defaults.skipOptionalBootstrapFiles
ข้ามการสร้างไฟล์ workspace แบบไม่บังคับที่เลือกไว้ ขณะที่ยังเขียนไฟล์ bootstrap ที่จำเป็นอยู่ ค่าที่ใช้ได้: SOUL.md, USER.md, HEARTBEAT.md และ IDENTITY.md
agents.defaults.contextInjection
ควบคุมเวลาที่ไฟล์ bootstrap ของ workspace ถูกฉีดเข้าไปใน system prompt ค่าเริ่มต้น: "always"
"continuation-skip": เทิร์นการต่อเนื่องที่ปลอดภัย (หลังจากคำตอบของ assistant เสร็จสมบูรณ์) จะข้ามการฉีด bootstrap ของ workspace ซ้ำ เพื่อลดขนาด prompt การรัน Heartbeat และการลองใหม่หลัง Compaction ยังคงสร้างบริบทใหม่"never": ปิดใช้งาน bootstrap ของ workspace และการฉีดไฟล์บริบทในทุกเทิร์น ใช้ค่านี้เฉพาะกับ agent ที่ควบคุมวงจรชีวิต prompt ของตนเองอย่างสมบูรณ์ (เอนจินบริบทแบบกำหนดเอง รันไทม์เนทีฟที่สร้างบริบทของตนเอง หรือเวิร์กโฟลว์เฉพาะทางที่ไม่ต้องใช้ bootstrap) เทิร์น Heartbeat และเทิร์นกู้คืนหลัง Compaction ก็จะข้ามการฉีดด้วย
agents.defaults.bootstrapMaxChars
จำนวนอักขระสูงสุดต่อไฟล์ bootstrap ของ workspace ก่อนตัดทอน ค่าเริ่มต้น: 12000
agents.defaults.bootstrapTotalMaxChars
จำนวนอักขระรวมสูงสุดที่ฉีดจากไฟล์ bootstrap ของ workspace ทั้งหมด ค่าเริ่มต้น: 60000
agents.defaults.bootstrapPromptTruncationWarning
ควบคุมประกาศใน system prompt ที่ agent มองเห็นเมื่อบริบท bootstrap ถูกตัดทอน
ค่าเริ่มต้น: "once"
"off": ไม่ฉีดข้อความแจ้งการตัดทอนเข้าไปใน system prompt"once": ฉีดประกาศแบบกระชับหนึ่งครั้งต่อ signature การตัดทอนที่ไม่ซ้ำกัน (แนะนำ)"always": ฉีดประกาศแบบกระชับในทุกการรันเมื่อมีการตัดทอน
แผนผังเจ้าของงบบริบท
OpenClaw มีงบ prompt/บริบทปริมาณสูงหลายส่วน และตั้งใจแยกตามระบบย่อย แทนที่จะให้ทั้งหมดไหลผ่านปุ่มปรับทั่วไปเพียงตัวเดียวagents.defaults.bootstrapMaxChars/agents.defaults.bootstrapTotalMaxChars: การฉีด bootstrap ของ workspace ตามปกติagents.defaults.startupContext.*: prelude สำหรับการรันโมเดลแบบ one-shot เมื่อ reset/startup รวมถึงไฟล์memory/*.mdรายวันล่าสุด คำสั่งแชตเปล่า/newและ/resetจะได้รับการตอบรับ โดยไม่เรียกโมเดลskills.limits.*: รายการ skills แบบย่อที่ฉีดเข้าไปใน system promptagents.defaults.contextLimits.*: excerpt ของรันไทม์ที่มีขอบเขตและบล็อกที่ฉีดซึ่งรันไทม์เป็นเจ้าของmemory.qmd.limits.*: snippet ค้นหาหน่วยความจำแบบจัดทำดัชนีและขนาดการฉีด
agents.list[].skillsLimits.maxSkillsPromptCharsagents.list[].contextLimits.*
agents.defaults.startupContext
ควบคุม startup prelude ของเทิร์นแรกที่ฉีดในการรันโมเดลแบบ reset/startup
คำสั่งแชตเปล่า /new และ /reset จะตอบรับการ reset โดยไม่เรียกโมเดล
ดังนั้นจึงไม่โหลด prelude นี้
agents.defaults.contextLimits
ค่าเริ่มต้นร่วมสำหรับพื้นผิวบริบทรันไทม์ที่มีขอบเขต
memoryGetMaxChars: เพดาน excerpt เริ่มต้นของmemory_getก่อนเพิ่ม metadata การตัดทอนและประกาศการต่อเนื่องmemoryGetDefaultLines: หน้าต่างบรรทัดเริ่มต้นของmemory_getเมื่อ ละlinestoolResultMaxChars: เพดานผลลัพธ์เครื่องมือแบบสดที่ใช้สำหรับผลลัพธ์ที่บันทึกถาวรและ การกู้คืน overflowpostCompactionMaxChars: เพดาน excerpt ของ AGENTS.md ที่ใช้ระหว่างการฉีด รีเฟรชหลัง Compaction
agents.list[].contextLimits
override ราย agent สำหรับ knob contextLimits ร่วม ฟิลด์ที่ละไว้จะสืบทอด
จาก agents.defaults.contextLimits
skills.limits.maxSkillsPromptChars
เพดานทั่วโลกสำหรับรายการ skills แบบย่อที่ฉีดเข้าไปใน system prompt ค่านี้
ไม่มีผลต่อการอ่านไฟล์ SKILL.md ตามต้องการ
agents.list[].skillsLimits.maxSkillsPromptChars
override ราย agent สำหรับงบ skills prompt
agents.defaults.imageMaxDimensionPx
ขนาดพิกเซลสูงสุดของด้านที่ยาวที่สุดของรูปภาพในบล็อกรูปภาพของ transcript/tool ก่อนเรียก provider
ค่าเริ่มต้น: 1200
ค่าที่ต่ำกว่ามักลดการใช้ vision-token และขนาด payload ของคำขอสำหรับการรันที่มีภาพหน้าจอจำนวนมาก
ค่าที่สูงกว่าจะรักษารายละเอียดภาพได้มากขึ้น
agents.defaults.userTimezone
เขตเวลาสำหรับบริบท system prompt (ไม่ใช่ timestamp ของข้อความ) fallback ไปที่เขตเวลาของ host
agents.defaults.timeFormat
รูปแบบเวลาใน system prompt ค่าเริ่มต้น: auto (ค่ากำหนดของ OS)
agents.defaults.model
model: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจ็กต์ ({ primary, fallbacks })- รูปแบบสตริงตั้งค่าเฉพาะโมเดลหลักเท่านั้น
- รูปแบบอ็อบเจ็กต์ตั้งค่าโมเดลหลักพร้อมโมเดล failover ตามลำดับ
imageModel: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจ็กต์ ({ primary, fallbacks })- ใช้โดยเส้นทางเครื่องมือ
imageเป็นการกำหนดค่าโมเดลวิชัน - ใช้เป็นการกำหนดเส้นทางสำรองด้วยเมื่อโมเดลที่เลือก/โมเดลเริ่มต้นรับอินพุตรูปภาพไม่ได้
- ควรใช้ ref
provider/modelแบบชัดเจน ID เปล่าจะยังรับได้เพื่อความเข้ากันได้ หาก ID เปล่าตรงกับรายการที่กำหนดค่าไว้และรองรับรูปภาพในmodels.providers.*.modelsเพียงรายการเดียว OpenClaw จะเติม provider นั้นให้ ID ดังกล่าว รายการที่กำหนดค่าไว้ซึ่งตรงกันแบบกำกวมต้องใช้คำนำหน้า provider แบบชัดเจน
- ใช้โดยเส้นทางเครื่องมือ
imageGenerationModel: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจ็กต์ ({ primary, fallbacks })- ใช้โดยความสามารถสร้างรูปภาพแบบใช้ร่วมกัน และพื้นผิวเครื่องมือ/Plugin ในอนาคตที่สร้างรูปภาพ
- ค่าทั่วไป:
google/gemini-3.1-flash-image-previewสำหรับการสร้างรูปภาพ Gemini แบบ native,fal/fal-ai/flux/devสำหรับ fal,openai/gpt-image-2สำหรับ OpenAI Images หรือopenai/gpt-image-1.5สำหรับเอาต์พุต OpenAI PNG/WebP พื้นหลังโปร่งใส - หากคุณเลือก provider/model โดยตรง ให้กำหนดค่า auth ของ provider ที่ตรงกันด้วย (เช่น
GEMINI_API_KEYหรือGOOGLE_API_KEYสำหรับgoogle/*,OPENAI_API_KEYหรือ OpenAI Codex OAuth สำหรับopenai/gpt-image-2/openai/gpt-image-1.5,FAL_KEYสำหรับfal/*) - หากละไว้
image_generateยังสามารถอนุมานค่าเริ่มต้นของ provider ที่มี auth รองรับได้ โดยจะลอง provider เริ่มต้นปัจจุบันก่อน จากนั้นจึงลอง provider การสร้างรูปภาพที่ลงทะเบียนไว้ที่เหลือตามลำดับ provider-id
musicGenerationModel: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจ็กต์ ({ primary, fallbacks })- ใช้โดยความสามารถสร้างเพลงแบบใช้ร่วมกัน และเครื่องมือในตัว
music_generate - ค่าทั่วไป:
google/lyria-3-clip-preview,google/lyria-3-pro-previewหรือminimax/music-2.6 - หากละไว้
music_generateยังสามารถอนุมานค่าเริ่มต้นของ provider ที่มี auth รองรับได้ โดยจะลอง provider เริ่มต้นปัจจุบันก่อน จากนั้นจึงลอง provider การสร้างเพลงที่ลงทะเบียนไว้ที่เหลือตามลำดับ provider-id - หากคุณเลือก provider/model โดยตรง ให้กำหนดค่า auth/API key ของ provider ที่ตรงกันด้วย
- ใช้โดยความสามารถสร้างเพลงแบบใช้ร่วมกัน และเครื่องมือในตัว
videoGenerationModel: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจ็กต์ ({ primary, fallbacks })- ใช้โดยความสามารถสร้างวิดีโอแบบใช้ร่วมกัน และเครื่องมือในตัว
video_generate - ค่าทั่วไป:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashหรือqwen/wan2.7-r2v - หากละไว้
video_generateยังสามารถอนุมานค่าเริ่มต้นของ provider ที่มี auth รองรับได้ โดยจะลอง provider เริ่มต้นปัจจุบันก่อน จากนั้นจึงลอง provider การสร้างวิดีโอที่ลงทะเบียนไว้ที่เหลือตามลำดับ provider-id - หากคุณเลือก provider/model โดยตรง ให้กำหนดค่า auth/API key ของ provider ที่ตรงกันด้วย
- provider การสร้างวิดีโอ Qwen ที่รวมมารองรับวิดีโอเอาต์พุตได้สูงสุด 1 รายการ, รูปภาพอินพุต 1 รายการ, วิดีโออินพุต 4 รายการ, ระยะเวลา 10 วินาที และตัวเลือกระดับ provider ได้แก่
size,aspectRatio,resolution,audioและwatermark
- ใช้โดยความสามารถสร้างวิดีโอแบบใช้ร่วมกัน และเครื่องมือในตัว
pdfModel: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจ็กต์ ({ primary, fallbacks })- ใช้โดยเครื่องมือ
pdfสำหรับการกำหนดเส้นทางโมเดล - หากละไว้ เครื่องมือ PDF จะ fallback ไปที่
imageModelแล้วจึงไปที่โมเดลเซสชัน/โมเดลเริ่มต้นที่ resolve แล้ว
- ใช้โดยเครื่องมือ
pdfMaxBytesMb: ขีดจำกัดขนาด PDF เริ่มต้นสำหรับเครื่องมือpdfเมื่อไม่ได้ส่งmaxBytesMbตอนเรียกใช้pdfMaxPages: จำนวนหน้าสูงสุดเริ่มต้นที่โหมด fallback ของการแยกข้อมูลในเครื่องมือpdfพิจารณาverboseDefault: ระดับ verbose เริ่มต้นสำหรับ agent ค่า:"off","on","full"ค่าเริ่มต้น:"off"toolProgressDetail: โหมดรายละเอียดสำหรับสรุปเครื่องมือ/verboseและบรรทัดเครื่องมือแบบ progress-draft ค่า:"explain"(ค่าเริ่มต้น, ป้ายกำกับสำหรับมนุษย์แบบกระชับ) หรือ"raw"(ต่อท้ายคำสั่ง/รายละเอียด raw เมื่อมี)agents.list[].toolProgressDetailราย agent จะ override ค่าเริ่มต้นนี้reasoningDefault: การมองเห็น reasoning เริ่มต้นสำหรับ agent ค่า:"off","on","stream"agents.list[].reasoningDefaultราย agent จะ override ค่าเริ่มต้นนี้ ค่าเริ่มต้นของ reasoning ที่กำหนดค่าไว้จะถูกใช้เฉพาะสำหรับ owner, sender ที่ได้รับอนุญาต หรือบริบท operator-admin ของ Gateway เมื่อไม่มีการตั้งค่า override reasoning รายข้อความหรือรายเซสชันelevatedDefault: ระดับเอาต์พุต elevated เริ่มต้นสำหรับ agent ค่า:"off","on","ask","full"ค่าเริ่มต้น:"on"model.primary: รูปแบบprovider/model(เช่นopenai/gpt-5.5สำหรับการเข้าถึงด้วย OpenAI API-key หรือ Codex OAuth) หากคุณละ provider ไว้ OpenClaw จะลอง alias ก่อน จากนั้นจึงลองรายการที่ตรงกันแบบ configured-provider เดียวสำหรับ model id นั้นแบบตรงตัว แล้วจึง fallback ไปที่ provider เริ่มต้นที่กำหนดค่าไว้ (พฤติกรรมความเข้ากันได้ที่เลิกแนะนำแล้ว ดังนั้นควรใช้provider/modelแบบชัดเจน) หาก provider นั้นไม่เผยโมเดลเริ่มต้นที่กำหนดค่าไว้อีกต่อไป OpenClaw จะ fallback ไปยัง provider/model แรกที่กำหนดค่าไว้แทนการแสดงค่าเริ่มต้นของ removed-provider ที่ค้างอยู่models: แค็ตตาล็อกโมเดลและ allowlist ที่กำหนดค่าไว้สำหรับ/modelแต่ละรายการสามารถมีalias(ทางลัด) และparams(เฉพาะ provider เช่นtemperature,maxTokens,cacheRetention,context1m,responsesServerCompaction,responsesCompactThreshold,chat_template_kwargs,extra_body/extraBody)- ใช้รายการ
provider/*เช่น"openai-codex/*": {}หรือ"vllm/*": {}เพื่อแสดงโมเดลที่ค้นพบทั้งหมดสำหรับ provider ที่เลือกโดยไม่ต้องระบุ model id ทุกตัวด้วยตนเอง - การแก้ไขที่ปลอดภัย: ใช้
openclaw config set agents.defaults.models '<json>' --strict-json --mergeเพื่อเพิ่มรายการconfig setจะปฏิเสธการแทนที่ที่จะลบรายการ allowlist ที่มีอยู่ เว้นแต่คุณจะส่ง--replace - โฟลว์ configure/onboarding ที่ scope ตาม provider จะ merge โมเดลของ provider ที่เลือกเข้าใน map นี้ และคง provider ที่ไม่เกี่ยวข้องซึ่งกำหนดค่าไว้แล้วไว้
- สำหรับโมเดล OpenAI Responses โดยตรง Compaction ฝั่งเซิร์ฟเวอร์จะเปิดใช้อัตโนมัติ ใช้
params.responsesServerCompaction: falseเพื่อหยุดการ injectcontext_managementหรือใช้params.responsesCompactThresholdเพื่อ override threshold ดู OpenAI server-side compaction
- ใช้รายการ
params: พารามิเตอร์ provider เริ่มต้นแบบ global ที่ใช้กับทุกโมเดล ตั้งค่าที่agents.defaults.params(เช่น{ cacheRetention: "long" })- ลำดับความสำคัญการ merge ของ
params(config):agents.defaults.params(ฐาน global) จะถูก override โดยagents.defaults.models["provider/model"].params(รายโมเดล) จากนั้นagents.list[].params(agent id ที่ตรงกัน) จะ override ตาม key ดูรายละเอียดใน Prompt Caching params.extra_body/params.extraBody: JSON pass-through ขั้นสูงที่ merge เข้าใน request body ของapi: "openai-completions"สำหรับพร็อกซีที่เข้ากันได้กับ OpenAI หากชนกับ key ของ request ที่สร้างขึ้น extra body จะเป็นฝ่ายชนะ เส้นทาง completions ที่ไม่ใช่ native จะยังตัดstoreเฉพาะ OpenAI ออกหลังจากนั้นparams.chat_template_kwargs: อาร์กิวเมนต์ chat-template ที่เข้ากันได้กับ vLLM/OpenAI ซึ่ง merge เข้าใน request body ระดับบนสุดของapi: "openai-completions"สำหรับvllm/nemotron-3-*ที่ปิด thinking อยู่ Plugin vLLM ที่รวมมาจะส่งenable_thinking: falseและforce_nonempty_content: trueโดยอัตโนมัติchat_template_kwargsแบบชัดเจนจะ override ค่าเริ่มต้นที่สร้างขึ้น และextra_body.chat_template_kwargsยังมีลำดับความสำคัญสุดท้าย สำหรับการควบคุม thinking ของ vLLM Qwen ให้ตั้งค่าparams.qwenThinkingFormatเป็น"chat-template"หรือ"top-level"ในรายการโมเดลนั้นcompat.thinkingFormat: รูปแบบ payload thinking ที่เข้ากันได้กับ OpenAI ใช้"qwen"สำหรับenable_thinkingระดับบนสุดแบบ Qwen หรือ"qwen-chat-template"สำหรับchat_template_kwargs.enable_thinkingบน backend ตระกูล Qwen ที่รองรับ kwargs ของ chat-template ระดับ request เช่น vLLM OpenClaw map thinking ที่ปิดไว้เป็นfalseและ thinking ที่เปิดไว้เป็นtruecompat.supportedReasoningEfforts: รายการ reasoning effort ที่เข้ากันได้กับ OpenAI รายโมเดล ใส่"xhigh"สำหรับ endpoint แบบกำหนดเองที่รับค่านี้จริง จากนั้น OpenClaw จะแสดง/think xhighในเมนูคำสั่ง, แถวเซสชันของ Gateway, การตรวจสอบ session patch, การตรวจสอบ agent CLI และการตรวจสอบllm-taskสำหรับ provider/model ที่กำหนดค่าไว้นั้น ใช้compat.reasoningEffortMapเมื่อ backend ต้องการค่าเฉพาะ provider สำหรับระดับ canonicalparams.preserveThinking: การ opt-in เฉพาะ Z.AI สำหรับ preserved thinking เมื่อเปิดใช้และ thinking เปิดอยู่ OpenClaw จะส่งthinking.clear_thinking: falseและ replayreasoning_contentก่อนหน้า ดู Z.AI thinking and preserved thinkinglocalService: process manager ระดับ provider แบบไม่บังคับสำหรับเซิร์ฟเวอร์โมเดล local/self-hosted เมื่อโมเดลที่เลือกเป็นของ provider นั้น OpenClaw จะ probehealthUrl(หรือbaseUrl + "/models"), startcommandพร้อมargsหาก endpoint ใช้งานไม่ได้, รอสูงสุดreadyTimeoutMsแล้วจึงส่ง request โมเดลcommandต้องเป็น path แบบ absoluteidleStopMs: 0จะทำให้ process คงอยู่จนกว่า OpenClaw จะ exit ค่าบวกจะหยุด process ที่ OpenClaw spawn หลังจาก idle เป็นจำนวนมิลลิวินาทีนั้น ดู Local model services- นโยบาย runtime อยู่บน provider หรือโมเดล ไม่ใช่บน
agents.defaultsใช้models.providers.<provider>.agentRuntimeสำหรับกฎทั้ง provider หรือagents.defaults.models["provider/model"].agentRuntime/agents.list[].models["provider/model"].agentRuntimeสำหรับกฎเฉพาะโมเดล โมเดล agent ของ OpenAI บน provider OpenAI อย่างเป็นทางการจะเลือก Codex เป็นค่าเริ่มต้น - config writer ที่ mutate ฟิลด์เหล่านี้ (เช่น
/models set,/models set-imageและคำสั่ง fallback add/remove) จะบันทึกรูปแบบอ็อบเจ็กต์ canonical และคงรายการ fallback ที่มีอยู่ไว้เมื่อทำได้ maxConcurrent: จำนวนการรัน agent แบบขนานสูงสุดข้ามเซสชัน (แต่ละเซสชันยังคงทำงานแบบ serialized) ค่าเริ่มต้น: 4
นโยบาย Runtime
id:"auto","pi", id ของ harness ของ Plugin ที่ลงทะเบียนไว้ หรือ alias ของ CLI backend ที่รองรับ Plugin Codex ที่รวมมาลงทะเบียนcodex; Plugin Anthropic ที่รวมมามี CLI backendclaude-cliid: "auto"ให้ harness ของ Plugin ที่ลงทะเบียนไว้อ้างสิทธิ์ turn ที่รองรับ และใช้ PI เมื่อไม่มี harness ที่ตรงกัน runtime ของ Plugin แบบชัดเจน เช่นid: "codex"ต้องใช้ harness นั้นและ fail closed หากไม่พร้อมใช้งานหรือทำงานล้มเหลว- key runtime ทั้ง agent เป็น legacy
agents.defaults.agentRuntime,agents.list[].agentRuntime, session runtime pins และOPENCLAW_AGENT_RUNTIMEจะถูกละเว้นโดยการเลือก runtime รันopenclaw doctor --fixเพื่อลบค่าค้างเก่า - โมเดล agent ของ OpenAI ใช้ harness Codex เป็นค่าเริ่มต้น;
agentRuntime.id: "codex"ระดับ provider/model ยังคงใช้ได้เมื่อคุณต้องการระบุให้ชัดเจน - สำหรับ deployment ของ Claude CLI ควรใช้
model: "anthropic/claude-opus-4-7"พร้อมagentRuntime.id: "claude-cli"ที่ scope ตามโมเดล ref โมเดล legacyclaude-cli/claude-opus-4-7ยังใช้ได้เพื่อความเข้ากันได้ แต่ config ใหม่ควรคงการเลือก provider/model ให้เป็น canonical และใส่ execution backend ไว้ในนโยบาย runtime ระดับ provider/model - สิ่งนี้ควบคุมเฉพาะการประมวลผล turn ของ agent แบบข้อความเท่านั้น การสร้างสื่อ, วิชัน, PDF, เพลง, วิดีโอ และ TTS ยังคงใช้การตั้งค่า provider/model ของตัวเอง
agents.defaults.models):
| นามแฝง | โมเดล |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.5 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
--thinking off หรือกำหนด agents.defaults.models["zai/<model>"].params.thinking เอง
โมเดล Z.AI เปิดใช้งาน tool_stream เป็นค่าเริ่มต้นสำหรับการสตรีมการเรียกเครื่องมือ ตั้งค่า agents.defaults.models["zai/<model>"].params.tool_stream เป็น false เพื่อปิดใช้งาน
โมเดล Anthropic Claude 4.6 ใช้การคิดแบบ adaptive เป็นค่าเริ่มต้นเมื่อไม่ได้ตั้งค่าระดับการคิดอย่างชัดเจน
agents.defaults.cliBackends
แบ็กเอนด์ CLI ทางเลือกสำหรับการรันสำรองแบบข้อความเท่านั้น (ไม่มีการเรียกเครื่องมือ) มีประโยชน์เป็นตัวสำรองเมื่อผู้ให้บริการ API ล้มเหลว
- แบ็กเอนด์ CLI เน้นข้อความเป็นหลัก เครื่องมือจะถูกปิดใช้งานเสมอ
- รองรับเซสชันเมื่อตั้งค่า
sessionArg - รองรับการส่งผ่านรูปภาพเมื่อ
imageArgรับพาธไฟล์ได้ reseedFromRawTranscriptWhenUncompacted: trueช่วยให้แบ็กเอนด์กู้คืนเซสชันที่ถูกทำให้ใช้ไม่ได้อย่างปลอดภัยจากส่วนท้ายของทรานสคริปต์ดิบ OpenClaw แบบจำกัดขนาด ก่อนที่จะมีสรุป Compaction แรก การเปลี่ยนโปรไฟล์ยืนยันตัวตนหรือ credential-epoch จะยังไม่ raw-reseed
agents.defaults.systemPromptOverride
แทนที่พรอมป์ระบบทั้งหมดที่ OpenClaw ประกอบขึ้นด้วยสตริงคงที่ ตั้งค่าได้ที่ระดับค่าเริ่มต้น (agents.defaults.systemPromptOverride) หรือต่อเอเจนต์ (agents.list[].systemPromptOverride) ค่าต่อเอเจนต์มีลำดับความสำคัญสูงกว่า ค่าว่างหรือค่าที่มีแต่ช่องว่างจะถูกละเว้น มีประโยชน์สำหรับการทดลองพรอมป์แบบควบคุม
agents.defaults.promptOverlays
โอเวอร์เลย์พรอมป์ที่ไม่ขึ้นกับผู้ให้บริการ ซึ่งนำไปใช้ตามตระกูลโมเดล รหัสโมเดลตระกูล GPT-5 จะได้รับสัญญาพฤติกรรมร่วมกันข้ามผู้ให้บริการ ส่วน personality ควบคุมเฉพาะเลเยอร์รูปแบบการโต้ตอบที่เป็นมิตรเท่านั้น
"friendly"(ค่าเริ่มต้น) และ"on"เปิดใช้งานเลเยอร์รูปแบบการโต้ตอบที่เป็นมิตร"off"ปิดใช้งานเฉพาะเลเยอร์ที่เป็นมิตร สัญญาพฤติกรรม GPT-5 ที่ติดแท็กยังคงเปิดใช้งานอยู่plugins.entries.openai.config.personalityแบบเดิมยังคงถูกอ่านเมื่อยังไม่ได้ตั้งค่าการตั้งค่าร่วมนี้
agents.defaults.heartbeat
การรัน Heartbeat เป็นระยะ
every: สตริงระยะเวลา (ms/s/m/h) ค่าเริ่มต้น:30m(การยืนยันตัวตนด้วยคีย์ API) หรือ1h(การยืนยันตัวตน OAuth) ตั้งค่าเป็น0mเพื่อปิดใช้งานincludeSystemPromptSection: เมื่อเป็น false จะละเว้นส่วน Heartbeat จากพรอมป์ระบบและข้ามการฉีดHEARTBEAT.mdเข้าไปในบริบทบูตสแตรป ค่าเริ่มต้น:truesuppressToolErrorWarnings: เมื่อเป็น true จะระงับเพย์โหลดคำเตือนข้อผิดพลาดของเครื่องมือระหว่างการรัน HeartbeattimeoutSeconds: เวลาสูงสุดเป็นวินาทีที่อนุญาตให้เทิร์นของเอเจนต์ Heartbeat ทำงานก่อนถูกยกเลิก เว้นว่างไว้เพื่อใช้agents.defaults.timeoutSecondsdirectPolicy: นโยบายการส่งแบบตรง/DMallow(ค่าเริ่มต้น) อนุญาตการส่งไปยังเป้าหมายโดยตรงblockระงับการส่งไปยังเป้าหมายโดยตรงและส่งออกreason=dm-blockedlightContext: เมื่อเป็น true การรัน Heartbeat จะใช้บริบทบูตสแตรปแบบเบา และคงไว้เฉพาะHEARTBEAT.mdจากไฟล์บูตสแตรปของพื้นที่ทำงานisolatedSession: เมื่อเป็น true แต่ละ Heartbeat จะรันในเซสชันใหม่โดยไม่มีประวัติการสนทนาก่อนหน้า รูปแบบการแยกเดียวกับ cronsessionTarget: "isolated"ลดต้นทุนโทเค็นต่อ Heartbeat จากประมาณ 100K เหลือประมาณ 2-5K โทเค็นskipWhenBusy: เมื่อเป็น true การรัน Heartbeat จะเลื่อนออกไปเมื่อเลนที่ยุ่งเพิ่มเติมของเอเจนต์นั้นกำลังทำงาน ได้แก่ ซับเอเจนต์ตามคีย์เซสชันของตนเองหรืองานคำสั่งแบบซ้อน เลน Cron จะเลื่อน Heartbeat ออกไปเสมอ แม้ไม่มีแฟล็กนี้- ต่อเอเจนต์: ตั้งค่า
agents.list[].heartbeatเมื่อมีเอเจนต์ใดกำหนดheartbeatเฉพาะเอเจนต์เหล่านั้น จะรัน Heartbeat - Heartbeat รันเทิร์นเอเจนต์เต็มรูปแบบ — ช่วงเวลาที่สั้นลงใช้โทเค็นมากขึ้น
agents.defaults.compaction
mode:defaultหรือsafeguard(การสรุปแบบแบ่งชิ้นสำหรับประวัติยาว) ดู Compactionprovider: รหัสของ Plugin ผู้ให้บริการ Compaction ที่ลงทะเบียนไว้ เมื่อตั้งค่าแล้ว จะเรียกsummarize()ของผู้ให้บริการแทนการสรุปด้วย LLM ในตัว หากล้มเหลวจะถอยกลับไปใช้แบบในตัว การตั้งค่าผู้ให้บริการจะบังคับmode: "safeguard"ดู CompactiontimeoutSeconds: จำนวนวินาทีสูงสุดที่อนุญาตให้การดำเนินการ Compaction ครั้งเดียวทำงาน ก่อนที่ OpenClaw จะยกเลิก ค่าเริ่มต้น:900keepRecentTokens: งบประมาณจุดตัด Pi สำหรับเก็บส่วนท้ายของทรานสคริปต์ล่าสุดแบบคำต่อคำ/compactแบบแมนนวลจะเคารพค่านี้เมื่อตั้งไว้อย่างชัดเจน มิฉะนั้น Compaction แบบแมนนวลจะเป็นเช็กพอยต์แบบตายตัวidentifierPolicy:strict(ค่าเริ่มต้น),offหรือcustomstrictจะเติมคำแนะนำในตัวสำหรับการคงตัวระบุแบบทึบไว้ข้างหน้าระหว่างการสรุป CompactionidentifierInstructions: ข้อความกำหนดเองทางเลือกสำหรับการรักษาตัวระบุ ใช้เมื่อidentifierPolicy=customqualityGuard: การตรวจ retry-on-malformed-output สำหรับสรุปแบบ safeguard เปิดใช้งานเป็นค่าเริ่มต้นในโหมด safeguard ตั้งค่าenabled: falseเพื่อข้ามการตรวจสอบmidTurnPrecheck: การตรวจแรงกดดัน tool-loop ของ Pi แบบทางเลือก เมื่อenabled: trueOpenClaw จะตรวจแรงกดดันของบริบทหลังจากเพิ่มผลลัพธ์เครื่องมือแล้วและก่อนการเรียกโมเดลครั้งถัดไป หากบริบทไม่พอดีอีกต่อไป จะยกเลิกความพยายามปัจจุบันก่อนส่งพรอมป์ และใช้เส้นทางกู้คืน precheck ที่มีอยู่ซ้ำ เพื่อตัดทอนผลลัพธ์เครื่องมือหรือทำ Compaction แล้วลองใหม่ ทำงานได้กับทั้งโหมด Compactiondefaultและsafeguardค่าเริ่มต้น: ปิดใช้งานpostCompactionSections: ชื่อส่วน H2/H3 ของ AGENTS.md แบบทางเลือกที่จะฉีดกลับเข้าไปหลัง Compaction ค่าเริ่มต้นคือ["Session Startup", "Red Lines"]; ตั้งค่า[]เพื่อปิดใช้งานการฉีดกลับ เมื่อไม่ได้ตั้งค่าหรือตั้งค่าอย่างชัดเจนเป็นคู่ค่าเริ่มต้นนั้น หัวข้อEvery Session/Safetyแบบเก่าจะถูกยอมรับเป็น fallback เดิมด้วยmodel: การแทนที่provider/model-idทางเลือกสำหรับการสรุป Compaction เท่านั้น ใช้ค่านี้เมื่อเซสชันหลักควรคงโมเดลหนึ่งไว้ แต่สรุป Compaction ควรรันบนอีกโมเดลหนึ่ง เมื่อไม่ได้ตั้งค่า Compaction จะใช้โมเดลหลักของเซสชันmaxActiveTranscriptBytes: เกณฑ์ไบต์ทางเลือก (numberหรือสตริงอย่าง"20mb") ที่ทริกเกอร์ Compaction ภายในปกติก่อนการรัน เมื่อ JSONL ที่ใช้งานอยู่โตเกินเกณฑ์ ต้องใช้truncateAfterCompactionเพื่อให้ Compaction ที่สำเร็จสามารถหมุนไปยังทรานสคริปต์ถัดไปที่เล็กกว่า ปิดใช้งานเมื่อไม่ได้ตั้งค่าหรือเป็น0notifyUser: เมื่อเป็นtrueจะส่งการแจ้งสั้น ๆ ให้ผู้ใช้เมื่อ Compaction เริ่มและเมื่อเสร็จสิ้น (เช่น “Compacting context…” และ “Compaction complete”) ปิดใช้งานเป็นค่าเริ่มต้นเพื่อให้ Compaction เงียบmemoryFlush: เทิร์นเอเจนต์แบบเงียบก่อน auto-compaction เพื่อเก็บความจำถาวร ตั้งค่าmodelเป็นผู้ให้บริการ/โมเดลที่แน่นอน เช่นollama/qwen3:8bเมื่อเทิร์นดูแลระบบนี้ควรอยู่บนโมเดล local เท่านั้น การแทนที่นี้จะไม่สืบทอดลำดับ fallback ของเซสชันที่ใช้งานอยู่ ข้ามเมื่อพื้นที่ทำงานเป็นแบบอ่านอย่างเดียว
agents.defaults.runRetries
ขอบเขตการวนซ้ำ retry ของลูปรันชั้นนอกสำหรับรันเนอร์ Pi แบบฝัง เพื่อป้องกันลูปการดำเนินการไม่สิ้นสุดระหว่างการกู้คืนจากความล้มเหลว โปรดทราบว่าการตั้งค่านี้ในปัจจุบันใช้กับรันไทม์เอเจนต์แบบฝังเท่านั้น ไม่ใช่รันไทม์ ACP หรือ CLI
base: จำนวนพื้นฐานของการวนซ้ำ retry การรันสำหรับลูปรันชั้นนอก ค่าเริ่มต้น:24perProfile: จำนวนการวนซ้ำ retry การรันเพิ่มเติมที่ให้ต่อผู้สมัครโปรไฟล์ fallback ค่าเริ่มต้น:8min: ขีดจำกัดสัมบูรณ์ขั้นต่ำสำหรับการวนซ้ำ retry การรัน ค่าเริ่มต้น:32max: ขีดจำกัดสัมบูรณ์สูงสุดสำหรับการวนซ้ำ retry การรัน เพื่อป้องกันการดำเนินการหลุดควบคุม ค่าเริ่มต้น:160
agents.defaults.contextPruning
ตัดแต่ง ผลลัพธ์เครื่องมือเก่า จากบริบทในหน่วยความจำก่อนส่งไปยัง LLM ไม่ แก้ไขประวัติเซสชันบนดิสก์
cache-ttl mode behavior
cache-ttl mode behavior
mode: "cache-ttl"เปิดใช้รอบการตัดทอนttlควบคุมความถี่ที่การตัดทอนจะรันได้อีกครั้ง (หลังการแตะ cache ล่าสุด)- การตัดทอนจะ soft-trim ผลลัพธ์เครื่องมือที่มีขนาดใหญ่เกินก่อน แล้วจึง hard-clear ผลลัพธ์เครื่องมือที่เก่ากว่าหากจำเป็น
... ไว้ตรงกลางHard-clear แทนที่ผลลัพธ์เครื่องมือทั้งหมดด้วย placeholderหมายเหตุ:- บล็อกรูปภาพจะไม่ถูกตัดทอน/ล้าง
- อัตราส่วนอิงตามจำนวนอักขระ (โดยประมาณ) ไม่ใช่จำนวน token ที่แน่นอน
- หากมีข้อความของ assistant น้อยกว่า
keepLastAssistantsจะข้ามการตัดทอน
การสตรีมแบบบล็อก
- ช่องทางที่ไม่ใช่ Telegram ต้องตั้งค่า
*.blockStreaming: trueอย่างชัดเจนเพื่อเปิดใช้การตอบกลับแบบบล็อก - การแทนที่ค่าระดับช่องทาง:
channels.<channel>.blockStreamingCoalesce(และตัวแปรแยกตามบัญชี) Signal/Slack/Discord/Google Chat มีค่าเริ่มต้นminChars: 1500 humanDelay: การหยุดพักแบบสุ่มระหว่างการตอบกลับแบบบล็อกnatural= 800-2500ms การแทนที่ค่าระดับ agent:agents.list[].humanDelay
ตัวบ่งชี้การพิมพ์
- ค่าเริ่มต้น:
instantสำหรับแชทโดยตรง/การกล่าวถึง,messageสำหรับแชทกลุ่มที่ไม่ได้กล่าวถึง - การแทนที่ค่าต่อเซสชัน:
session.typingMode,session.typingIntervalSeconds
agents.defaults.sandbox
การ sandbox แบบไม่บังคับสำหรับ agent แบบฝังตัว ดูคู่มือฉบับเต็มที่ Sandboxing
Sandbox details
Sandbox details
Backend:โหมด OpenShell:
docker: รันไทม์ Docker ในเครื่อง (ค่าเริ่มต้น)ssh: รันไทม์ระยะไกลทั่วไปที่มี SSH รองรับopenshell: รันไทม์ OpenShell
backend: "openshell" การตั้งค่าเฉพาะรันไทม์จะย้ายไปที่
plugins.entries.openshell.configการตั้งค่า backend SSH:target: เป้าหมาย SSH ในรูปแบบuser@host[:port]command: คำสั่งไคลเอนต์ SSH (ค่าเริ่มต้น:ssh)workspaceRoot: root ระยะไกลแบบ absolute ที่ใช้สำหรับ workspace แยกตาม scopeidentityFile/certificateFile/knownHostsFile: ไฟล์ในเครื่องที่มีอยู่ซึ่งส่งต่อให้ OpenSSHidentityData/certificateData/knownHostsData: เนื้อหา inline หรือ SecretRefs ที่ OpenClaw แปลงเป็นไฟล์ชั่วคราวในขณะรันstrictHostKeyChecking/updateHostKeys: ตัวปรับนโยบาย host-key ของ OpenSSH
identityDataมีสิทธิ์เหนือกว่าidentityFilecertificateDataมีสิทธิ์เหนือกว่าcertificateFileknownHostsDataมีสิทธิ์เหนือกว่าknownHostsFile- ค่า
*Dataที่รองรับด้วย SecretRef จะถูก resolve จากสแนปช็อตรันไทม์ secrets ที่ใช้งานอยู่ก่อนเริ่มเซสชัน sandbox
- seed workspace ระยะไกลหนึ่งครั้งหลังสร้างหรือสร้างใหม่
- จากนั้นคงให้ workspace SSH ระยะไกลเป็นแหล่งจริง
- ส่ง
exec, เครื่องมือไฟล์ และพาธสื่อผ่าน SSH - ไม่ sync การเปลี่ยนแปลงระยะไกลกลับมายัง host โดยอัตโนมัติ
- ไม่รองรับคอนเทนเนอร์เบราว์เซอร์ sandbox
none: workspace sandbox แยกตาม scope ใต้~/.openclaw/sandboxesro: workspace sandbox ที่/workspace, mount workspace ของ agent แบบอ่านอย่างเดียวที่/agentrw: mount workspace ของ agent แบบอ่าน/เขียนที่/workspace
session: คอนเทนเนอร์ + workspace แยกต่อเซสชันagent: หนึ่งคอนเทนเนอร์ + workspace ต่อ agent (ค่าเริ่มต้น)shared: คอนเทนเนอร์และ workspace ที่ใช้ร่วมกัน (ไม่มีการแยกข้ามเซสชัน)
mirror: seed ระยะไกลจาก local ก่อน exec, sync กลับหลัง exec; workspace ในเครื่องยังเป็นแหล่งจริงremote: seed ระยะไกลหนึ่งครั้งเมื่อสร้าง sandbox แล้วคงให้ workspace ระยะไกลเป็นแหล่งจริง
remote การแก้ไขบน host-local ที่ทำนอก OpenClaw จะไม่ถูก sync เข้า sandbox โดยอัตโนมัติหลังขั้นตอน seed
การขนส่งคือ SSH เข้าไปยัง sandbox ของ OpenShell แต่ Plugin เป็นเจ้าของวงจรชีวิตของ sandbox และการ sync แบบ mirror ที่เป็นตัวเลือกsetupCommand รันหนึ่งครั้งหลังสร้างคอนเทนเนอร์ (ผ่าน sh -lc) ต้องมี network egress, root ที่เขียนได้, ผู้ใช้ rootค่าเริ่มต้นของคอนเทนเนอร์คือ network: "none" — ตั้งเป็น "bridge" (หรือเครือข่าย bridge แบบกำหนดเอง) หาก agent ต้องการการเข้าถึงขาออก
"host" ถูกบล็อก "container:<id>" ถูกบล็อกโดยค่าเริ่มต้น เว้นแต่คุณจะตั้งค่า
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true อย่างชัดเจน (break-glass)ไฟล์แนบขาเข้า จะถูกจัดวางไว้ใน media/inbound/* ใน workspace ที่ใช้งานอยู่docker.binds mount ไดเรกทอรี host เพิ่มเติม; binds ระดับ global และต่อ agent จะถูก mergeเบราว์เซอร์ sandbox (sandbox.browser.enabled): Chromium + CDP ในคอนเทนเนอร์ URL noVNC ถูกฉีดเข้า system prompt ไม่ต้องใช้ browser.enabled ใน openclaw.json
การเข้าถึง noVNC observer ใช้การยืนยันตัวตน VNC เป็นค่าเริ่มต้น และ OpenClaw จะสร้าง URL token อายุสั้น (แทนการเปิดเผยรหัสผ่านใน URL ที่ใช้ร่วมกัน)allowHostControl: false(ค่าเริ่มต้น) บล็อกเซสชัน sandbox ไม่ให้เล็งไปที่เบราว์เซอร์ของ hostnetworkมีค่าเริ่มต้นเป็นopenclaw-sandbox-browser(เครือข่าย bridge เฉพาะ) ตั้งเป็นbridgeเฉพาะเมื่อคุณต้องการการเชื่อมต่อ bridge ระดับ global อย่างชัดเจนcdpSourceRangeจำกัด ingress ของ CDP ที่ขอบคอนเทนเนอร์เป็นช่วง CIDR ได้ตามต้องการ (เช่น172.21.0.1/32)sandbox.browser.bindsmount ไดเรกทอรี host เพิ่มเติมเข้าเฉพาะคอนเทนเนอร์เบราว์เซอร์ sandbox เมื่อตั้งค่า (รวมถึง[]) จะใช้แทนdocker.bindsสำหรับคอนเทนเนอร์เบราว์เซอร์- ค่าเริ่มต้นการเปิดใช้งานกำหนดไว้ใน
scripts/sandbox-browser-entrypoint.shและปรับแต่งสำหรับ host คอนเทนเนอร์:--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(เปิดใช้ตามค่าเริ่มต้น)--disable-3d-apis,--disable-software-rasterizer, และ--disable-gpuถูก เปิดใช้ตามค่าเริ่มต้น และสามารถปิดได้ด้วยOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0หากการใช้งาน WebGL/3D ต้องการOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0เปิดใช้ extensions อีกครั้ง หาก workflow ของคุณ ต้องพึ่งพาสิ่งเหล่านั้น--renderer-process-limit=2เปลี่ยนได้ด้วยOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; ตั้งเป็น0เพื่อใช้ขีดจำกัด process ค่าเริ่มต้นของ Chromium- รวมถึง
--no-sandboxเมื่อเปิดใช้noSandbox - ค่าเริ่มต้นคือ baseline ของ image คอนเทนเนอร์; ใช้ image เบราว์เซอร์แบบกำหนดเองพร้อม entrypoint แบบกำหนดเองเพื่อเปลี่ยนค่าเริ่มต้นของคอนเทนเนอร์
sandbox.docker.binds ใช้ได้เฉพาะ Docker
สร้าง images (จาก source checkout):
docker build แบบ inline ที่ Sandboxing § Images and setup
agents.list (การแทนที่ค่าต่อ agent)
ใช้ agents.list[].tts เพื่อกำหนดผู้ให้บริการ TTS, เสียง, โมเดล,
สไตล์ หรือโหมด TTS อัตโนมัติของเอเจนต์เอง บล็อกเอเจนต์จะ deep-merge ทับ
messages.tts ระดับโกลบอล ดังนั้นข้อมูลรับรองที่ใช้ร่วมกันจึงอยู่ในที่เดียวได้ ขณะที่เอเจนต์แต่ละตัว
override เฉพาะฟิลด์เสียงหรือผู้ให้บริการที่ต้องใช้ override ของเอเจนต์ที่ใช้งานอยู่
จะมีผลกับการตอบกลับแบบพูดโดยอัตโนมัติ, /tts audio, /tts status และ
เครื่องมือเอเจนต์ tts ดูตัวอย่างผู้ให้บริการและลำดับความสำคัญได้ที่ ข้อความเป็นเสียง
id: id เอเจนต์ที่เสถียร (จำเป็น)default: เมื่อตั้งไว้หลายรายการ รายการแรกจะชนะ (มีการบันทึกคำเตือน) หากไม่ได้ตั้งค่าไว้ รายการแรกในลิสต์จะเป็นค่าเริ่มต้นmodel: รูปแบบสตริงจะตั้ง primary แบบเคร่งครัดต่อเอเจนต์โดยไม่มี model fallback; รูปแบบอ็อบเจกต์{ primary }ก็เคร่งครัดเช่นกัน เว้นแต่คุณจะเพิ่มfallbacksใช้{ primary, fallbacks: [...] }เพื่อให้เอเจนต์นั้นเลือกใช้ fallback หรือ{ primary, fallbacks: [] }เพื่อระบุพฤติกรรมแบบเคร่งครัดอย่างชัดเจน งาน Cron ที่ override เฉพาะprimaryจะยังคงสืบทอด fallback เริ่มต้น เว้นแต่คุณจะตั้งfallbacks: []params: พารามิเตอร์สตรีมต่อเอเจนต์ที่ merge ทับรายการโมเดลที่เลือกในagents.defaults.modelsใช้สิ่งนี้สำหรับ override เฉพาะเอเจนต์ เช่นcacheRetention,temperatureหรือmaxTokensโดยไม่ต้องทำซ้ำแคตตาล็อกโมเดลทั้งหมดtts: override ข้อความเป็นเสียงต่อเอเจนต์แบบไม่บังคับ บล็อกนี้จะ deep-merge ทับmessages.ttsดังนั้นให้เก็บข้อมูลรับรองผู้ให้บริการที่ใช้ร่วมกันและนโยบาย fallback ไว้ในmessages.ttsและตั้งเฉพาะค่าที่ขึ้นกับบุคลิก เช่น ผู้ให้บริการ เสียง โมเดล สไตล์ หรือโหมดอัตโนมัติไว้ที่นี่skills: allowlist ของ Skills ต่อเอเจนต์แบบไม่บังคับ หากละไว้ เอเจนต์จะสืบทอดagents.defaults.skillsเมื่อตั้งค่าไว้; ลิสต์ที่ระบุอย่างชัดเจนจะแทนที่ค่าเริ่มต้นแทนการ merge และ[]หมายถึงไม่มี SkillsthinkingDefault: ระดับการคิดเริ่มต้นต่อเอเจนต์แบบไม่บังคับ (off | minimal | low | medium | high | xhigh | adaptive | max) overrideagents.defaults.thinkingDefaultสำหรับเอเจนต์นี้เมื่อไม่ได้ตั้ง override ต่อข้อความหรือเซสชัน โปรไฟล์ผู้ให้บริการ/โมเดลที่เลือกจะควบคุมว่าค่าใดใช้ได้; สำหรับ Google Gemini,adaptiveจะคงการคิดแบบไดนามิกที่ผู้ให้บริการเป็นเจ้าของไว้ (thinkingLevelจะถูกละไว้บน Gemini 3/3.1,thinkingBudget: -1บน Gemini 2.5)reasoningDefault: การแสดงผล reasoning เริ่มต้นต่อเอเจนต์แบบไม่บังคับ (on | off | stream) overrideagents.defaults.reasoningDefaultสำหรับเอเจนต์นี้เมื่อไม่ได้ตั้ง override reasoning ต่อข้อความหรือเซสชันfastModeDefault: ค่าเริ่มต้นต่อเอเจนต์แบบไม่บังคับสำหรับโหมดเร็ว (true | false) ใช้เมื่อไม่ได้ตั้ง override โหมดเร็วต่อข้อความหรือเซสชันmodels: override แคตตาล็อกโมเดล/รันไทม์ต่อเอเจนต์แบบไม่บังคับ โดยใช้ fullprovider/modelids เป็นคีย์ ใช้models["provider/model"].agentRuntimeสำหรับข้อยกเว้นรันไทม์ต่อเอเจนต์runtime: descriptor รันไทม์ต่อเอเจนต์แบบไม่บังคับ ใช้type: "acp"พร้อมค่าเริ่มต้นruntime.acp(agent,backend,mode,cwd) เมื่อเอเจนต์ควรใช้เซสชัน harness ของ ACP เป็นค่าเริ่มต้นidentity.avatar: พาธที่สัมพันธ์กับ workspace, URLhttp(s)หรือ URIdata:identityจะอนุมานค่าเริ่มต้น:ackReactionจากemoji,mentionPatternsจากname/emojisubagents.allowAgents: allowlist ของ id เอเจนต์สำหรับเป้าหมายsessions_spawn.agentIdแบบชัดเจน (["*"]= ใดก็ได้; ค่าเริ่มต้น: เอเจนต์เดียวกันเท่านั้น) ใส่ id ของผู้ร้องขอเมื่อควรอนุญาตการเรียกagentIdที่ชี้มายังตัวเอง- ตัวป้องกันการสืบทอด sandbox: หากเซสชันผู้ร้องขออยู่ใน sandbox,
sessions_spawnจะปฏิเสธเป้าหมายที่จะรันแบบไม่มี sandbox subagents.requireAgentId: เมื่อเป็น true จะบล็อกการเรียกsessions_spawnที่ละagentId(บังคับให้เลือกโปรไฟล์อย่างชัดเจน; ค่าเริ่มต้น: false)
การกำหนดเส้นทางหลายเอเจนต์
รันเอเจนต์ที่แยกกันหลายตัวภายใน Gateway เดียว ดู หลายเอเจนต์ฟิลด์การจับคู่ของ binding
type(ไม่บังคับ):routeสำหรับการกำหนดเส้นทางปกติ (type ที่หายไปจะมีค่าเริ่มต้นเป็น route),acpสำหรับ binding การสนทนา ACP แบบ persistentmatch.channel(จำเป็น)match.accountId(ไม่บังคับ;*= บัญชีใดก็ได้; ละไว้ = บัญชีเริ่มต้น)match.peer(ไม่บังคับ;{ kind: direct|group|channel, id })match.guildId/match.teamId(ไม่บังคับ; เฉพาะ channel)acp(ไม่บังคับ; เฉพาะสำหรับtype: "acp"):{ mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(ตรงกันพอดี ไม่มี peer/guild/team)match.accountId: "*"(ครอบคลุมทั้ง channel)- เอเจนต์เริ่มต้น
bindings แรกที่ตรงกันจะชนะ
สำหรับรายการ type: "acp" OpenClaw จะ resolve ด้วยตัวตนการสนทนาที่ตรงกันพอดี (match.channel + account + match.peer.id) และไม่ใช้ลำดับระดับ route binding ข้างต้น
โปรไฟล์การเข้าถึงต่อเอเจนต์
การเข้าถึงเต็มรูปแบบ (ไม่มี sandbox)
การเข้าถึงเต็มรูปแบบ (ไม่มี sandbox)
เครื่องมือแบบอ่านอย่างเดียว + workspace
เครื่องมือแบบอ่านอย่างเดียว + workspace
ไม่มีการเข้าถึงระบบไฟล์ (เฉพาะการส่งข้อความ)
ไม่มีการเข้าถึงระบบไฟล์ (เฉพาะการส่งข้อความ)
เซสชัน
รายละเอียดฟิลด์เซสชัน
รายละเอียดฟิลด์เซสชัน
scope: กลยุทธ์การจัดกลุ่มเซสชันพื้นฐานสำหรับบริบทแชตกลุ่มper-sender(ค่าเริ่มต้น): ผู้ส่งแต่ละรายจะได้รับเซสชันที่แยกกันภายในบริบทช่องทางglobal: ผู้เข้าร่วมทั้งหมดในบริบทช่องทางใช้เซสชันเดียวร่วมกัน (ใช้เฉพาะเมื่อตั้งใจให้มีบริบทร่วมกัน)
dmScope: วิธีจัดกลุ่ม DMmain: DM ทั้งหมดใช้เซสชันหลักร่วมกันper-peer: แยกตาม ID ผู้ส่งข้ามช่องทางper-channel-peer: แยกตามช่องทาง + ผู้ส่ง (แนะนำสำหรับกล่องขาเข้าที่มีผู้ใช้หลายคน)per-account-channel-peer: แยกตามบัญชี + ช่องทาง + ผู้ส่ง (แนะนำสำหรับหลายบัญชี)
identityLinks: แมป ID ตามบัญญัติไปยังเพียร์ที่นำหน้าด้วยผู้ให้บริการสำหรับการแชร์เซสชันข้ามช่องทาง คำสั่ง dock เช่น/dock_discordใช้แมปเดียวกันเพื่อสลับเส้นทางตอบกลับของเซสชันที่ใช้งานอยู่ไปยังเพียร์ช่องทางที่ลิงก์ไว้อีกรายการหนึ่ง ดู การ dock ช่องทางreset: นโยบายรีเซ็ตหลักdailyรีเซ็ตที่เวลาโลคัลatHour;idleรีเซ็ตหลังจากidleMinutesเมื่อกำหนดค่าทั้งคู่ รายการที่หมดอายุก่อนจะชนะ ความสดใหม่ของการรีเซ็ตแบบรายวันใช้sessionStartedAtของแถวเซสชัน; ความสดใหม่ของการรีเซ็ตเมื่อว่างใช้lastInteractionAtการเขียนเบื้องหลัง/เหตุการณ์ระบบ เช่น Heartbeat, การปลุก Cron, การแจ้งเตือน exec และงานบัญชีของ Gateway สามารถอัปเดตupdatedAtได้ แต่ไม่ได้ทำให้เซสชันแบบรายวัน/ว่างยังคงสดใหม่resetByType: การแทนที่รายประเภท (direct,group,thread) รองรับdmแบบเดิมเป็น alias ของdirectmainKey: ฟิลด์แบบเดิม Runtime ใช้"main"สำหรับบัคเก็ตแชตตรงหลักเสมอagentToAgent.maxPingPongTurns: จำนวนรอบตอบกลับไปมาสูงสุดระหว่างเอเจนต์ระหว่างการแลกเปลี่ยน agent-to-agent (จำนวนเต็ม, ช่วง:0-20, ค่าเริ่มต้น:5)0ปิดการต่อเชน ping-pongsendPolicy: จับคู่ตามchannel,chatType(direct|group|channel, พร้อม alias แบบเดิมdm),keyPrefixหรือrawKeyPrefixการปฏิเสธรายการแรกจะชนะmaintenance: การล้าง session-store + การควบคุมการเก็บรักษาmode:warnแสดงเฉพาะคำเตือน;enforceใช้การล้างข้อมูลpruneAfter: เกณฑ์อายุสำหรับรายการเก่า (ค่าเริ่มต้น30d)maxEntries: จำนวนรายการสูงสุดในsessions.json(ค่าเริ่มต้น500) Runtime เขียนการล้างข้อมูลแบบแบตช์พร้อมบัฟเฟอร์ high-water ขนาดเล็กสำหรับขีดจำกัดระดับโปรดักชัน;openclaw sessions cleanup --enforceใช้ขีดจำกัดทันทีrotateBytes: เลิกใช้แล้วและถูกละเว้น;openclaw doctor --fixนำออกจาก config รุ่นเก่าresetArchiveRetention: การเก็บรักษาอาร์ไคฟ์ transcript*.reset.<timestamp>ค่าเริ่มต้นเป็นpruneAfter; ตั้งค่าเป็นfalseเพื่อปิดmaxDiskBytes: งบดิสก์ของไดเรกทอรีเซสชันที่ไม่บังคับ ในโหมดwarnจะบันทึกคำเตือน; ในโหมดenforceจะลบ artifact/เซสชันที่เก่าที่สุดก่อนhighWaterBytes: เป้าหมายที่ไม่บังคับหลังการล้างข้อมูลงบ ค่าเริ่มต้นเป็น80%ของmaxDiskBytes
threadBindings: ค่าเริ่มต้นส่วนกลางสำหรับฟีเจอร์เซสชันที่ผูกกับเธรดenabled: สวิตช์ค่าเริ่มต้นหลัก (ผู้ให้บริการสามารถแทนที่ได้; Discord ใช้channels.discord.threadBindings.enabled)idleHours: การยกเลิกโฟกัสอัตโนมัติเมื่อไม่มีกิจกรรมเป็นชั่วโมงตามค่าเริ่มต้น (0ปิดใช้งาน; ผู้ให้บริการสามารถแทนที่ได้)maxAgeHours: อายุสูงสุดแบบบังคับเป็นชั่วโมงตามค่าเริ่มต้น (0ปิดใช้งาน; ผู้ให้บริการสามารถแทนที่ได้)spawnSessions: gate เริ่มต้นสำหรับสร้างเซสชันงานที่ผูกกับเธรดจากsessions_spawnและ ACP thread spawns ค่าเริ่มต้นเป็นtrueเมื่อเปิดใช้งาน thread bindings; ผู้ให้บริการ/บัญชีสามารถแทนที่ได้defaultSpawnContext: บริบท subagent แบบเนทีฟเริ่มต้นสำหรับการ spawn ที่ผูกกับเธรด ("fork"หรือ"isolated") ค่าเริ่มต้นเป็น"fork"
ข้อความ
คำนำหน้าการตอบกลับ
การแทนที่รายช่องทาง/บัญชี:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
การแก้ค่า (รายการที่เจาะจงที่สุดชนะ): บัญชี → ช่องทาง → ส่วนกลาง "" ปิดใช้งานและหยุด cascade "auto" ได้มาจาก [{identity.name}].
ตัวแปรเทมเพลต:
| ตัวแปร | คำอธิบาย | ตัวอย่าง |
|---|---|---|
{model} | ชื่อโมเดลแบบสั้น | claude-opus-4-6 |
{modelFull} | ตัวระบุโมเดลแบบเต็ม | anthropic/claude-opus-4-6 |
{provider} | ชื่อผู้ให้บริการ | anthropic |
{thinkingLevel} | ระดับการคิดปัจจุบัน | high, low, off |
{identity.name} | ชื่ออัตลักษณ์ของเอเจนต์ | (เหมือนกับ "auto") |
{think} เป็น alias ของ {thinkingLevel}.
รีแอ็กชันรับทราบ
- ค่าเริ่มต้นเป็น
identity.emojiของเอเจนต์ที่ใช้งานอยู่ มิฉะนั้นเป็น"👀"ตั้งค่า""เพื่อปิดใช้งาน - การแทนที่รายช่องทาง:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - ลำดับการแก้ค่า: บัญชี → ช่องทาง →
messages.ackReaction→ fallback ของอัตลักษณ์ - ขอบเขต:
group-mentions(ค่าเริ่มต้น),group-all,direct,all removeAckAfterReply: นำการรับทราบออกหลังการตอบกลับบนช่องทางที่รองรับรีแอ็กชัน เช่น Slack, Discord, Telegram, WhatsApp และ iMessagemessages.statusReactions.enabled: เปิดใช้งานรีแอ็กชันสถานะตามวงจรชีวิตบน Slack, Discord และ Telegram บน Slack และ Discord หากไม่ตั้งค่าไว้ จะคงการเปิดใช้งานรีแอ็กชันสถานะเมื่อรีแอ็กชันรับทราบทำงานอยู่ บน Telegram ให้ตั้งค่าเป็นtrueอย่างชัดเจนเพื่อเปิดใช้งานรีแอ็กชันสถานะตามวงจรชีวิต
ดีบาวซ์ขาเข้า
รวมข้อความแบบมีแต่ข้อความที่เข้ามาอย่างรวดเร็วจากผู้ส่งคนเดียวกันให้เป็นเทิร์นเอเจนต์เดียว สื่อ/ไฟล์แนบจะ flush ทันที คำสั่งควบคุมจะข้ามการดีบาวซ์TTS (text-to-speech)
autoควบคุมโหมด auto-TTS เริ่มต้น:off,always,inboundหรือtagged/tts on|offสามารถแทนที่ prefs โลคัลได้ และ/tts statusแสดงสถานะที่มีผลจริงsummaryModelแทนที่agents.defaults.model.primaryสำหรับ auto-summarymodelOverridesเปิดใช้งานเป็นค่าเริ่มต้น;modelOverrides.allowProviderมีค่าเริ่มต้นเป็นfalse(เลือกเปิดใช้งาน)- API keys fallback ไปที่
ELEVENLABS_API_KEY/XI_API_KEYและOPENAI_API_KEY - ผู้ให้บริการเสียงพูดที่รวมมาเป็นของ Plugin หากตั้งค่า
plugins.allowให้รวม Plugin ผู้ให้บริการ TTS แต่ละรายการที่ต้องการใช้ เช่นmicrosoftสำหรับ Edge TTS รองรับ ID ผู้ให้บริการแบบเดิมedgeเป็น alias ของmicrosoft providers.openai.baseUrlแทนที่ endpoint TTS ของ OpenAI ลำดับการแก้ค่าคือ config จากนั้นOPENAI_TTS_BASE_URLจากนั้นhttps://api.openai.com/v1- เมื่อ
providers.openai.baseUrlชี้ไปยัง endpoint ที่ไม่ใช่ OpenAI, OpenClaw จะถือว่าเป็นเซิร์ฟเวอร์ TTS ที่เข้ากันได้กับ OpenAI และผ่อนปรนการตรวจสอบโมเดล/เสียง
พูดคุย
ค่าเริ่มต้นสำหรับโหมดพูดคุย (macOS/iOS/Android)talk.providerต้องตรงกับคีย์ในtalk.providersเมื่อกำหนดค่าผู้ให้บริการพูดคุยหลายราย- คีย์พูดคุยแบบแบนเดิม (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) มีไว้เพื่อความเข้ากันได้เท่านั้น เรียกใช้openclaw doctor --fixเพื่อเขียน config ที่บันทึกไว้ใหม่เป็นtalk.providers.<provider> - Voice IDs fallback ไปที่
ELEVENLABS_VOICE_IDหรือSAG_VOICE_ID providers.*.apiKeyรองรับสตริง plaintext หรืออ็อบเจ็กต์ SecretRef- fallback ของ
ELEVENLABS_API_KEYใช้เฉพาะเมื่อไม่ได้กำหนดค่า Talk API key providers.*.voiceAliasesช่วยให้คำสั่งพูดคุยใช้ชื่อที่เป็นมิตรได้providers.mlx.modelIdเลือก repo Hugging Face ที่ตัวช่วย MLX โลคัลของ macOS ใช้ หากละไว้ macOS จะใช้mlx-community/Soprano-80M-bf16- การเล่นเสียง MLX บน macOS ทำงานผ่านตัวช่วย
openclaw-mlx-ttsที่รวมมาเมื่อมีอยู่ หรือ executable บนPATH;OPENCLAW_MLX_TTS_BINแทนที่เส้นทางตัวช่วยสำหรับการพัฒนา consultThinkingLevelควบคุมระดับการคิดสำหรับการรันเอเจนต์ OpenClaw แบบเต็มที่อยู่เบื้องหลังการเรียก Control UI Talk realtimeopenclaw_agent_consultเว้นว่างไว้เพื่อคงพฤติกรรมเซสชัน/โมเดลปกติconsultFastModeตั้งค่าการแทนที่ fast-mode แบบ one-shot สำหรับ consults ของ Control UI Talk realtime โดยไม่เปลี่ยนการตั้งค่า fast-mode ปกติของเซสชันspeechLocaleตั้งค่า ID โลเคล BCP 47 ที่ใช้โดยการรู้จำเสียงพูดของ iOS/macOS Talk เว้นว่างไว้เพื่อใช้ค่าเริ่มต้นของอุปกรณ์silenceTimeoutMsควบคุมระยะเวลาที่โหมดพูดคุยรอหลังผู้ใช้เงียบก่อนส่ง transcript หากไม่ตั้งค่าไว้จะคงหน้าต่างหยุดชั่วคราวเริ่มต้นของแพลตฟอร์ม (700 ms บน macOS และ Android, 900 ms บน iOS)realtime.instructionsผนวกคำสั่งระบบที่หันไปหาผู้ให้บริการเข้ากับพรอมป์ realtime ในตัวของ OpenClaw เพื่อให้กำหนดค่าสไตล์เสียงได้โดยไม่สูญเสียแนวทางopenclaw_agent_consultเริ่มต้น
ที่เกี่ยวข้อง
- เอกสารอ้างอิงการกำหนดค่า — คีย์ config อื่นทั้งหมด
- การกำหนดค่า — งานทั่วไปและการตั้งค่าอย่างรวดเร็ว
- ตัวอย่างการกำหนดค่า