Codex harness
ข้อมูลอ้างอิง Codex harness
เอกสารอ้างอิงนี้ครอบคลุมการกำหนดค่าโดยละเอียดสำหรับ Plugin codex อย่างเป็นทางการ
สำหรับการตั้งค่าและการตัดสินใจด้านการกำหนดเส้นทาง ให้เริ่มจาก
ชุดควบคุม Codex
พื้นผิวการกำหนดค่า Plugin
การตั้งค่าชุดควบคุม Codex ทั้งหมดอยู่ภายใต้ plugins.entries.codex.config
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, appServer: { mode: "guardian", }, }, }, }, },}ฟิลด์ระดับบนสุด:
| ฟิลด์ | ค่าเริ่มต้น | ความหมาย |
|---|---|---|
discovery |
เปิดใช้งาน | การตั้งค่าการค้นพบโมเดลสำหรับ Codex app-server model/list |
appServer |
app-server แบบ stdio ที่ได้รับการจัดการ | การตั้งค่าการรับส่งข้อมูล คำสั่ง การยืนยันตัวตน การอนุมัติ แซนด์บ็อกซ์ และการหมดเวลา ชุดควบคุมทั่วไปใช้สถานะที่จำกัดขอบเขตตามเอเจนต์เป็นค่าเริ่มต้น |
codexDynamicToolsLoading |
"searchable" |
ใช้ "direct" เพื่อใส่เครื่องมือแบบไดนามิกของ OpenClaw ลงในบริบทเครื่องมือเริ่มต้นของ Codex โดยตรง |
codexDynamicToolsExclude |
[] |
ชื่อเครื่องมือแบบไดนามิกเพิ่มเติมของ OpenClaw ที่จะละเว้นจากรอบการทำงานของ Codex app-server |
codexPlugins |
ปิดใช้งาน | การรองรับ Plugin/แอป Codex แบบเนทีฟ รวมถึงสิทธิ์เข้าถึงแอปของบัญชีที่เชื่อมต่อแบบเลือกเข้าร่วม ดู Plugin Codex แบบเนทีฟ |
computerUse |
ปิดใช้งาน | การตั้งค่า Codex Computer Use ดู Codex Computer Use |
sessionCatalog |
เปิดใช้งาน | การค้นพบเซสชัน Codex แบบเนทีฟสำหรับแถบด้านข้าง ตั้งค่า enabled: false เพื่อปิดการค้นพบโดยไม่ปิดใช้งานผู้ให้บริการหรือชุดควบคุม |
supervision |
ปิดใช้งาน | นโยบายทรานสคริปต์เซสชันแบบเนทีฟและการควบคุมการเขียนสำหรับเอเจนต์ ดู การกำกับดูแล Codex |
การกำกับดูแล
โดยค่าเริ่มต้น การค้นพบเซสชันแบบเนทีฟจะแสดงเซสชัน Codex ที่ไม่ได้เก็บถาวรจากคอมพิวเตอร์ Gateway และ Node ที่จับคู่และเลือกเข้าร่วม ปิดใช้งานเฉพาะแค็ตตาล็อกนั้นได้ด้วย:
{ plugins: { entries: { codex: { enabled: true, config: { sessionCatalog: { enabled: false, }, }, }, }, },}supervision ควบคุมเครื่องมือสำหรับเอเจนต์แยกต่างหาก:
| ฟิลด์ | ค่าเริ่มต้น | ความหมาย |
|---|---|---|
enabled |
false |
เปิดใช้งานเครื่องมือกำกับดูแล Codex สำหรับเอเจนต์ การตั้งค่านี้ไม่ได้ควบคุมแค็ตตาล็อกเซสชันของผู้ปฏิบัติงานที่ผ่านการยืนยันตัวตน |
endpoints |
ปลายทางภายในระบบที่ทำงานในเครื่อง | เป้าหมายปลายทางด้านความเข้ากันได้และขั้นสูงสำหรับเอเจนต์กำกับดูแล Codex ที่ยังคงไว้และเครื่องมือ MCP แบบสแตนด์อโลน แค็ตตาล็อกสำหรับมนุษย์และขั้นตอนการสร้างสาขาจะไม่ใช้เป้าหมายเหล่านี้ และจะใช้ App Server สำหรับการกำกับดูแลที่แก้ไขจาก appServer |
allowRawTranscripts |
false |
เมื่อเปิดใช้งานการกำกับดูแล อนุญาตให้เอเจนต์อัตโนมัติหรือ MCP แบบสแตนด์อโลนอ่านทรานสคริปต์และฟิลด์รายการที่ได้มาจากทรานสคริปต์ การอ่านเฉพาะเมทาดาทา codex_threads ยังคงพร้อมใช้งาน ไม่ได้ควบคุมการดำเนินการต่อผ่าน Control UI ที่ผ่านการยืนยันตัวตน |
allowWriteControls |
false |
เมื่อเปิดใช้งานการกำกับดูแล อนุญาตให้เอเจนต์อัตโนมัติทำการกลายพันธุ์ codex_threads ได้แก่ fork เปลี่ยนชื่อ เก็บถาวร และยกเลิกการเก็บถาวร รวมถึงการดำเนินการส่ง ชี้นำ และขัดจังหวะของ MCP แบบสแตนด์อโลน การตั้งค่านี้ไม่ข้ามการตรวจสอบอื่น ๆ เกี่ยวกับการผูก โฮสต์ สถานะ หรือการยืนยัน |
รายการปลายทางรองรับฟิลด์ต่อไปนี้:
| ฟิลด์ | ใช้กับ | ความหมาย |
|---|---|---|
id |
ทั้งหมด | ID ปลายทางที่คงที่ |
label |
ทั้งหมด | ป้ายกำกับที่แสดงซึ่งระบุหรือไม่ก็ได้ |
transport |
ทั้งหมด | "stdio-proxy" หรือ "websocket" |
command |
stdio-proxy |
คำสั่ง App Server ที่ระบุหรือไม่ก็ได้ |
args |
stdio-proxy |
อาร์กิวเมนต์คำสั่งที่ระบุหรือไม่ก็ได้ |
cwd |
stdio-proxy |
ไดเรกทอรีทำงานของโพรเซสลูกที่ระบุหรือไม่ก็ได้ |
url |
websocket |
URL ของ WebSocket หรือซ็อกเก็ตภายในเครื่องที่รองรับซึ่งจำเป็นต้องระบุ |
authTokenEnv |
websocket |
ตัวแปรสภาพแวดล้อมที่ระบุหรือไม่ก็ได้ ซึ่งค่าของมันใช้ยืนยันตัวตนกับปลายทาง |
หน้า เซสชัน Codex ใช้ App Server สำหรับการกำกับดูแลของ Plugin และแสดง
เฉพาะเซสชันที่ไม่ได้เก็บถาวร หากไม่มีการตั้งค่าการเชื่อมต่อ appServer อย่างชัดเจน
การเชื่อมต่อนั้นจะเป็น stdio ในโฮมของผู้ใช้ที่ได้รับการจัดการ แถวในเครื่องที่จัดเก็บไว้หรือไม่ได้ใช้งานสามารถสร้าง
แชตที่ล็อกกับโมเดลพร้อมประวัติผู้ใช้และผู้ช่วยแบบมีขอบเขต จนถึงรอบต้นทางสุดท้ายที่คงอยู่และสิ้นสุดแล้ว
การผูกแบบส่วนตัวจะคง fork ของสแนปช็อต สาขาต้นทาง appServer ที่เป็นมาตรฐาน
การแทรกประวัติ และรอบถัดไปไว้บนการเชื่อมต่อนั้น การเริ่มต้นแบบมาตรฐานครั้งแรกใช้คู่ที่ fork ส่งคืน
การกลับมาทำงานต่อในภายหลังจะละเว้นการแทนที่โมเดลและผู้ให้บริการของ OpenClaw เพื่อให้ Codex
คืนค่าคู่ที่คงอยู่ของเธรดมาตรฐาน การเปลี่ยนแปลงแบบเนทีฟแยกต่างหากสามารถอัปเดตคู่นั้นได้
แต่โมเดลภายนอกและลำดับสำรองจะไม่แทนที่คู่นั้น แถวที่จัดเก็บไว้และไม่ได้ใช้งานสามารถเก็บถาวรได้
หลังจากยืนยันว่าไม่มีตัวรันอื่น เว้นแต่การผูก OpenClaw อื่นที่ทำงานอยู่จะเป็นเจ้าของเป้าหมายที่ตรงกันทุกประการ
หรือหนึ่งในลูกหลานที่สร้างขึ้นและไม่ได้เก็บถาวร OpenClaw ปฏิบัติตามการแบ่งหน้าลูกหลานของ Codex
และหยุดแบบปิดเมื่อเกิดข้อผิดพลาดในการแจกแจง วงจร หรือใช้ขีดจำกัดความปลอดภัยจนหมด
การยืนยันยังคงครอบคลุมไคลเอนต์แบบเนทีฟที่ไม่รู้จักและภาวะแข่งขันระหว่างสถานะกับการเก็บถาวร
ไม่สามารถลบแชตที่ล็อกกับโมเดลภายใต้การกำกับดูแลได้ ขณะที่แชตนั้นปกป้องการผูกแบบเนทีฟ
ต้นทางที่ทำงานอยู่ไม่สามารถสร้างสาขาหรือถูกเก็บถาวรได้ แต่ยังสามารถเปิดแชตภายใต้การกำกับดูแลที่มีอยู่ได้
ทุกแถวของ Node ที่จับคู่จะเป็นแบบอ่านอย่างเดียว การรับส่งข้อมูลของ Node ยังไม่รองรับวงจรการทำงานแบบสตรีมที่ชุดควบคุมต้องใช้
appServer.homeScope: "user" เพียงอย่างเดียวจะเปลี่ยนโฮม Codex ที่โพรเซสชุดควบคุม
ที่ได้รับการจัดการใช้ แต่ไม่ได้เผยแพร่แค็ตตาล็อกกลุ่มระบบ การเปิดใช้งานการกำกับดูแล
ไม่เปลี่ยนค่าเริ่มต้นของชุดควบคุม แต่การเชื่อมต่อสำหรับการกำกับดูแลที่แยกต่างหาก
จะใช้ stdio ในโฮมของผู้ใช้ที่ได้รับการจัดการเป็นค่าเริ่มต้น เมื่อไม่มีการตั้งค่าการเชื่อมต่อ appServer
อย่างชัดเจน การตั้งค่าที่ระบุอย่างชัดเจนจะถูกใช้กับการเชื่อมต่อนั้น
การผูกภายใต้การกำกับดูแลทั้งที่รอดำเนินการและยืนยันแล้วจะคงการเชื่อมต่อนั้นไว้สำหรับทุก ๆ รอบ
หากปิดใช้งานการกำกับดูแลหรือเกิดความคลาดเคลื่อนของการเชื่อมต่อ/วงจรการทำงาน ระบบจะหยุดแบบปิดแทน
ที่จะย้อนกลับไปใช้ชุดควบคุมในโฮมของเอเจนต์ การเชื่อมต่อเริ่มต้นใช้เซสชันที่จัดเก็บร่วมกับไคลเอนต์ Codex แบบเนทีฟ
แต่ไม่ใช้สถานะกิจกรรมภายในโพรเซสของไคลเอนต์เหล่านั้นร่วมกัน
การตั้งค่า plugins.entries.codex-supervisor แบบเดิมถูกยกเลิกแล้ว เรียกใช้
openclaw doctor --fix เพื่อย้ายรายการเดิม คำจำกัดความปลายทาง แฟล็กนโยบาย
และการอ้างอิงรายการอนุญาต/ปฏิเสธของ Plugin มายังบล็อกนี้ ค่า codex.config.supervision
แบบมาตรฐานที่ระบุอย่างชัดเจนจะมีลำดับความสำคัญเมื่อเกิดข้อขัดแย้ง
การรับส่งข้อมูลของ app-server
สำหรับรอบชุดควบคุมทั่วไป OpenClaw จะเริ่มไบนารี Codex ที่ได้รับการจัดการซึ่งจัดส่ง
พร้อม Plugin อย่างเป็นทางการ (ปัจจุบันคือ @openai/codex 0.144.6):
codex app-server --listen stdio://วิธีนี้ทำให้เวอร์ชัน app-server ผูกกับ Plugin codex อย่างเป็นทางการ แทน
Codex CLI แยกต่างหากใด ๆ ที่ติดตั้งไว้ในเครื่อง ตั้งค่า appServer.command
เฉพาะเมื่อจงใจต้องการใช้ไฟล์ปฏิบัติการอื่น รอบการทำงานแบบได้รับการจัดการทั่วไป
ที่ใช้โฮมเอเจนต์แบบแยกค่าเริ่มต้นจะเลือกใช้แพ็กเกจที่ปักหมุดนี้ก่อน
แม้ว่าจะติดตั้งบันเดิลเดสก์ท็อป macOS ไว้ก็ตาม เมื่อเปิดใช้งาน
Computer Use หรือเมื่อ homeScope เป็น
"user" และสามารถโหลดสถานะ Computer Use แบบเนทีฟได้ การเริ่มต้นแบบได้รับการจัดการ
จะเลือกใช้ไบนารีแอปเดสก์ท็อปที่เป็นเจ้าของสิทธิ์ macOS ที่จำเป็นแทน
กฎที่ให้ความสำคัญกับเดสก์ท็อปเดียวกันนี้จะใช้เมื่อการกำหนดค่า Codex ที่มีผล
ของโฮมเอเจนต์แบบแยกเปิดใช้งาน Computer Use แบบเนทีฟ หากไม่มีบันเดิลแอปเดสก์ท็อปติดตั้งอยู่
OpenClaw จะย้อนกลับไปใช้ไบนารีแพ็กเกจที่ปักหมุด
การส่งต่อไฟล์ปฏิบัติการและการกั้นการกำหนดค่าแบบเนทีฟจะประสานงานไคลเอนต์ภายใน โพรเซส Gateway ที่กำลังทำงานหนึ่งโพรเซส เริ่ม Gateway ใหม่หลังจากโพรเซสอื่นเปลี่ยน การกำหนดค่า Plugin Codex แบบเนทีฟ
การกำกับดูแลจะแก้ไขการเชื่อมต่อแยกต่างหาก หากไม่มีการตั้งค่าการเชื่อมต่อ
appServer อย่างชัดเจน ระบบจะใช้ stdio ที่ได้รับการจัดการกับ homeScope: "user"
ส่วนชุดควบคุมทั่วไปยังคงใช้ stdio ที่ได้รับการจัดการกับ homeScope: "agent" การตั้งค่า
การเชื่อมต่อที่ระบุอย่างชัดเจนจะถูกใช้กับทั้งสองเส้นทาง ตั้งค่า homeScope: "user"
อย่างชัดเจน เมื่อชุดควบคุมทั่วไปควรใช้ $CODEX_HOME (หรือ ~/.codex)
ร่วมกับไคลเอนต์แบบเนทีฟ การผูกภายใต้การกำกับดูแลแบบส่วนตัวใช้การเชื่อมต่อสำหรับการกำกับดูแล
โดยไม่ขึ้นกับค่าเริ่มต้นของชุดควบคุมทั่วไป โพรเซส App Server ที่แยกจากกัน
จะเก็บสถานะการทำงานและสถานะการอนุมัติแยกจากกัน
สำหรับการทดสอบที่ไม่ใช่การใช้งานจริงกับ app-server ที่กำลังทำงานอยู่ สามารถใช้การรับส่งข้อมูลผ่าน WebSocket ได้:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { transport: "websocket", url: "ws://gateway-host:39175", authToken: "${CODEX_APP_SERVER_TOKEN}", requestTimeoutMs: 60000, }, }, }, }, },}Codex จัดประเภทการรับส่งข้อมูลผ่าน WebSocket ว่าเป็นฟีเจอร์ทดลองและไม่ได้รับการรองรับ สำหรับเวิร์กโหลด ที่ใช้งานจริง ควรใช้ stdio ที่ได้รับการจัดการหรือซ็อกเก็ตควบคุม Unix ภายในเครื่อง
ฟิลด์ appServer:
| ฟิลด์ | ค่าเริ่มต้น | ความหมาย |
|---|---|---|
transport |
"stdio" |
"stdio" เรียกใช้ Codex; การระบุ "unix" จะเชื่อมต่อกับซ็อกเก็ตควบคุมภายในเครื่อง; "websocket" จะเชื่อมต่อกับ url |
homeScope |
"agent" |
"agent" แยกสถานะทั่วไปของชุดทดสอบสำหรับเอเจนต์ OpenClaw แต่ละตัว "user" เป็นการเลือกใช้อย่างชัดเจนเพื่อแชร์ $CODEX_HOME หรือ ~/.codex แบบเนทีฟ ใช้การยืนยันตัวตนแบบเนทีฟ และเปิดใช้การจัดการเธรดเฉพาะเจ้าของ ขอบเขตผู้ใช้รองรับ stdio ภายในเครื่องหรือการรับส่งผ่าน Unix สำหรับการเชื่อมต่อกำกับดูแลแยกต่างหาก หากไม่ได้ตั้งค่า ระบบจะใช้ "user" สำหรับ stdio หรือ Unix และ "agent" สำหรับ WebSocket |
command |
ไบนารี Codex ที่มีการจัดการ | ไฟล์ปฏิบัติการสำหรับการรับส่งผ่าน stdio เว้นว่างไว้เพื่อใช้ไบนารีที่มีการจัดการ |
args |
["app-server", "--listen", "stdio://"] |
อาร์กิวเมนต์สำหรับการรับส่งผ่าน stdio |
url |
ไม่ได้ตั้งค่า | URL ของ App Server ผ่าน WebSocket หรือ URL unix:// การระบุพาธ Unix ว่างอย่างชัดเจนจะเลือกซ็อกเก็ตควบคุมมาตรฐานในโฮมของผู้ใช้ |
authToken |
ไม่ได้ตั้งค่า | โทเค็น Bearer สำหรับการรับส่งผ่าน WebSocket รองรับสตริงลิเทอรัลหรือ SecretInput เช่น ${CODEX_APP_SERVER_TOKEN} |
headers |
{} |
ส่วนหัว WebSocket เพิ่มเติม ค่าส่วนหัวรองรับสตริงลิเทอรัลหรือค่า SecretInput เช่น x-codex-client-session-token: "${CODEX_CLIENT_SESSION_TOKEN}" |
clearEnv |
[] |
ชื่อตัวแปรสภาพแวดล้อมเพิ่มเติมที่จะถูกนำออกจากโปรเซส app-server แบบ stdio ที่เรียกใช้ หลังจาก OpenClaw สร้างสภาพแวดล้อมที่สืบทอดมาแล้ว |
remoteWorkspaceRoot |
ไม่ได้ตั้งค่า | รูทเวิร์กสเปซของ Codex app-server ระยะไกล เมื่อตั้งค่า OpenClaw จะอนุมานรูทเวิร์กสเปซภายในเครื่องจากเวิร์กสเปซ OpenClaw ที่แก้ไขแล้ว รักษาส่วนต่อท้าย cwd ปัจจุบันไว้ภายใต้รูทระยะไกลนี้ และส่งเฉพาะ cwd สุดท้ายของ app-server ไปยัง Codex หาก cwd อยู่นอกรูทเวิร์กสเปซ OpenClaw ที่แก้ไขแล้ว OpenClaw จะปฏิเสธอย่างปลอดภัยแทนการส่งพาธภายใน Gateway ไปยัง app-server ระยะไกล |
loopDetectionPreToolUseRelay |
true |
ติดตั้งโปรเซสย่อย PreToolUse ของ Codex ซึ่งใช้เฉพาะสำหรับการตรวจจับลูปของ OpenClaw และมาร์กเกอร์ไม่มีนโยบายที่ระบุอย่างชัดเจน ตั้งค่า false เพื่อลดการแตกแขนงโปรเซสต่อเครื่องมือ ฮุก Plugin ก่อนเรียกเครื่องมือและนโยบายเครื่องมือที่เชื่อถือได้จะยังคงติดตั้งรีเลย์ที่จำเป็น |
requestTimeoutMs |
60000 |
ระยะหมดเวลาสำหรับการเรียกใช้ระนาบควบคุมของ app-server |
turnCompletionIdleTimeoutMs |
60000 |
ช่วงเวลาสงบหลังจาก Codex ยอมรับเทิร์น หรือหลังจากคำขอ app-server ที่อยู่ในขอบเขตเทิร์น ขณะที่ OpenClaw รอ turn/completed |
turnAssistantCompletionIdleTimeoutMs |
10000 |
ช่วงเวลาสงบหลังจากรายการสุดท้ายของผู้ช่วย/รายการผู้ช่วยที่ไม่ใช่คำอธิบายประกอบ หรือหลังจากการทำงานของผู้ช่วยแบบดิบก่อนเรียกเครื่องมือเสร็จสิ้น ทำให้การปล่อยเอาต์พุตผู้ช่วยพร้อมทำงาน ขณะที่ OpenClaw ยังคงรอ turn/completed การเพิ่มค่านี้ช่วยให้ Codex มีเวลาส่ง turn/completed มากขึ้น ก่อนที่ OpenClaw จะขัดจังหวะและปล่อยเลนเซสชัน |
postToolRawAssistantCompletionIdleTimeoutMs |
300000 |
ตัวป้องกันภาวะว่างเมื่อเสร็จสิ้นและความคืบหน้า ซึ่งใช้หลังจากส่งต่องานให้เครื่องมือ การทำงานของเครื่องมือแบบเนทีฟเสร็จสิ้น ความคืบหน้าของผู้ช่วยแบบดิบหลังเรียกเครื่องมือ การให้เหตุผลแบบดิบเสร็จสิ้น หรือความคืบหน้าของการให้เหตุผล ขณะที่ OpenClaw รอ turn/completed ใช้ค่านี้สำหรับเวิร์กโหลดที่เชื่อถือได้หรือหนัก ซึ่งการสังเคราะห์หลังเรียกเครื่องมืออาจไม่มีเอาต์พุตได้นานกว่างบเวลาปล่อยผู้ช่วยขั้นสุดท้ายโดยสมเหตุสมผล |
mode |
"yolo" เว้นแต่ข้อกำหนด Codex ภายในเครื่องไม่อนุญาต YOLO |
ค่าที่ตั้งไว้ล่วงหน้าสำหรับการดำเนินการแบบ YOLO หรือที่ผ่านการตรวจสอบโดยผู้พิทักษ์ |
approvalPolicy |
"never" หรือนโยบายการอนุมัติของผู้พิทักษ์ที่อนุญาต |
นโยบายการอนุมัติแบบเนทีฟของ Codex ที่ส่งเมื่อเริ่มเธรด ดำเนินเธรดต่อ และเริ่มเทิร์น |
sandbox |
"danger-full-access" หรือแซนด์บ็อกซ์ของผู้พิทักษ์ที่อนุญาต |
โหมดแซนด์บ็อกซ์แบบเนทีฟของ Codex ที่ส่งเมื่อเริ่มเธรดและดำเนินเธรดต่อ แซนด์บ็อกซ์ OpenClaw ที่ทำงานอยู่จะจำกัดเทิร์น danger-full-access ให้เป็น workspace-write ของ Codex; แฟล็กเครือข่ายของเทิร์นจะเป็นไปตามการส่งข้อมูลขาออกของแซนด์บ็อกซ์ OpenClaw |
approvalsReviewer |
"user" หรือผู้ตรวจสอบของผู้พิทักษ์ที่อนุญาต |
ใช้ "auto_review" เพื่อให้ Codex ตรวจสอบพรอมต์การอนุมัติแบบเนทีฟเมื่อได้รับอนุญาต |
defaultWorkspaceDir |
ไดเรกทอรีของโปรเซสปัจจุบัน | เวิร์กสเปซที่ /codex bind ใช้เมื่อไม่ได้ระบุ --cwd |
serviceTier |
ไม่ได้ตั้งค่า | ระดับบริการของ Codex app-server ที่ระบุหรือไม่ก็ได้ "priority" เปิดใช้การกำหนดเส้นทางโหมดเร็ว "flex" ร้องขอการประมวลผลแบบยืดหยุ่น และ null ล้างค่าที่เขียนทับ ระบบรองรับ "fast" แบบเดิมในฐานะ "priority" |
networkProxy |
ปิดใช้งาน | เลือกใช้เครือข่ายตามโปรไฟล์สิทธิ์ของ Codex สำหรับคำสั่ง app-server OpenClaw กำหนดค่ากำหนด permissions.<profile>.network ที่เลือก และเลือกค่านั้นด้วย default_permissions แทนการส่ง sandbox |
experimental.sandboxExecServer |
false |
การเลือกเข้าร่วมฟีเจอร์ตัวอย่างที่ลงทะเบียนสภาพแวดล้อม Codex ซึ่งใช้แซนด์บ็อกซ์ของ OpenClaw กับเซิร์ฟเวอร์แอป Codex ที่รองรับ เพื่อให้การเรียกใช้ Codex แบบเนทีฟสามารถทำงานภายในแซนด์บ็อกซ์ OpenClaw ที่ใช้งานอยู่ได้ |
appServer.networkProxy ระบุไว้อย่างชัดเจนเนื่องจากเปลี่ยนสัญญา sandbox ของ Codex
เมื่อเปิดใช้งาน OpenClaw จะตั้งค่า features.network_proxy.enabled และ
default_permissions ในการกำหนดค่าเธรด Codex ด้วย เพื่อให้โปรไฟล์สิทธิ์
ที่สร้างขึ้นสามารถเริ่มการทำงานของเครือข่ายที่ Codex จัดการได้ โดยค่าเริ่มต้น OpenClaw จะสร้าง
ชื่อโปรไฟล์ openclaw-network-<fingerprint> ที่ทนต่อการชนกันจาก
เนื้อหาโปรไฟล์ ให้ใช้ profileName เฉพาะเมื่อต้องการชื่อภายในเครื่องที่คงที่
export default { plugins: { entries: { codex: { config: { appServer: { sandbox: "workspace-write", networkProxy: { enabled: true, domains: { "api.openai.com": "allow", "blocked.example.com": "deny", }, allowUpstreamProxy: true, proxyUrl: "http://127.0.0.1:3128", }, }, }, }, }, },};หากรันไทม์ app-server ปกติจะเป็น danger-full-access การเปิดใช้งาน
networkProxy จะใช้การเข้าถึงระบบไฟล์แบบพื้นที่ทำงานสำหรับโปรไฟล์
สิทธิ์ที่สร้างขึ้นแทน การบังคับใช้นโยบายเครือข่ายที่ Codex จัดการเป็นเครือข่าย
ใน sandbox ดังนั้นโปรไฟล์ที่เข้าถึงได้เต็มรูปแบบจะไม่ปกป้องทราฟฟิกขาออก
Plugin จะบล็อกการจับมือของ app-server ที่เก่ากว่า ใหม่กว่าแต่ยังไม่ผ่านการตรวจสอบ
เป็นรุ่นก่อนเผยแพร่ มีส่วนต่อท้ายของบิลด์ หรือไม่ระบุเวอร์ชัน Codex app-server
ต้องรายงานเวอร์ชันเสถียรตั้งแต่ 0.143.0 จนถึง
0.144.6 ที่มาพร้อมกัน
OpenClaw ถือว่า URL ของ WebSocket app-server ที่ไม่ใช่ loopback เป็นระยะไกล และกำหนดให้ใช้
การยืนยันตัวตน WebSocket ที่มีข้อมูลระบุตัวตนผ่าน appServer.authToken หรือส่วนหัว
Authorization ค่า appServer.authToken และค่า appServer.headers.*
แต่ละค่าสามารถเป็น SecretInput ได้ รันไทม์ข้อมูลลับจะแก้ไข SecretRef และรูปแบบย่อของ env
ก่อนที่ OpenClaw จะสร้างตัวเลือกการเริ่มต้น app-server และ SecretRef แบบมีโครงสร้างที่แก้ไขไม่ได้
จะทำให้ล้มเหลวก่อนส่งโทเค็นหรือส่วนหัวใด ๆ เมื่อกำหนดค่า Plugin ดั้งเดิมของ Codex
OpenClaw จะใช้ระนาบควบคุม Plugin ของ app-server ที่เชื่อมต่ออยู่เพื่อติดตั้งหรือรีเฟรช
Plugin เหล่านั้น จากนั้นรีเฟรชรายการแอปเพื่อให้แอปที่ Plugin เป็นเจ้าของปรากฏต่อเธรด Codex
app/list ยังคงเป็นแหล่งข้อมูลรายการและข้อมูลเมตาที่มีอำนาจ
แต่นโยบาย OpenClaw จะตัดสินว่า thread/start ส่ง config.apps[appId].enabled = true
สำหรับแอปที่เข้าถึงได้ซึ่งอยู่ในรายการหรือไม่ แม้ปัจจุบัน Codex จะระบุว่าแอปนั้นปิดใช้งาน
ID แอปที่ไม่รู้จักหรือไม่มีอยู่จะยังคงล้มเหลวแบบปิด เส้นทางนี้เพียงเปิดใช้งาน Plugin
จากมาร์เก็ตเพลสผ่าน plugin/install และรีเฟรชรายการเท่านั้น เชื่อมต่อ OpenClaw
กับ app-server ระยะไกลที่เชื่อถือได้ว่ายอมรับการติดตั้ง Plugin ที่ OpenClaw จัดการ
และการรีเฟรชรายการแอปเท่านั้น
โหมดการอนุมัติและ sandbox
เซสชัน stdio app-server ภายในเครื่องใช้โหมด YOLO เป็นค่าเริ่มต้น:
approvalPolicy: "never", approvalsReviewer: "user" และ
sandbox: "danger-full-access" แนวทางสำหรับผู้ดำเนินการภายในเครื่องที่เชื่อถือได้นี้ช่วยให้
รอบการทำงานและ Heartbeat ของ OpenClaw ที่ไม่มีผู้ดูแลดำเนินต่อไปได้ โดยไม่แสดงพรอมต์
การอนุมัติดั้งเดิมที่ไม่มีใครอยู่ตอบ
หากไฟล์ข้อกำหนดระบบภายในเครื่องของ Codex ไม่อนุญาตค่าการอนุมัติ YOLO
ผู้ตรวจสอบ หรือ sandbox โดยปริยาย OpenClaw จะถือว่าค่าเริ่มต้นโดยปริยายเป็น guardian
แทน และเลือกสิทธิ์ guardian ที่อนุญาต tools.exec.mode: "auto"
ยังบังคับใช้การอนุมัติ Codex ที่ผ่านการตรวจสอบโดย guardian และไม่เก็บค่าการแทนที่
approvalPolicy: "never" หรือ sandbox: "danger-full-access" แบบเดิมที่ไม่ปลอดภัยไว้
ให้ตั้งค่า tools.exec.mode: "full" เมื่อตั้งใจใช้แนวทางที่ไม่มีการอนุมัติ
รายการ [[remote_sandbox_config]] ที่ตรงกับชื่อโฮสต์ในไฟล์ข้อกำหนดเดียวกัน
จะถูกนำมาใช้ประกอบการตัดสินใจค่าเริ่มต้นของ sandbox
ตั้งค่า appServer.mode: "guardian" สำหรับการอนุมัติ Codex ที่ผ่านการตรวจสอบโดย guardian:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { mode: "guardian", serviceTier: "priority", }, }, }, }, },}ค่าที่กำหนดไว้ล่วงหน้า guardian จะขยายเป็น approvalPolicy: "on-request",
approvalsReviewer: "auto_review" และ sandbox: "workspace-write" เมื่อค่าเหล่านั้นได้รับอนุญาต
ฟิลด์นโยบายแต่ละฟิลด์จะแทนที่ mode ค่า reviewer แบบเก่า
guardian_subagent ยังคงได้รับการยอมรับในฐานะนามแฝงเพื่อความเข้ากันได้
แต่การกำหนดค่าใหม่ควรใช้ auto_review
เมื่อ sandbox ของ OpenClaw ทำงาน กระบวนการ Codex app-server ภายในเครื่องยังคง
ทำงานบนโฮสต์ Gateway ดังนั้น OpenClaw จะปิดใช้งาน Code Mode ดั้งเดิมของ Codex,
เซิร์ฟเวอร์ MCP ของผู้ใช้ และการเรียกใช้ Plugin ที่มีแอปรองรับสำหรับรอบการทำงานนั้น
แทนที่จะถือว่า sandbox ฝั่งโฮสต์ของ Codex เทียบเท่ากับแบ็กเอนด์ sandbox ของ OpenClaw
การเข้าถึงเชลล์จะเปิดให้ใช้ผ่านเครื่องมือแบบไดนามิกที่มี sandbox ของ OpenClaw รองรับ
เช่น sandbox_exec และ sandbox_process เมื่อมีเครื่องมือ exec/process ปกติ
การเรียกใช้แบบดั้งเดิมใน sandbox
ค่าเริ่มต้นที่เสถียรคือล้มเหลวแบบปิด: sandbox ของ OpenClaw ที่ทำงานอยู่จะปิดใช้งาน
พื้นผิวการเรียกใช้ Codex แบบดั้งเดิม ซึ่งมิฉะนั้นจะทำงานจากโฮสต์ Codex app-server
ใช้ appServer.experimental.sandboxExecServer: true เฉพาะเมื่อต้องการทดลองใช้การรองรับสภาพแวดล้อมระยะไกล
ของ Codex กับแบ็กเอนด์ sandbox ของ OpenClaw เส้นทางตัวอย่างนี้ใช้ได้กับ
Codex app-server ทุกเวอร์ชันที่รองรับ
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { experimental: { sandboxExecServer: true, }, }, }, }, }, },}เมื่อเปิดแฟล็กและเซสชัน OpenClaw ปัจจุบันอยู่ใน sandbox OpenClaw จะเริ่ม exec-server แบบ loopback ภายในเครื่องที่มี sandbox ซึ่งทำงานอยู่รองรับ ลงทะเบียนกับ Codex app-server และเริ่มเธรดและรอบการทำงาน Codex ด้วยสภาพแวดล้อมที่ OpenClaw เป็นเจ้าของ หาก app-server ลงทะเบียนสภาพแวดล้อมไม่ได้ การทำงานจะล้มเหลวแบบปิด แทนที่จะย้อนกลับไปใช้การเรียกใช้บนโฮสต์โดยไม่มีการแจ้งเตือน
เส้นทางตัวอย่างนี้ใช้ได้เฉพาะภายในเครื่อง WebSocket app-server ระยะไกลไม่สามารถ เข้าถึง exec-server แบบ loopback ได้ เว้นแต่จะทำงานบนโฮสต์เดียวกัน ดังนั้น OpenClaw จึงปฏิเสธการใช้ร่วมกันดังกล่าว
การแยกการยืนยันตัวตนและสภาพแวดล้อม
ในโฮมต่อเอเจนต์เริ่มต้น ระบบจะเลือกการยืนยันตัวตนตามลำดับดังนี้:
- โปรไฟล์การยืนยันตัวตน OpenClaw Codex ที่ระบุไว้อย่างชัดเจนสำหรับเอเจนต์
- บัญชีที่มีอยู่ของ app-server ในโฮม Codex ของเอเจนต์นั้น
- เฉพาะการเริ่ม app-server แบบ stdio ภายในเครื่อง:
CODEX_API_KEYจากนั้นOPENAI_API_KEYเมื่อไม่มีบัญชี app-server และยังคงต้องใช้การยืนยันตัวตน OpenAI
เมื่อ OpenClaw พบโปรไฟล์การยืนยันตัวตน Codex แบบการสมัครสมาชิก ChatGPT
(ประเภทข้อมูลประจำตัว OAuth หรือโทเค็น) ระบบจะนำ CODEX_API_KEY และ
OPENAI_API_KEY ออกจากกระบวนการลูก Codex ที่สร้างขึ้น วิธีนี้ช่วยให้คีย์ API
ระดับ Gateway ยังคงพร้อมใช้สำหรับ embeddings หรือโมเดล OpenAI โดยตรง
โดยไม่ทำให้รอบการทำงานของ Codex app-server แบบดั้งเดิมเรียกเก็บเงินผ่าน API โดยไม่ตั้งใจ
โปรไฟล์คีย์ API ของ Codex ที่ระบุไว้อย่างชัดเจนและทางเลือกสำรองคีย์ env ของ stdio ภายในเครื่องจะใช้การเข้าสู่ระบบ app-server แทน env ที่สืบทอดจากกระบวนการลูก การเชื่อมต่อ WebSocket app-server จะไม่ได้รับทางเลือกสำรองคีย์ API ของ env จาก Gateway ให้ใช้โปรไฟล์การยืนยันตัวตนที่ระบุไว้อย่างชัดเจนหรือบัญชีของ app-server ระยะไกลเอง
การเริ่ม app-server แบบ stdio จะสืบทอดสภาพแวดล้อมกระบวนการของ OpenClaw
โดยค่าเริ่มต้น OpenClaw เป็นเจ้าของบริดจ์บัญชี Codex app-server และตั้งค่า
CODEX_HOME เป็นไดเรกทอรีต่อเอเจนต์ภายใต้สถานะ OpenClaw ของเอเจนต์นั้น
วิธีนี้ทำให้การกำหนดค่า บัญชี แคช/ข้อมูล Plugin และสถานะเธรดของ Codex
จำกัดขอบเขตอยู่ที่เอเจนต์ OpenClaw แทนที่จะรั่วไหลมาจากโฮม ~/.codex
ส่วนบุคคลของผู้ดำเนินการ
ตั้งค่า appServer.homeScope: "user" เพื่อแชร์สถานะ Codex แบบดั้งเดิมกับ Codex
Desktop และ CLI โหมดโฮมผู้ใช้ภายในเครื่องนี้รองรับ stdio ที่มีการจัดการ
และการรับส่งผ่าน Unix ที่ระบุไว้อย่างชัดเจน โดยใช้ $CODEX_HOME เมื่อตั้งค่าไว้
และใช้ ~/.codex ในกรณีอื่น รวมถึงการยืนยันตัวตน การกำหนดค่า Plugin
และเธรดแบบดั้งเดิม OpenClaw จะข้ามบริดจ์โปรไฟล์การยืนยันตัวตนสำหรับ app-server
รอบการทำงานของเจ้าของที่ผ่านการตรวจสอบสามารถใช้ codex_threads เพื่อแสดงรายการ
(พร้อมตัวกรอง search ที่เป็นทางเลือก) อ่าน fork เปลี่ยนชื่อ เก็บถาวร
และยกเลิกการเก็บถาวรเธรดเหล่านั้น ให้ fork เธรดก่อนทำงานต่อใน OpenClaw
กระบวนการ Codex ที่แยกจากกันจะไม่ประสานงานผู้เขียนพร้อมกันสำหรับเธรดเดียวกัน
การเลือกใช้ homeScope ดังกล่าวมีผลกับเซสชัน harness ทั่วไป Chat ที่สร้าง
ผ่าน Codex Sessions จะใช้การเชื่อมต่อกำกับดูแลส่วนตัวแทน ซึ่งจะรักษาการยืนยันตัวตน
และการกำหนดค่าผู้ให้บริการของการเชื่อมต่อแบบดั้งเดิมไว้สำหรับสาขาหลักและการทำงานต่อในอนาคต
ใน Chat ภายใต้การกำกับดูแลที่ล็อกโมเดลไว้ codex_threads ไม่สามารถแนบ fork อื่น
หรือเก็บเธรดแบบดั้งเดิมที่ผูกกับ Chat ไว้ถาวรได้ การแสดงรายการและการอ่านเฉพาะข้อมูลเมตา
ยังคงใช้ได้ การอ่านทรานสคริปต์ดิบต้องใช้ allowRawTranscripts เมื่อปิดใช้งาน
การค้นหารายการจะถูกปฏิเสธด้วย เนื่องจากการค้นหาแบบดั้งเดิมสามารถจับคู่กับตัวอย่าง
ทรานสคริปต์ได้ การเปลี่ยนชื่อ การยกเลิกการเก็บถาวร การ fork แบบแยกออก
และการเก็บถาวรเธรดที่ไม่เกี่ยวข้องซึ่ง Chat อื่นของ OpenClaw ไม่ได้เป็นเจ้าของ
ต้องใช้ allowWriteControls ตัวเลือกทั้งสองไม่สามารถข้ามการผูกที่ล็อกไว้ได้
OpenClaw จะไม่เขียน HOME ใหม่สำหรับการเริ่ม app-server ภายในเครื่องตามปกติ
กระบวนการย่อยที่ Codex เรียกใช้ เช่น openclaw, gh,
git, CLI ระบบคลาวด์ และคำสั่งเชลล์ จะเห็นโฮมกระบวนการตามปกติ
และสามารถค้นหาการกำหนดค่าและโทเค็นในโฮมผู้ใช้ได้ Codex อาจค้นพบ
$HOME/.agents/skills และ $HOME/.agents/plugins/marketplace.json ด้วย การค้นพบ .agents
ดังกล่าวตั้งใจให้แชร์กับโฮมของผู้ดำเนินการ และแยกจากสถานะ ~/.codex
ที่ถูกแยกไว้
ในขอบเขตเอเจนต์เริ่มต้น Plugin ของ OpenClaw และสแนปช็อต Skills ของ OpenClaw
ยังคงไหลผ่านรีจิสทรี Plugin และตัวโหลด Skills ของ OpenClaw เอง แต่แอสเซ็ต
~/.codex ส่วนบุคคลของ Codex จะไม่ไหลผ่าน หากมี Skills ของ Codex CLI
หรือ Plugin จากโฮม Codex ที่มีประโยชน์และควรเป็นส่วนหนึ่งของเอเจนต์ OpenClaw
ที่แยกไว้ ให้จัดทำรายการอย่างชัดเจน:
openclaw migrate codex --dry-runopenclaw migrate apply codex --yesหากการติดตั้งใช้งานต้องการการแยกสภาพแวดล้อมเพิ่มเติม ให้เพิ่มตัวแปรเหล่านั้น
ใน appServer.clearEnv:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { clearEnv: ["CODEX_API_KEY", "OPENAI_API_KEY"], }, }, }, }, },}appServer.clearEnv มีผลเฉพาะกับกระบวนการลูก Codex app-server ที่สร้างขึ้น
OpenClaw จะนำ CODEX_HOME และ HOME ออกจากรายการนี้ระหว่าง
การปรับการเริ่มภายในเครื่องให้เป็นมาตรฐาน: CODEX_HOME จะยังคงชี้ไปยังขอบเขต
เอเจนต์หรือผู้ใช้ที่เลือก และ HOME จะยังคงถูกสืบทอดเพื่อให้กระบวนการย่อย
ใช้สถานะโฮมผู้ใช้ตามปกติได้
เครื่องมือแบบไดนามิก
เครื่องมือแบบไดนามิกของ Codex ใช้การโหลดแบบ searchable เป็นค่าเริ่มต้น
โดยเปิดให้ใช้ภายใต้ namespace openclaw พร้อม deferLoading: true
โดยปกติ OpenClaw จะไม่เปิดให้ใช้เครื่องมือแบบไดนามิกที่ซ้ำกับการดำเนินการพื้นที่ทำงาน
แบบดั้งเดิมของ Codex หรือพื้นผิวการค้นหาเครื่องมือของ Codex เอง:
readwriteeditapply_patchexecprocessupdate_plantool_calltool_describetool_searchtool_search_code
เมื่อรายการอนุญาตของรันไทม์แบบจำกัดปิดใช้งาน Code Mode แบบดั้งเดิม OpenClaw
จะส่งการเลือกสภาพแวดล้อมการเรียกใช้ที่ว่างเปล่า ในกรณีโดยตรงที่ไม่มี sandbox ดังกล่าว
OpenClaw จะเก็บเครื่องมือ exec และ process
ที่ผ่านการกรองตามนโยบายไว้เป็นทางเลือกสำรองของเชลล์ รายการอนุญาตของรันไทม์
และ codexDynamicToolsExclude ยังคงมีผลบังคับใช้
เครื่องมือการผสานรวม OpenClaw ส่วนใหญ่ที่เหลือ เช่น การส่งข้อความ สื่อ Cron
เบราว์เซอร์ Node ต่างๆ Gateway, heartbeat_respond และ web_search พร้อมใช้งาน
ผ่านการค้นหาเครื่องมือของ Codex ภายใต้เนมสเปซดังกล่าว วิธีนี้ช่วยลดขนาดบริบท
เริ่มต้นของโมเดล เครื่องมือชุดเล็กบางส่วนยังคงเรียกใช้ได้โดยตรงโดยไม่คำนึงถึง
codexDynamicToolsLoading เนื่องจากการค้นหาเครื่องมือของ Codex อาจไม่พร้อมใช้งานหรือ
อาจพบเฉพาะขอบเขตที่มีแต่ตัวเชื่อมต่อ ได้แก่ agents_list, sessions_spawn และ
sessions_yield คำสั่งสำหรับนักพัฒนายังคงชี้นำซับเอเจนต์ Codex ตามปกติ
ให้ใช้ spawn_agent แบบเนทีฟสำหรับงานซับเอเจนต์ที่เป็นเนทีฟของ Codex ขณะที่
sessions_spawn ยังคงพร้อมใช้งานสำหรับการมอบหมายงานให้ OpenClaw หรือ ACP อย่างชัดเจน
การตอบกลับต้นทางที่ใช้เฉพาะเครื่องมือข้อความยังคงเป็นแบบโดยตรงเช่นกัน เนื่องจากเป็น
สัญญาการควบคุมรอบการทำงาน
เครื่องมือที่ทำเครื่องหมาย catalogMode: "direct-only" รวมถึงเครื่องมือ OpenClaw computer
จะถูกจัดกลุ่มภายใต้ openclaw_direct โดย OpenClaw จะเพิ่มเนมสเปซดังกล่าวลงใน
รายการ code_mode.direct_only_tool_namespaces ของ Codex โดยไม่แทนที่
รายการที่ผู้ปฏิบัติงานระบุไว้ ดังนั้น Codex จึงเปิดเผยเครื่องมือเหล่านั้นเป็น
DirectModelOnly ในเธรดปกติและเธรดที่ใช้เฉพาะโหมดโค้ด แทนที่จะกำหนดเส้นทาง
ผ่านการเรียก tools.* ของ Code Mode ที่ซ้อนกัน ขอบเขตนี้จำเป็นสำหรับ
ผลลัพธ์ที่มีรูปภาพ เนื่องจากการทำให้เป็นอนุกรมของ Code Mode ที่ซ้อนกันจะแปลงเอาต์พุตรูปภาพ
ให้เป็นข้อความ ซึ่งจะทำให้ภาพหน้าจอที่จำเป็นสำหรับการดำเนินการกับคอมพิวเตอร์ครั้งถัดไปสูญหาย
ตั้งค่า codexDynamicToolsLoading: "direct" เฉพาะเมื่อเชื่อมต่อกับ
เซิร์ฟเวอร์แอป Codex แบบกำหนดเองที่ไม่สามารถค้นหาเครื่องมือแบบไดนามิกที่เลื่อนการโหลดไว้ หรือเมื่อตรวจแก้จุดบกพร่อง
เพย์โหลดเครื่องมือฉบับเต็ม
การหมดเวลา
การเรียกเครื่องมือแบบไดนามิกที่ OpenClaw เป็นเจ้าของจะถูกจำกัดเวลาแยกจาก
appServer.requestTimeoutMs คำขอ item/tool/call แต่ละรายการของ Codex จะใช้
ค่าหมดเวลาแรกที่มีอยู่ตามลำดับต่อไปนี้:
- อาร์กิวเมนต์
timeoutMsต่อการเรียกที่มีค่าเป็นบวก - สำหรับ
image_generateให้ใช้agents.defaults.imageGenerationModel.timeoutMs - สำหรับ
image_generateที่ไม่ได้กำหนดค่าหมดเวลา ให้ใช้ค่าเริ่มต้น สำหรับการสร้างรูปภาพ 120 วินาที - สำหรับเครื่องมือทำความเข้าใจสื่อ
imageให้ใช้tools.media.image.timeoutSecondsที่แปลงเป็นมิลลิวินาที หรือค่าเริ่มต้นสำหรับสื่อ 60 วินาที สำหรับการทำความเข้าใจ รูปภาพ ค่านี้ใช้กับตัวคำขอเองและจะไม่ถูกลดลงจาก งานเตรียมการก่อนหน้า - สำหรับเครื่องมือ
messageให้ใช้ค่าเริ่มต้นคงที่ 120 วินาที - ค่าเริ่มต้นสำหรับเครื่องมือแบบไดนามิก 90 วินาที
ตัวเฝ้าระวังนี้เป็นงบประมาณ item/tool/call แบบไดนามิกชั้นนอก ค่าหมดเวลา
ของคำขอเฉพาะผู้ให้บริการจะทำงานภายในการเรียกนั้นและคงความหมายของการหมดเวลาของตนเองไว้
งบประมาณของเครื่องมือแบบไดนามิกถูกจำกัดสูงสุดที่ 600000 ms เมื่อหมดเวลา OpenClaw จะยกเลิก
สัญญาณของเครื่องมือในกรณีที่รองรับ และส่งการตอบกลับเครื่องมือแบบไดนามิกที่ล้มเหลวกลับไปยัง
Codex เพื่อให้รอบการทำงานดำเนินต่อไปได้ แทนที่จะปล่อยให้เซสชันค้างอยู่ใน
processing
หลังจาก Codex ยอมรับรอบการทำงาน และหลังจาก OpenClaw ตอบกลับคำขอของ
เซิร์ฟเวอร์แอปที่มีขอบเขตเฉพาะรอบการทำงานแล้ว ชุดควบคุมคาดว่า Codex จะดำเนินงานในรอบปัจจุบัน
ต่อไป และสิ้นสุดรอบการทำงานแบบเนทีฟด้วย turn/completed ในท้ายที่สุด หาก
เซิร์ฟเวอร์แอปไม่มีความเคลื่อนไหวเป็นเวลา appServer.turnCompletionIdleTimeoutMs OpenClaw จะ
พยายามขัดจังหวะรอบการทำงานของ Codex บันทึกการหมดเวลาเพื่อการวินิจฉัย และ
ปล่อยเลนเซสชัน OpenClaw เพื่อไม่ให้ข้อความแชตที่ตามมาต้องเข้าคิว
ต่อท้ายรอบการทำงานแบบเนทีฟที่ค้างอยู่
การแจ้งเตือนที่ยังไม่สิ้นสุดส่วนใหญ่สำหรับรอบการทำงานเดียวกันจะยกเลิกตัวเฝ้าระวังระยะสั้นนั้น
เนื่องจาก Codex แสดงให้เห็นแล้วว่ารอบการทำงานยังทำงานอยู่ การส่งต่องานให้เครื่องมือจะใช้งบประมาณ
ช่วงว่างหลังใช้เครื่องมือที่ยาวกว่า กล่าวคือ หลังจาก OpenClaw ส่งคืนการตอบกลับ item/tool/call
หลังจากรายการเครื่องมือแบบเนทีฟ เช่น commandExecution ทำงานเสร็จ หลังจาก
การทำงาน custom_tool_call_output แบบดิบเสร็จสิ้น และหลังจากความคืบหน้าของผู้ช่วยแบบดิบ
หลังใช้เครื่องมือ การให้เหตุผลแบบดิบเสร็จสิ้น หรือความคืบหน้าของการให้เหตุผล ตัวป้องกันจะใช้
appServer.postToolRawAssistantCompletionIdleTimeoutMs เมื่อมีการกำหนดค่าไว้ และ
ใช้ค่าเริ่มต้นเป็นห้านาทีในกรณีอื่น งบประมาณหลังใช้เครื่องมือเดียวกันนี้ยังขยาย
ตัวเฝ้าระวังความคืบหน้าสำหรับช่วงสังเคราะห์แบบเงียบก่อนที่ Codex จะส่งเหตุการณ์
ถัดไปของรอบปัจจุบัน การให้เหตุผลที่เสร็จสิ้น การทำ agentMessage
ในส่วนคำอธิบายประกอบเสร็จสิ้น และความคืบหน้าของการให้เหตุผลหรือผู้ช่วยแบบดิบก่อนใช้เครื่องมือ
อาจตามด้วยการตอบกลับสุดท้ายโดยอัตโนมัติ จึงใช้ตัวป้องกันการตอบกลับหลังมีความคืบหน้า
แทนการปล่อยเลนเซสชันทันที เฉพาะรายการ agentMessage ที่เสร็จสิ้น
แบบสุดท้าย/ไม่ใช่คำอธิบายประกอบ และการทำงานของผู้ช่วยแบบดิบก่อนใช้เครื่องมือที่เสร็จสิ้นเท่านั้น
ที่จะเปิดใช้การปล่อยเอาต์พุตของผู้ช่วย หากหลังจากนั้น Codex ไม่มีความเคลื่อนไหวโดยไม่มี
turn/completed OpenClaw จะพยายามขัดจังหวะรอบการทำงานแบบเนทีฟและปล่อย
เลนเซสชัน ความล้มเหลวของเซิร์ฟเวอร์แอป stdio ที่เล่นซ้ำได้อย่างปลอดภัย รวมถึงการหมดเวลาจาก
การไม่มีความเคลื่อนไหวระหว่างรอรอบการทำงานเสร็จ โดยไม่มีหลักฐานจากผู้ช่วย เครื่องมือ
รายการที่กำลังทำงาน หรือผลข้างเคียง จะถูกลองใหม่หนึ่งครั้งด้วยเซิร์ฟเวอร์แอปชุดใหม่
การหมดเวลาที่ไม่ปลอดภัยจะยังคงยุติไคลเอนต์เซิร์ฟเวอร์แอปที่ค้างและปล่อยเลนเซสชัน
OpenClaw อีกทั้งยังล้างการผูกเธรดแบบเนทีฟที่ค้าง แทนที่จะเล่นซ้ำ
โดยอัตโนมัติ การหมดเวลาของการเฝ้าดูการเสร็จสิ้นจะแสดงข้อความหมดเวลาเฉพาะ Codex:
กรณีที่เล่นซ้ำได้อย่างปลอดภัยจะแจ้งว่าการตอบกลับอาจไม่สมบูรณ์ ส่วนกรณีที่ไม่ปลอดภัยจะแจ้ง
ให้ผู้ใช้ตรวจสอบสถานะปัจจุบันก่อนลองใหม่ ข้อมูลวินิจฉัยการหมดเวลาสาธารณะ
ประกอบด้วยฟิลด์เชิงโครงสร้าง เช่น เมธอดการแจ้งเตือนล่าสุดของเซิร์ฟเวอร์แอป
รหัส/ประเภท/บทบาทของรายการการตอบกลับแบบดิบจากผู้ช่วย จำนวนคำขอ/รายการที่กำลังทำงาน และ
สถานะการเฝ้าดูที่เปิดใช้อยู่ เมื่อการแจ้งเตือนล่าสุดเป็นรายการการตอบกลับแบบดิบจากผู้ช่วย
ข้อมูลดังกล่าวจะรวมตัวอย่างข้อความของผู้ช่วยที่จำกัดขนาดไว้ด้วย แต่จะไม่
รวมพรอมต์ดิบหรือเนื้อหาเครื่องมือ
การค้นหาโมเดล
โดยค่าเริ่มต้น Plugin Codex จะขอรายการโมเดลที่พร้อมใช้งานจากเซิร์ฟเวอร์แอป ความพร้อมใช้งาน
ของโมเดลอยู่ภายใต้การควบคุมของเซิร์ฟเวอร์แอป Codex ดังนั้นรายการอาจเปลี่ยนแปลงเมื่อ
OpenClaw อัปเกรดเวอร์ชัน @openai/codex ที่รวมมาให้ หรือเมื่อการติดตั้งใช้งาน
กำหนดให้ appServer.command ชี้ไปยังไบนารี Codex อื่น ความพร้อมใช้งานอาจ
จำกัดตามบัญชีด้วย ใช้ /codex models บน Gateway ที่กำลังทำงานเพื่อดูแค็ตตาล็อกปัจจุบัน
สำหรับชุดควบคุมและบัญชีนั้น
หากการค้นหาล้มเหลวหรือหมดเวลา OpenClaw จะใช้แค็ตตาล็อกสำรองที่รวมมาให้:
| รหัสโมเดล | ชื่อที่แสดง | ระดับการให้เหตุผล |
|---|---|---|
gpt-5.5 |
gpt-5.5 | low, medium, high, xhigh |
gpt-5.4-mini |
GPT-5.4-Mini | low, medium, high, xhigh |
ปรับแต่งการค้นหาภายใต้ plugins.entries.codex.config.discovery:
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, }, }, }, },}ปิดใช้งานการค้นหาเมื่อต้องการหลีกเลี่ยงการตรวจสอบ Codex ระหว่างเริ่มต้นระบบและใช้เฉพาะ แค็ตตาล็อกสำรอง:
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: false, }, }, }, }, },}ไฟล์เริ่มต้นเวิร์กสเปซ
Codex จัดการ AGENTS.md ด้วยตนเองผ่านการค้นหาเอกสารโครงการแบบเนทีฟ
OpenClaw จะไม่เขียนไฟล์เอกสารโครงการ Codex สังเคราะห์ หรือพึ่งพาชื่อไฟล์สำรอง
ของ Codex สำหรับไฟล์บุคลิก เนื่องจากค่าทดแทนของ Codex จะใช้เฉพาะเมื่อ
AGENTS.md ไม่มีอยู่
เพื่อให้เวิร์กสเปซ OpenClaw มีความสอดคล้องกัน ชุดควบคุม Codex จะส่งต่อไฟล์ เริ่มต้นอื่นๆ เป็นคำสั่งสำหรับนักพัฒนา แต่ไม่ได้ส่งต่อในรูปแบบเดียวกัน:
TOOLS.mdจะถูกส่งต่อเป็นคำสั่งสำหรับนักพัฒนา Codex ที่ สืบทอดได้ ดังนั้น ซับเอเจนต์ Codex แบบเนทีฟที่สร้างขึ้นระหว่างรอบการทำงานจะมองเห็นคำสั่งนี้ด้วยSOUL.md,IDENTITY.mdและUSER.mdจะถูกส่งต่อเป็นคำสั่งการทำงานร่วมกัน เฉพาะรอบการทำงาน ซับเอเจนต์ Codex แบบเนทีฟจะไม่สืบทอดคำสั่งเหล่านี้ ซึ่งช่วยป้องกันไม่ให้รอบการทำงานของซับเอเจนต์รับบุคลิกของเอเจนต์หลักและ โปรไฟล์ผู้ใช้ไปด้วย- รายการ Skills ของ OpenClaw ที่โหลดไว้แบบกระชับจะถูกส่งต่อเป็นคำสั่งสำหรับนักพัฒนา ด้านการทำงานร่วมกันเฉพาะรอบการทำงานเช่นกัน ดังนั้นซับเอเจนต์ Codex แบบเนทีฟ จึงไม่สืบทอดรายการนี้ด้วย
- เนื้อหา
HEARTBEAT.mdจะไม่ถูกแทรก รอบการทำงาน Heartbeat จะได้รับ ตัวชี้ในโหมดการทำงานร่วมกันเพื่อให้อ่านไฟล์เมื่อไฟล์มีอยู่และ ไม่ว่างเปล่า - เนื้อหา
MEMORY.mdจากเวิร์กสเปซเอเจนต์ที่กำหนดค่าจะไม่ถูกวางลงใน อินพุตของรอบการทำงาน Codex แบบเนทีฟ เมื่อมีเครื่องมือหน่วยความจำสำหรับ เวิร์กสเปซนั้น หากไฟล์มีอยู่ ชุดควบคุมจะเพิ่มตัวชี้หน่วยความจำเวิร์กสเปซขนาดเล็ก ไปยังคำสั่งสำหรับนักพัฒนาด้านการทำงานร่วมกันเฉพาะรอบการทำงาน และ Codex ควรใช้memory_searchหรือmemory_getเมื่อหน่วยความจำระยะยาวเกี่ยวข้อง หากเครื่องมือถูกปิดใช้งาน การค้นหาหน่วยความจำไม่พร้อมใช้งาน หรือเวิร์กสเปซ ที่ใช้งานอยู่แตกต่างจากเวิร์กสเปซหน่วยความจำของเอเจนต์MEMORY.mdจะใช้ เส้นทางบริบทรอบการทำงานแบบจำกัดตามปกติแทน BOOTSTRAP.mdหากมีอยู่ จะถูกส่งต่อเป็นบริบทอ้างอิงอินพุตรอบการทำงาน ของ OpenClaw
การแทนที่ด้วยตัวแปรสภาพแวดล้อม
การแทนที่ด้วยตัวแปรสภาพแวดล้อมยังคงพร้อมใช้งานสำหรับการทดสอบภายในเครื่อง:
OPENCLAW_CODEX_APP_SERVER_BINOPENCLAW_CODEX_APP_SERVER_ARGSOPENCLAW_CODEX_APP_SERVER_MODE=yolo|guardianOPENCLAW_CODEX_APP_SERVER_APPROVAL_POLICYOPENCLAW_CODEX_APP_SERVER_SANDBOX
OPENCLAW_CODEX_APP_SERVER_BIN จะข้ามไบนารีที่มีการจัดการเมื่อ
ไม่ได้ตั้งค่า appServer.command
OPENCLAW_CODEX_APP_SERVER_GUARDIAN=1 ถูกนำออกแล้ว ให้ใช้
plugins.entries.codex.config.appServer.mode: "guardian" แทน หรือใช้
OPENCLAW_CODEX_APP_SERVER_MODE=guardian สำหรับการทดสอบภายในเครื่องแบบครั้งเดียว แนะนำให้ใช้การกำหนดค่า
สำหรับการติดตั้งใช้งานที่ทำซ้ำได้ เนื่องจากช่วยให้พฤติกรรมของ Plugin อยู่ใน
ไฟล์ที่ผ่านการรีวิวเดียวกันกับการตั้งค่าชุดควบคุม Codex ส่วนที่เหลือ