Fundamentals

รันไทม์ของเอเจนต์

รันไทม์เอเจนต์ คือคอมโพเนนต์ที่เป็นเจ้าของลูปโมเดลที่เตรียมไว้หนึ่งลูป: รับพรอมป์ ขับเคลื่อนเอาต์พุตของโมเดล จัดการการเรียกใช้เครื่องมือแบบเนทีฟ และส่งคืนเทิร์นที่เสร็จสิ้นแล้วให้ OpenClaw.

รันไทม์สับสนกับผู้ให้บริการได้ง่าย เพราะทั้งคู่ปรากฏใกล้กับการกำหนดค่าโมเดล ทั้งสองเป็นคนละเลเยอร์กัน:

เลเยอร์ ตัวอย่าง ความหมาย
ผู้ให้บริการ openai, anthropic, github-copilot วิธีที่ OpenClaw ยืนยันตัวตน ค้นพบโมเดล และตั้งชื่ออ้างอิงโมเดล
โมเดล gpt-5.5, claude-opus-4-6 โมเดลที่เลือกสำหรับเทิร์นของเอเจนต์
รันไทม์เอเจนต์ openclaw, codex, copilot, claude-cli ลูประดับต่ำหรือแบ็กเอนด์ที่ดำเนินการเทิร์นที่เตรียมไว้
ช่องทาง Telegram, Discord, Slack, WhatsApp ที่ที่ข้อความเข้าและออกจาก OpenClaw

คุณจะเห็นคำว่า harness ในโค้ดด้วย harness คืออิมพลีเมนเทชันที่ให้รันไทม์เอเจนต์ ตัวอย่างเช่น Codex harness ที่รวมมาให้จะอิมพลีเมนต์รันไทม์ codex การกำหนดค่าสาธารณะใช้ agentRuntime.id บนรายการผู้ให้บริการหรือโมเดล ส่วนคีย์รันไทม์ทั้งเอเจนต์เป็นแบบเดิมและจะถูกละเว้น openclaw doctor --fix จะลบการปักหมุดรันไทม์ทั้งเอเจนต์แบบเก่า และเขียนอ้างอิงโมเดลรันไทม์เดิมใหม่เป็นอ้างอิงผู้ให้บริการ/โมเดลแบบบัญญัติ พร้อมนโยบายรันไทม์ระดับโมเดลเมื่อจำเป็น

มีรันไทม์สองตระกูล:

  • Embedded harnesses ทำงานภายในลูปเอเจนต์ที่เตรียมไว้ของ OpenClaw ปัจจุบันคือรันไทม์ openclaw ในตัว รวมถึง Plugin harness ที่ลงทะเบียนไว้ เช่น codex และ copilot
  • แบ็กเอนด์ CLI เรียกใช้โปรเซส CLI ในเครื่องโดยยังคงอ้างอิงโมเดลแบบบัญญัติไว้ ตัวอย่างเช่น anthropic/claude-opus-4-8 พร้อม agentRuntime.id: "claude-cli" ระดับโมเดล หมายถึง "เลือกโมเดล Anthropic แล้วดำเนินการผ่าน Claude CLI" claude-cli ไม่ใช่รหัส embedded harness และต้องไม่ส่งต่อไปยังการเลือก AgentHarness

copilot harness เป็น Plugin harness ภายนอกแบบแยกต่างหากและเลือกใช้เองสำหรับ GitHub Copilot CLI; ดู รันไทม์เอเจนต์ GitHub Copilot สำหรับการตัดสินใจฝั่งผู้ใช้ระหว่าง PI, Codex และรันไทม์เอเจนต์ GitHub Copilot

พื้นผิว Codex

ความสับสนส่วนใหญ่มาจากหลายพื้นผิวที่ใช้ชื่อ Codex ร่วมกัน:

พื้นผิว ชื่อ/การกำหนดค่าใน OpenClaw สิ่งที่ทำ
รันไทม์แอปเซิร์ฟเวอร์ Codex แบบเนทีฟ อ้างอิงโมเดล openai/* เรียกใช้เทิร์นเอเจนต์ฝังตัวของ OpenAI ผ่านแอปเซิร์ฟเวอร์ Codex นี่คือการตั้งค่าการสมัครใช้งาน ChatGPT/Codex ปกติ
โปรไฟล์ยืนยันตัวตน Codex OAuth โปรไฟล์ OAuth ของ openai จัดเก็บการยืนยันตัวตนการสมัครใช้งาน ChatGPT/Codex ที่ Codex app-server harness ใช้
อะแดปเตอร์ Codex ACP runtime: "acp", agentId: "codex" เรียกใช้ Codex ผ่าน control plane ACP/acpx ภายนอก ใช้เฉพาะเมื่อมีการขอ ACP/acpx อย่างชัดเจน
ชุดคำสั่งควบคุมแชต Codex แบบเนทีฟ /codex ... ผูก ดำเนินต่อ ควบคุมทิศทาง หยุด และตรวจสอบเธรดแอปเซิร์ฟเวอร์ Codex จากแชต
เส้นทาง OpenAI Platform API สำหรับพื้นผิวที่ไม่ใช่เอเจนต์ openai/* พร้อมการยืนยันตัวตนด้วยคีย์ API ใช้สำหรับ OpenAI API โดยตรง เช่น รูปภาพ embeddings เสียง และ realtime

พื้นผิวเหล่านั้นแยกจากกันโดยตั้งใจ การเปิดใช้งาน Plugin codex ทำให้ฟีเจอร์แอปเซิร์ฟเวอร์แบบเนทีฟพร้อมใช้งาน; openclaw doctor --fix เป็นเจ้าของการซ่อมแซมเส้นทาง Codex เดิมซ้ำซ้อนและการล้างการปักหมุดเซสชันที่ค้างอยู่ การเลือก openai/* สำหรับโมเดลเอเจนต์ตอนนี้หมายถึง "เรียกใช้นี่ผ่าน Codex" เว้นแต่กำลังใช้พื้นผิว OpenAI API ที่ไม่ใช่เอเจนต์

การตั้งค่าการสมัครใช้งาน ChatGPT/Codex ทั่วไปใช้ Codex OAuth สำหรับการยืนยันตัวตน แต่คงอ้างอิงโมเดลเป็น openai/* และเลือกรันไทม์ codex:

json5
{  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 และ harness ภายนอกที่คล้ายกันยังคงใช้ ACP

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

  1. หากผู้ใช้ขอ Codex bind/control/thread/resume/steer/stop ให้ใช้พื้นผิวคำสั่ง /codex แบบเนทีฟเมื่อเปิดใช้ Plugin codex ที่รวมมาให้
  2. หากผู้ใช้ขอ Codex เป็นรันไทม์ฝังตัว หรือต้องการประสบการณ์เอเจนต์ Codex ปกติที่รองรับด้วยการสมัครใช้งาน ให้ใช้ openai/<model>
  3. หากผู้ใช้เลือก OpenClaw สำหรับโมเดล OpenAI อย่างชัดเจน ให้คงอ้างอิงโมเดลเป็น openai/<model> และตั้งค่านโยบายรันไทม์ผู้ให้บริการ/โมเดลเป็น agentRuntime.id: "openclaw" โปรไฟล์ OAuth ของ openai ที่เลือกจะถูกกำหนดเส้นทางภายในผ่านทรานสปอร์ตยืนยันตัวตน Codex ของ OpenClaw
  4. หากการกำหนดค่าเดิมยังมี อ้างอิงโมเดล Codex แบบเดิม ให้ซ่อมเป็น openai/<model> ด้วย openclaw doctor --fix; doctor จะคงเส้นทางยืนยันตัวตน Codex โดยเพิ่ม agentRuntime.id: "codex" ระดับผู้ให้บริการ/โมเดลในจุดที่อ้างอิงโมเดลเก่าสื่อความหมายนั้นไว้ อ้างอิงโมเดล codex-cli/* แบบเดิม จะซ่อมไปยังเส้นทางแอปเซิร์ฟเวอร์ Codex openai/<model> เดียวกัน; OpenClaw ไม่คงแบ็กเอนด์ Codex CLI ที่รวมมาให้อีกต่อไป
  5. หากผู้ใช้พูดว่า ACP, acpx หรือ อะแดปเตอร์ Codex ACP อย่างชัดเจน ให้ใช้ ACP พร้อม runtime: "acp" และ agentId: "codex"
  6. หากคำขอเป็น Claude Code, Gemini CLI, OpenCode, Cursor, Droid หรือ harness ภายนอกอื่น ให้ใช้ ACP/acpx ไม่ใช่รันไทม์ซับเอเจนต์แบบเนทีฟ
คุณหมายถึง... ใช้...
การควบคุมแชต/เธรดแอปเซิร์ฟเวอร์ Codex /codex ... จาก Plugin codex ที่รวมมาให้
รันไทม์เอเจนต์ฝังตัวของแอปเซิร์ฟเวอร์ Codex อ้างอิงโมเดลเอเจนต์ openai/*
OpenAI Codex OAuth โปรไฟล์ OAuth ของ openai
Claude Code หรือ harness ภายนอกอื่น ACP/acpx

สำหรับการแยกคำนำหน้าตระกูล OpenAI ดู OpenAI และ ผู้ให้บริการโมเดล สำหรับสัญญารองรับรันไทม์ Codex ดู รันไทม์ Codex harness

ความเป็นเจ้าของรันไทม์

รันไทม์ต่างกันเป็นเจ้าของส่วนต่าง ๆ ของลูปไม่เท่ากัน

พื้นผิว OpenClaw ฝังตัว แอปเซิร์ฟเวอร์ Codex
เจ้าของลูปโมเดล OpenClaw ผ่านตัวเรียกใช้ฝังตัวของ OpenClaw แอปเซิร์ฟเวอร์ Codex
สถานะเธรดแบบบัญญัติ ทรานสคริปต์ OpenClaw เธรด Codex พร้อมมิเรอร์ทรานสคริปต์ OpenClaw
เครื่องมือไดนามิกของ OpenClaw ลูปเครื่องมือ OpenClaw แบบเนทีฟ เชื่อมผ่านอะแดปเตอร์ Codex
เครื่องมือเชลล์และไฟล์แบบเนทีฟ เส้นทาง OpenClaw เครื่องมือเนทีฟของ Codex เชื่อมผ่าน native hooks เมื่อรองรับ
เอนจินบริบท การประกอบบริบท OpenClaw แบบเนทีฟ OpenClaw โปรเจกต์บริบทที่ประกอบแล้วเข้าไปในเทิร์น Codex
Compaction OpenClaw หรือเอนจินบริบทที่เลือก Compaction แบบเนทีฟของ Codex พร้อมการแจ้งเตือน OpenClaw และการบำรุงรักษามิเรอร์
การส่งมอบช่องทาง OpenClaw OpenClaw

การแบ่งความเป็นเจ้าของนี้คือกฎการออกแบบหลัก:

  • หาก OpenClaw เป็นเจ้าของพื้นผิว OpenClaw สามารถให้พฤติกรรม hook ของ Plugin ตามปกติได้
  • หากรันไทม์เนทีฟเป็นเจ้าของพื้นผิว OpenClaw ต้องใช้เหตุการณ์รันไทม์หรือ native hooks
  • หากรันไทม์เนทีฟเป็นเจ้าของสถานะเธรดแบบบัญญัติ OpenClaw ควรมิเรอร์และฉายบริบท ไม่ใช่เขียน internals ที่ไม่รองรับใหม่

การเลือกรันไทม์

OpenClaw เลือกรันไทม์ฝังตัวหลังจากการแก้ไขผู้ให้บริการและโมเดล:

  1. นโยบายรันไทม์ระดับโมเดลชนะก่อน สิ่งนี้อยู่ได้ในรายการโมเดลผู้ให้บริการที่กำหนดค่าไว้ หรือใน agents.defaults.models["provider/model"].agentRuntime / agents.list[].models["provider/model"].agentRuntime ไวลด์การ์ดผู้ให้บริการ เช่น agents.defaults.models["vllm/*"].agentRuntime จะมีผลหลังนโยบายโมเดลแบบตรงตัว เพื่อให้โมเดลผู้ให้บริการที่ค้นพบแบบไดนามิกใช้รันไทม์เดียวกันได้โดยไม่ทับข้อยกเว้นรายโมเดลแบบตรงตัว
  2. นโยบายรันไทม์ระดับผู้ให้บริการตามมาที่ models.providers.<provider>.agentRuntime
  3. ในโหมด auto รันไทม์ Plugin ที่ลงทะเบียนไว้สามารถอ้างสิทธิ์คู่ผู้ให้บริการ/โมเดลที่รองรับได้
  4. หากไม่มีรันไทม์ใดอ้างสิทธิ์เทิร์นในโหมด auto OpenClaw จะใช้ openclaw เป็นรันไทม์ความเข้ากันได้ ใช้รหัสรันไทม์แบบชัดเจนเมื่อการรันต้องเคร่งครัด

การปักหมุดรันไทม์ทั้งเซสชันและทั้งเอเจนต์จะถูกละเว้น ซึ่งรวมถึง OPENCLAW_AGENT_RUNTIME, สถานะเซสชัน agentHarnessId/agentRuntimeOverride, agents.defaults.agentRuntime และ agents.list[].agentRuntime เรียกใช้ openclaw doctor --fix เพื่อลบการกำหนดค่ารันไทม์ทั้งเอเจนต์ที่ค้างอยู่ และแปลงอ้างอิงโมเดลรันไทม์เดิมในจุดที่ OpenClaw สามารถรักษาเจตนาไว้ได้

รันไทม์ Plugin ระดับผู้ให้บริการ/โมเดลแบบชัดเจนจะล้มเหลวแบบปิด ตัวอย่างเช่น agentRuntime.id: "codex" บนผู้ให้บริการหรือโมเดลหมายถึง Codex หรือข้อผิดพลาดการเลือก/รันไทม์ที่ชัดเจน; จะไม่ถูกกำหนดเส้นทางกลับไปยัง OpenClaw อย่างเงียบ ๆ

นามแฝงแบ็กเอนด์ CLI ต่างจากรหัส embedded harness รูปแบบ Claude CLI ที่แนะนำคือ:

json5
{  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 harness แทนการคงแบ็กเอนด์ Codex CLI ไว้

โหมด auto ตั้งใจให้อนุรักษนิยมสำหรับผู้ให้บริการส่วนใหญ่ โมเดลเอเจนต์ OpenAI เป็นข้อยกเว้น: ทั้งรันไทม์ที่ไม่ได้ตั้งค่าและ auto จะแก้ไขไปยัง Codex harness การกำหนดค่ารันไทม์ 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:

json5
{  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 สัญญา doctor แบบประกาศ และการตัดสินใจที่กว้างขึ้นระหว่าง PI กับ Codex กับ Copilot SDK โปรดดู รันไทม์เอเจนต์ GitHub Copilot

สัญญาความเข้ากันได้

เมื่อรันไทม์ไม่ใช่ OpenClaw ควรจัดทำเอกสารว่ารองรับพื้นผิวใดของ OpenClaw บ้าง ใช้รูปแบบนี้สำหรับเอกสารรันไทม์:

คำถาม เหตุผลที่สำคัญ
ใครเป็นเจ้าของลูปโมเดล? กำหนดว่าการลองใหม่ การทำงานต่อของเครื่องมือ และการตัดสินใจคำตอบสุดท้ายเกิดขึ้นที่ใด
ใครเป็นเจ้าของประวัติเธรดมาตรฐาน? กำหนดว่า OpenClaw สามารถแก้ไขประวัติได้ หรือทำได้เพียงสะท้อนประวัติเท่านั้น
เครื่องมือไดนามิกของ OpenClaw ทำงานหรือไม่? การส่งข้อความ เซสชัน Cron และเครื่องมือที่ OpenClaw เป็นเจ้าของพึ่งพาสิ่งนี้
ฮุกเครื่องมือไดนามิกทำงานหรือไม่? Plugins คาดหวัง before_tool_call, after_tool_call และมิดเดิลแวร์รอบเครื่องมือที่ OpenClaw เป็นเจ้าของ
ฮุกเครื่องมือเนทีฟทำงานหรือไม่? เชลล์ แพตช์ และเครื่องมือที่รันไทม์เป็นเจ้าของต้องการการรองรับฮุกเนทีฟสำหรับนโยบายและการสังเกต
วงจรชีวิตของเอนจินบริบททำงานหรือไม่? Plugin หน่วยความจำและบริบทขึ้นอยู่กับวงจรชีวิตการประกอบ การนำเข้า หลังเทิร์น และ Compaction
เปิดเผยข้อมูล Compaction ใดบ้าง? บาง Plugins ต้องการเพียงการแจ้งเตือน ขณะที่ Plugins อื่นต้องการเมตาดาต้าที่เก็บไว้/ทิ้งไป
อะไรที่จงใจไม่รองรับ? ผู้ใช้ไม่ควรสมมติว่าเทียบเท่ากับ OpenClaw ในจุดที่รันไทม์เนทีฟเป็นเจ้าของสถานะมากกว่า

สัญญาการรองรับรันไทม์ Codex มีบันทึกไว้ใน รันไทม์ฮาร์เนส Codex

ป้ายกำกับสถานะ

ผลลัพธ์สถานะอาจแสดงทั้งป้ายกำกับ Execution และ Runtime ให้อ่านสิ่งเหล่านี้เป็น ข้อมูลวินิจฉัย ไม่ใช่ชื่อผู้ให้บริการ

  • การอ้างอิงโมเดล เช่น openai/gpt-5.5 บอกผู้ให้บริการ/โมเดลที่เลือก
  • รหัสรันไทม์ เช่น codex บอกว่าลูปใดกำลังดำเนินการเทิร์น
  • ป้ายกำกับช่องทาง เช่น Telegram หรือ Discord บอกว่าการสนทนากำลังเกิดขึ้นที่ใด

หากการรันยังคงแสดงรันไทม์ที่ไม่คาดคิด ให้ตรวจสอบนโยบายรันไทม์ของผู้ให้บริการ/โมเดล ที่เลือกก่อน หมุดรันไทม์เซสชันแบบเก่าไม่ใช้ตัดสินการกำหนดเส้นทางอีกต่อไป

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

Was this useful?
On this page

On this page