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