Gateway
การกำหนดค่า — เครื่องมือและผู้ให้บริการแบบกำหนดเอง
tools.* คีย์การกำหนดค่าและการตั้งค่าผู้ให้บริการแบบกำหนดเอง / URL ฐาน สำหรับเอเจนต์ ช่องทาง และคีย์การกำหนดค่าระดับบนสุดอื่นๆ โปรดดู เอกสารอ้างอิงการกำหนดค่า
เครื่องมือ
โปรไฟล์เครื่องมือ
tools.profile กำหนดรายการอนุญาตพื้นฐานก่อน tools.allow/tools.deny:
| โปรไฟล์ | ประกอบด้วย |
|---|---|
minimal |
เฉพาะ session_status |
coding |
group:fs, group:runtime, group:web, group:sessions, group:memory, cron, get_goal, create_goal, update_goal, update_plan, ask_user, skill_workshop, image, image_generate, music_generate, video_generate |
messaging |
group:messaging, sessions, sessions_list, sessions_history, sessions_search, conversations_list, conversations_send, conversations_turn, sessions_send, sessions_spawn, sessions_yield, subagents, session_status, ask_user |
full |
ไม่มีข้อจำกัด (เหมือนกับไม่ได้กำหนด) |
coding และ messaging ยังอนุญาต bundle-mcp (เซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้) โดยปริยายด้วย
กลุ่มเครื่องมือ
| กลุ่ม | เครื่องมือ |
|---|---|
group:runtime |
exec, process, code_execution (bash ใช้เป็นนามแฝงของ exec ได้) |
group:fs |
read, write, edit, apply_patch |
group:sessions |
sessions, sessions_list, sessions_history, sessions_search, conversations_list, conversations_send, conversations_turn, sessions_send, sessions_spawn, sessions_yield, subagents, session_status, spawn_task, dismiss_task |
group:memory |
memory_search, memory_get |
group:web |
web_search, x_search, web_fetch |
group:ui |
browser, screen, terminal, canvas, show_widget |
group:automation |
heartbeat_respond, cron, gateway |
group:messaging |
message |
group:nodes |
nodes, computer |
group:agents |
agents_list, get_goal, create_goal, update_goal, update_plan, ask_user, skill_workshop |
group:media |
image, image_generate, music_generate, video_generate, tts |
group:openclaw |
เครื่องมือในตัวทั้งหมดข้างต้น ยกเว้น read/write/edit/apply_patch/exec/process/canvas (ไม่รวมเครื่องมือของ Plugin) |
group:plugins |
เครื่องมือที่เป็นของ Plugin ที่โหลดแล้ว รวมถึงเซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้ซึ่งเปิดเผยผ่าน bundle-mcp |
spawn_task ช่วยให้เอเจนต์เขียนโค้ดสามารถเสนองานติดตามผลที่ได้รับการยืนยันแล้วโดยไม่เริ่มงานนั้น Control UI จะแสดงชื่อและข้อมูลสรุปเป็นชิปที่ดำเนินการได้ ส่วน TUI ที่มี Gateway รองรับจะแสดงพรอมต์แบบโต้ตอบที่เทียบเท่ากัน การยอมรับจากพื้นผิวใดพื้นผิวหนึ่งจะสร้างเซสชัน managed-worktree ใหม่และส่งพรอมต์ฉบับเต็มไปยังเซสชันนั้น ขณะที่เทิร์นปัจจุบันยังดำเนินต่อไป dismiss_task ถอนคำแนะนำที่ยังรอดำเนินการโดยใช้ task_id ชั่วคราวที่ส่งคืนจาก spawn_task
เครื่องมือเหล่านี้จะเสนอให้ใช้เฉพาะเมื่อพื้นผิวของผู้ดำเนินการที่เริ่มต้นสามารถรับและดำเนินการกับเหตุการณ์คำแนะนำงานของ Gateway ได้ เซสชันช่องทางและเซสชัน TUI ภายในเครื่อง/แบบฝังจะไม่ได้รับเหตุการณ์เหล่านี้ ส่วนการขนส่งของช่องทางต้องมีการดำเนินการงานแบบมีชนิดที่พกพาได้ก่อน จึงจะเปิดเผยขั้นตอนนี้ได้อย่างปลอดภัย คำแนะนำจะอยู่เฉพาะภายในโปรเซสและหายไปเมื่อ Gateway เริ่มใหม่ เครื่องมือทั้งสองยังคงอยู่ในโปรไฟล์ coding และ group:sessions ดังนั้นนโยบาย tools.allow และ tools.deny ตามปกติจะกำหนดค่าให้โดยอัตโนมัติเมื่อพื้นผิวรองรับ
เครื่องมือ MCP และ Plugin ภายในนโยบายเครื่องมือของแซนด์บ็อกซ์
เซิร์ฟเวอร์ MCP ที่กำหนดค่าไว้จะเปิดเผยเป็นเครื่องมือที่ Plugin เป็นเจ้าของภายใต้รหัส Plugin bundle-mcp โปรไฟล์เครื่องมือตามปกติสามารถอนุญาตเครื่องมือเหล่านี้ได้ แต่ tools.sandbox.tools เป็นด่านเพิ่มเติมสำหรับเซสชันที่ทำงานในแซนด์บ็อกซ์ หากโหมดแซนด์บ็อกซ์เป็น "all" หรือ "non-main" ให้เพิ่มหนึ่งในรายการต่อไปนี้ลงในรายการอนุญาตเครื่องมือของแซนด์บ็อกซ์เมื่อต้องการให้มองเห็นเครื่องมือ MCP/Plugin:
bundle-mcpสำหรับเซิร์ฟเวอร์ MCP ที่ OpenClaw จัดการจากmcp.servers- รหัส Plugin สำหรับ Plugin แบบเนทีฟที่ระบุ
group:pluginsสำหรับเครื่องมือที่ Plugin เป็นเจ้าของซึ่งโหลดแล้วทั้งหมด- ชื่อเครื่องมือของเซิร์ฟเวอร์ MCP ที่ตรงกันทุกประการ หรือรูปแบบ glob ของเซิร์ฟเวอร์ เช่น
outlook__send_mailหรือoutlook__*เมื่อต้องการเพียงเซิร์ฟเวอร์เดียว
รูปแบบ glob ของเซิร์ฟเวอร์ใช้คำนำหน้าของเซิร์ฟเวอร์ MCP ที่ปลอดภัยสำหรับผู้ให้บริการ ซึ่งไม่จำเป็นต้องตรงกับคีย์ mcp.servers ดิบ อักขระที่ไม่ใช่ [A-Za-z0-9_-] จะกลายเป็น - ชื่อที่ไม่ได้ขึ้นต้นด้วยตัวอักษรจะได้รับคำนำหน้า mcp- และคำนำหน้าที่ยาวหรือซ้ำกันอาจถูกตัดทอนหรือเติมส่วนต่อท้าย ตัวอย่างเช่น mcp.servers["Outlook Graph"] ใช้รูปแบบ glob เช่น outlook-graph__*
{ agents: { defaults: { sandbox: { mode: "all" } } }, mcp: { servers: { outlook: { command: "node", args: ["./outlook-mcp.js"] }, }, }, tools: { sandbox: { tools: { alsoAllow: ["web_search", "web_fetch", "memory_search", "memory_get", "bundle-mcp"], }, }, },}หากไม่มีรายการในชั้นแซนด์บ็อกซ์ดังกล่าว เซิร์ฟเวอร์ MCP ยังคงโหลดสำเร็จได้ แต่เครื่องมือจะถูกกรองออกก่อนคำขอไปยังผู้ให้บริการ ใช้ openclaw doctor เพื่อตรวจจับรูปแบบนี้สำหรับเซิร์ฟเวอร์ที่ OpenClaw จัดการใน mcp.servers เซิร์ฟเวอร์ MCP ที่โหลดจากรายการประกาศของ Plugin ที่รวมมาให้หรือ Claude .mcp.json ใช้ด่านแซนด์บ็อกซ์เดียวกัน แต่การวินิจฉัยนี้ยังไม่แจกแจงแหล่งเหล่านั้น หากเครื่องมือหายไปในเทิร์นที่ทำงานในแซนด์บ็อกซ์ ให้ใช้รายการอนุญาตเดียวกัน
tools.codeMode
tools.codeMode เปิดใช้งานพื้นผิวโหมดโค้ดทั่วไปของ OpenClaw เมื่อเปิดใช้งาน
สำหรับการรันที่มีเครื่องมือ เครื่องมือ OpenClaw ตามปกติจะย้ายไปอยู่หลังบริดจ์แค็ตตาล็อก tools.*
ภายในแซนด์บ็อกซ์ และเครื่องมือ MCP จะพร้อมใช้งานผ่านเนมสเปซ MCP
ที่สร้างขึ้น โดยปกติโมเดลจะเห็น exec และ wait; ส่วนเครื่องมือ เช่น computer
ซึ่งผลลัพธ์แบบมีโครงสร้างไม่สามารถส่งผ่านบริดจ์ที่รองรับเฉพาะ JSON ได้ จะยังคงเป็นเครื่องมือโดยตรง
{ tools: { codeMode: { enabled: true, }, },}รูปแบบย่อก็ใช้ได้เช่นกัน:
{ tools: { codeMode: true },}การประกาศ MCP จะเปิดเผยผ่านพื้นผิวไฟล์ API เสมือนแบบอ่านอย่างเดียวใน
โหมดโค้ด โค้ดเกสต์สามารถเรียก API.list("mcp") และ
API.read("mcp/<server>.d.ts") เพื่อตรวจสอบลายเซ็นแบบ TypeScript ก่อน
เรียก MCP.<server>.<tool>() โปรดดู โหมดโค้ด สำหรับ
สัญญารันไทม์ ขีดจำกัด และขั้นตอนการแก้ไขข้อบกพร่อง
tools.allow / tools.deny
นโยบายอนุญาต/ปฏิเสธเครื่องมือส่วนกลาง (การปฏิเสธมีผลเหนือกว่า) ไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ และรองรับอักขระตัวแทน * นโยบายนี้จะมีผลแม้ปิดแซนด์บ็อกซ์ Docker
{ tools: { deny: ["browser", "canvas"] },}write และ apply_patch เป็นรหัสเครื่องมือแยกกัน allow: ["write"] ยังเปิดใช้งาน apply_patch สำหรับโมเดลที่เข้ากันได้ด้วย แต่ deny: ["write"] ไม่ได้ปฏิเสธ apply_patch หากต้องการบล็อกการแก้ไขไฟล์ทั้งหมด ให้ปฏิเสธ group:fs หรือระบุเครื่องมือที่แก้ไขข้อมูลแต่ละรายการอย่างชัดเจน:
{ tools: { deny: ["write", "edit", "apply_patch"] },}tools.byProvider
จำกัดเครื่องมือเพิ่มเติมสำหรับผู้ให้บริการหรือโมเดลที่ระบุ ลำดับ: โปรไฟล์พื้นฐาน → โปรไฟล์ผู้ให้บริการ → อนุญาต/ปฏิเสธ
{ tools: { profile: "coding", byProvider: { "google-antigravity": { profile: "minimal" }, "openai/gpt-5.4": { allow: ["group:fs", "sessions_list"] }, }, },}tools.toolsBySender
จำกัดเครื่องมือสำหรับข้อมูลประจำตัวของผู้ร้องขอที่ระบุ นี่เป็นการป้องกันเชิงลึกเพิ่มเติมจากการควบคุมการเข้าถึงช่องทาง โดยค่าผู้ส่งต้องมาจากอะแดปเตอร์ช่องทาง ไม่ใช่ข้อความในสาร
{ tools: { toolsBySender: { "channel:discord:1234567890123": { alsoAllow: ["group:fs"] }, "id:guest-user-id": { deny: ["group:runtime", "group:fs"] }, "*": { deny: ["exec", "process", "write", "edit", "apply_patch"] }, }, },}คีย์ใช้คำนำหน้าที่ระบุอย่างชัดเจน ได้แก่ channel:<channelId>:<senderId>, id:<senderId>, e164:<phone>, username:<handle>, name:<displayName> หรือ "*" รหัสช่องทางเป็นรหัสมาตรฐานของ OpenClaw ส่วนชื่อแทน เช่น teams จะถูกปรับให้อยู่ในรูป msteams คีย์แบบเดิมที่ไม่มีคำนำหน้าจะยอมรับเป็น id: เท่านั้น ลำดับการจับคู่คือ ช่องทาง+รหัส, รหัส, e164, ชื่อผู้ใช้, ชื่อ แล้วจึงไวลด์การ์ด
agents.list[].tools.toolsBySender ระดับเอเจนต์จะแทนที่การจับคู่ผู้ส่งส่วนกลางเมื่อจับคู่สำเร็จ แม้นโยบาย {} จะว่างเปล่าก็ตาม
tools.elevated
ควบคุมการเข้าถึงการเรียกใช้แบบยกระดับภายนอกแซนด์บ็อกซ์:
{ tools: { elevated: { enabled: true, allowFrom: { whatsapp: ["+15555550123"], discord: ["1234567890123", "987654321098765432"], }, }, },}- การแทนที่ระดับเอเจนต์ (
agents.list[].tools.elevated) ทำได้เพียงจำกัดให้เข้มงวดยิ่งขึ้น /elevated on|off|ask|fullจัดเก็บสถานะแยกตามเซสชัน ส่วนคำสั่งแบบอินไลน์มีผลกับข้อความเดียวexecแบบยกระดับจะข้ามการทำแซนด์บ็อกซ์และใช้เส้นทางหลบออกที่กำหนดค่าไว้ (ค่าเริ่มต้นคือgatewayหรือnodeเมื่อเป้าหมายการเรียกใช้คือnode)
tools.exec
{ tools: { exec: { backgroundMs: 10000, timeoutSec: 1800, cleanupMs: 1800000, approvalRunningNoticeMs: 10000, notifyOnExit: true, notifyOnExitEmptySuccess: false, commandHighlighting: false, applyPatch: { enabled: true, allowModels: ["gpt-5.6-sol"], }, }, },}ค่าที่แสดงเป็นค่าเริ่มต้น ยกเว้น applyPatch.allowModels (ค่าเริ่มต้นว่าง/ไม่ได้ตั้งค่า หมายความว่าโมเดลที่เข้ากันได้ทุกโมเดลอาจใช้ apply_patch) approvalRunningNoticeMs จะแสดงการแจ้งเตือนว่ายังคงทำงานอยู่ เมื่อการเรียกใช้ที่อาศัยการอนุมัติทำงานเป็นเวลานาน ส่วน 0 จะปิดการทำงานนี้
tools.loopDetection
การตรวจสอบความปลอดภัยของลูปเครื่องมือจะ ปิดใช้งานโดยค่าเริ่มต้น ตั้งค่า enabled: true เพื่อเปิดใช้การตรวจจับ สามารถกำหนดการตั้งค่าทั่วโลกใน tools.loopDetection และแทนที่แยกตามเอเจนต์ได้ที่ agents.list[].tools.loopDetection
{ tools: { loopDetection: { enabled: true, }, },}tools.web
{ tools: { web: { search: { enabled: true, apiKey: "brave_api_key", // หรือสภาพแวดล้อม BRAVE_API_KEY (ผู้ให้บริการ Brave) maxResults: 5, timeoutSeconds: 30, cacheTtlMinutes: 15, }, fetch: { enabled: true, provider: "firecrawl", // ไม่บังคับ; ละเว้นเพื่อให้ตรวจหาอัตโนมัติ maxChars: 20000, maxCharsCap: 20000, maxResponseBytes: 750000, timeoutSeconds: 30, cacheTtlMinutes: 15, maxRedirects: 3, readability: true, userAgent: "custom-ua", }, }, },}ค่าที่แสดงเป็นค่าเริ่มต้น ยกเว้น provider และ userAgent maxResponseBytes จะจำกัดให้อยู่ในช่วง 32000–10000000 ส่วน maxChars จะจำกัดไว้ที่ maxCharsCap (เพิ่ม maxCharsCap เพื่ออนุญาตการตอบกลับที่ใหญ่ขึ้น)
tools.media
กำหนดค่าการทำความเข้าใจสื่อขาเข้า (รูปภาพ/เสียง/วิดีโอ):
{ tools: { media: { concurrency: 2, audio: { enabled: true, maxBytes: 20971520, scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, models: [ { provider: "openai", model: "gpt-4o-mini-transcribe" }, { type: "cli", command: "whisper", args: ["--model", "base", "{{MediaPath}}"] }, ], }, image: { enabled: true, timeoutSeconds: 180, models: [{ provider: "ollama", model: "gemma4:26b", timeoutSeconds: 300 }], }, video: { enabled: true, maxBytes: 52428800, models: [{ provider: "google", model: "gemini-3-flash-preview" }], }, }, },}concurrency (ค่าเริ่มต้น 2), audio.maxBytes (ค่าเริ่มต้น 20 MB) และ video.maxBytes (ค่าเริ่มต้น 50 MB) แสดงด้วยค่าเริ่มต้น ส่วน image.maxBytes มีค่าเริ่มต้นเป็น 10 MB ระยะหมดเวลาของคำขอเริ่มต้นแยกตามความสามารถ: รูปภาพ/เสียง 60 วินาที, วิดีโอ 120 วินาที
ฟิลด์รายการโมเดลสื่อ
รายการผู้ให้บริการ (type: "provider" หรือละเว้น):
provider: รหัสผู้ให้บริการ API (openai,anthropic,google/gemini,groqเป็นต้น)model: การแทนที่รหัสโมเดลprofile/preferredProfile: การเลือกโปรไฟล์auth-profiles.json
รายการ CLI (type: "cli"):
command: ไฟล์ปฏิบัติการที่จะเรียกใช้args: อาร์กิวเมนต์แบบเทมเพลต (รองรับ{{MediaPath}},{{Prompt}},{{MaxChars}}เป็นต้น โดยopenclaw doctor --fixจะย้ายตัวยึดตำแหน่ง{input}ที่เลิกใช้แล้วไปเป็น{{MediaPath}})
ฟิลด์ทั่วไป:
capabilities: รายการที่ไม่บังคับ (image,audio,video) Plugin ของผู้ให้บริการแต่ละรายประกาศชุดความสามารถเริ่มต้นของตนเอง ตัวอย่างเช่น ผู้ให้บริการopenaiที่รวมมาให้มีค่าเริ่มต้นเป็นรูปภาพ+เสียง,anthropic/minimaxเป็นรูปภาพ,googleเป็นรูปภาพ+เสียง+วิดีโอ และgroqเป็นเสียงprompt,maxChars,maxBytes,timeoutSeconds,language: การแทนที่แยกตามรายการtools.media.image.timeoutSecondsและรายการtimeoutSecondsของโมเดลรูปภาพที่ตรงกันจะมีผลด้วยเมื่อเอเจนต์เรียกเครื่องมือimageโดยตรง สำหรับการทำความเข้าใจรูปภาพ ระยะหมดเวลานี้มีผลกับตัวคำขอเองและจะไม่ลดลงจากงานเตรียมการก่อนหน้า- เมื่อเกิดความล้มเหลว ระบบจะสำรองไปใช้รายการถัดไป
การรับรองความถูกต้องของผู้ให้บริการเป็นไปตามลำดับมาตรฐาน: auth-profiles.json → ตัวแปรสภาพแวดล้อม → models.providers.*.apiKey
tools.agentToAgent
{ tools: { agentToAgent: { enabled: false, allow: ["home", "work"], }, },}tools.sessions
ควบคุมว่าเครื่องมือเซสชัน (sessions_list, sessions_history, sessions_send) สามารถกำหนดเป้าหมายเซสชันใดได้บ้าง
ค่าเริ่มต้น: tree (เซสชันปัจจุบัน + เซสชันที่เซสชันนี้สร้างขึ้น เช่น เอเจนต์ย่อย รวมถึงเซสชันกลุ่มที่เฝ้าดูโดยรอบสำหรับเอเจนต์เดียวกัน)
{ tools: { sessions: { // "self" | "tree" | "agent" | "all" visibility: "tree", }, },}ขอบเขตการมองเห็น
self: เฉพาะคีย์ของเซสชันปัจจุบันtree: เซสชันปัจจุบัน + เซสชันที่เซสชันปัจจุบันสร้างขึ้น (เอเจนต์ย่อย) สำหรับการดำเนินการอ่าน ยังรวมถึงเซสชันกลุ่มของเอเจนต์เดียวกันที่เซสชันปัจจุบันเฝ้าดูผ่านการรับรู้กลุ่มโดยรอบagent: เซสชันใดก็ตามที่เป็นของรหัสเอเจนต์ปัจจุบัน (อาจรวมผู้ใช้รายอื่น หากเรียกใช้เซสชันแยกตามผู้ส่งภายใต้รหัสเอเจนต์เดียวกัน)all: เซสชันใดก็ได้ การกำหนดเป้าหมายข้ามเอเจนต์ยังคงต้องใช้tools.agentToAgent- ข้อจำกัดของแซนด์บ็อกซ์: เมื่อเซสชันปัจจุบันอยู่ในแซนด์บ็อกซ์และ
agents.defaults.sandbox.sessionToolsVisibility="spawned"(ค่าเริ่มต้น) การมองเห็นจะถูกบังคับเป็นtreeแม้ว่าtools.sessions.visibility="all" - เมื่อไม่ใช่
allsessions_listจะมีฟิลด์visibilityแบบกระชับ ซึ่งอธิบายโหมดที่มีผลจริงและคำเตือนว่าเซสชันบางส่วนอาจถูก ละเว้นเมื่ออยู่นอกขอบเขตปัจจุบัน
เมื่อใช้ค่าเริ่มต้น session.dmScope: "main" กิจกรรมของมนุษย์ในกลุ่มจะทำให้เซสชันกลุ่มของเอเจนต์เดียวกันนั้นมองเห็นได้โดยรอบจากเซสชันหลักของเอเจนต์ ในการตั้งค่าแบบหลายผู้ใช้ "main" ยังใช้เซสชัน DM เดียวร่วมกันระหว่างผู้ใช้ ดังนั้นผู้ใช้แต่ละรายที่ถูกกำหนดเส้นทางมายังเซสชันนั้นจึงสามารถอ่านข้อมูลจากกลุ่มที่เฝ้าดูโดยรอบได้ รวมถึงผ่าน memory_search ของหน่วยความจำเซสชัน ใช้ dmScope แยกตามคู่สนทนาเพื่อแยก DM หรือกำหนด tools.sessions.visibility: "self" เพื่อไม่เข้าร่วมการอ่านเซสชันที่เฝ้าดูโดยรอบ
tools.sessions_spawn
ควบคุมการรองรับไฟล์แนบแบบอินไลน์สำหรับ sessions_spawn
{ tools: { sessions_spawn: { attachments: { enabled: false, // ต้องเลือกเปิดใช้: ตั้งค่าเป็น true เพื่ออนุญาตไฟล์แนบแบบอินไลน์ maxTotalBytes: 5242880, // รวมสูงสุด 5 MB สำหรับทุกไฟล์ maxFiles: 50, maxFileBytes: 1048576, // สูงสุด 1 MB ต่อไฟล์ retainOnSessionKeep: false, // เก็บไฟล์แนบไว้เมื่อ cleanup="keep" }, }, },}หมายเหตุเกี่ยวกับไฟล์แนบ
- ไฟล์แนบต้องใช้
enabled: true - ไฟล์แนบของเอเจนต์ย่อยจะถูกสร้างเป็นไฟล์จริงในพื้นที่ทำงานลูกที่
.openclaw/attachments/<uuid>/พร้อม.manifest.json - ไฟล์แนบ ACP รองรับเฉพาะรูปภาพและจะถูกส่งต่อแบบอินไลน์ไปยังรันไทม์ ACP หลังผ่านขีดจำกัดเดียวกันสำหรับจำนวนไฟล์ จำนวนไบต์ต่อไฟล์ และจำนวนไบต์รวม
- เนื้อหาไฟล์แนบจะถูกปกปิดจากการคงอยู่ของบันทึกบทสนทนาโดยอัตโนมัติ
- อินพุต Base64 จะได้รับการตรวจสอบตัวอักษร/แพดดิงอย่างเข้มงวดและมีการป้องกันขนาดก่อนถอดรหัส
- สิทธิ์ของไฟล์แนบเอเจนต์ย่อยคือ
0700สำหรับไดเรกทอรีและ0600สำหรับไฟล์ - การล้างข้อมูลของเอเจนต์ย่อยเป็นไปตามนโยบาย
cleanup:deleteจะลบไฟล์แนบเสมอ ส่วนkeepจะเก็บไว้เฉพาะเมื่อretainOnSessionKeep: true
tools.experimental
แฟล็กเครื่องมือในตัวแบบทดลอง ปิดโดยค่าเริ่มต้น เว้นแต่กฎเปิดใช้อัตโนมัติสำหรับ GPT-5 แบบ strict-agentic จะมีผล
{ tools: { experimental: { planTool: true, // เปิดใช้ update_plan แบบทดลอง }, },}planTool: เปิดใช้เครื่องมือupdate_planแบบมีโครงสร้างสำหรับติดตามงานหลายขั้นตอนที่ไม่ใช่งานเล็กน้อย- ค่าเริ่มต้น:
falseเว้นแต่agents.defaults.embeddedAgent.executionContract(หรือการแทนที่ระดับเอเจนต์) จะถูกตั้งเป็น"strict-agentic"สำหรับการเรียกใช้ผู้ให้บริการopenaiกับรหัสโมเดลตระกูล GPT-5 (ครอบคลุมการเรียกใช้ OpenAI Codex CLI ด้วย เนื่องจากการกำหนดเส้นทางการรับรองความถูกต้อง/โมเดลของ Codex อยู่ภายใต้ผู้ให้บริการopenai) ตั้งค่าtrueเพื่อบังคับเปิดเครื่องมือนอกขอบเขตดังกล่าว หรือfalseเพื่อให้เครื่องมือยังคงปิดแม้ในการเรียกใช้ GPT-5 แบบ strict-agentic - เมื่อเปิดใช้งาน พรอมต์ระบบจะเพิ่มคำแนะนำการใช้งานด้วย เพื่อให้โมเดลใช้เครื่องมือนี้เฉพาะกับงานขนาดใหญ่และมีขั้นตอน
in_progressได้พร้อมกันไม่เกินหนึ่งขั้นตอน
agents.defaults.subagents
{ agents: { defaults: { subagents: { allowAgents: ["research"], model: "minimax/MiniMax-M2.7", maxConcurrent: 8, runTimeoutSeconds: 900, announceTimeoutMs: 120000, archiveAfterMinutes: 60, }, }, },}model: โมเดลเริ่มต้นสำหรับ sub-agent ที่สร้างขึ้น หากละไว้ sub-agent จะสืบทอดโมเดลของผู้เรียกallowAgents: รายการอนุญาตเริ่มต้นของรหัสเอเจนต์เป้าหมายที่กำหนดค่าไว้สำหรับsessions_spawnเมื่อเอเจนต์ผู้ร้องขอไม่ได้ตั้งค่าsubagents.allowAgentsของตนเอง (["*"]= เป้าหมายใดก็ได้ที่กำหนดค่าไว้; ค่าเริ่มต้น: เฉพาะเอเจนต์เดียวกัน) รายการเก่าที่การกำหนดค่าเอเจนต์ถูกลบแล้วจะถูกsessions_spawnปฏิเสธและละไว้จากagents_list; เรียกใช้openclaw doctor --fixเพื่อล้างรายการเหล่านั้นmaxConcurrent: จำนวนการทำงานของ sub-agent พร้อมกันสูงสุด ค่าเริ่มต้น:8runTimeoutSeconds: ระยะหมดเวลา (วินาที) สำหรับsessions_spawnเมื่อผู้เรียกไม่ได้ส่งค่าทดแทนของตนเอง ค่าเริ่มต้น:0(ไม่มีระยะหมดเวลา);900ที่แสดงด้านบนเป็นค่าที่นิยมเลือกใช้ ไม่ใช่ค่าเริ่มต้นในตัวannounceTimeoutMs: ระยะหมดเวลาต่อการเรียก (มิลลิวินาที) สำหรับความพยายามส่งประกาศagentของ Gateway ค่าเริ่มต้น:120000การลองใหม่สำหรับข้อผิดพลาดชั่วคราวอาจทำให้เวลารอประกาศรวมยาวนานกว่าระยะหมดเวลาที่กำหนดไว้หนึ่งช่วงarchiveAfterMinutes: จำนวนนาทีหลังจากเซสชัน sub-agent เสร็จสิ้นก่อนที่จะถูกเก็บถาวรโดยอัตโนมัติ ค่าเริ่มต้น:60;0ปิดใช้งานการเก็บถาวรอัตโนมัติ- นโยบายเครื่องมือต่อ sub-agent:
tools.subagents.tools.allow/tools.subagents.tools.deny
ผู้ให้บริการและ URL ฐานแบบกำหนดเอง
Plugin ของผู้ให้บริการเผยแพร่แถวแค็ตตาล็อกโมเดลของตนเอง เพิ่มผู้ให้บริการแบบกำหนดเองผ่าน models.providers ในการกำหนดค่าหรือ ~/.openclaw/agents/<agentId>/agent/models.json
การกำหนดค่า baseUrl ของผู้ให้บริการแบบกำหนดเอง/ภายในเครื่องยังเป็นการตัดสินใจด้านความเชื่อถือของเครือข่ายแบบจำกัดขอบเขตสำหรับคำขอ HTTP ของโมเดลด้วย: OpenClaw อนุญาตต้นทาง scheme://host:port ที่ตรงกันทุกประการผ่านเส้นทาง fetch ที่มีการป้องกัน โดยไม่เพิ่มตัวเลือกการกำหนดค่าแยกต่างหากหรือเชื่อถือต้นทางส่วนตัวอื่น ๆ
{ models: { mode: "merge", // ผสาน (ค่าเริ่มต้น) | แทนที่ providers: { "custom-proxy": { baseUrl: "http://localhost:4000/v1", apiKey: "LITELLM_KEY", api: "openai-completions", // openai-completions | openai-responses | anthropic-messages | google-generative-ai | ฯลฯ models: [ { id: "llama-3.1-8b", name: "Llama 3.1 8B", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 128000, contextTokens: 96000, maxTokens: 32000, }, ], }, }, },}การยืนยันตัวตนและลำดับความสำคัญในการผสาน
- ใช้
authHeader: true+headersสำหรับความต้องการด้านการยืนยันตัวตนแบบกำหนดเอง - แทนที่รากการกำหนดค่าเอเจนต์ด้วย
OPENCLAW_AGENT_DIR - ลำดับความสำคัญในการผสานสำหรับรหัสผู้ให้บริการที่ตรงกัน:
- ค่า
baseUrlของmodels.jsonสำหรับเอเจนต์ที่ไม่ว่างเปล่ามีลำดับความสำคัญ - ค่า
apiKeyสำหรับเอเจนต์ที่ไม่ว่างเปล่ามีลำดับความสำคัญเฉพาะเมื่อผู้ให้บริการนั้นไม่ได้รับการจัดการด้วย SecretRef ในบริบทการกำหนดค่า/โปรไฟล์การยืนยันตัวตนปัจจุบัน - ค่า
apiKeyของผู้ให้บริการที่จัดการด้วย SecretRef จะถูกรีเฟรชจากเครื่องหมายแหล่งที่มา (ENV_VAR_NAMEสำหรับการอ้างอิง env,secretref-managedสำหรับการอ้างอิงไฟล์/exec) แทนการคงค่าข้อมูลลับที่แก้ไขแล้ว - ค่าของส่วนหัวผู้ให้บริการที่จัดการด้วย SecretRef จะถูกรีเฟรชจากเครื่องหมายแหล่งที่มา (
secretref-env:ENV_VAR_NAMEสำหรับการอ้างอิง env,secretref-managedสำหรับการอ้างอิงไฟล์/exec) apiKey/baseUrlสำหรับเอเจนต์ที่ว่างเปล่าหรือไม่มีอยู่จะย้อนกลับไปใช้models.providersในการกำหนดค่าcontextWindow/maxTokensของโมเดลที่ตรงกัน: ค่าการกำหนดค่าที่ระบุชัดเจนมีลำดับความสำคัญเมื่อมีอยู่และถูกต้อง (จำนวนจำกัดที่เป็นบวก); มิฉะนั้นจะใช้ค่าแค็ตตาล็อกโดยนัย/ที่สร้างขึ้นcontextTokensของโมเดลที่ตรงกันใช้กฎเดียวกันคือค่าที่ระบุชัดเจนมีลำดับความสำคัญ มิฉะนั้นใช้ค่าโดยนัย; ใช้ค่านี้เพื่อจำกัดบริบทที่มีผลโดยไม่เปลี่ยนข้อมูลเมตาดั้งเดิมของโมเดล- แค็ตตาล็อกของ Plugin ผู้ให้บริการจะถูกจัดเก็บเป็นส่วนย่อยของแค็ตตาล็อกที่สร้างขึ้นและเป็นของ Plugin ภายใต้สถานะ Plugin ของเอเจนต์
- ใช้
models.mode: "replace"เมื่อต้องการให้การกำหนดค่าเขียนmodels.jsonใหม่ทั้งหมดและข้ามการผสานส่วนย่อยของแค็ตตาล็อกที่เป็นของ Plugin - การคงอยู่ของเครื่องหมายยึดแหล่งที่มาเป็นหลัก: เครื่องหมายจะถูกเขียนจากสแนปช็อตการกำหนดค่าแหล่งที่มาที่ใช้งานอยู่ (ก่อนการแก้ไขค่า) ไม่ใช่จากค่าข้อมูลลับขณะรันไทม์ที่แก้ไขแล้ว
- ค่า
รายละเอียดฟิลด์ผู้ให้บริการ
แค็ตตาล็อกระดับบนสุด
models.mode: ลักษณะการทำงานของแค็ตตาล็อกผู้ให้บริการ (mergeหรือreplace)models.providers: แมปผู้ให้บริการแบบกำหนดเองที่ใช้รหัสผู้ให้บริการเป็นคีย์- การแก้ไขอย่างปลอดภัย: ใช้
openclaw config set models.providers.<id> '<json>' --strict-json --mergeหรือopenclaw config set models.providers.<id>.models '<json-array>' --strict-json --mergeสำหรับการอัปเดตแบบเพิ่มเติมconfig setจะปฏิเสธการแทนที่ที่เป็นการทำลายเว้นแต่จะส่ง--replace
- การแก้ไขอย่างปลอดภัย: ใช้
การเชื่อมต่อและการยืนยันตัวตนของผู้ให้บริการ
models.providers.*.api: อะแดปเตอร์คำขอ (openai-completions,openai-responses,openai-chatgpt-responses,anthropic-messages,google-generative-ai,google-vertex,github-copilot,bedrock-converse-stream,ollama,azure-openai-responses) สำหรับแบ็กเอนด์/v1/chat/completionsที่โฮสต์เอง เช่น MLX, vLLM, SGLang และเซิร์ฟเวอร์ภายในเครื่องที่เข้ากันได้กับ OpenAI ส่วนใหญ่ ให้ใช้openai-completionsผู้ให้บริการแบบกำหนดเองที่มีbaseUrlแต่ไม่มีapiจะใช้openai-completionsเป็นค่าเริ่มต้น; ตั้งค่าopenai-responsesเฉพาะเมื่อแบ็กเอนด์รองรับ/v1/responsesmodels.providers.*.apiKey: ข้อมูลประจำตัวของผู้ให้บริการ (ควรใช้การแทนที่ด้วย SecretRef/env)models.providers.*.auth: กลยุทธ์การยืนยันตัวตน (api-key,token,oauth,aws-sdk)models.providers.*.contextWindow: หน้าต่างบริบทดั้งเดิมเริ่มต้นสำหรับโมเดลภายใต้ผู้ให้บริการนี้เมื่อรายการโมเดลไม่ได้ตั้งค่าcontextWindowmodels.providers.*.contextTokens: ขีดจำกัดบริบทขณะรันไทม์ที่มีผลเริ่มต้นสำหรับโมเดลภายใต้ผู้ให้บริการนี้เมื่อรายการโมเดลไม่ได้ตั้งค่าcontextTokensmodels.providers.*.maxTokens: ขีดจำกัดโทเค็นเอาต์พุตเริ่มต้นสำหรับโมเดลภายใต้ผู้ให้บริการนี้เมื่อรายการโมเดลไม่ได้ตั้งค่าmaxTokensmodels.providers.*.timeoutSeconds: ระยะหมดเวลาคำขอ HTTP ของโมเดลต่อผู้ให้บริการแบบเลือกได้ในหน่วยวินาที ซึ่งรวมการเชื่อมต่อ ส่วนหัว เนื้อหา และการจัดการยกเลิกคำขอทั้งหมดmodels.providers.*.injectNumCtxForOpenAICompat: สำหรับ Ollama +openai-completionsให้แทรกoptions.num_ctxลงในคำขอ (ค่าเริ่มต้น:true)models.providers.*.authHeader: บังคับการส่งข้อมูลประจำตัวในส่วนหัวAuthorizationเมื่อจำเป็นmodels.providers.*.baseUrl: URL ฐานของ API ต้นทางmodels.providers.*.headers: ส่วนหัวแบบคงที่เพิ่มเติมสำหรับการกำหนดเส้นทางพร็อกซี/ผู้เช่า
การแทนที่การส่งคำขอ
models.providers.*.request: การแทนที่การส่งสำหรับคำขอ HTTP ของผู้ให้บริการโมเดล
request.headers: ส่วนหัวเพิ่มเติม (ผสานกับค่าเริ่มต้นของผู้ให้บริการ) ค่ารองรับ SecretRefrequest.auth: การแทนที่กลยุทธ์การยืนยันตัวตน โหมด:"provider-default"(ใช้การยืนยันตัวตนในตัวของผู้ให้บริการ),"authorization-bearer"(ร่วมกับtoken),"header"(ร่วมกับheaderName,value, และprefixซึ่งเป็นตัวเลือก)request.proxy: การแทนที่พร็อกซี HTTP โหมด:"env-proxy"(ใช้ตัวแปร envHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(ร่วมกับurl) ทั้งสองโหมดยอมรับออบเจ็กต์ย่อยtlsซึ่งเป็นตัวเลือกrequest.tls: การแทนที่ TLS สำหรับการเชื่อมต่อโดยตรง ฟิลด์:ca,cert,key,passphrase(ทั้งหมดรองรับ SecretRef),serverName,insecureSkipVerifyrequest.allowPrivateNetwork: เมื่อเป็นtrueให้อนุญาตคำขอ HTTP ของผู้ให้บริการโมเดลไปยังช่วงที่อยู่ส่วนตัว, CGNAT หรือช่วงที่คล้ายกันผ่านตัวป้องกัน fetch HTTP ของผู้ให้บริการ URL ฐานของผู้ให้บริการแบบกำหนดเอง/ภายในเครื่องเชื่อถือต้นทางที่กำหนดไว้ตรงกันทุกประการอยู่แล้ว ยกเว้นต้นทางเมตาดาตา/ลิงก์โลคัล ซึ่งยังคงถูกบล็อกหากไม่มีการเลือกใช้อย่างชัดเจน ตั้งค่านี้เป็นfalseเพื่อยกเลิกความเชื่อถือต้นทางที่ตรงกันทุกประการ WebSocket ใช้requestเดียวกันสำหรับส่วนหัว/TLS แต่ไม่ใช้เกต SSRF ของ fetch ดังกล่าว ค่าเริ่มต้นfalse
รายการแค็ตตาล็อกโมเดล
models.providers.*.models: รายการแค็ตตาล็อกโมเดลของผู้ให้บริการที่ระบุชัดเจนmodels.providers.*.models.*.input: รูปแบบอินพุตของโมเดล ใช้["text"]สำหรับโมเดลที่รองรับเฉพาะข้อความ และ["text", "image"]สำหรับโมเดลภาพ/การมองเห็นดั้งเดิม ไฟล์แนบรูปภาพจะถูกแทรกลงในการทำงานของเอเจนต์เฉพาะเมื่อโมเดลที่เลือกถูกระบุว่ารองรับรูปภาพmodels.providers.*.models.*.contextWindow: ข้อมูลเมตาหน้าต่างบริบทดั้งเดิมของโมเดล ค่านี้จะแทนที่contextWindowระดับผู้ให้บริการสำหรับโมเดลนั้นmodels.providers.*.models.*.contextTokens: ขีดจำกัดบริบทขณะรันไทม์แบบเลือกได้ ค่านี้จะแทนที่contextTokensระดับผู้ให้บริการ; ใช้เมื่อต้องการงบประมาณบริบทที่มีผลน้อยกว่าcontextWindowดั้งเดิมของโมเดล;openclaw models listจะแสดงทั้งสองค่าเมื่อแตกต่างกันmodels.providers.*.models.*.compat.supportsDeveloperRole: คำแนะนำด้านความเข้ากันได้แบบเลือกได้ สำหรับapi: "openai-completions"ที่มีbaseUrlแบบไม่ใช่ค่าดั้งเดิมและไม่ว่างเปล่า (โฮสต์ไม่ใช่api.openai.com) OpenClaw จะบังคับค่านี้เป็นfalseขณะรันไทม์baseUrlที่ว่างเปล่าหรือถูกละไว้จะคงลักษณะการทำงานเริ่มต้นของ OpenAImodels.providers.*.models.*.compat.requiresStringContent: คำแนะนำด้านความเข้ากันได้แบบเลือกได้สำหรับปลายทางแชตที่เข้ากันได้กับ OpenAI และรองรับเฉพาะสตริง เมื่อเป็นtrueOpenClaw จะแปลงอาร์เรย์messages[].contentที่เป็นข้อความล้วนให้เป็นสตริงธรรมดาก่อนส่งคำขอmodels.providers.*.models.*.compat.strictMessageKeys: คำแนะนำด้านความเข้ากันได้แบบเลือกได้สำหรับปลายทางแชตที่เข้ากันได้กับ OpenAI อย่างเคร่งครัด เมื่อเป็นtrueOpenClaw จะลดรูปออบเจ็กต์ข้อความ Chat Completions ขาออกให้เหลือroleและcontentก่อนส่งคำขอmodels.providers.*.models.*.compat.thinkingFormat: คำแนะนำเพย์โหลดการคิดแบบเลือกได้ ใช้"together"สำหรับreasoning.enabledแบบ Together,"qwen"สำหรับenable_thinkingระดับบนสุด หรือ"qwen-chat-template"สำหรับchat_template_kwargs.enable_thinkingบนเซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI ในตระกูล Qwen ซึ่งรองรับอาร์กิวเมนต์คีย์เวิร์ดของเทมเพลตแชตระดับคำขอ เช่น vLLM โมเดล Qwen ของ vLLM ที่กำหนดค่าไว้จะแสดงตัวเลือก/thinkแบบไบนารี (off,on) สำหรับรูปแบบเหล่านี้models.providers.*.models.*.compat.requiresReasoningContentOnAssistantMessages: คำแนะนำด้านความเข้ากันได้แบบเลือกได้สำหรับแบ็กเอนด์ Chat Completions แบบ DeepSeek ซึ่งกำหนดให้ข้อความผู้ช่วยก่อนหน้ายังคงมีreasoning_contentเมื่อเล่นซ้ำ เมื่อเป็นtrueOpenClaw จะคงฟิลด์นั้นไว้ในข้อความผู้ช่วยขาออก ใช้ค่านี้เมื่อต่อพร็อกซีแบบกำหนดเองที่เข้ากันได้กับ DeepSeek ซึ่งปฏิเสธคำขอหลังจากข้อมูลการให้เหตุผลถูกตัดออก ค่าเริ่มต้นfalse
การค้นหา Amazon Bedrock
plugins.entries.amazon-bedrock.config.discovery: รากการตั้งค่าการค้นหาอัตโนมัติของ Bedrockplugins.entries.amazon-bedrock.config.discovery.enabled: เปิด/ปิดการค้นหาโดยนัยplugins.entries.amazon-bedrock.config.discovery.region: รีเจียน AWS สำหรับการค้นหาplugins.entries.amazon-bedrock.config.discovery.providerFilter: ตัวกรองรหัสผู้ให้บริการแบบเลือกได้สำหรับการค้นหาแบบเจาะจงplugins.entries.amazon-bedrock.config.discovery.refreshInterval: ช่วงเวลาการสำรวจเพื่อตรวจสอบการรีเฟรชการค้นหาplugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: หน้าต่างบริบทสำรองสำหรับโมเดลที่ค้นพบplugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: จำนวนโทเค็นเอาต์พุตสูงสุดสำรองสำหรับโมเดลที่ค้นพบ
การเริ่มต้นใช้งานผู้ให้บริการแบบกำหนดเองในโหมดโต้ตอบจะอนุมานการรองรับอินพุตรูปภาพสำหรับรูปแบบรหัสโมเดลวิชันที่รู้จัก รวมถึง GPT-4o/GPT-4.1/GPT-5+, กลุ่มโมเดลการให้เหตุผล o1/o3/o4, Claude, Gemini, รหัสใดๆ ที่ลงท้ายด้วย -vl (Qwen-VL และโมเดลที่คล้ายกัน) และกลุ่มโมเดลที่ระบุชื่อ เช่น LLaVA, Pixtral, InternVL, Mllama, MiniCPM-V และ GLM-4V โดยจะข้ามคำถามเพิ่มเติมสำหรับกลุ่มโมเดลที่ทราบว่ารองรับเฉพาะข้อความ (Llama, DeepSeek, Mistral/Mixtral, Kimi/Moonshot, Codestral, Devstral, Phi, QwQ, CodeLlama และรหัส Qwen แบบไม่มีส่วนต่อท้าย vl/vision) รหัสโมเดลที่ไม่รู้จักจะยังคงแสดงคำถามเกี่ยวกับการรองรับรูปภาพ การเริ่มต้นใช้งานแบบไม่โต้ตอบใช้การอนุมานแบบเดียวกัน โดยส่ง --custom-image-input เพื่อบังคับใช้เมทาดาทาที่รองรับรูปภาพ หรือ --custom-text-input เพื่อบังคับใช้เมทาดาทาที่รองรับเฉพาะข้อความ
ตัวอย่างผู้ให้บริการ
Cerebras (GLM 4.7 / GPT OSS)
Plugin ผู้ให้บริการภายนอกอย่างเป็นทางการ cerebras สามารถกำหนดค่านี้ผ่าน openclaw onboard --auth-choice cerebras-api-key ได้ ใช้การกำหนดค่าผู้ให้บริการโดยตรงเฉพาะเมื่อต้องการเขียนทับค่าเริ่มต้นเท่านั้น
{ env: { CEREBRAS_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "cerebras/zai-glm-4.7", fallbacks: ["cerebras/gpt-oss-120b"], }, models: { "cerebras/zai-glm-4.7": { alias: "GLM 4.7 (Cerebras)" }, "cerebras/gpt-oss-120b": { alias: "GPT OSS 120B (Cerebras)" }, }, }, }, models: { mode: "merge", providers: { cerebras: { baseUrl: "https://api.cerebras.ai/v1", apiKey: "${CEREBRAS_API_KEY}", api: "openai-completions", models: [ { id: "zai-glm-4.7", name: "GLM 4.7 (Cerebras)" }, { id: "gpt-oss-120b", name: "GPT OSS 120B (Cerebras)" }, ], }, }, },}ใช้ cerebras/zai-glm-4.7 สำหรับ Cerebras และ zai/glm-4.7 สำหรับการเชื่อมต่อ Z.AI โดยตรง
Kimi Coding
{ env: { KIMI_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "kimi/kimi-for-coding" }, models: { "kimi/kimi-for-coding": { alias: "Kimi Code" } }, }, },}เป็นผู้ให้บริการในตัวที่เข้ากันได้กับ Anthropic ทางลัด: openclaw onboard --auth-choice kimi-code-api-key
โมเดลภายในเครื่อง (LM Studio)
ดูโมเดลภายในเครื่อง สรุปสั้นๆ: เรียกใช้โมเดลภายในเครื่องขนาดใหญ่ผ่าน LM Studio Responses API บนฮาร์ดแวร์ประสิทธิภาพสูง และคงโมเดลที่โฮสต์ไว้แบบผสานเพื่อใช้เป็นโมเดลสำรอง
MiniMax M3 (โดยตรง)
{ agents: { defaults: { model: { primary: "minimax/MiniMax-M3" }, models: { "minimax/MiniMax-M3": { alias: "Minimax" }, }, }, }, models: { mode: "merge", providers: { minimax: { baseUrl: "https://api.minimax.io/anthropic", apiKey: "${MINIMAX_API_KEY}", api: "anthropic-messages", models: [ { id: "MiniMax-M3", name: "MiniMax M3", reasoning: true, input: ["text", "image"], cost: { input: 0.6, output: 2.4, cacheRead: 0.12, cacheWrite: 0 }, contextWindow: 1000000, maxTokens: 131072, }, ], }, }, },}ตั้งค่า MINIMAX_API_KEY ทางลัด: openclaw onboard --auth-choice minimax-global-api หรือ openclaw onboard --auth-choice minimax-cn-api แค็ตตาล็อกโมเดลมีค่าเริ่มต้นเป็น M3 และมีรุ่นย่อย M2.7 รวมอยู่ด้วย บนเส้นทางสตรีมมิงที่เข้ากันได้กับ Anthropic นั้น OpenClaw จะปิดการคิดของ MiniMax M2.x ตามค่าเริ่มต้น เว้นแต่จะตั้งค่า thinking ด้วยตนเองอย่างชัดเจน ส่วน MiniMax-M3 (และ M3.x) จะยังคงใช้เส้นทางการคิดแบบละเว้น/ปรับเปลี่ยนได้ของผู้ให้บริการตามค่าเริ่มต้น /fast on หรือ params.fastMode: true จะเขียน MiniMax-M2.7 ใหม่เป็น MiniMax-M2.7-highspeed
Moonshot AI (Kimi)
{ env: { MOONSHOT_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "moonshot/kimi-k2.6" }, models: { "moonshot/kimi-k2.6": { alias: "Kimi K2.6" } }, }, }, models: { mode: "merge", providers: { moonshot: { baseUrl: "https://api.moonshot.ai/v1", apiKey: "${MOONSHOT_API_KEY}", api: "openai-completions", models: [ { id: "kimi-k2.6", name: "Kimi K2.6", reasoning: false, input: ["text", "image"], cost: { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 }, contextWindow: 262144, maxTokens: 262144, }, ], }, }, },}สำหรับปลายทางในจีน: baseUrl: "https://api.moonshot.cn/v1" หรือ openclaw onboard --auth-choice moonshot-api-key-cn
ปลายทางดั้งเดิมของ Moonshot ประกาศความเข้ากันได้กับข้อมูลการใช้งานแบบสตรีมมิงบนการขนส่ง openai-completions ที่ใช้ร่วมกัน และ OpenClaw จะพิจารณาค่านี้จากความสามารถของปลายทาง ไม่ใช่จากรหัสผู้ให้บริการในตัวเพียงอย่างเดียว
OpenCode
{ agents: { defaults: { model: { primary: "opencode/claude-opus-4-6" }, models: { "opencode/claude-opus-4-6": { alias: "Opus" } }, }, },}ตั้งค่า OPENCODE_API_KEY (หรือ OPENCODE_ZEN_API_KEY) ใช้การอ้างอิง opencode/... สำหรับแค็ตตาล็อก Zen หรือการอ้างอิง opencode-go/... สำหรับแค็ตตาล็อก Go ทางลัด: openclaw onboard --auth-choice opencode-zen หรือ openclaw onboard --auth-choice opencode-go
Synthetic (เข้ากันได้กับ Anthropic)
{ env: { SYNTHETIC_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "synthetic/hf:MiniMaxAI/MiniMax-M3" }, models: { "synthetic/hf:MiniMaxAI/MiniMax-M3": { alias: "MiniMax M3" } }, }, }, models: { mode: "merge", providers: { synthetic: { baseUrl: "https://api.synthetic.new/anthropic", apiKey: "${SYNTHETIC_API_KEY}", api: "anthropic-messages", models: [ { id: "hf:MiniMaxAI/MiniMax-M3", name: "MiniMax M3", reasoning: true, input: ["text", "image"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 262144, maxTokens: 65536, }, ], }, }, },}URL ฐานควรละเว้น /v1 (ไคลเอนต์ Anthropic จะต่อท้ายให้) ทางลัด: openclaw onboard --auth-choice synthetic-api-key
Z.AI (GLM-4.7)
{ agents: { defaults: { model: { primary: "zai/glm-4.7" }, models: { "zai/glm-4.7": {} }, }, },}ตั้งค่า ZAI_API_KEY การอ้างอิงโมเดลใช้รหัสผู้ให้บริการมาตรฐาน zai/* ทางลัด: openclaw onboard --auth-choice zai-api-key
- ปลายทางทั่วไป:
https://api.z.ai/api/paas/v4 - ปลายทางสำหรับการเขียนโค้ด:
https://api.z.ai/api/coding/paas/v4 - ตัวเลือกการยืนยันตัวตนเริ่มต้น
zai-api-keyจะตรวจสอบคีย์และตรวจหาโดยอัตโนมัติว่าคีย์นั้นเป็นของปลายทางใด (หากตรวจหาไม่ได้ข้อสรุป ระบบจะแสดงพรอมต์และใช้ Global เป็นค่าเริ่มต้น) นอกจากนี้ยังมีตัวเลือกการยืนยันตัวตน CN และ Coding-Plan แยกเฉพาะสำหรับการเลือกอย่างชัดเจน - สำหรับปลายทางทั่วไป ให้กำหนดผู้ให้บริการแบบกำหนดเองพร้อมเขียนทับ URL ฐาน
ที่เกี่ยวข้อง
- การกำหนดค่า — เอเจนต์
- การกำหนดค่า — ช่องทาง
- ข้อมูลอ้างอิงการกำหนดค่า — คีย์ระดับบนสุดอื่นๆ
- เครื่องมือและ Plugin