ในหน้านี้
ในหน้านี้
Gateway
การกำหนดค่า — เอเจนต์
คีย์การกำหนดค่าที่มีขอบเขตระดับเอเจนต์ภายใต้ agents.*, multiAgent.*, session.*,
messages.* และ talk.* สำหรับช่องทาง เครื่องมือ รันไทม์ Gateway และคีย์ระดับบนสุดอื่นๆ
โปรดดู เอกสารอ้างอิงการกำหนดค่า
ค่าเริ่มต้นของเอเจนต์
agents.defaults.workspace
ค่าเริ่มต้น: OPENCLAW_WORKSPACE_DIR เมื่อตั้งค่าไว้ มิฉะนั้นใช้ ~/.openclaw/workspace (หรือ ~/.openclaw/workspace-<profile> เมื่อตั้งค่า OPENCLAW_PROFILE เป็นโปรไฟล์ที่ไม่ใช่ค่าเริ่มต้น)
ค่า agents.defaults.workspace ที่ระบุอย่างชัดเจนมีลำดับความสำคัญเหนือ
OPENCLAW_WORKSPACE_DIR ใช้ตัวแปรสภาพแวดล้อมเพื่อชี้เอเจนต์เริ่มต้น
ไปยังพื้นที่ทำงานที่เมานต์ไว้ เมื่อไม่ต้องการเขียนพาธนั้นลงในการกำหนดค่า
agents.defaults.repoRoot
รูทของรีโพซิทอรีที่เลือกกำหนดได้ ซึ่งจะแสดงในบรรทัด Runtime ของพรอมต์ระบบ หากไม่ได้ตั้งค่า OpenClaw จะตรวจหาโดยอัตโนมัติด้วยการไล่ขึ้นจากพื้นที่ทำงาน
agents.defaults.skills
รายการอนุญาต Skills เริ่มต้นที่เลือกกำหนดได้ สำหรับเอเจนต์ที่ไม่ได้ตั้งค่า
agents.list[].skills
- ละเว้น
agents.defaults.skillsเพื่ออนุญาต Skills โดยไม่จำกัดเป็นค่าเริ่มต้น - ละเว้น
agents.list[].skillsเพื่อสืบทอดค่าเริ่มต้น - ตั้งค่า
agents.list[].skills: []เพื่อไม่ใช้ Skills - รายการ
agents.list[].skillsที่ไม่ว่างคือชุดสุดท้ายสำหรับเอเจนต์นั้น โดย จะไม่ผสานกับค่าเริ่มต้น
agents.defaults.skipBootstrap
ปิดใช้งานการสร้างไฟล์บูตสแตรปของพื้นที่ทำงานโดยอัตโนมัติ (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md)
agents.defaults.skipOptionalBootstrapFiles
ข้ามการสร้างไฟล์พื้นที่ทำงานเสริมที่เลือกไว้ โดยยังคงเขียนไฟล์บูตสแตรปที่จำเป็น (AGENTS.md, TOOLS.md, BOOTSTRAP.md) ค่าที่ใช้ได้: SOUL.md, USER.md, HEARTBEAT.md และ IDENTITY.md
agents.defaults.contextInjection
ควบคุมเวลาที่จะแทรกไฟล์บูตสแตรปของพื้นที่ทำงานลงในพรอมต์ระบบ ค่าเริ่มต้น: "always"
"continuation-skip": เทิร์นการดำเนินการต่อที่ปลอดภัย (หลังการตอบกลับของผู้ช่วยเสร็จสมบูรณ์) จะข้ามการแทรกบูตสแตรปของพื้นที่ทำงานซ้ำ ซึ่งช่วยลดขนาดพรอมต์ การทำงานของ Heartbeat และการลองใหม่หลัง Compaction ยังคงสร้างบริบทใหม่"never": ปิดใช้งานการแทรกบูตสแตรปของพื้นที่ทำงานและไฟล์บริบทในทุกเทิร์น ใช้ตัวเลือกนี้เฉพาะกับเอเจนต์ที่ควบคุมวงจรชีวิตพรอมต์ของตนเองทั้งหมด (กลไกบริบทแบบกำหนดเอง รันไทม์เนทีฟที่สร้างบริบทของตนเอง หรือเวิร์กโฟลว์เฉพาะทางที่ไม่ใช้บูตสแตรป) เทิร์น Heartbeat และเทิร์นกู้คืนจาก Compaction จะข้ามการแทรกด้วย
การแทนที่ต่อเอเจนต์: agents.list[].contextInjection ค่าที่ละเว้นจะสืบทอด
agents.defaults.contextInjection
agents.defaults.bootstrapMaxChars
จำนวนอักขระสูงสุดต่อไฟล์บูตสแตรปของพื้นที่ทำงานก่อนตัดทอน ค่าเริ่มต้น: 20000
การแทนที่ต่อเอเจนต์: agents.list[].bootstrapMaxChars ค่าที่ละเว้นจะสืบทอด
agents.defaults.bootstrapMaxChars
agents.defaults.bootstrapTotalMaxChars
จำนวนอักขระรวมสูงสุดที่แทรกจากไฟล์บูตสแตรปของพื้นที่ทำงานทั้งหมด ค่าเริ่มต้น: 60000
การแทนที่ต่อเอเจนต์: agents.list[].bootstrapTotalMaxChars ค่าที่ละเว้น
จะสืบทอด agents.defaults.bootstrapTotalMaxChars
การแทนที่โปรไฟล์บูตสแตรปต่อเอเจนต์
ใช้การแทนที่โปรไฟล์บูตสแตรปต่อเอเจนต์เมื่อเอเจนต์หนึ่งต้องการพฤติกรรม
การแทรกพรอมต์ที่แตกต่างจากค่าเริ่มต้นร่วมกัน ฟิลด์ที่ละเว้นจะสืบทอดจาก
agents.defaults
agents.defaults.bootstrapPromptTruncationWarning
ควบคุมข้อความแจ้งในพรอมต์ระบบที่เอเจนต์มองเห็นเมื่อบริบทบูตสแตรปถูกตัดทอน
ค่าเริ่มต้น: "always"
"off": ไม่แทรกข้อความแจ้งการตัดทอนลงในพรอมต์ระบบ"once": แทรกข้อความแจ้งแบบกระชับหนึ่งครั้งต่อลายเซ็นการตัดทอนที่ไม่ซ้ำกัน"always": แทรกข้อความแจ้งแบบกระชับทุกครั้งที่ทำงานเมื่อมีการตัดทอน (แนะนำ)
จำนวนดิบ/จำนวนที่แทรกโดยละเอียดและฟิลด์สำหรับปรับแต่งการกำหนดค่าจะยังคงอยู่ในการวินิจฉัย เช่น รายงานบริบท/สถานะและบันทึก ส่วนบริบทผู้ใช้/รันไทม์ WebChat ตามปกติจะได้รับ เฉพาะข้อความแจ้งการกู้คืนแบบกระชับ
แผนผังความเป็นเจ้าของงบประมาณบริบท
OpenClaw มีงบประมาณพรอมต์/บริบทปริมาณสูงหลายรายการ และมีการ แยกตามระบบย่อยโดยเจตนา แทนที่จะให้ทั้งหมดไหลผ่าน ตัวควบคุมทั่วไปเพียงตัวเดียว
| งบประมาณ | ครอบคลุม |
|---|---|
agents.defaults.bootstrapMaxChars / bootstrapTotalMaxChars |
การแทรกบูตสแตรปของพื้นที่ทำงานตามปกติ |
agents.defaults.startupContext.* |
คำนำการเรียกใช้โมเดลแบบครั้งเดียวสำหรับการรีเซ็ต/เริ่มต้นระบบ รวมถึงไฟล์ memory/*.md รายวันล่าสุด คำสั่งแชตเปล่า /new และ /reset จะได้รับการตอบรับโดยไม่เรียกใช้โมเดล |
skills.limits.* |
รายการ Skills แบบกระชับที่แทรกลงในพรอมต์ระบบ |
agents.defaults.contextLimits.* |
ข้อความตัดตอนของรันไทม์ที่จำกัดขนาดและบล็อกที่รันไทม์เป็นเจ้าของซึ่งถูกแทรก |
memory.qmd.limits.* |
การกำหนดขนาดส่วนย่อยและการแทรกสำหรับการค้นหาหน่วยความจำที่จัดทำดัชนี |
การแทนที่ต่อเอเจนต์ที่สอดคล้องกัน:
agents.list[].skillsLimits.maxSkillsPromptCharsagents.list[].contextInjectionagents.list[].bootstrapMaxCharsagents.list[].bootstrapTotalMaxCharsagents.list[].contextLimits.*
agents.defaults.startupContext
ควบคุมคำนำการเริ่มต้นระบบในเทิร์นแรกที่แทรกในการเรียกใช้โมเดลเมื่อรีเซ็ต/เริ่มต้นระบบ
คำสั่งแชตเปล่า /new และ /reset จะตอบรับการรีเซ็ตโดยไม่เรียกใช้
โมเดล จึงไม่โหลดคำนำนี้
agents.defaults.contextLimits
ค่าเริ่มต้นร่วมกันสำหรับพื้นผิวบริบทของรันไทม์ที่จำกัดขนาด
memoryGetMaxChars: ขีดจำกัดเริ่มต้นของข้อความตัดตอนmemory_getก่อนเพิ่มข้อมูลเมตา การตัดทอนและข้อความแจ้งการดำเนินการต่อmemoryGetDefaultLines: ช่วงบรรทัดเริ่มต้นของmemory_getเมื่อละเว้นlinestoolResultMaxChars: เพดานผลลัพธ์เครื่องมือสดขั้นสูงที่ใช้กับผลลัพธ์ ที่จัดเก็บถาวรและการกู้คืนเมื่อเกินขีดจำกัด ปล่อยไว้โดยไม่ตั้งค่าสำหรับขีดจำกัดอัตโนมัติตามบริบทโมเดล:16000อักขระเมื่อมีโทเค็นต่ำกว่า 100K,32000อักขระเมื่อมีโทเค็น 100K+ และ64000อักขระเมื่อมีโทเค็น 200K+ ยอมรับค่าที่ระบุอย่างชัดเจนได้สูงสุด1000000สำหรับ โมเดลบริบทยาว แต่ขีดจำกัดที่มีผลยังคงถูกจำกัดไว้ที่ประมาณ 30% ของ หน้าต่างบริบทโมเดลopenclaw doctor --deepจะแสดงขีดจำกัดที่มีผล และ doctor จะเตือนเฉพาะเมื่อการแทนที่ที่ระบุอย่างชัดเจนล้าสมัยหรือไม่มีผลpostCompactionMaxChars: ขีดจำกัดข้อความตัดตอน AGENTS.md ที่ใช้ระหว่างการแทรก การรีเฟรชหลัง Compaction
agents.list[].contextLimits
การแทนที่ต่อเอเจนต์สำหรับตัวควบคุม contextLimits ที่ใช้ร่วมกัน ฟิลด์ที่ละเว้นจะสืบทอด
จาก agents.defaults.contextLimits
skills.limits.maxSkillsPromptChars
ขีดจำกัดส่วนกลางสำหรับรายการ Skills แบบกระชับที่แทรกลงในพรอมต์ระบบ ขีดจำกัดนี้
ไม่มีผลต่อการอ่านไฟล์ SKILL.md ตามความต้องการ
agents.list[].skillsLimits.maxSkillsPromptChars
การแทนที่งบประมาณพรอมต์ Skills ต่อเอเจนต์
agents.defaults.imageMaxDimensionPx
ขนาดพิกเซลสูงสุดสำหรับด้านที่ยาวที่สุดของรูปภาพในบล็อกรูปภาพจากทรานสคริปต์/เครื่องมือก่อนเรียกผู้ให้บริการ
ค่าเริ่มต้น: 1200
ค่าที่ต่ำกว่ามักลดการใช้โทเค็นภาพและขนาดเพย์โหลดคำขอสำหรับการทำงานที่มีภาพหน้าจอจำนวนมาก ค่าที่สูงกว่าจะคงรายละเอียดภาพไว้มากกว่า
agents.defaults.imageQuality
ค่ากำหนดการบีบอัด/รายละเอียดของเครื่องมือรูปภาพสำหรับรูปภาพที่โหลดจากพาธไฟล์ URL และการอ้างอิงสื่อ
ค่าเริ่มต้น: auto
OpenClaw ปรับลำดับขั้นการปรับขนาดตามโมเดลรูปภาพที่เลือก ตัวอย่างเช่น Claude Opus 4.8, OpenAI GPT-5.6 Sol, Qwen VL และโมเดลภาพ Llama 4 ที่โฮสต์ไว้สามารถใช้รูปภาพขนาดใหญ่กว่าพาธภาพรายละเอียดสูงรุ่นเก่า/ค่าเริ่มต้น ขณะที่เทิร์นที่มีหลายรูปภาพจะถูกบีบอัดอย่างเข้มข้นขึ้นในโหมด auto เพื่อควบคุมต้นทุนโทเค็นและเวลาแฝง
ค่า:
auto: ปรับตามขีดจำกัดของโมเดลและจำนวนรูปภาพefficient: เลือกใช้รูปภาพขนาดเล็กกว่าเพื่อลดการใช้โทเค็นและไบต์balanced: ใช้ลำดับขั้นมาตรฐานที่สมดุลhigh: รักษารายละเอียดเพิ่มเติมสำหรับภาพหน้าจอ แผนภาพ และรูปภาพเอกสาร
agents.defaults.userTimezone
เขตเวลาสำหรับบริบทของพรอมต์ระบบ (ไม่ใช่การประทับเวลาข้อความ) หากไม่มีจะใช้เขตเวลาของโฮสต์
agents.defaults.timeFormat
รูปแบบเวลาในพรอมต์ระบบ ค่าเริ่มต้น: auto (ค่ากำหนดของระบบปฏิบัติการ)
agents.defaults.model
model: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจกต์ ({ primary, fallbacks })- รูปแบบสตริงกำหนดเฉพาะโมเดลหลัก
- รูปแบบอ็อบเจกต์กำหนดโมเดลหลักพร้อมโมเดลสำรองตามลำดับ
utilityModel: การอ้างอิงหรือชื่อแทนprovider/modelที่ไม่บังคับสำหรับงานภายในขนาดสั้น ปัจจุบันใช้สร้างชื่อเซสชันใน Control UI, ชื่อหัวข้อ DM ของ Telegram, ชื่อเธรดอัตโนมัติของ Discord และคำบรรยายแบบร่างความคืบหน้า เมื่อไม่ได้กำหนด OpenClaw จะใช้ค่าเริ่มต้นของโมเดลขนาดเล็กที่ผู้ให้บริการหลักประกาศไว้ หากมี (OpenAI →gpt-5.6-luna, Anthropic →claude-haiku-4-5); มิฉะนั้น งานตั้งชื่อจะใช้โมเดลหลักของเอเจนต์ และคำบรรยายจะยังคงปิดอยู่ หากโมเดลอรรถประโยชน์แยกต่างหากไม่สามารถเตรียมหรือสร้างชื่อให้เสร็จได้ OpenClaw จะลองสร้างชื่อนั้นอีกครั้งด้วยโมเดลหลัก สำหรับชื่อแดชบอร์ด การหาโมเดลอรรถประโยชน์โดยอัตโนมัติและการใช้โมเดลสำรองตามปกติจะใช้ผู้ให้บริการและโปรไฟล์การยืนยันตัวตนที่มีผลกับเซสชัน ส่วนโมเดลอรรถประโยชน์ที่ระบุอย่างชัดเจนจะคงผู้ให้บริการและการยืนยันตัวตนตามที่กำหนดไว้ ตั้งค่าutilityModel: ""เพื่อข้ามเส้นทางโมเดลอรรถประโยชน์ทางเลือก โดยการสร้างชื่อแดชบอร์ดจะยังดำเนินต่อโดยตรงด้วยโมเดลเซสชันปกติagents.list[].utilityModelจะแทนที่ค่าเริ่มต้น และการแทนที่โมเดลเฉพาะการดำเนินการจะมีลำดับความสำคัญเหนือทั้งสองค่า งานอรรถประโยชน์จะเรียกโมเดลแยกต่างหากและส่งเนื้อหาเฉพาะงานไปยังผู้ให้บริการโมเดลที่เลือก การสร้างชื่อแดชบอร์ดจะส่งอักขระไม่เกิน 1,000 ตัวแรกของข้อความแรกที่ไม่ใช่คำสั่ง ส่วนคำบรรยายจะส่งคำขอขาเข้าพร้อมสรุปเครื่องมือแบบกระชับที่ปกปิดข้อมูลสำคัญแล้ว เลือกผู้ให้บริการที่ตรงกับข้อกำหนดด้านค่าใช้จ่ายและการจัดการข้อมูลimageModel: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจกต์ ({ primary, fallbacks })- เส้นทางเครื่องมือ
imageใช้ค่านี้เป็นการกำหนดค่าโมเดลการมองเห็นเมื่อโมเดลที่ใช้งานอยู่ไม่รองรับรูปภาพ ส่วนโมเดลที่รองรับการมองเห็นโดยตรงจะได้รับไบต์ของรูปภาพที่โหลดแล้วโดยตรง - นอกจากนี้ยังใช้เป็นเส้นทางสำรองเมื่อโมเดลที่เลือกหรือโมเดลเริ่มต้นไม่รองรับอินพุตรูปภาพ
- ควรใช้การอ้างอิง
provider/modelแบบระบุชัดเจน ระบบยอมรับ ID เปล่าเพื่อความเข้ากันได้ หาก ID เปล่าตรงกับรายการที่กำหนดค่าไว้และรองรับรูปภาพในmodels.providers.*.modelsเพียงรายการเดียว OpenClaw จะเติมผู้ให้บริการให้ หากตรงกับรายการที่กำหนดค่าไว้หลายรายการ ต้องระบุคำนำหน้าผู้ให้บริการอย่างชัดเจน
- เส้นทางเครื่องมือ
imageGenerationModel: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจกต์ ({ primary, fallbacks })- ใช้โดยความสามารถร่วมสำหรับการสร้างรูปภาพและพื้นผิวเครื่องมือ/Plugin ใดๆ ในอนาคตที่สร้างรูปภาพ
- ค่าที่ใช้โดยทั่วไป:
google/gemini-3.1-flash-imageสำหรับการสร้างรูปภาพแบบเนทีฟของ Gemini,fal/fal-ai/flux/devสำหรับ fal,openai/gpt-image-2สำหรับ OpenAI Images หรือopenai/gpt-image-1.5สำหรับเอาต์พุต PNG/WebP ของ OpenAI ที่มีพื้นหลังโปร่งใส - หากเลือกผู้ให้บริการ/โมเดลโดยตรง ให้กำหนดค่าการยืนยันตัวตนของผู้ให้บริการที่ตรงกันด้วย (ตัวอย่างเช่น
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ยังสามารถอนุมานค่าเริ่มต้นของผู้ให้บริการที่มีการยืนยันตัวตนรองรับได้ โดยจะลองผู้ให้บริการเริ่มต้นปัจจุบันก่อน จากนั้นจึงลองผู้ให้บริการสร้างรูปภาพที่ลงทะเบียนไว้อื่นๆ ตามลำดับ ID ผู้ให้บริการ
musicGenerationModel: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจกต์ ({ primary, fallbacks })- ใช้โดยความสามารถร่วมสำหรับการสร้างเพลงและเครื่องมือ
music_generateในตัว - ค่าที่ใช้โดยทั่วไป:
google/lyria-3-clip-preview,google/lyria-3-pro-previewหรือminimax/music-2.6 - หากละไว้
music_generateยังสามารถอนุมานค่าเริ่มต้นของผู้ให้บริการที่มีการยืนยันตัวตนรองรับได้ โดยจะลองผู้ให้บริการเริ่มต้นปัจจุบันก่อน จากนั้นจึงลองผู้ให้บริการสร้างเพลงที่ลงทะเบียนไว้อื่นๆ ตามลำดับ ID ผู้ให้บริการ - หากเลือกผู้ให้บริการ/โมเดลโดยตรง ให้กำหนดค่าการยืนยันตัวตน/คีย์ API ของผู้ให้บริการที่ตรงกันด้วย
- ใช้โดยความสามารถร่วมสำหรับการสร้างเพลงและเครื่องมือ
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ยังสามารถอนุมานค่าเริ่มต้นของผู้ให้บริการที่มีการยืนยันตัวตนรองรับได้ โดยจะลองผู้ให้บริการเริ่มต้นปัจจุบันก่อน จากนั้นจึงลองผู้ให้บริการสร้างวิดีโอที่ลงทะเบียนไว้อื่นๆ ตามลำดับ ID ผู้ให้บริการ - หากเลือกผู้ให้บริการ/โมเดลโดยตรง ให้กำหนดค่าการยืนยันตัวตน/คีย์ API ของผู้ให้บริการที่ตรงกันด้วย
- Plugin สร้างวิดีโอ Qwen อย่างเป็นทางการรองรับวิดีโอเอาต์พุตสูงสุด 1 รายการ รูปภาพอินพุต 1 รูป วิดีโออินพุต 4 รายการ ระยะเวลา 10 วินาที และตัวเลือกระดับผู้ให้บริการ
size,aspectRatio,resolution,audioและwatermark
- ใช้โดยความสามารถร่วมสำหรับการสร้างวิดีโอและเครื่องมือ
pdfModel: รับได้ทั้งสตริง ("provider/model") หรืออ็อบเจกต์ ({ primary, fallbacks })- ใช้โดยเครื่องมือ
pdfสำหรับกำหนดเส้นทางโมเดล - หากละไว้ เครื่องมือ PDF จะใช้
imageModelเป็นตัวสำรอง จากนั้นจึงใช้โมเดลเซสชัน/โมเดลเริ่มต้นที่แก้ไขแล้ว
- ใช้โดยเครื่องมือ
pdfMaxBytesMb: ขีดจำกัดขนาด PDF เริ่มต้นสำหรับเครื่องมือpdfเมื่อไม่ได้ส่งmaxBytesMbขณะเรียกใช้pdfMaxPages: จำนวนหน้าสูงสุดเริ่มต้นที่โหมดสำรองสำหรับการแยกข้อมูลของเครื่องมือpdfจะพิจารณาverboseDefault: ระดับความละเอียดเริ่มต้นสำหรับเอเจนต์ ค่า:"off","on","full"ค่าเริ่มต้น:"off"toolProgressDetail: โหมดรายละเอียดสำหรับสรุปเครื่องมือ/verboseและบรรทัดเครื่องมือในแบบร่างความคืบหน้า ค่า:"explain"(ค่าเริ่มต้น ป้ายกำกับที่มนุษย์อ่านได้แบบกระชับ) หรือ"raw"(ต่อท้ายคำสั่ง/รายละเอียดดิบเมื่อมี)agents.list[].toolProgressDetailต่อเอเจนต์จะแทนที่ค่าเริ่มต้นนี้reasoningDefault: การแสดงผลการให้เหตุผลเริ่มต้นสำหรับเอเจนต์ ค่า:"off","on","stream"agents.list[].reasoningDefaultต่อเอเจนต์จะแทนที่ค่าเริ่มต้นนี้ ค่าเริ่มต้นการให้เหตุผลที่กำหนดไว้จะใช้เฉพาะกับเจ้าของ ผู้ส่งที่ได้รับอนุญาต หรือบริบท Gateway ของผู้ดูแลระบบปฏิบัติการ เมื่อไม่ได้ตั้งค่าการแทนที่การให้เหตุผลต่อข้อความหรือต่อเซสชันelevatedDefault: ระดับเอาต์พุตแบบยกระดับเริ่มต้นสำหรับเอเจนต์ ค่า:"off","on","ask","full"ค่าเริ่มต้น:"on"model.primary: รูปแบบprovider/model(เช่นopenai/gpt-5.6-solสำหรับการเข้าถึงด้วย Codex OAuth) หากละผู้ให้บริการ OpenClaw จะลองชื่อแทนก่อน จากนั้นจึงค้นหาผู้ให้บริการที่กำหนดค่าไว้ซึ่งตรงกับ ID โมเดลนั้นพอดีและมีเพียงรายการเดียว แล้วจึงใช้ผู้ให้บริการเริ่มต้นที่กำหนดค่าไว้เป็นตัวสำรอง (เป็นพฤติกรรมความเข้ากันได้ที่เลิกแนะนำแล้ว ดังนั้นควรระบุprovider/modelอย่างชัดเจน) หากผู้ให้บริการนั้นไม่มีโมเดลเริ่มต้นที่กำหนดค่าไว้อีกต่อไป OpenClaw จะใช้ผู้ให้บริการ/โมเดลที่กำหนดค่าไว้รายการแรกแทนที่จะรายงานค่าเริ่มต้นเก่าของผู้ให้บริการที่ถูกนำออกmodels: ชื่อแทนและการตั้งค่าต่อโมเดลที่กำหนดไว้ แต่ละรายการสามารถมีalias(ทางลัด) และparams(เฉพาะผู้ให้บริการ ตัวอย่างเช่นtemperature,maxTokens,cacheRetention,context1m,responsesServerCompaction,responsesCompactThreshold, การกำหนดเส้นทางproviderของ OpenRouter,chat_template_kwargs,extra_body/extraBody) การเพิ่มรายการไม่จำกัดการแทนที่โมเดล- ใช้รายการ
provider/*เช่น"openai/*": {}หรือ"vllm/*": {}เพื่อแสดงโมเดลทั้งหมดที่ค้นพบสำหรับผู้ให้บริการที่เลือก โดยไม่ต้องระบุ ID ของทุกโมเดลด้วยตนเอง - เพิ่ม
agentRuntimeลงในรายการprovider/*เมื่อโมเดลทั้งหมดที่ค้นพบแบบไดนามิกสำหรับผู้ให้บริการนั้นควรใช้รันไทม์เดียวกัน นโยบายรันไทม์provider/modelแบบตรงกันทุกประการยังคงมีลำดับความสำคัญเหนือไวลด์การ์ด - การแก้ไขข้อมูลเมตาอย่างปลอดภัย: ใช้
openclaw config set agents.defaults.models '<json>' --strict-json --mergeเพื่อเพิ่มรายการconfig setจะปฏิเสธการแทนที่ที่ทำให้รายการเดิมถูกนำออก เว้นแต่จะส่ง--replace
- ใช้รายการ
modelPolicy.allow: รายการอนุญาตสำหรับการแทนที่ที่ระบุอย่างชัดเจน รองรับชื่อแทน การอ้างอิงprovider/modelแบบตรงกันทุกประการ และไวลด์การ์ดคำนำหน้าที่ส่วนท้าย เช่นopenai/*หรือclawrouter/anthropic/*ละไว้หรือใช้[]เพื่ออนุญาตทุกโมเดลagents.list[].modelPolicy.allowจะแทนที่นโยบายเริ่มต้นสำหรับเอเจนต์นั้น รายการว่างที่ระบุอย่างชัดเจนจะกำหนดให้เอเจนต์นั้นอนุญาตทุกโมเดล- ขั้นตอนการกำหนดค่า/เริ่มต้นใช้งานที่จำกัดขอบเขตตามผู้ให้บริการจะผสานโมเดลของผู้ให้บริการที่เลือกลงในแมปนี้ และคงผู้ให้บริการอื่นที่ไม่เกี่ยวข้องซึ่งกำหนดค่าไว้แล้ว
- สำหรับโมเดล OpenAI Responses โดยตรง Compaction ฝั่งเซิร์ฟเวอร์จะเปิดใช้งานโดยอัตโนมัติ ใช้
params.responsesServerCompaction: falseเพื่อหยุดการแทรกcontext_managementหรือparams.responsesCompactThresholdเพื่อแทนที่เกณฑ์ ดูCompaction ฝั่งเซิร์ฟเวอร์ของ OpenAI
params: พารามิเตอร์ผู้ให้บริการเริ่มต้นส่วนกลางที่ใช้กับทุกโมเดล กำหนดที่agents.defaults.params(เช่น{ cacheRetention: "long" })- ลำดับความสำคัญในการผสาน
params(การกำหนดค่า):agents.defaults.params(ฐานส่วนกลาง) จะถูกแทนที่ด้วยagents.defaults.models["provider/model"].params(ต่อโมเดล) จากนั้นagents.list[].params(ID เอเจนต์ที่ตรงกัน) จะแทนที่ตามคีย์ ดูรายละเอียดที่การแคชพรอมต์ models.providers.openrouter.params.provider: นโยบายกำหนดเส้นทางผู้ให้บริการเริ่มต้นทั่วทั้ง OpenRouter OpenClaw จะส่งค่านี้ต่อไปยังอ็อบเจกต์providerของคำขอ OpenRouter โดยagents.defaults.models["openrouter/<model>"].params.providerต่อโมเดลและพารามิเตอร์เอเจนต์จะแทนที่ตามคีย์ ดูการกำหนดเส้นทางผู้ให้บริการ OpenRouterparams.extra_body/params.extraBody: JSON ส่งผ่านขั้นสูงที่ผสานลงในเนื้อหาคำขอapi: "openai-completions"สำหรับพร็อกซีที่เข้ากันได้กับ OpenAI หากชนกับคีย์คำขอที่สร้างขึ้น เนื้อหาเพิ่มเติมจะมีลำดับความสำคัญเหนือกว่า หลังจากนั้นเส้นทาง completions ที่ไม่ใช่แบบเนทีฟจะยังคงตัดstoreที่ใช้เฉพาะกับ OpenAI ออกparams.chat_template_kwargs: อาร์กิวเมนต์เทมเพลตแชตที่เข้ากันได้กับ vLLM/OpenAI ซึ่งผสานลงในเนื้อหาคำขอapi: "openai-completions"ระดับบนสุด สำหรับvllm/nemotron-3-*ที่ปิดการคิด Plugin vLLM ที่รวมมาให้จะส่งenable_thinking: falseและforce_nonempty_content: trueโดยอัตโนมัติ;chat_template_kwargsที่ระบุชัดเจนจะแทนที่ค่าเริ่มต้นที่สร้างขึ้น และextra_body.chat_template_kwargsยังคงมีลำดับความสำคัญสุดท้าย โมเดลการคิด Qwen และ Nemotron ของ vLLM ที่กำหนดค่าไว้จะแสดงตัวเลือก/thinkแบบไบนารี (off,on) แทนระดับความพยายามหลายขั้นcompat.thinkingFormat: รูปแบบเพย์โหลดการคิดที่เข้ากันได้กับ OpenAI ใช้"together"สำหรับreasoning.enabledแบบ Together,"qwen"สำหรับenable_thinkingระดับบนสุดแบบ Qwen หรือ"qwen-chat-template"สำหรับchat_template_kwargs.enable_thinkingบนแบ็กเอนด์ตระกูล Qwen ที่รองรับ kwargs ของเทมเพลตแชตระดับคำขอ เช่น vLLM OpenClaw จะแมปการปิดการคิดเป็นfalseและการเปิดการคิดเป็นtrueและโมเดล Qwen ของ vLLM ที่กำหนดค่าไว้จะแสดงตัวเลือก/thinkแบบไบนารีสำหรับรูปแบบเหล่านี้compat.supportedReasoningEfforts: รายการระดับความพยายามในการให้เหตุผลที่เข้ากันได้กับ OpenAI ต่อโมเดล เพิ่ม"xhigh"สำหรับปลายทางแบบกำหนดเองที่รองรับค่านี้จริง จากนั้น OpenClaw จะแสดง/think xhighในเมนูคำสั่ง แถวเซสชันของ Gateway การตรวจสอบการแพตช์เซสชัน การตรวจสอบ CLI ของเอเจนต์ และการตรวจสอบllm-taskสำหรับผู้ให้บริการ/โมเดลที่กำหนดค่าไว้นั้น ใช้compat.reasoningEffortMapเมื่อแบ็กเอนด์ต้องการค่าเฉพาะผู้ให้บริการสำหรับระดับมาตรฐานparams.preserveThinking: ตัวเลือกเฉพาะ Z.AI สำหรับเปิดใช้การเก็บรักษาการคิด เมื่อเปิดใช้งานและเปิดการคิด OpenClaw จะส่งthinking.clear_thinking: falseและเล่นreasoning_contentก่อนหน้าซ้ำ ดูการคิดและการเก็บรักษาการคิดของ Z.AIlocalService: ตัวจัดการกระบวนการระดับผู้ให้บริการที่เป็นทางเลือกสำหรับเซิร์ฟเวอร์โมเดลภายในเครื่อง/ที่โฮสต์เอง เมื่อโมเดลที่เลือกเป็นของผู้ให้บริการนั้น OpenClaw จะตรวจสอบhealthUrl(หรือbaseUrl + "/models") หากปลายทางไม่ทำงาน จะเริ่มcommandพร้อมargsรอสูงสุดreadyTimeoutMsแล้วจึงส่งคำขอโมเดลcommandต้องเป็นพาธแบบสัมบูรณ์idleStopMs: 0จะคงกระบวนการไว้จนกว่า OpenClaw จะออก ส่วนค่าบวกจะหยุดกระบวนการที่ OpenClaw เริ่มขึ้นหลังจากไม่มีการใช้งานเป็นเวลาตามจำนวนมิลลิวินาทีนั้น ดูบริการโมเดลภายในเครื่อง- นโยบายรันไทม์ควรอยู่ที่ผู้ให้บริการหรือโมเดล ไม่ใช่ที่
agents.defaultsใช้models.providers.<provider>.agentRuntimeสำหรับกฎที่ใช้กับผู้ให้บริการทั้งหมด หรือใช้agents.defaults.models["provider/model"].agentRuntime/agents.list[].models["provider/model"].agentRuntimeสำหรับกฎเฉพาะโมเดล คำนำหน้าผู้ให้บริการ/โมเดลเพียงอย่างเดียวจะไม่เลือกชุดควบคุมการทำงาน เมื่อไม่ได้ตั้งค่ารันไทม์หรือกำหนดเป็นautoOpenAI อาจเลือก Codex โดยปริยายได้เฉพาะกับเส้นทาง HTTPS อย่างเป็นทางการของ Platform Responses หรือ ChatGPT Responses ที่ตรงกันทุกประการและไม่มีการกำหนดค่าทับในคำขอ ดูรันไทม์เอเจนต์โดยปริยายของ OpenAI - ตัวเขียนการกำหนดค่าที่แก้ไขฟิลด์เหล่านี้ (เช่น
/models set,/models set-imageและคำสั่งเพิ่ม/ลบทางเลือกสำรอง) จะบันทึกในรูปแบบออบเจ็กต์มาตรฐานและรักษารายการทางเลือกสำรองเดิมไว้เมื่อทำได้ maxConcurrent: จำนวนสูงสุดของการเรียกใช้เอเจนต์แบบขนานระหว่างเซสชัน (แต่ละเซสชันยังคงทำงานตามลำดับ) ค่าเริ่มต้น:4.
นโยบายรันไทม์
id:"auto","openclaw", ID ฮาร์เนสของ Plugin ที่ลงทะเบียนไว้ หรือนามแฝงแบ็กเอนด์ CLI ที่รองรับ Plugin Codex ที่รวมมาให้จะลงทะเบียนcodex; ส่วน Plugin Anthropic ที่รวมมาให้จะมีแบ็กเอนด์ CLIclaude-cliid: "auto"ช่วยให้ฮาร์เนส Plugin ที่ลงทะเบียนไว้รับเส้นทางที่มีผลซึ่งประกาศหรือเป็นไปตามสัญญาการรองรับ และใช้ OpenClaw เมื่อไม่มีฮาร์เนสที่ตรงกัน รันไทม์ Plugin ที่ระบุอย่างชัดเจน เช่นid: "codex"ต้องมีฮาร์เนสดังกล่าวและเส้นทางที่มีผลซึ่งเข้ากันได้ โดยจะปฏิเสธการทำงานเพื่อความปลอดภัยหากไม่มีอย่างใดอย่างหนึ่ง หรือหากการดำเนินการล้มเหลวid: "pi"ยอมรับเฉพาะในฐานะนามแฝงที่เลิกใช้แล้วสำหรับopenclawเพื่อรักษาความเข้ากันได้กับการกำหนดค่าที่เผยแพร่ใน v2026.5.22 และเวอร์ชันก่อนหน้า การกำหนดค่าใหม่ควรใช้openclaw- ลำดับความสำคัญของรันไทม์คือใช้นโยบายของโมเดลที่ตรงกันทุกประการก่อน (
agents.list[].models["provider/model"],agents.defaults.models["provider/model"]หรือmodels.providers.<provider>.models[]) ตามด้วยagents.list[]/agents.defaults.models["provider/*"]แล้วจึงใช้นโยบายทั่วทั้งผู้ให้บริการที่models.providers.<provider>.agentRuntime - คีย์รันไทม์ระดับเอเจนต์ทั้งหมดเป็นแบบเก่า
agents.defaults.agentRuntime,agents.list[].agentRuntime, การตรึงรันไทม์ของเซสชัน และOPENCLAW_AGENT_RUNTIMEจะถูกละเว้นในการเลือกรันไทม์ เรียกใช้openclaw doctor --fixเพื่อลบค่าที่ล้าสมัย - เส้นทาง OpenAI Responses/ChatGPT อย่างเป็นทางการผ่าน HTTPS ที่ตรงกันทุกประการและมีคุณสมบัติเหมาะสม ซึ่งไม่มีการเขียนการแทนที่คำขอไว้ อาจใช้ฮาร์เนส Codex โดยปริยาย
agentRuntime.id: "codex"ระดับผู้ให้บริการ/โมเดลทำให้ Codex เป็นข้อกำหนดที่ต้องปฏิเสธการทำงานเพื่อความปลอดภัยเมื่อไม่พร้อมใช้งาน แต่ไม่ได้ทำให้เส้นทางที่เข้ากันไม่ได้กลายเป็นเข้ากันได้ - สำหรับการปรับใช้ Claude CLI ควรใช้
model: "anthropic/claude-opus-4-8"ร่วมกับagentRuntime.id: "claude-cli"ที่กำหนดขอบเขตระดับโมเดล การอ้างอิงclaude-cli/<model>แบบเก่ายังคงใช้ได้เพื่อความเข้ากันได้ แต่การกำหนดค่าใหม่ควรรักษาการเลือกผู้ให้บริการ/โมเดลให้อยู่ในรูปแบบมาตรฐาน และกำหนดแบ็กเอนด์การดำเนินการไว้ในนโยบายรันไทม์ระดับผู้ให้บริการ/โมเดล - ส่วนนี้ควบคุมเฉพาะการดำเนินการเทิร์นของเอเจนต์แบบข้อความ การสร้างสื่อ วิชัน PDF เพลง วิดีโอ และ TTS ยังคงใช้การตั้งค่าผู้ให้บริการ/โมเดลของแต่ละส่วน
รูปแบบย่อนามแฝงในตัว (ใช้เฉพาะเมื่อโมเดลอยู่ใน agents.defaults.models):
| นามแฝง | โมเดล |
|---|---|
opus |
anthropic/claude-opus-4-8 |
sonnet |
anthropic/claude-sonnet-4-6 |
gpt |
openai/gpt-5.4 |
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 |
นามแฝงที่กำหนดค่าไว้จะมีลำดับความสำคัญเหนือค่าเริ่มต้นเสมอ
โมเดล Z.AI GLM-4.x จะเปิดใช้งานโหมดการคิดโดยอัตโนมัติ เว้นแต่จะตั้งค่า --thinking off หรือกำหนด agents.defaults.models["zai/<model>"].params.thinking ด้วยตนเอง
โมเดล Z.AI เปิดใช้งาน tool_stream เป็นค่าเริ่มต้นสำหรับการสตรีมการเรียกใช้เครื่องมือ ตั้งค่า agents.defaults.models["zai/<model>"].params.tool_stream เป็น false เพื่อปิดใช้งาน
Anthropic Claude Opus 4.8 ปิดการคิดเป็นค่าเริ่มต้นใน OpenClaw เมื่อเปิดใช้งานการคิดแบบปรับตัวอย่างชัดเจน ค่าเริ่มต้นของระดับความพยายามที่ Anthropic เป็นผู้กำหนดคือ high โมเดล Claude 4.6 ใช้ค่าเริ่มต้นเป็น adaptive เมื่อไม่ได้กำหนดระดับการคิดอย่างชัดเจน
agents.defaults.cliBackends
แบ็กเอนด์ CLI ทางเลือกสำหรับการเรียกใช้สำรองแบบข้อความเท่านั้น (ไม่มีการเรียกใช้เครื่องมือ) มีประโยชน์เป็นตัวสำรองเมื่อผู้ให้บริการ API ล้มเหลว
- แบ็กเอนด์ CLI เน้นข้อความเป็นหลัก โดยเครื่องมือจะถูกปิดใช้งานเสมอ
- รองรับเซสชันเมื่อตั้งค่า
sessionArg - รองรับการส่งผ่านรูปภาพเมื่อ
imageArgยอมรับพาธไฟล์ reseedFromRawTranscriptWhenUncompacted: trueช่วยให้แบ็กเอนด์สามารถกู้คืนเซสชันที่ถูกทำให้ใช้ไม่ได้อย่างปลอดภัย จากส่วนท้ายของทรานสคริปต์ OpenClaw ดิบที่มีขอบเขตจำกัด ก่อนที่จะมีข้อมูลสรุป Compaction ครั้งแรก การเปลี่ยนโปรไฟล์การยืนยันตัวตนหรือยุคของข้อมูลประจำตัว ยังคงไม่ทำการป้อนข้อมูลดิบซ้ำโดยเด็ดขาด
agents.defaults.promptOverlays
โอเวอร์เลย์พรอมต์ที่ไม่ขึ้นกับผู้ให้บริการ ซึ่งนำไปใช้ตามตระกูลโมเดลบนพื้นผิวพรอมต์ที่ OpenClaw ประกอบขึ้น ID โมเดลตระกูล GPT-5 จะได้รับสัญญาพฤติกรรมที่ใช้ร่วมกันในเส้นทาง OpenClaw/ผู้ให้บริการ ส่วน personality ควบคุมเฉพาะเลเยอร์รูปแบบการโต้ตอบที่เป็นมิตร เส้นทางแอปเซิร์ฟเวอร์ Codex แบบเนทีฟจะคงคำสั่งพื้นฐาน/ระดับโมเดลที่ Codex เป็นผู้กำหนดไว้แทนโอเวอร์เลย์ GPT-5 ของ OpenClaw นี้ และ OpenClaw จะปิดบุคลิกในตัวของ Codex สำหรับเธรดแบบเนทีฟ
"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.timeoutSecondsเมื่อมีการตั้งค่าไว้ มิฉะนั้นจะใช้รอบเวลา Heartbeat โดยจำกัดสูงสุดที่ 600 วินาทีdirectPolicy: นโยบายการส่งโดยตรง/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: id ของ Plugin ผู้ให้บริการ Compaction ที่ลงทะเบียนไว้ เมื่อตั้งค่า ระบบจะเรียกsummarize()ของผู้ให้บริการแทนการสรุปด้วย LLM ในตัว หากล้มเหลวจะย้อนกลับไปใช้แบบในตัว การตั้งค่าผู้ให้บริการจะบังคับใช้mode: "safeguard"ดู CompactionthinkingLevel: ระดับการคิดแบบไม่บังคับที่ใช้เฉพาะกับสรุป Compaction แบบฝังตัวของ OpenClaw (off,minimal,low,medium,high,xhigh,adaptive,maxหรือultra) ค่านี้จะแทนที่ระดับการคิดปัจจุบันของเซสชันและถูกจำกัดให้อยู่ในขอบเขตของโมเดล/รันไทม์ Compaction ที่เลือก เว้นว่างไว้เพื่อสืบทอดระดับของเซสชัน Compaction ของแอปเซิร์ฟเวอร์ Codex แบบเนทีฟจะไม่ใช้การตั้งค่านี้ เนื่องจากคำขอ compact แบบเนทีฟไม่มีการแทนที่ระดับการคิดรายปฏิบัติการ OpenClaw จะบันทึกคำเตือนเมื่อมีการกำหนดค่าtimeoutSeconds: จำนวนวินาทีสูงสุดที่อนุญาตสำหรับการดำเนินการ Compaction หนึ่งครั้งก่อนที่ OpenClaw จะยกเลิก ค่าเริ่มต้น:180keepRecentTokens: งบประมาณจุดตัดของเอเจนต์สำหรับเก็บส่วนท้ายล่าสุดของทรานสคริปต์ไว้ตามต้นฉบับ/compactแบบดำเนินการเองจะใช้ค่านี้เมื่อตั้งไว้อย่างชัดเจน มิฉะนั้น Compaction แบบดำเนินการเองจะเป็นจุดตรวจสอบแบบตายตัวrecentTurnsPreserve: จำนวนรอบสนทนาล่าสุดระหว่างผู้ใช้/ผู้ช่วยที่เก็บไว้ตามต้นฉบับนอกการสรุปเพื่อป้องกัน ค่าเริ่มต้น:3identifierPolicy:strict(ค่าเริ่มต้น),offหรือcustomโดยstrictจะเติมคำแนะนำในตัวเกี่ยวกับการคงตัวระบุแบบทึบไว้ด้านหน้าระหว่างการสรุป CompactionidentifierInstructions: ข้อความกำหนดเองแบบไม่บังคับสำหรับการรักษาตัวระบุ ซึ่งใช้เมื่อidentifierPolicy=customqualityGuard: การตรวจสอบเพื่อให้ลองใหม่เมื่อเอาต์พุตของสรุปเพื่อป้องกันมีรูปแบบไม่ถูกต้อง เปิดใช้งานโดยค่าเริ่มต้นในโหมดป้องกัน ตั้งค่าenabled: falseเพื่อข้ามการตรวจสอบmidTurnPrecheck: การตรวจสอบแรงกดดันจากลูปเครื่องมือแบบไม่บังคับ เมื่อenabled: trueOpenClaw จะตรวจสอบแรงกดดันของบริบทหลังเพิ่มผลลัพธ์เครื่องมือและก่อนเรียกโมเดลครั้งถัดไป หากบริบทไม่สามารถรองรับได้อีก ระบบจะยกเลิกความพยายามปัจจุบันก่อนส่งพรอมต์ และนำเส้นทางกู้คืนจากการตรวจสอบล่วงหน้าที่มีอยู่มาใช้เพื่อตัดผลลัพธ์เครื่องมือหรือทำ Compaction แล้วลองใหม่ ทำงานร่วมกับโหมด Compaction ทั้งdefaultและsafeguardค่าเริ่มต้น: ปิดใช้งานpostIndexSync: โหมดจัดทำดัชนีหน่วยความจำเซสชันใหม่หลัง Compaction ค่าเริ่มต้น:"async"ใช้"await"เพื่อความสดใหม่สูงสุด,"async"เพื่อลดเวลาแฝงของ Compaction หรือ"off"เฉพาะเมื่อมีการจัดการซิงค์หน่วยความจำเซสชันที่อื่นpostCompactionSections: ชื่อส่วน H2/H3 ใน AGENTS.md แบบไม่บังคับที่จะฉีดกลับเข้าไปหลัง Compaction การฉีดกลับจะถูกปิดใช้งานเมื่อไม่ได้ตั้งค่าหรือตั้งเป็น[]การตั้ง["Session Startup", "Red Lines"]อย่างชัดเจนจะเปิดใช้คู่นั้นและคงการย้อนกลับไปใช้Every Session/Safetyแบบเดิมไว้ เปิดใช้ตัวเลือกนี้เฉพาะเมื่อบริบทเพิ่มเติมคุ้มกับความเสี่ยงที่จะทำให้คำแนะนำโครงการซึ่งบันทึกไว้แล้วในสรุป Compaction ซ้ำซ้อนmodel:provider/model-idหรือชื่อแทนเปล่าจากagents.defaults.modelsแบบไม่บังคับสำหรับการสรุป Compaction เท่านั้น ชื่อแทนเปล่าจะถูกแก้ค่าก่อนส่งงาน หากชนกัน id โมเดลแบบค่าตรงที่กำหนดไว้จะมีลำดับความสำคัญสูงกว่า ใช้ตัวเลือกนี้เมื่อเซสชันหลักควรใช้โมเดลหนึ่ง แต่สรุป Compaction ควรทำงานด้วยอีกโมเดลหนึ่ง เมื่อไม่ได้ตั้งค่า Compaction จะใช้โมเดลหลักของเซสชันtruncateAfterCompaction: หมุนเวียนทรานสคริปต์ของเซสชันที่ใช้งานอยู่หลัง Compaction เพื่อให้รอบสนทนาในอนาคตโหลดเฉพาะสรุปและส่วนท้ายที่ยังไม่ได้สรุป ขณะที่ทรานสคริปต์ฉบับเต็มก่อนหน้ายังคงถูกเก็บถาวร ป้องกันไม่ให้ทรานสคริปต์ที่ใช้งานอยู่เติบโตอย่างไร้ขอบเขตในเซสชันที่ทำงานเป็นเวลานาน ค่าเริ่มต้น:falsemaxActiveTranscriptBytes: เกณฑ์จำนวนไบต์แบบไม่บังคับ (numberหรือสตริง เช่น"20mb") ที่เรียกใช้ Compaction ภายในตามปกติก่อนการทำงาน เมื่อประวัติทรานสคริปต์เติบโตเกินเกณฑ์ ต้องใช้truncateAfterCompactionเพื่อให้ Compaction ที่สำเร็จสามารถหมุนเวียนไปยังทรานสคริปต์ฉบับต่อที่มีขนาดเล็กกว่า ปิดใช้งานเมื่อไม่ได้ตั้งค่าหรือเป็น0notifyUser: เมื่อtrueจะส่งการแจ้งเตือนสั้น ๆ เกี่ยวกับการบำรุงรักษาบริบทให้ผู้ใช้ ได้แก่ เมื่อ Compaction เริ่มต้นและเสร็จสิ้น (เช่น "กำลังกระชับบริบท..." และ "Compaction เสร็จสมบูรณ์") และเมื่อการถ่ายหน่วยความจำก่อน Compaction ใช้ความพยายามจนหมด ทำให้การตอบกลับดำเนินต่อในสถานะที่ลดประสิทธิภาพ (เช่น "การบำรุงรักษาหน่วยความจำล้มเหลวชั่วคราว กำลังดำเนินการตอบกลับต่อ") ปิดใช้งานโดยค่าเริ่มต้นเพื่อไม่ให้แสดงการแจ้งเตือนเหล่านี้memoryFlush: รอบการทำงานแบบเอเจนต์ที่ไม่แสดงผลก่อน Compaction อัตโนมัติ เพื่อจัดเก็บหน่วยความจำระยะยาว ตั้งmodelเป็นผู้ให้บริการ/โมเดลที่แน่นอน เช่นollama/qwen3:8bเมื่อรอบการดูแลรักษานี้ควรใช้โมเดลภายในต่อไป การแทนที่นี้จะไม่สืบทอดห่วงโซ่การย้อนกลับของเซสชันที่ใช้งานอยู่forceFlushTranscriptBytesจะบังคับถ่ายหน่วยความจำเมื่อขนาดทรานสคริปต์ถึงเกณฑ์ แม้ว่าตัวนับโทเค็นจะไม่เป็นปัจจุบัน ข้ามการทำงานเมื่อพื้นที่ทำงานเป็นแบบอ่านอย่างเดียว
agents.defaults.contextPruning
ตัด ผลลัพธ์เครื่องมือเก่า ออกจากบริบทในหน่วยความจำก่อนส่งไปยัง LLM โดย ไม่ แก้ไขประวัติเซสชันบนดิสก์ ปิดใช้งานโดยค่าเริ่มต้น ตั้ง mode: "cache-ttl" เพื่อเปิดใช้งาน
ลักษณะการทำงานของโหมด cache-ttl
mode: "cache-ttl"เปิดใช้งานรอบการตัด- ขั้นแรก การตัดจะตัดผลลัพธ์เครื่องมือที่มีขนาดใหญ่เกินไปแบบอ่อน จากนั้นล้างผลลัพธ์เครื่องมือที่เก่ากว่าแบบตายตัวหากจำเป็น
การตัดแบบอ่อน จะเก็บส่วนต้น + ส่วนท้าย และแทรก ... ตรงกลาง
การล้างแบบตายตัว จะแทนที่ผลลัพธ์เครื่องมือทั้งหมดด้วยตัวแทนข้อความ
หมายเหตุ:
- บล็อกรูปภาพจะไม่ถูกตัด/ล้าง
- อัตราส่วนอิงตามจำนวนอักขระ (โดยประมาณ) ไม่ใช่จำนวนโทเค็นที่แน่นอน
- ข้อความล่าสุดของผู้ช่วยจะถูกเก็บรักษาไว้
ดูรายละเอียดลักษณะการทำงานที่ การตัดเซสชัน
การสตรีมแบบบล็อก
- ช่องทางที่ไม่ใช่ Telegram ต้องกำหนด
*.streaming.block.enabled: trueอย่างชัดเจนเพื่อเปิดใช้การตอบกลับแบบบล็อก QQ Bot เป็นข้อยกเว้น โดยไม่มีคีย์streaming.blockและจะสตรีมการตอบกลับแบบบล็อก เว้นแต่channels.qqbot.streaming.modeจะเป็น"off" - การแทนที่รายช่องทาง:
channels.<channel>.streaming.block.coalesce(รวมถึงรูปแบบรายบัญชี) Discord, Google Chat, Mattermost, MS Teams, Signal และ Slack ใช้ค่าเริ่มต้นเป็นminChars: 1500/idleMs: 1000 blockStreamingChunk.breakPreference: ขอบเขตส่วนข้อมูลที่ต้องการ ("paragraph" | "newline" | "sentence")humanDelay: การหยุดชั่วคราวแบบสุ่มระหว่างการตอบกลับแบบบล็อก ค่าเริ่มต้น:offโดยnatural= 800-2500ms ส่วนcustomใช้minMs/maxMs(ย้อนกลับไปใช้ช่วงธรรมชาติสำหรับขอบเขตที่ไม่ได้ตั้งค่า) การแทนที่รายเอเจนต์:agents.list[].humanDelay
ดูรายละเอียดลักษณะการทำงาน + การแบ่งส่วนข้อมูลที่ การสตรีม
ตัวบ่งชี้การพิมพ์
- ค่าเริ่มต้น:
instantสำหรับแชตโดยตรง/การกล่าวถึง และmessageสำหรับแชตกลุ่มที่ไม่มีการกล่าวถึง - ค่าเริ่มต้นของ
typingIntervalSeconds:6 - การแทนที่รายเซสชัน:
session.typingMode
agents.defaults.sandbox
การทำแซนด์บ็อกซ์แบบไม่บังคับสำหรับเอเจนต์แบบฝังตัว ดูคู่มือฉบับเต็มที่ การทำแซนด์บ็อกซ์
ค่าเริ่มต้นที่แสดงด้านบน (อิมเมจ off/docker/agent/none/bookworm-slim/เครือข่าย none/ฯลฯ) เป็นค่าเริ่มต้นจริงของ OpenClaw ไม่ใช่เพียงค่าตัวอย่าง
รายละเอียดแซนด์บ็อกซ์
แบ็กเอนด์:
docker: รันไทม์ Docker ภายในเครื่อง (ค่าเริ่มต้น)ssh: รันไทม์ระยะไกลทั่วไปที่ใช้ SSHopenshell: รันไทม์ OpenShell
เมื่อเลือก backend: "openshell" การตั้งค่าเฉพาะรันไทม์จะย้ายไปยัง
plugins.entries.openshell.config
การกำหนดค่าแบ็กเอนด์ SSH:
target: เป้าหมาย SSH ในรูปแบบuser@host[:port]command: คำสั่งไคลเอ็นต์ SSH (ค่าเริ่มต้น:ssh)workspaceRoot: รากระยะไกลแบบสัมบูรณ์ที่ใช้สำหรับพื้นที่ทำงานแยกตามขอบเขต (ค่าเริ่มต้น:/tmp/openclaw-sandboxes)identityFile/certificateFile/knownHostsFile: ไฟล์ภายในเครื่องที่มีอยู่ซึ่งส่งให้ OpenSSHidentityData/certificateData/knownHostsData: เนื้อหาแบบอินไลน์หรือ SecretRefs ที่ OpenClaw สร้างเป็นไฟล์ชั่วคราวขณะรันstrictHostKeyChecking/updateHostKeys: ตัวเลือกนโยบายคีย์โฮสต์ของ OpenSSH (ทั้งคู่มีค่าเริ่มต้นเป็นtrue)
ลำดับความสำคัญของการยืนยันตัวตน SSH:
identityDataมีลำดับความสำคัญเหนือidentityFilecertificateDataมีลำดับความสำคัญเหนือcertificateFileknownHostsDataมีลำดับความสำคัญเหนือknownHostsFile- ค่าของ
*Dataที่อ้างอิง SecretRef จะถูกแก้ค่าจากสแนปช็อตรันไทม์ของข้อมูลลับที่ใช้งานอยู่ก่อนเริ่มเซสชันแซนด์บ็อกซ์
ลักษณะการทำงานของแบ็กเอนด์ SSH:
- ตั้งต้นพื้นที่ทำงานระยะไกลหนึ่งครั้งหลังการสร้างหรือสร้างใหม่
- จากนั้นคงพื้นที่ทำงาน SSH ระยะไกลไว้เป็นแหล่งข้อมูลหลัก
- กำหนดเส้นทาง
execเครื่องมือไฟล์ และพาธสื่อผ่าน SSH - ไม่ซิงค์การเปลี่ยนแปลงระยะไกลกลับมายังโฮสต์โดยอัตโนมัติ
- ไม่รองรับคอนเทนเนอร์เบราว์เซอร์แบบแซนด์บ็อกซ์
การเข้าถึงพื้นที่ทำงาน:
none: พื้นที่ทำงานแซนด์บ็อกซ์แยกตามขอบเขตภายใต้~/.openclaw/sandboxes(ค่าเริ่มต้น)ro: พื้นที่ทำงานแซนด์บ็อกซ์ที่/workspaceโดยเมานต์พื้นที่ทำงานของเอเจนต์แบบอ่านอย่างเดียวที่/agentrw: เมานต์พื้นที่ทำงานของเอเจนต์แบบอ่าน/เขียนที่/workspace
ขอบเขต:
session: คอนเทนเนอร์และพื้นที่ทำงานแยกต่อเซสชันagent: หนึ่งคอนเทนเนอร์และหนึ่งพื้นที่ทำงานต่อเอเจนต์ (ค่าเริ่มต้น)shared: ใช้คอนเทนเนอร์และพื้นที่ทำงานร่วมกัน (ไม่มีการแยกข้ามเซสชัน)
การกำหนดค่า Plugin OpenShell:
โหมด OpenShell:
mirror: ตั้งต้นระยะไกลจากภายในเครื่องก่อนดำเนินการ และซิงค์กลับหลังดำเนินการ โดยพื้นที่ทำงานภายในเครื่องยังคงเป็นแหล่งข้อมูลหลักremote: ตั้งต้นระยะไกลหนึ่งครั้งเมื่อสร้างแซนด์บ็อกซ์ จากนั้นคงพื้นที่ทำงานระยะไกลไว้เป็นแหล่งข้อมูลหลัก
ในโหมด remote การแก้ไขภายในเครื่องโฮสต์ที่ทำนอก OpenClaw จะไม่ถูกซิงค์เข้าแซนด์บ็อกซ์โดยอัตโนมัติหลังขั้นตอนการตั้งต้น
การรับส่งข้อมูลใช้ SSH เข้าไปยังแซนด์บ็อกซ์ OpenShell แต่ Plugin เป็นผู้จัดการวงจรชีวิตของแซนด์บ็อกซ์และการซิงค์มิเรอร์ที่ไม่บังคับ
setupCommand ทำงานหนึ่งครั้งหลังสร้างคอนเทนเนอร์ (ผ่าน sh -lc) ต้องมีการเชื่อมต่อเครือข่ายขาออก รากที่เขียนได้ และผู้ใช้ root
คอนเทนเนอร์มีค่าเริ่มต้นเป็น network: "none" — ตั้งเป็น "bridge" (หรือเครือข่ายบริดจ์แบบกำหนดเอง) หากเอเจนต์ต้องการการเข้าถึงขาออก
"host" ถูกบล็อก โดยค่าเริ่มต้น "container:<id>" จะถูกบล็อกด้วย เว้นแต่จะตั้งค่า
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true อย่างชัดเจน (ใช้เมื่อฉุกเฉิน)
เทิร์นของเซิร์ฟเวอร์แอป Codex ในแซนด์บ็อกซ์ OpenClaw ที่ใช้งานอยู่จะใช้การตั้งค่าการเชื่อมต่อขาออกเดียวกันนี้สำหรับการเข้าถึงเครือข่ายในโหมดโค้ดแบบเนทีฟ
ไฟล์แนบขาเข้า จะถูกจัดเตรียมไว้ใน media/inbound/* ภายในพื้นที่ทำงานที่ใช้งานอยู่
docker.binds เมานต์ไดเรกทอรีโฮสต์เพิ่มเติม โดยผสานการผูกแบบส่วนกลางและแบบต่อเอเจนต์เข้าด้วยกัน
เบราว์เซอร์แบบแซนด์บ็อกซ์ (sandbox.browser.enabled ค่าเริ่มต้น false): Chromium + CDP ในคอนเทนเนอร์ โดยแทรก URL ของ noVNC ลงในพรอมต์ระบบ ไม่ต้องใช้ browser.enabled ใน openclaw.json
การเข้าถึงสำหรับผู้สังเกตการณ์ผ่าน noVNC ใช้การยืนยันตัวตน VNC เป็นค่าเริ่มต้น และ OpenClaw จะสร้าง URL โทเค็นอายุสั้น (แทนการเปิดเผยรหัสผ่านใน URL ที่แชร์)
allowHostControl: false(ค่าเริ่มต้น) ป้องกันไม่ให้เซสชันแบบแซนด์บ็อกซ์กำหนดเป้าหมายไปยังเบราว์เซอร์ของโฮสต์networkมีค่าเริ่มต้นเป็นopenclaw-sandbox-browser(เครือข่ายบริดจ์เฉพาะ) ตั้งเป็นbridgeเฉพาะเมื่อต้องการการเชื่อมต่อบริดจ์ส่วนกลางอย่างชัดเจน ที่นี่"host"ก็ถูกบล็อกเช่นกันcdpSourceRangeจำกัดการรับส่งข้อมูลขาเข้า CDP ที่ขอบคอนเทนเนอร์ให้อยู่ในช่วง CIDR ได้โดยไม่บังคับ (ตัวอย่างเช่น172.21.0.1/32)sandbox.browser.bindsเมานต์ไดเรกทอรีโฮสต์เพิ่มเติมเฉพาะในคอนเทนเนอร์เบราว์เซอร์แบบแซนด์บ็อกซ์ เมื่อตั้งค่า (รวมถึง[]) ค่านี้จะแทนที่docker.bindsสำหรับคอนเทนเนอร์เบราว์เซอร์- Chromium ของคอนเทนเนอร์เบราว์เซอร์แบบแซนด์บ็อกซ์จะเริ่มทำงานพร้อม
--no-sandbox --disable-setuid-sandboxเสมอ (คอนเทนเนอร์ไม่มีองค์ประกอบพื้นฐานของเคอร์เนลที่แซนด์บ็อกซ์ของ Chrome ต้องใช้) และไม่มีตัวเลือกการกำหนดค่าสำหรับเปลี่ยนพฤติกรรมนี้ - ค่าเริ่มต้นในการเริ่มทำงานกำหนดไว้ใน
scripts/sandbox-browser-entrypoint.shและปรับแต่งสำหรับโฮสต์คอนเทนเนอร์: --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-dev-shm-usage--disable-background-networking--disable-breakpad--disable-crash-reporter--no-zygote--metrics-recording-only--password-store=basic--use-mock-keychain--disable-3d-apis,--disable-gpuและ--disable-software-rasterizerเปิดใช้งานเป็นค่าเริ่มต้น และสามารถปิดใช้งานด้วยOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0หากการใช้ WebGL/3D จำเป็นต้องทำเช่นนั้น--disable-extensions(เปิดใช้งานเป็นค่าเริ่มต้น);OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0เปิดใช้งานส่วนขยายอีกครั้ง หากเวิร์กโฟลว์ของคุณต้องพึ่งพาส่วนขยายเหล่านั้น--renderer-process-limit=2เป็นค่าเริ่มต้น; เปลี่ยนได้ด้วยOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>และตั้ง0เพื่อใช้ขีดจำกัด กระบวนการเริ่มต้นของ Chromium--headless=newเฉพาะเมื่อเปิดใช้งานheadless- ค่าเริ่มต้นเหล่านี้เป็นค่าพื้นฐานของอิมเมจคอนเทนเนอร์ หากต้องการเปลี่ยนค่าเริ่มต้นของคอนเทนเนอร์ ให้ใช้อิมเมจเบราว์เซอร์แบบกำหนดเองพร้อม จุดเริ่มต้นแบบกำหนดเอง
การทำแซนด์บ็อกซ์เบราว์เซอร์และ sandbox.docker.binds รองรับเฉพาะ Docker
สร้างอิมเมจ (จากการเช็กเอาต์ซอร์ส):
สำหรับการติดตั้ง npm โดยไม่มีการเช็กเอาต์ซอร์ส โปรดดู การทำแซนด์บ็อกซ์ § อิมเมจและการตั้งค่า สำหรับคำสั่ง docker build แบบอินไลน์
agents.list (การแทนค่าต่อเอเจนต์)
ใช้ agents.list[].tts เพื่อกำหนดผู้ให้บริการ TTS, เสียง, โมเดล,
สไตล์ หรือโหมด TTS อัตโนมัติให้แต่ละเอเจนต์ บล็อกของเอเจนต์จะผสานเชิงลึกทับ
messages.tts ส่วนกลาง ดังนั้นข้อมูลประจำตัวที่ใช้ร่วมกันจึงเก็บไว้ในที่เดียวได้ ขณะที่แต่ละ
เอเจนต์แทนค่าเฉพาะฟิลด์เสียงหรือผู้ให้บริการที่จำเป็น ค่าที่แทนของเอเจนต์ที่ใช้งานอยู่
มีผลกับการตอบกลับด้วยเสียงอัตโนมัติ, /tts audio, /tts status และ
เครื่องมือเอเจนต์ tts โปรดดูตัวอย่างผู้ให้บริการและลำดับความสำคัญที่
การแปลงข้อความเป็นเสียงพูด
id: รหัสเอเจนต์แบบคงที่ (จำเป็น)default: เมื่อตั้งค่าไว้หลายรายการ รายการแรกจะมีผล (มีการบันทึกคำเตือน) หากไม่ได้ตั้งค่าไว้ รายการแรกในลิสต์จะเป็นค่าเริ่มต้นmodel: รูปแบบสตริงกำหนดโมเดลหลักแบบเคร่งครัดต่อเอเจนต์โดยไม่มีโมเดลสำรอง ส่วนรูปแบบออบเจ็กต์{ primary }ก็เคร่งครัดเช่นกัน เว้นแต่จะเพิ่มfallbacksใช้{ primary, fallbacks: [...] }เพื่อให้เอเจนต์นั้นใช้โมเดลสำรองได้ หรือใช้{ primary, fallbacks: [] }เพื่อระบุพฤติกรรมแบบเคร่งครัดอย่างชัดเจน งาน Cron ที่เขียนทับเฉพาะprimaryจะยังคงสืบทอดโมเดลสำรองเริ่มต้น เว้นแต่จะตั้งค่าfallbacks: []utilityModel: ตัวเลือกเขียนทับต่อเอเจนต์สำหรับงานภายในระยะสั้น เช่น ชื่อเซสชันและเธรดที่สร้างขึ้น หากไม่มีจะย้อนกลับไปใช้agents.defaults.utilityModelแล้วจึงใช้ค่าเริ่มต้นของโมเดลขนาดเล็กที่ประกาศโดยผู้ให้บริการซึ่งมีผลกับเซสชัน ชื่อบนแดชบอร์ดจะลองอีกครั้งหนึ่งโดยใช้โมเดลเซสชันปกติที่มีผล สตริงว่างจะข้ามเส้นทางยูทิลิตีทางเลือกสำหรับเอเจนต์นี้โดยไม่ปิดการสร้างชื่อบนแดชบอร์ดparams: พารามิเตอร์สตรีมต่อเอเจนต์ที่ผสานทับรายการโมเดลที่เลือกในagents.defaults.modelsใช้สำหรับการเขียนทับเฉพาะเอเจนต์ เช่นcacheRetention,temperatureหรือmaxTokensโดยไม่ต้องทำซ้ำแค็ตตาล็อกโมเดลทั้งหมดtts: ตัวเลือกเขียนทับการแปลงข้อความเป็นเสียงพูดต่อเอเจนต์ บล็อกนี้ผสานแบบลึกทับmessages.ttsดังนั้นให้เก็บข้อมูลประจำตัวของผู้ให้บริการที่ใช้ร่วมกันและนโยบายสำรองไว้ในmessages.ttsและตั้งค่าเฉพาะค่าที่เจาะจงกับบุคลิก เช่น ผู้ให้บริการ เสียง โมเดล สไตล์ หรือโหมดอัตโนมัติไว้ที่นี่skills: รายการอนุญาต Skills ต่อเอเจนต์ที่เป็นตัวเลือก หากละไว้ เอเจนต์จะสืบทอดagents.defaults.skillsเมื่อมีการตั้งค่าไว้ รายการที่ระบุอย่างชัดเจนจะแทนที่ค่าเริ่มต้นแทนการผสาน และ[]หมายถึงไม่มี SkillsthinkingDefault: ระดับการคิดเริ่มต้นต่อเอเจนต์ที่เป็นตัวเลือก (off | minimal | low | medium | high | xhigh | adaptive | max) เขียนทับagents.defaults.thinkingDefaultสำหรับเอเจนต์นี้เมื่อไม่ได้ตั้งค่าการเขียนทับต่อข้อความหรือเซสชัน โปรไฟล์ผู้ให้บริการ/โมเดลที่เลือกเป็นตัวกำหนดว่าค่าใดใช้ได้ สำหรับ Google Gemini ค่าadaptiveจะคงการคิดแบบไดนามิกที่ผู้ให้บริการควบคุมไว้ (thinkingLevelจะถูกละไว้ใน Gemini 3/3.1 และthinkingBudget: -1ใน Gemini 2.5)reasoningDefault: การมองเห็นเหตุผลเริ่มต้นต่อเอเจนต์ที่เป็นตัวเลือก (on | off | stream) เขียนทับagents.defaults.reasoningDefaultสำหรับเอเจนต์นี้เมื่อไม่ได้ตั้งค่าการเขียนทับเหตุผลต่อข้อความหรือเซสชันfastModeDefault: ค่าเริ่มต้นต่อเอเจนต์สำหรับโหมดเร็วที่เป็นตัวเลือก ("auto" | true | false) มีผลเมื่อไม่ได้ตั้งค่าการเขียนทับโหมดเร็วต่อข้อความหรือเซสชันmodels: ตัวเลือกเขียนทับแค็ตตาล็อกโมเดล/รันไทม์ต่อเอเจนต์ โดยใช้รหัสprovider/modelแบบเต็มเป็นคีย์ ใช้models["provider/model"].agentRuntimeสำหรับข้อยกเว้นรันไทม์ต่อเอเจนต์runtime: ตัวอธิบายรันไทม์ต่อเอเจนต์ที่เป็นตัวเลือก ใช้type: "acp"พร้อมค่าเริ่มต้นruntime.acp(agent,backend,mode,cwd) เมื่อเอเจนต์ควรใช้เซสชันชุดควบคุม ACP เป็นค่าเริ่มต้นidentity.avatar: พาธที่สัมพันธ์กับเวิร์กสเปซ, URLhttp(s)หรือ URIdata:- ไฟล์รูปภาพ
identity.avatarในเครื่องที่มีพาธสัมพันธ์กับเวิร์กสเปซจำกัดขนาดไว้ที่ 2 MB ส่วน URLhttp(s)และ URIdata:จะไม่ถูกตรวจสอบเทียบกับขีดจำกัดขนาดไฟล์ในเครื่อง identityอนุมานค่าเริ่มต้นดังนี้:ackReactionจากemoji,mentionPatternsจากname/emojisubagents.allowAgents: รายการอนุญาตรหัสเอเจนต์ที่กำหนดค่าไว้สำหรับเป้าหมายsessions_spawn.agentIdที่ระบุอย่างชัดเจน (["*"]= เป้าหมายที่กำหนดค่าไว้ใดๆ; ค่าเริ่มต้น: เฉพาะเอเจนต์เดียวกัน) ให้รวมรหัสผู้ร้องขอเมื่อควรอนุญาตการเรียกagentIdที่กำหนดเป้าหมายเป็นตัวเอง รายการเก่าที่การกำหนดค่าเอเจนต์ถูกลบไปแล้วจะถูกsessions_spawnปฏิเสธและไม่รวมอยู่ในagents_list; เรียกใช้openclaw doctor --fixเพื่อล้างรายการเหล่านั้น หรือเพิ่มรายการagents.list[]ขั้นต่ำ หากเป้าหมายนั้นควรยังสร้างได้พร้อมสืบทอดค่าเริ่มต้น- ตัวป้องกันการสืบทอดแซนด์บ็อกซ์: หากเซสชันผู้ร้องขออยู่ในแซนด์บ็อกซ์
sessions_spawnจะปฏิเสธเป้าหมายที่จะทำงานนอกแซนด์บ็อกซ์ subagents.requireAgentId: เมื่อเป็นจริง ให้บล็อกการเรียกsessions_spawnที่ละagentId(บังคับให้เลือกโปรไฟล์อย่างชัดเจน; ค่าเริ่มต้น: false)subagents.maxConcurrent: จำนวนสูงสุดของการทำงานของเอเจนต์ลูกพร้อมกันในการดำเนินงานของเอเจนต์ย่อย ค่าเริ่มต้น:8subagents.maxChildrenPerAgent: จำนวนเอเจนต์ลูกที่ใช้งานอยู่สูงสุดซึ่งเซสชันเอเจนต์หนึ่งเซสชันสามารถสร้างได้ ค่าเริ่มต้น:5subagents.maxSpawnDepth: ความลึกการซ้อนสูงสุดสำหรับการสร้างเอเจนต์ย่อย (1-5) ค่าเริ่มต้น:1(ไม่มีการซ้อน)subagents.archiveAfterMinutes: ระยะเวลาก่อนเก็บสถานะเอเจนต์ย่อยที่เสร็จสมบูรณ์เข้าคลัง ค่าเริ่มต้น:60
การกำหนดเส้นทางแบบหลายเอเจนต์
เรียกใช้เอเจนต์ที่แยกจากกันหลายตัวภายใน Gateway เดียว ดู หลายเอเจนต์
ฟิลด์การจับคู่การผูก
type(ไม่บังคับ):routeสำหรับการกำหนดเส้นทางปกติ (หากไม่มีชนิดจะใช้ route เป็นค่าเริ่มต้น),acpสำหรับการผูกบทสนทนา ACP แบบคงอยู่match.channel(จำเป็น)match.accountId(ไม่บังคับ;*= บัญชีใดก็ได้; หากละไว้ = บัญชีเริ่มต้น)match.peer(ไม่บังคับ;{ kind: direct|group|channel, id })match.guildId/match.teamId(ไม่บังคับ; เฉพาะช่องทาง)acp(ไม่บังคับ; สำหรับtype: "acp"เท่านั้น):{ mode, label, cwd, backend }
ลำดับการจับคู่แบบกำหนดแน่นอน:
match.peermatch.guildIdmatch.teamIdmatch.accountId(ตรงกันทุกประการ ไม่มีเพียร์/กิลด์/ทีม)match.accountId: "*"(ทั้งช่องทาง)- เอเจนต์เริ่มต้น
ภายในแต่ละระดับ รายการ bindings แรกที่ตรงกันจะมีผล
สำหรับรายการ type: "acp" OpenClaw จะจับคู่ตามข้อมูลประจำตัวบทสนทนาที่ตรงกันทุกประการ (match.channel + บัญชี + match.peer.id) และไม่ใช้ลำดับระดับการผูกเส้นทางด้านบน
โปรไฟล์การเข้าถึงต่อเอเจนต์
สิทธิ์เข้าถึงเต็มรูปแบบ (ไม่มีแซนด์บ็อกซ์)
เครื่องมือแบบอ่านอย่างเดียว + เวิร์กสเปซ
ไม่มีสิทธิ์เข้าถึงระบบไฟล์ (ส่งข้อความเท่านั้น)
ดูรายละเอียดลำดับความสำคัญที่ แซนด์บ็อกซ์และเครื่องมือสำหรับหลายเอเจนต์
เซสชัน
รายละเอียดฟิลด์เซสชัน
scope: กลยุทธ์พื้นฐานสำหรับจัดกลุ่มเซสชันในบริบทแชตกลุ่มper-sender(ค่าเริ่มต้น): ผู้ส่งแต่ละรายมีเซสชันแยกกันภายในบริบทของช่องทางglobal: ผู้เข้าร่วมทั้งหมดในบริบทของช่องทางใช้เซสชันเดียวร่วมกัน (ใช้เฉพาะเมื่อต้องการบริบทร่วมกัน)dmScope: วิธีจัดกลุ่มข้อความส่วนตัวmain: ข้อความส่วนตัวทั้งหมดใช้เซสชันหลักร่วมกันper-peer: แยกตาม ID ผู้ส่งข้ามช่องทางper-channel-peer: แยกตามช่องทาง + ผู้ส่ง (แนะนำสำหรับกล่องข้อความที่มีผู้ใช้หลายราย)per-account-channel-peer: แยกตามบัญชี + ช่องทาง + ผู้ส่ง (แนะนำสำหรับหลายบัญชี)identityLinks: จับคู่ ID มาตรฐานกับเพียร์ที่มีคำนำหน้าผู้ให้บริการเพื่อใช้เซสชันร่วมกันข้ามช่องทาง คำสั่งเชื่อมต่อ เช่น/dock_discordใช้แผนผังเดียวกันเพื่อสลับเส้นทางตอบกลับของเซสชันที่ใช้งานอยู่ไปยังเพียร์ของช่องทางอื่นที่เชื่อมโยงไว้ โปรดดู การเชื่อมต่อช่องทางreset: นโยบายรีเซ็ตหลักnoneปิดการรีเซ็ตอัตโนมัติและเป็นค่าเริ่มต้น โดย Compaction จะจำกัดบริบทที่ใช้งานอยู่แทนdailyรีเซ็ต ณ เวลาatHourตามเวลาท้องถิ่น ส่วนidleรีเซ็ตหลังจากidleMinutesเมื่อกำหนดค่าทั้งสองอย่าง ค่าที่หมดเวลาก่อนจะมีผลเหนือกว่า/newและ/resetยังคงใช้ได้ในทุกโหมด ความสดใหม่สำหรับการรีเซ็ตรายวันใช้sessionStartedAtของแถวเซสชัน ส่วนความสดใหม่สำหรับการรีเซ็ตเมื่อไม่มีการใช้งานใช้lastInteractionAtการเขียนจากเหตุการณ์เบื้องหลัง/ระบบ เช่น Heartbeat, การปลุกโดย Cron, การแจ้งเตือนการดำเนินการ และการบันทึกข้อมูลของ Gateway สามารถอัปเดตupdatedAtได้ แต่จะไม่ทำให้เซสชันรายวัน/ไม่มีการใช้งานยังคงสดใหม่resetByType: การแทนที่ตามประเภท (direct,group,thread) รองรับdmแบบเดิมในฐานะนามแฝงของdirectresetByChannel: การแทนที่การรีเซ็ตตามช่องทาง โดยใช้ ID ผู้ให้บริการ/ช่องทางเป็นคีย์ เมื่อช่องทางของเซสชันมีรายการที่ตรงกัน รายการนั้นจะมีผลเหนือresetByType/resetสำหรับเซสชันนั้นโดยสมบูรณ์ ใช้เฉพาะเมื่อช่องทางหนึ่งต้องการลักษณะการรีเซ็ตที่แตกต่างจากนโยบายระดับประเภทmainKey: ฟิลด์แบบเดิม รันไทม์ใช้"main"สำหรับกลุ่มแชตส่วนตัวหลักเสมอsendPolicy: จับคู่ตามchannel,chatType(direct|group|channelพร้อมนามแฝงแบบเดิมdm),keyPrefixหรือrawKeyPrefixการปฏิเสธรายการแรกมีผลเหนือกว่าmaintenance: การควบคุมการล้างและระยะเวลาการเก็บรักษาที่เก็บเซสชันmode:enforceใช้การล้างข้อมูลและเป็นค่าเริ่มต้น ส่วนwarnแสดงเฉพาะคำเตือนpruneAfter: เกณฑ์อายุสำหรับรายการที่ล้าสมัย (ค่าเริ่มต้น30d)maxEntries: จำนวนสูงสุดของรายการเซสชัน SQLite (ค่าเริ่มต้น500) การเขียนขณะรันไทม์จะล้างข้อมูลเป็นชุดโดยมีบัฟเฟอร์ขีดจำกัดสูงขนาดเล็กสำหรับขีดจำกัดระดับการใช้งานจริง ส่วนopenclaw sessions cleanup --enforceจะใช้ขีดจำกัดทันที- เซสชันตรวจสอบการรันโมเดลของ Gateway ที่มีอายุสั้นใช้ระยะเวลาการเก็บรักษาคงที่
24hแต่การล้างข้อมูลจะทำงานเมื่อมีแรงกดดันเท่านั้น กล่าวคือจะลบแถวการตรวจสอบการรันโมเดลแบบเคร่งครัดที่ล้าสมัยเฉพาะเมื่อถึงเกณฑ์การบำรุงรักษา/ขีดจำกัดรายการเซสชัน เฉพาะคีย์การตรวจสอบแบบระบุชัดเจนที่ตรงกับagent:*:explicit:model-run-<uuid>อย่างเคร่งครัดเท่านั้นที่เข้าเกณฑ์ เซสชันส่วนตัว กลุ่ม เธรด Cron ฮุก Heartbeat, ACP และเอเจนต์ย่อยตามปกติจะไม่สืบทอดระยะเวลาการเก็บรักษา 24h นี้ เมื่อการล้างข้อมูลการรันโมเดลทำงาน ระบบจะดำเนินการก่อนการล้างรายการล้าสมัยpruneAfterในวงกว้างและขีดจำกัดmaxEntries - สคีมาปัจจุบันปฏิเสธ
rotateBytesแบบเดิม โดยopenclaw doctor --fixจะลบค่านี้ออกจากการกำหนดค่ารุ่นเก่า resetArchiveRetention: การเก็บรักษาตามอายุสำหรับไฟล์เก็บถาวรของบทสนทนาที่รีเซ็ต/ลบ โดยค่าเริ่มต้น ไฟล์เก็บถาวรจะยังคงอยู่จนกว่าจะถูกนำออกตามงบประมาณดิสก์ กำหนดระยะเวลาเพื่อเลือกใช้การลบตามเวลาจริง หรือกำหนดfalseเพื่อปิดอย่างชัดเจนmaxDiskBytes: งบประมาณดิสก์สำหรับไดเรกทอรีเซสชันที่ไม่บังคับ ในโหมดwarnระบบจะบันทึกคำเตือน ส่วนในโหมดenforceระบบจะลบอาร์ติแฟกต์/เซสชันที่เก่าที่สุดก่อนhighWaterBytes: เป้าหมายที่ไม่บังคับหลังการล้างตามงบประมาณ ค่าเริ่มต้นคือ80%ของmaxDiskBytesthreadBindings: ค่าเริ่มต้นส่วนกลางสำหรับคุณลักษณะเซสชันที่ผูกกับเธรดenabled: สวิตช์เริ่มต้นหลัก (ผู้ให้บริการสามารถแทนที่ได้ Discord ใช้channels.discord.threadBindings.enabled)idleHours: ค่าเริ่มต้นสำหรับยกเลิกการโฟกัสอัตโนมัติเมื่อไม่มีการใช้งาน หน่วยเป็นชั่วโมง (0ปิดการทำงาน ผู้ให้บริการสามารถแทนที่ได้)maxAgeHours: อายุสูงสุดแบบตายตัวโดยค่าเริ่มต้น หน่วยเป็นชั่วโมง (0ปิดการทำงาน ผู้ให้บริการสามารถแทนที่ได้)spawnSessions: เงื่อนไขเริ่มต้นสำหรับสร้างเซสชันงานที่ผูกกับเธรดจากsessions_spawnและการสร้างเธรด ACP ค่าเริ่มต้นคือtrueเมื่อเปิดใช้งานการผูกเธรด ผู้ให้บริการ/บัญชีสามารถแทนที่ได้defaultSpawnContext: บริบทเอเจนต์ย่อยแบบเนทีฟโดยค่าเริ่มต้นสำหรับการสร้างที่ผูกกับเธรด ("fork"หรือ"isolated") ค่าเริ่มต้นคือ"fork"
ข้อความ
คำนำหน้าการตอบกลับ
การแทนที่ตามช่องทาง/บัญชี: channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix
ลำดับการตัดสินค่า (ค่าที่เฉพาะเจาะจงที่สุดมีผลเหนือกว่า): บัญชี → ช่องทาง → ส่วนกลาง "" ปิดการทำงานและหยุดการไล่ระดับ "auto" สร้างค่าจาก [{identity.name}]
ตัวแปรเทมเพลต:
| ตัวแปร | คำอธิบาย | ตัวอย่าง |
|---|---|---|
{model} |
ชื่อย่อของโมเดล | claude-opus-4-6 |
{modelFull} |
ตัวระบุโมเดลแบบเต็ม | anthropic/claude-opus-4-6 |
{provider} |
ชื่อผู้ให้บริการ | anthropic |
{thinkingLevel} |
ระดับการคิดปัจจุบัน | high, low, off |
{identity.name} |
ชื่ออัตลักษณ์ของเอเจนต์ | (เหมือนกับ "auto") |
ตัวแปรไม่แยกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ {think} เป็นนามแฝงของ {thinkingLevel}
รีแอ็กชันตอบรับ
- ค่าเริ่มต้นคือ
identity.emojiของเอเจนต์ที่ใช้งานอยู่ หากไม่มีให้ใช้"👀"กำหนด""เพื่อปิดการทำงาน - การแทนที่ตามช่องทาง:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction - ลำดับการตัดสินค่า: บัญชี → ช่องทาง →
messages.ackReaction→ ค่าอัตลักษณ์สำรอง - ขอบเขต:
group-mentions(ค่าเริ่มต้น),group-all,direct,allหรือoff/none(ปิดรีแอ็กชันตอบรับทั้งหมด) removeAckAfterReply: ลบรีแอ็กชันตอบรับหลังตอบกลับในช่องทางที่รองรับรีแอ็กชัน เช่น Slack, Discord, Signal, Telegram, WhatsApp และ iMessagemessages.statusReactions.enabled: เปิดใช้งานรีแอ็กชันสถานะวงจรชีวิตบน Slack, Discord, Signal, Telegram และ WhatsApp บน Discord หากไม่ได้กำหนดค่า รีแอ็กชันสถานะจะยังคงเปิดใช้งานเมื่อรีแอ็กชันตอบรับทำงานอยู่ บน Slack, Signal, Telegram และ WhatsApp ให้กำหนดเป็นtrueอย่างชัดเจนเพื่อเปิดใช้งานรีแอ็กชันสถานะวงจรชีวิต โดยค่าเริ่มต้น Slack ใช้สถานะเธรดผู้ช่วยแบบเนทีฟและข้อความแสดงการโหลดแบบหมุนเวียนเพื่อแสดงความคืบหน้า พร้อมคงรีแอ็กชันตอบรับที่กำหนดค่าไว้ให้คงที่messages.statusReactions.emojis: แทนที่คีย์อีโมจิวงจรชีวิต:queued,thinking,compacting,tool,coding,web,deploy,build,concierge,done,error,stallSoftและstallHardTelegram อนุญาตเฉพาะชุดรีแอ็กชันที่กำหนดไว้ ดังนั้นอีโมจิที่กำหนดค่าแต่ไม่รองรับจะใช้ รูปแบบสถานะที่รองรับและใกล้เคียงที่สุดสำหรับแชตนั้นแทน
คิว
mode: กลยุทธ์คิวสำหรับข้อความขาเข้าที่มาถึงขณะเซสชันกำลังทำงาน ค่าเริ่มต้น:"steer"steer: แทรกพรอมต์ใหม่ลงในการทำงานที่กำลังดำเนินอยู่followup: เรียกใช้พรอมต์ใหม่หลังจากการทำงานปัจจุบันเสร็จสิ้นcollect: รวมข้อความที่เข้ากันได้เป็นชุดและเรียกใช้พร้อมกันในภายหลังinterrupt: ยกเลิกการทำงานปัจจุบันก่อนเริ่มพรอมต์ล่าสุด
debounceMs: ระยะหน่วงก่อนส่งข้อความที่อยู่ในคิว/ถูกกำกับ ค่าเริ่มต้น:500cap: จำนวนข้อความในคิวสูงสุดก่อนใช้นโยบายการทิ้ง ค่าเริ่มต้น:20drop: กลยุทธ์เมื่อเกินขีดจำกัด"summarize"(ค่าเริ่มต้น) ทิ้งรายการเก่าที่สุดแต่เก็บสรุปแบบกระชับไว้"old"ทิ้งรายการเก่าที่สุดโดยไม่เก็บสรุป ส่วน"new"ปฏิเสธรายการใหม่ล่าสุดbyChannel: การแทนที่modeตามช่องทาง โดยใช้ ID ผู้ให้บริการเป็นคีย์debounceMsByChannel: การแทนที่debounceMsตามช่องทาง โดยใช้ ID ผู้ให้บริการเป็นคีย์
การหน่วงรวมข้อความขาเข้า
รวมข้อความแบบข้อความล้วนที่ส่งต่อเนื่องอย่างรวดเร็วจากผู้ส่งรายเดียวกันเป็นหนึ่งรอบการทำงานของเอเจนต์ สื่อ/ไฟล์แนบจะส่งออกทันที คำสั่งควบคุมจะข้ามการหน่วงรวมข้อความ ค่าเริ่มต้น debounceMs: 2000
คีย์ข้อความอื่นๆ
channels.whatsapp.messagePrefix: คำนำหน้าสำหรับ WhatsApp เท่านั้น ซึ่งเติมไว้หน้าข้อความผู้ใช้ขาเข้าก่อนถึงรันไทม์ของเอเจนต์messages.visibleReplies: ควบคุมการตอบกลับแหล่งที่มาที่มองเห็นได้ในการสนทนาแบบส่วนตัว กลุ่ม และช่องทาง ("message_tool"ต้องใช้message(action=send)เพื่อแสดงผลลัพธ์ที่มองเห็นได้ ส่วน"automatic"โพสต์การตอบกลับตามปกติเช่นเดิม)messages.usageTemplate/messages.responseUsage: เทมเพลตส่วนท้าย/usageแบบกำหนดเองและโหมดการใช้งานเริ่มต้นต่อการตอบกลับ (off | tokens | fullพร้อมนามแฝงแบบเดิมonสำหรับtokens)messages.groupChat.mentionPatterns/historyLimit: ทริกเกอร์การกล่าวถึงในข้อความกลุ่มและการกำหนดขนาดหน้าต่างประวัติmessages.suppressToolErrors: เมื่อเป็นtrueจะระงับคำเตือนข้อผิดพลาดเครื่องมือ⚠️ที่แสดงต่อผู้ใช้ (เอเจนต์ยังคงเห็นข้อผิดพลาดในบริบทและลองใหม่ได้) ค่าเริ่มต้น:false
TTS (การแปลงข้อความเป็นเสียงพูด)
autoควบคุมโหมด TTS อัตโนมัติเริ่มต้น:off,always,inboundหรือtaggedโดย/tts on|offสามารถแทนที่ค่ากำหนดภายในเครื่อง และ/tts statusจะแสดงสถานะที่มีผลsummaryModelแทนที่agents.defaults.model.primaryสำหรับการสรุปอัตโนมัติmodelOverridesเปิดใช้งานตามค่าเริ่มต้น (enabled !== false); ส่วนmodelOverrides.allowProviderต้องเลือกเปิดใช้งาน- คีย์ API จะย้อนกลับไปใช้
ELEVENLABS_API_KEY/XI_API_KEYและOPENAI_API_KEY - ผู้ให้บริการเสียงพูดที่รวมมาให้เป็นของ Plugin หากตั้งค่า
plugins.allowให้รวม Plugin ของผู้ให้บริการ TTS แต่ละรายที่ต้องการใช้ ตัวอย่างเช่นmicrosoftสำหรับ Edge TTS โดยยอมรับรหัสผู้ให้บริการแบบเดิมedgeเป็นนามแฝงของmicrosoft providers.openai.baseUrlแทนที่ปลายทาง OpenAI TTS ลำดับการแก้ไขค่าคือการกำหนดค่า ตามด้วยOPENAI_TTS_BASE_URLแล้วจึงhttps://api.openai.com/v1- เมื่อ
providers.openai.baseUrlชี้ไปยังปลายทางที่ไม่ใช่ OpenAI OpenClaw จะถือว่าปลายทางดังกล่าวเป็นเซิร์ฟเวอร์ TTS ที่เข้ากันได้กับ OpenAI และผ่อนปรนการตรวจสอบโมเดล/เสียง
การสนทนา
ค่าเริ่มต้นสำหรับโหมดการสนทนา (macOS/iOS/Android และ Control UI บนเบราว์เซอร์)
talk.providerต้องตรงกับคีย์ในtalk.providersเมื่อกำหนดค่าผู้ให้บริการการสนทนาหลายราย- คีย์การสนทนาแบบแบนรุ่นเดิม (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) มีไว้เพื่อความเข้ากันได้เท่านั้น เรียกใช้openclaw doctor --fixเพื่อเขียนการกำหนดค่าที่บันทึกไว้ใหม่เป็นtalk.providers.<provider> - รหัสเสียงจะย้อนกลับไปใช้
ELEVENLABS_VOICE_IDหรือSAG_VOICE_ID(ลักษณะการทำงานของไคลเอนต์การสนทนาบน macOS) providers.*.apiKeyรองรับสตริงข้อความธรรมดาหรือออบเจ็กต์ SecretRef- การย้อนกลับไปใช้
ELEVENLABS_API_KEYจะมีผลเฉพาะเมื่อไม่ได้กำหนดค่าคีย์ API สำหรับการสนทนา providers.*.voiceAliasesช่วยให้คำสั่งการสนทนาใช้ชื่อที่เข้าใจง่ายได้providers.mlx.modelIdเลือกรีโพ Hugging Face ที่ตัวช่วย MLX ภายในเครื่องของ macOS ใช้ หากละไว้ macOS จะใช้mlx-community/Soprano-80M-bf16- การเล่นเสียง MLX บน macOS ทำงานผ่านตัวช่วย
openclaw-mlx-ttsที่รวมมาให้เมื่อมีอยู่ หรือผ่านไฟล์ปฏิบัติการในPATH;OPENCLAW_MLX_TTS_BINจะแทนที่พาธตัวช่วยสำหรับการพัฒนา consultThinkingLevelควบคุมระดับการคิดสำหรับการเรียกใช้เอเจนต์ OpenClaw แบบเต็มที่อยู่เบื้องหลังการเรียกopenclaw_agent_consultแบบเรียลไทม์ของการสนทนาใน Control UI ปล่อยไว้โดยไม่ตั้งค่าเพื่อคงลักษณะการทำงานปกติของเซสชัน/โมเดลconsultFastModeตั้งค่าการแทนที่โหมดเร็วแบบใช้ครั้งเดียวสำหรับการปรึกษาแบบเรียลไทม์ของการสนทนาใน Control UI โดยไม่เปลี่ยนการตั้งค่าโหมดเร็วปกติของเซสชันspeechLocaleตั้งค่ารหัสโลแคล BCP 47 ที่การรู้จำเสียงพูดของการสนทนาบน Android, iOS และ macOS ใช้ Android ยังใช้องค์ประกอบภาษาของรหัสดังกล่าวเพื่อช่วยกำกับการถอดเสียงอินพุตแบบเรียลไทม์ ปล่อยไว้โดยไม่ตั้งค่าเพื่อใช้ค่าเริ่มต้นของอุปกรณ์silenceTimeoutMsควบคุมระยะเวลาที่โหมดการสนทนารอหลังจากผู้ใช้เงียบก่อนส่งข้อความถอดเสียง หากไม่ตั้งค่าจะใช้ช่วงหยุดชั่วคราวเริ่มต้นของแพลตฟอร์ม (700 ms on macOS and Android, 900 ms on iOS)realtime.instructionsเพิ่มคำสั่งระบบสำหรับผู้ให้บริการต่อท้ายพรอมต์เรียลไทม์ในตัวของ OpenClaw เพื่อให้กำหนดค่ารูปแบบเสียงได้โดยไม่สูญเสียคำแนะนำเริ่มต้นopenclaw_agent_consultrealtime.vadThresholdตั้งค่าเกณฑ์กิจกรรมเสียงของผู้ให้บริการตั้งแต่0(ไวที่สุด) ถึง1(ไวน้อยที่สุด) หากไม่ตั้งค่าจะใช้ค่าเริ่มต้นของผู้ให้บริการrealtime.silenceDurationMsตั้งค่าช่วงความเงียบที่เป็นจำนวนเต็มบวกก่อนที่ผู้ให้บริการจะยืนยันรอบการโต้ตอบแบบเรียลไทม์ของผู้ใช้ หากไม่ตั้งค่าจะใช้ค่าเริ่มต้นของผู้ให้บริการrealtime.prefixPaddingMsตั้งค่าปริมาณเสียงที่เป็นจำนวนเต็มไม่ติดลบซึ่งเก็บไว้ก่อนเริ่มตรวจพบเสียงพูด หากไม่ตั้งค่าจะใช้ค่าเริ่มต้นของผู้ให้บริการrealtime.reasoningEffortตั้งค่าระดับการให้เหตุผลเฉพาะของผู้ให้บริการสำหรับเซสชันเรียลไทม์ หากไม่ตั้งค่าจะใช้ค่าเริ่มต้นของผู้ให้บริการrealtime.consultRouting:"provider-direct"(ค่าเริ่มต้น) จะคงคำตอบโดยตรงจากผู้ให้บริการไว้ เมื่อผู้ให้บริการเรียลไทม์สร้างข้อความถอดเสียงสุดท้ายของผู้ใช้โดยไม่มีopenclaw_agent_consultส่วน"force-agent-consult"จะส่งคำขอที่เสร็จสมบูรณ์ผ่าน OpenClaw แทน
ที่เกี่ยวข้อง
- ข้อมูลอ้างอิงการกำหนดค่า — คีย์การกำหนดค่าอื่นทั้งหมด
- การกำหนดค่า — งานทั่วไปและการตั้งค่าอย่างรวดเร็ว
- ตัวอย่างการกำหนดค่า