Fundamentals
รันไทม์ของเอเจนต์
รันไทม์เอเจนต์ เป็นเจ้าของลูปโมเดลที่เตรียมไว้หนึ่งลูป โดยรับพรอมต์ ขับเคลื่อนเอาต์พุตของโมเดล จัดการการเรียกใช้เครื่องมือแบบเนทีฟ และส่งเทิร์นที่เสร็จสมบูรณ์ กลับไปยัง OpenClaw
รันไทม์อาจสับสนกับผู้ให้บริการได้ง่าย เพราะทั้งสองอย่างปรากฏอยู่ใกล้กับการกำหนดค่า โมเดล แต่เป็นคนละชั้นกัน:
| ชั้น | ตัวอย่าง | ความหมาย |
|---|---|---|
| ผู้ให้บริการ | anthropic, github-copilot, openai |
วิธีที่ OpenClaw ยืนยันตัวตน ค้นหาโมเดล และตั้งชื่อการอ้างอิงโมเดล |
| โมเดล | claude-opus-4-6, gpt-5.6-sol |
โมเดลที่เลือกสำหรับเทิร์นของเอเจนต์ |
| รันไทม์เอเจนต์ | claude-cli, codex, copilot, openclaw |
ลูประดับล่างหรือแบ็กเอนด์ที่ดำเนินการเทิร์นซึ่งเตรียมไว้ |
| ช่องทาง | Discord, Slack, Telegram, WhatsApp | ตำแหน่งที่ข้อความเข้าและออกจาก OpenClaw |
ฮาร์เนส คือการนำไปใช้ที่จัดเตรียมรันไทม์เอเจนต์ (คำศัพท์ในโค้ด)
ตัวอย่างเช่น ฮาร์เนส Codex ที่รวมมาให้จะนำรันไทม์ codex ไปใช้
การกำหนดค่าสาธารณะใช้ agentRuntime.id ในรายการผู้ให้บริการหรือโมเดล ส่วนคีย์รันไทม์
ระดับเอเจนต์ทั้งหมดเป็นรูปแบบเดิมและจะถูกละเว้น openclaw doctor --fix จะลบ
การปักหมุดรันไทม์ระดับเอเจนต์ทั้งหมดแบบเก่า และเขียนการอ้างอิงโมเดลรันไทม์แบบเดิมใหม่
เป็นการอ้างอิงผู้ให้บริการ/โมเดลแบบมาตรฐาน พร้อมนโยบายรันไทม์ระดับโมเดลเมื่อจำเป็น
รันไทม์มีสองตระกูล:
- ฮาร์เนสแบบฝังตัว ทำงานภายในลูปเอเจนต์ที่ OpenClaw เตรียมไว้ ได้แก่
รันไทม์
openclawที่มีมาในตัว รวมถึงฮาร์เนส Plugin ที่ลงทะเบียนไว้ เช่นcodexและcopilot - แบ็กเอนด์ CLI เรียกใช้กระบวนการ CLI ภายในเครื่องโดยยังคงใช้การอ้างอิงโมเดล
แบบมาตรฐาน ตัวอย่างเช่น
anthropic/claude-opus-4-8ที่มีagentRuntime.id: "claude-cli"ระดับโมเดล หมายถึง “เลือกโมเดล Anthropic แล้วดำเนินการ ผ่าน Claude CLI”claude-cliไม่ใช่รหัสฮาร์เนสแบบฝังตัวและต้องไม่ ส่งไปยังการเลือก AgentHarness
ฮาร์เนส copilot เป็นฮาร์เนส Plugin ภายนอกที่แยกต่างหากและต้องเลือกเปิดใช้
สำหรับ GitHub Copilot CLI โปรดดู รันไทม์เอเจนต์ GitHub Copilot
สำหรับการตัดสินใจในมุมผู้ใช้ระหว่าง PI, Codex และรันไทม์เอเจนต์ GitHub Copilot
พื้นผิว Codex
มีหลายพื้นผิวที่ใช้ชื่อ Codex ร่วมกัน:
| พื้นผิว | ชื่อ/การกำหนดค่าใน OpenClaw | หน้าที่ |
|---|---|---|
| รันไทม์ app-server แบบเนทีฟของ Codex | การอ้างอิงโมเดล openai/* |
เรียกใช้เทิร์นเอเจนต์แบบฝังตัวของ OpenAI ผ่าน Codex app-server ซึ่งเป็นการตั้งค่าปกติสำหรับการสมัครสมาชิก ChatGPT/Codex |
| โปรไฟล์การยืนยันตัวตน Codex OAuth | โปรไฟล์ OAuth ของ openai |
จัดเก็บข้อมูลยืนยันตัวตนการสมัครสมาชิก ChatGPT/Codex ที่ฮาร์เนส Codex app-server ใช้งาน |
| อะแดปเตอร์ Codex ACP | runtime: "acp", agentId: "codex" |
เรียกใช้ Codex ผ่านระนาบควบคุม ACP/acpx ภายนอก ใช้เฉพาะเมื่อมีการร้องขอ ACP/acpx อย่างชัดเจน |
| ชุดคำสั่งควบคุมแชต Codex แบบเนทีฟ | /codex ... |
ผูก ทำงานต่อ ควบคุม หยุด และตรวจสอบเธรด Codex app-server จากแชต |
| เส้นทาง OpenAI Platform API สำหรับพื้นผิวที่ไม่ใช่เอเจนต์ | openai/* พร้อมการยืนยันตัวตนด้วยคีย์ API |
API โดยตรงของ OpenAI เช่น รูปภาพ เอ็มเบดดิง เสียงพูด และเรียลไทม์ |
พื้นผิวเหล่านี้แยกจากกันโดยเจตนา การเปิดใช้ Plugin codex
ทำให้ฟีเจอร์ app-server แบบเนทีฟพร้อมใช้งาน ส่วน openclaw doctor --fix เป็นเจ้าของ
การซ่อมแซมเส้นทาง Codex แบบเดิมและการล้างการปักหมุดเซสชันที่ล้าสมัย ปัจจุบันการเลือก openai/*
เป็นโมเดลเอเจนต์หมายถึง “เรียกใช้สิ่งนี้ผ่าน Codex” เว้นแต่กำลังใช้
พื้นผิว OpenAI API ที่ไม่ใช่เอเจนต์
การตั้งค่าการสมัครสมาชิก ChatGPT/Codex ทั่วไปใช้ Codex OAuth สำหรับการยืนยันตัวตน แต่
ยังคงใช้การอ้างอิงโมเดลเป็น openai/* และเลือกรันไทม์ codex:
{ agents: { defaults: { model: "openai/gpt-5.6-sol", }, },}นั่นหมายความว่า OpenClaw เลือกการอ้างอิงโมเดล OpenAI แล้วขอให้รันไทม์ Codex app-server เรียกใช้เทิร์นเอเจนต์แบบฝังตัว ไม่ได้หมายถึง “ใช้การเรียกเก็บเงินผ่าน API” และไม่ได้หมายความว่าช่องทาง แค็ตตาล็อกผู้ให้บริการโมเดล หรือ ที่เก็บเซสชันของ OpenClaw จะกลายเป็น Codex
เมื่อเปิดใช้ Plugin codex ที่รวมมาให้ ให้ใช้พื้นผิวคำสั่ง /codex
แบบเนทีฟ (/codex bind, /codex threads, /codex resume, /codex steer,
/codex stop) เพื่อควบคุม Codex ด้วยภาษาธรรมชาติแทน ACP ใช้ ACP สำหรับ
Codex เฉพาะเมื่อผู้ใช้ร้องขอ ACP/acpx อย่างชัดเจนหรือกำลังทดสอบเส้นทาง
อะแดปเตอร์ ACP ส่วน Claude Code, Gemini CLI, OpenCode, Cursor และฮาร์เนสภายนอก
ที่คล้ายกันยังคงใช้ ACP
แผนผังการตัดสินใจ:
- การผูก/ควบคุม/จัดการเธรด/ทำงานต่อ/ควบคุมทิศทาง/หยุด Codex -> พื้นผิวคำสั่ง
/codexแบบเนทีฟเมื่อเปิดใช้ Plugincodexที่รวมมาให้ - Codex ในฐานะรันไทม์แบบฝังตัว หรือประสบการณ์เอเจนต์ Codex ปกติที่รองรับด้วยการสมัครสมาชิก ->
openai/<model> - เลือก OpenClaw อย่างชัดเจนสำหรับโมเดล OpenAI -> คงการอ้างอิงโมเดลเป็น
openai/<model>และตั้งค่านโยบายรันไทม์ระดับผู้ให้บริการ/โมเดลเป็นagentRuntime.id: "openclaw"โปรไฟล์ OAuth ของopenaiที่เลือกจะถูกกำหนดเส้นทางภายในผ่านการขนส่งการยืนยันตัวตน Codex ของ OpenClaw - การอ้างอิงโมเดล Codex แบบเดิมในการกำหนดค่า -> ซ่อมแซมด้วย
openclaw doctor --fixให้เป็นopenai/<model>โดย doctor จะคงเส้นทางการยืนยันตัวตน Codex ไว้ด้วยการเพิ่มagentRuntime.id: "codex"ระดับผู้ให้บริการ/โมเดลในจุดที่การอ้างอิงโมเดลแบบเก่าสื่อถึงเส้นทางดังกล่าว การอ้างอิงโมเดลcodex-cli/*แบบเดิมจะถูกซ่อมแซมไปยังเส้นทาง Codex app-serveropenai/<model>เดียวกัน ปัจจุบัน OpenClaw ไม่คงแบ็กเอนด์ Codex CLI ที่รวมมาให้อีกต่อไป - มีการร้องขอ ACP, acpx หรืออะแดปเตอร์ Codex ACP อย่างชัดเจน ->
runtime: "acp"และagentId: "codex" - Claude Code, Gemini CLI, OpenCode, Cursor, Droid หรือฮาร์เนสภายนอกอื่น -> ACP/acpx ไม่ใช่รันไทม์เอเจนต์ย่อยแบบเนทีฟ
| สิ่งที่คุณหมายถึง... | ให้ใช้... |
|---|---|
| การควบคุมแชต/เธรดของ Codex app-server | /codex ... จาก Plugin codex ที่รวมมาให้ |
| รันไทม์เอเจนต์แบบฝังตัวของ Codex app-server | การอ้างอิงโมเดลเอเจนต์ openai/* |
| OpenAI Codex OAuth | โปรไฟล์ OAuth ของ openai |
| Claude Code หรือฮาร์เนสภายนอกอื่น | ACP/acpx |
สำหรับการแยกคำนำหน้าตระกูล OpenAI โปรดดู OpenAI และ ผู้ให้บริการโมเดล สำหรับสัญญาการรองรับรันไทม์ Codex โปรดดู รันไทม์ฮาร์เนส Codex
ความเป็นเจ้าของรันไทม์
รันไทม์แต่ละชนิดเป็นเจ้าของส่วนต่าง ๆ ของลูปในขอบเขตที่ต่างกัน:
| พื้นผิว | แบบฝังตัวของ OpenClaw | Codex app-server |
|---|---|---|
| เจ้าของลูปโมเดล | OpenClaw ผ่านตัวเรียกใช้แบบฝังตัวของ OpenClaw | Codex app-server |
| สถานะเธรดแบบมาตรฐาน | ทรานสคริปต์ OpenClaw | เธรด Codex พร้อมสำเนาสะท้อนทรานสคริปต์ OpenClaw |
| เครื่องมือแบบไดนามิกของ OpenClaw | ลูปเครื่องมือแบบเนทีฟของ OpenClaw | เชื่อมผ่านอะแดปเตอร์ Codex |
| เครื่องมือเชลล์และไฟล์แบบเนทีฟ | เส้นทาง OpenClaw | เครื่องมือแบบเนทีฟของ Codex ซึ่งเชื่อมผ่านฮุกแบบเนทีฟในจุดที่รองรับ |
| กลไกบริบท | การประกอบบริบทแบบเนทีฟของ OpenClaw | OpenClaw ฉายบริบทที่ประกอบแล้วเข้าสู่เทิร์น Codex |
| Compaction | OpenClaw หรือกลไกบริบทที่เลือก | Compaction แบบเนทีฟของ Codex พร้อมการแจ้งเตือนจาก OpenClaw และการบำรุงรักษาสำเนาสะท้อน |
| การส่งผ่านช่องทาง | OpenClaw | OpenClaw |
กฎการออกแบบ: หาก OpenClaw เป็นเจ้าของพื้นผิว ก็สามารถให้พฤติกรรมฮุก Plugin ตามปกติได้ หากรันไทม์แบบเนทีฟเป็นเจ้าของพื้นผิว OpenClaw จำเป็นต้องใช้เหตุการณ์ ของรันไทม์หรือฮุกแบบเนทีฟ หากรันไทม์แบบเนทีฟเป็นเจ้าของสถานะเธรดแบบมาตรฐาน OpenClaw จะสร้างสำเนาสะท้อนและฉายบริบท แทนการเขียนส่วนภายในที่ไม่รองรับใหม่
การเลือกรันไทม์
OpenClaw จะหารันไทม์แบบฝังตัวหลังจากแก้ไขผู้ให้บริการและโมเดลแล้ว ตามลำดับนี้:
- นโยบายรันไทม์ระดับโมเดล มีลำดับความสำคัญสูงสุด โดยอยู่ในรายการโมเดล
ของผู้ให้บริการที่กำหนดค่าไว้ หรือใน
agents.defaults.models["provider/model"].agentRuntime/agents.list[].models["provider/model"].agentRuntimeไวลด์การ์ดของผู้ให้บริการ เช่นagents.defaults.models["vllm/*"].agentRuntimeจะมีผลหลังนโยบายโมเดลแบบตรงกัน เพื่อให้โมเดลของผู้ให้บริการที่ค้นพบแบบไดนามิกสามารถใช้รันไทม์เดียวกันได้ โดยไม่แทนที่ข้อยกเว้นรายโมเดลที่ตรงกันทุกประการ - นโยบายรันไทม์ระดับผู้ให้บริการ:
models.providers.<provider>.agentRuntime - โหมด
auto: รันไทม์ Plugin ที่ลงทะเบียนไว้สามารถรับคู่ผู้ให้บริการ/โมเดลที่รองรับได้ - หากไม่มีสิ่งใดรับเทิร์นในโหมด
autoOpenClaw จะย้อนกลับไปใช้openclawเป็นรันไทม์เพื่อความเข้ากันได้ ใช้รหัสรันไทม์ที่ระบุอย่างชัดเจนเมื่อ การทำงานต้องเข้มงวด
การปักหมุดรันไทม์ระดับทั้งเซสชันและทั้งเอเจนต์จะถูกละเว้น ได้แก่ OPENCLAW_AGENT_RUNTIME,
สถานะ agentHarnessId/agentRuntimeOverride ของเซสชัน, agents.defaults.agentRuntime
และ agents.list[].agentRuntime เรียกใช้ openclaw doctor --fix เพื่อลบ
การกำหนดค่ารันไทม์ระดับเอเจนต์ทั้งหมดที่ล้าสมัย และแปลงการอ้างอิงโมเดลรันไทม์
แบบเดิมในจุดที่ยังรักษาเจตนาเดิมไว้ได้
รันไทม์ Plugin ระดับผู้ให้บริการ/โมเดลที่ระบุอย่างชัดเจนจะปิดเมื่อเกิดข้อผิดพลาด:
agentRuntime.id: "codex" บนผู้ให้บริการหรือโมเดลหมายถึง Codex หรือข้อผิดพลาด
การเลือก/รันไทม์ที่ชัดเจน โดยจะไม่มีการกำหนดเส้นทางกลับไปยัง OpenClaw อย่างเงียบ ๆ
มีเพียง auto เท่านั้นที่อาจกำหนดเส้นทางเทิร์นที่ไม่ตรงกันไปยัง OpenClaw
นามแฝงแบ็กเอนด์ CLI แตกต่างจากรหัสฮาร์เนสแบบฝังตัว รูปแบบ Claude CLI ที่แนะนำ:
{ agents: { defaults: { model: "anthropic/claude-opus-4-8", models: { "anthropic/claude-opus-4-8": { agentRuntime: { id: "claude-cli" }, }, }, }, },}การอ้างอิงแบบเดิม เช่น claude-cli/claude-opus-4-7 ยังคงรองรับเพื่อ
ความเข้ากันได้ แต่การกำหนดค่าใหม่ควรคงผู้ให้บริการ/โมเดลเป็นรูปแบบมาตรฐาน และ
ใส่แบ็กเอนด์การดำเนินการไว้ในนโยบายรันไทม์ระดับผู้ให้บริการ/โมเดล
การอ้างอิง codex-cli/* แบบเดิมแตกต่างออกไป โดย doctor จะย้ายข้อมูลไปเป็น openai/*
เพื่อให้ทำงานผ่านฮาร์เนส Codex app-server แทนการคงแบ็กเอนด์ Codex
CLI ไว้
โหมด auto ถูกออกแบบให้ระมัดระวังสำหรับผู้ให้บริการส่วนใหญ่ โมเดลเอเจนต์
OpenAI เป็นข้อยกเว้น โดยทั้งรันไทม์ที่ไม่ได้ตั้งค่าและ auto จะถูกแก้ไขไปยังฮาร์เนส
Codex การกำหนดค่ารันไทม์ OpenClaw อย่างชัดเจนยังคงเป็นเส้นทางความเข้ากันได้
ที่ต้องเลือกใช้สำหรับเทิร์นเอเจนต์ openai/* เมื่อจับคู่กับโปรไฟล์ OAuth ของ openai
ที่เลือก OpenClaw จะกำหนดเส้นทางดังกล่าวภายในผ่านการขนส่งการยืนยันตัวตน Codex
โดยยังคงการอ้างอิงโมเดลสาธารณะเป็น openai/* การปักหมุดรันไทม์เซสชัน OpenAI
ที่ล้าสมัยจะถูกละเว้นในการเลือกรันไทม์ และสามารถล้างได้ด้วย
openclaw doctor --fix
หาก openclaw doctor เตือนว่าเปิดใช้ Plugin codex ขณะที่ยังมี
การอ้างอิงโมเดล Codex แบบเดิมอยู่ในการกำหนดค่า ให้ถือว่านั่นเป็นสถานะเส้นทางแบบเดิม
และเรียกใช้ openclaw doctor --fix เพื่อเขียนใหม่เป็น openai/* พร้อมรันไทม์ Codex
รันไทม์เอเจนต์ GitHub Copilot
Plugin ภายนอก @openclaw/copilot ลงทะเบียนรันไทม์ copilot แบบเลือกใช้
ซึ่งทำงานบน GitHub Copilot CLI (@github/copilot-sdk) โดยอ้างสิทธิ์ผู้ให้บริการ
การสมัครใช้งานมาตรฐาน github-copilot และ จะไม่ถูก เลือกโดย auto
เลือกใช้แยกตามโมเดลหรือผู้ให้บริการผ่าน agentRuntime.id:
{ agents: { defaults: { model: "github-copilot/gpt-5.5", models: { "github-copilot/gpt-5.5": { agentRuntime: { id: "copilot" }, }, }, }, },}ชุดควบคุมการทำงานอ้างสิทธิ์ผู้ให้บริการ รันไทม์ คีย์เซสชัน CLI และคำนำหน้า
โปรไฟล์การยืนยันตัวตนใน extensions/copilot/doctor-contract-api.ts ซึ่ง
openclaw doctor จะโหลดโดยอัตโนมัติ สำหรับการกำหนดค่า การยืนยันตัวตน
การทำสำเนาทรานสคริปต์ Compaction สัญญาการตรวจสอบแบบประกาศ และการตัดสินใจ
ในภาพรวมระหว่าง PI, Codex และ Copilot SDK โปรดดู
รันไทม์เอเจนต์ GitHub Copilot
สัญญาความเข้ากันได้
เมื่อรันไทม์ไม่ใช่ OpenClaw เอกสารของรันไทม์นั้นควรระบุว่ารองรับส่วนใดของ OpenClaw:
| คำถาม | เหตุผลที่สำคัญ |
|---|---|
| ใครเป็นเจ้าของลูปโมเดล | กำหนดว่าการลองใหม่ การดำเนินเครื่องมือต่อ และการตัดสินใจเกี่ยวกับคำตอบสุดท้ายเกิดขึ้นที่ใด |
| ใครเป็นเจ้าของประวัติเธรดมาตรฐาน | กำหนดว่า OpenClaw สามารถแก้ไขประวัติได้หรือทำได้เพียงทำสำเนา |
| เครื่องมือแบบไดนามิกของ OpenClaw ใช้งานได้หรือไม่ | การรับส่งข้อความ เซสชัน Cron และเครื่องมือที่ OpenClaw เป็นเจ้าของต้องพึ่งพาสิ่งนี้ |
| ฮุกเครื่องมือแบบไดนามิกใช้งานได้หรือไม่ | Plugin คาดหวัง before_tool_call, after_tool_call และมิดเดิลแวร์ที่ครอบเครื่องมือซึ่ง OpenClaw เป็นเจ้าของ |
| ฮุกเครื่องมือเนทีฟใช้งานได้หรือไม่ | เชลล์ แพตช์ และเครื่องมือที่รันไทม์เป็นเจ้าของต้องมีการรองรับฮุกเนทีฟสำหรับนโยบายและการสังเกตการณ์ |
| วงจรชีวิตของกลไกบริบททำงานหรือไม่ | Plugin หน่วยความจำและบริบทต้องพึ่งพาวงจรชีวิตการประกอบ การนำเข้า หลังจบรอบ และ Compaction |
| เปิดเผยข้อมูล Compaction ใดบ้าง | Plugin บางตัวต้องการเพียงการแจ้งเตือน ส่วนตัวอื่นต้องการเมทาดาทาของข้อมูลที่เก็บไว้และตัดออก |
| สิ่งใดไม่ได้รับการรองรับโดยเจตนา | ผู้ใช้ไม่ควรสันนิษฐานว่าเทียบเท่า OpenClaw ในส่วนที่รันไทม์เนทีฟเป็นเจ้าของสถานะมากกว่า |
สัญญาการรองรับของรันไทม์ Codex มีบันทึกไว้ใน รันไทม์ชุดควบคุม Codex
ป้ายกำกับสถานะ
ผลลัพธ์สถานะสามารถแสดงทั้งป้ายกำกับ Execution และ Runtime ให้อ่านเป็น
ข้อมูลวินิจฉัย ไม่ใช่ชื่อผู้ให้บริการ:
- การอ้างอิงโมเดล เช่น
openai/gpt-5.6-solคือผู้ให้บริการ/โมเดลที่เลือก - รหัสรันไทม์ เช่น
codexคือลูปที่กำลังประมวลผลรอบนั้น - ป้ายกำกับช่องทาง เช่น Telegram หรือ Discord คือที่ที่การสนทนากำลังเกิดขึ้น
หากการทำงานแสดงรันไทม์ที่ไม่คาดคิด ให้ตรวจสอบนโยบายรันไทม์ของผู้ให้บริการ/ โมเดลที่เลือกก่อน การตรึงรันไทม์ของเซสชันแบบเดิมไม่มีผลต่อการกำหนดเส้นทาง อีกต่อไป