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

นี่คือต้นไม้การตัดสินใจสำหรับเอเจนต์:

  1. หากผู้ใช้ขอ การผูก/ควบคุม/เธรด/ทำต่อ/บังคับทิศทาง/หยุด Codex ให้ใช้พื้นผิวคำสั่ง /codex แบบเนทีฟเมื่อเปิดใช้ Plugin codex ที่มาพร้อมระบบ
  2. หากผู้ใช้ขอ Codex เป็นรันไทม์แบบฝัง หรือต้องการประสบการณ์เอเจนต์ Codex ตามปกติที่รองรับด้วยการสมัครสมาชิก ให้ใช้ openai/<model>
  3. หากผู้ใช้เลือก PI สำหรับโมเดล OpenAI อย่างชัดเจน ให้คงการอ้างอิงโมเดลเป็น openai/<model> และตั้งค่า agentRuntime.id: "pi" โปรไฟล์ยืนยันตัวตน openai-codex ที่เลือกไว้จะถูกกำหนดเส้นทางภายในผ่านทรานสปอร์ตยืนยันตัวตน Codex รุ่นเก่าของ PI
  4. หากคอนฟิกรุ่นเก่ายังมี การอ้างอิงโมเดล openai-codex/* ให้ซ่อมเป็น openai/<model> ด้วย openclaw doctor --fix
  5. หากผู้ใช้พูดอย่างชัดเจนว่า ACP, acpx หรือ อะแดปเตอร์ Codex ACP ให้ใช้ ACP พร้อม runtime: "acp" และ agentId: "codex"
  6. หากคำขอเป็นเรื่อง 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 เลือกรันไทม์แบบฝังหลังจากการแก้ไขผู้ให้บริการและโมเดล:

  1. รันไทม์ที่บันทึกไว้ของเซสชันชนะ การเปลี่ยนคอนฟิกจะไม่สลับทรานสคริปต์ที่มีอยู่แบบทันทีไปยังระบบเธรดเนทีฟอื่น
  2. OPENCLAW_AGENT_RUNTIME=<id> บังคับใช้รันไทม์นั้นสำหรับเซสชันใหม่หรือเซสชันที่รีเซ็ต
  3. agents.defaults.agentRuntime.id หรือ agents.list[].agentRuntime.id สามารถตั้งเป็น auto, pi, รหัสฮาร์เนสแบบฝังที่ลงทะเบียนไว้ เช่น codex หรือชื่อแทนแบ็กเอนด์ CLI ที่รองรับ เช่น claude-cli
  4. ในโหมด auto รันไทม์ Plugin ที่ลงทะเบียนไว้สามารถอ้างสิทธิ์คู่ผู้ให้บริการ/โมเดลที่รองรับได้
  5. หากไม่มีรันไทม์ใดอ้างสิทธิ์เทิร์นในโหมด auto OpenClaw จะใช้ 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 เซสชันที่มีอยู่จะเก็บรันไทม์ที่บันทึกไว้ เพื่อไม่ให้ทรานสคริปต์ถูกเล่นซ้ำผ่านระบบเซสชันเนทีฟสองระบบที่เข้ากันไม่ได้

ที่เกี่ยวข้อง