Codex harness
เอกสารอ้างอิงชุดทดสอบ Codex
ข้อมูลอ้างอิงนี้ครอบคลุมการกำหนดค่าโดยละเอียดสำหรับ 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 |
เมื่อเปิดใช้การกำกับดูแล อนุญาตให้เอเจนต์อัตโนมัติดำเนินการ fork, เปลี่ยนชื่อ, เก็บถาวร และยกเลิกการเก็บถาวรสำหรับ codex_threads รวมถึงการส่ง การบังคับทิศทาง และการขัดจังหวะผ่าน 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 ในโฮมของผู้ใช้ที่มีการจัดการ แถวโลคัลที่จัดเก็บไว้หรือไม่ได้ใช้งานสามารถสร้าง
แชตที่ล็อกโมเดลพร้อมประวัติของผู้ใช้และผู้ช่วยแบบจำกัด จนถึงเทิร์นต้นทางที่คงอยู่แบบ
สิ้นสุดล่าสุด การผูกแบบส่วนตัวจะคงให้ snapshot 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.3):
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, }, }, }, }, },}ฟิลด์ 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 ของ WebSocket App Server หรือ 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 |
ติดตั้งกระบวนการย่อย Codex PreToolUse ที่ใช้เฉพาะสำหรับการตรวจจับลูปของ OpenClaw และเครื่องหมายระบุอย่างชัดเจนว่าไม่มีนโยบาย ตั้งค่า false เพื่อลดการกระจายกระบวนการต่อเครื่องมือ ฮุก Plugin ก่อนเรียกใช้เครื่องมือและนโยบายเครื่องมือที่เชื่อถือได้ยังคงติดตั้งรีเลย์ที่จำเป็น |
requestTimeoutMs |
60000 |
ระยะหมดเวลาสำหรับการเรียกใช้ระนาบควบคุมของ app-server |
turnCompletionIdleTimeoutMs |
60000 |
ช่วงเวลาที่ไม่มีความเคลื่อนไหวหลังจาก Codex ยอมรับเทิร์น หรือหลังคำขอ app-server ที่มีขอบเขตระดับเทิร์น ขณะที่ OpenClaw รอ turn/completed |
postToolRawAssistantCompletionIdleTimeoutMs |
300000 |
ตัวป้องกันภาวะว่างหลังเสร็จสิ้นและความคืบหน้าที่ใช้หลังการส่งมอบให้เครื่องมือ การทำงานของเครื่องมือแบบเนทีฟเสร็จสิ้น ความคืบหน้าดิบของผู้ช่วยหลังใช้เครื่องมือ การใช้เหตุผลดิบเสร็จสิ้น หรือความคืบหน้าของการใช้เหตุผล ขณะที่ OpenClaw รอ turn/completed ใช้ค่านี้สำหรับภาระงานที่เชื่อถือได้หรือหนัก ซึ่งการสังเคราะห์หลังใช้เครื่องมืออาจไม่มีความเคลื่อนไหวได้นานกว่างบประมาณการเผยแพร่คำตอบสุดท้ายของผู้ช่วยอย่างสมเหตุสมผล |
mode |
"yolo" เว้นแต่ข้อกำหนดของ Codex ภายในเครื่องจะไม่อนุญาต YOLO |
ค่าที่กำหนดไว้ล่วงหน้าสำหรับการดำเนินการแบบ YOLO หรือที่ผ่านการตรวจสอบโดยผู้พิทักษ์ |
approvalPolicy |
"never" หรือนโยบายการอนุมัติของผู้พิทักษ์ที่อนุญาต |
นโยบายการอนุมัติแบบเนทีฟของ Codex ที่ส่งเมื่อเริ่มเธรด ดำเนินการต่อ และเริ่มเทิร์น |
sandbox |
"danger-full-access" หรือแซนด์บ็อกซ์ของผู้พิทักษ์ที่อนุญาต |
โหมดแซนด์บ็อกซ์แบบเนทีฟของ Codex ที่ส่งเมื่อเริ่มและดำเนินเธรดต่อ แซนด์บ็อกซ์ OpenClaw ที่ใช้งานอยู่จะจำกัดเทิร์น danger-full-access ให้เป็น Codex workspace-write; แฟล็กเครือข่ายของเทิร์นจะเป็นไปตามการส่งข้อมูลออกของแซนด์บ็อกซ์ 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 app-server ที่รองรับ เพื่อให้การดำเนินการ Codex แบบเนทีฟทำงานภายในแซนด์บ็อกซ์ OpenClaw ที่ใช้งานอยู่ได้ |
appServer.networkProxy ระบุไว้อย่างชัดเจนเนื่องจากมีการเปลี่ยนแปลงสัญญาแซนด์บ็อกซ์ของ 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 เป็นระบบเครือข่าย
แบบแซนด์บ็อกซ์ ดังนั้นโปรไฟล์ที่เข้าถึงได้เต็มรูปแบบจะไม่ปกป้องการรับส่งข้อมูลขาออก
Plugin จะบล็อกการจับมือ app-server ที่เก่ากว่าหรือไม่มีเวอร์ชัน โดย Codex app-server
ต้องรายงานเวอร์ชันเสถียร 0.143.0 หรือใหม่กว่า
OpenClaw ถือว่า URL ของ WebSocket app-server ที่ไม่ใช่ลูปแบ็กเป็นระบบระยะไกล และกำหนดให้
ใช้การยืนยันตัวตน WebSocket ที่มีข้อมูลระบุตัวตนผ่าน appServer.authToken หรือส่วนหัว
Authorization โดย appServer.authToken และค่า appServer.headers.*
แต่ละค่าสามารถเป็น SecretInput ได้ รันไทม์ข้อมูลลับจะแก้ไข SecretRefs และรูปแบบย่อของ
ตัวแปรสภาพแวดล้อมก่อนที่ OpenClaw จะสร้างตัวเลือกการเริ่มต้น app-server และ SecretRefs
แบบมีโครงสร้างที่แก้ไขไม่ได้จะล้มเหลวก่อนส่งโทเค็นหรือส่วนหัวใดๆ เมื่อกำหนดค่า
Plugin ดั้งเดิมของ Codex แล้ว OpenClaw จะใช้ระนาบควบคุม Plugin ของ app-server
ที่เชื่อมต่ออยู่เพื่อติดตั้งหรือรีเฟรช Plugin เหล่านั้น จากนั้นรีเฟรชรายการแอป
เพื่อให้แอปที่ Plugin เป็นเจ้าของปรากฏแก่เธรด Codex app/list ยังคงเป็น
แหล่งข้อมูลหลักสำหรับรายการและข้อมูลเมตา แต่นโยบายของ OpenClaw จะตัดสินว่า
thread/start จะส่ง config.apps[appId].enabled = true สำหรับแอปที่เข้าถึงได้
ซึ่งอยู่ในรายการหรือไม่ แม้ปัจจุบัน Codex จะทำเครื่องหมายว่าแอปนั้นปิดใช้งานอยู่
รหัสแอปที่ไม่รู้จักหรือขาดหายไปจะยังคงปิดกั้นโดยค่าเริ่มต้น เส้นทางนี้เปิดใช้งานเฉพาะ
Plugin จากมาร์เก็ตเพลสผ่าน plugin/install และรีเฟรชรายการเท่านั้น
เชื่อมต่อ OpenClaw กับ app-server ระยะไกลที่เชื่อถือได้ว่าจะยอมรับการติดตั้ง Plugin
และการรีเฟรชรายการแอปที่จัดการโดย OpenClaw เท่านั้น
โหมดการอนุมัติและแซนด์บ็อกซ์
เซสชัน stdio app-server ภายในเครื่องใช้โหมด YOLO เป็นค่าเริ่มต้น:
approvalPolicy: "never", approvalsReviewer: "user" และ
sandbox: "danger-full-access" แนวทางผู้ดำเนินการภายในเครื่องที่เชื่อถือได้นี้ช่วยให้
เทิร์นและ Heartbeat ของ OpenClaw ที่ไม่มีผู้ดูแลดำเนินต่อไปได้ โดยไม่ต้องมีพรอมต์
การอนุมัติดั้งเดิมซึ่งไม่มีใครอยู่ตอบ
หากไฟล์ข้อกำหนดระบบภายในเครื่องของ Codex ไม่อนุญาตค่าการอนุมัติ YOLO โดยนัย
ค่าผู้ตรวจสอบ หรือค่าแซนด์บ็อกซ์ OpenClaw จะถือว่าค่าเริ่มต้นโดยนัยเป็น guardian
แทน และเลือกสิทธิ์ guardian ที่อนุญาต tools.exec.mode: "auto" ยังบังคับใช้การอนุมัติ
Codex ที่ผ่านการตรวจสอบโดย guardian และจะไม่เก็บรักษาค่าทับแทนแบบเดิมที่ไม่ปลอดภัย
approvalPolicy: "never" หรือ sandbox: "danger-full-access" ให้ตั้งค่า tools.exec.mode: "full"
เมื่อตั้งใจใช้แนวทางที่ไม่มีการอนุมัติ รายการ [[remote_sandbox_config]] ที่ตรงกับชื่อโฮสต์
ในไฟล์ข้อกำหนดเดียวกันจะถูกนำมาใช้ประกอบการตัดสินใจค่าเริ่มต้นของแซนด์บ็อกซ์
ตั้งค่า 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 ค่าผู้ตรวจสอบแบบเก่า
guardian_subagent ยังคงรองรับในฐานะนามแฝงเพื่อความเข้ากันได้ แต่การกำหนดค่าใหม่
ควรใช้ auto_review
เมื่อแซนด์บ็อกซ์ OpenClaw ทำงานอยู่ กระบวนการ Codex app-server ภายในเครื่องจะยังคง
ทำงานบนโฮสต์ Gateway ดังนั้น OpenClaw จึงปิดใช้งาน Code Mode ดั้งเดิมของ Codex,
เซิร์ฟเวอร์ MCP ของผู้ใช้ และการดำเนินการ Plugin ที่ใช้แอปเป็นฐานสำหรับเทิร์นนั้น
แทนที่จะถือว่าการทำแซนด์บ็อกซ์ฝั่งโฮสต์ของ Codex เทียบเท่ากับแบ็กเอนด์แซนด์บ็อกซ์
ของ OpenClaw การเข้าถึงเชลล์จะถูกเปิดผ่านเครื่องมือไดนามิกที่มีแซนด์บ็อกซ์ OpenClaw
รองรับ เช่น sandbox_exec และ sandbox_process เมื่อเครื่องมือ exec/process
ตามปกติพร้อมใช้งาน
การดำเนินการแบบดั้งเดิมในแซนด์บ็อกซ์
ค่าเริ่มต้นที่เสถียรคือการปิดกั้นเมื่อเกิดความล้มเหลว: การทำแซนด์บ็อกซ์ OpenClaw
ที่ทำงานอยู่จะปิดใช้งานพื้นผิวการดำเนินการดั้งเดิมของ Codex ซึ่งมิฉะนั้นจะทำงาน
จากโฮสต์ Codex app-server ใช้ appServer.experimental.sandboxExecServer: true เฉพาะเมื่อต้องการ
ทดลองใช้การรองรับสภาพแวดล้อมระยะไกลของ Codex กับแบ็กเอนด์แซนด์บ็อกซ์ของ OpenClaw
เส้นทางพรีวิวนี้ทำงานได้กับ Codex app-server ทุกเวอร์ชันที่รองรับ
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { experimental: { sandboxExecServer: true, }, }, }, }, }, },}เมื่อเปิดแฟล็กและเซสชัน OpenClaw ปัจจุบันอยู่ในแซนด์บ็อกซ์ OpenClaw จะเริ่ม exec-server แบบลูปแบ็กภายในเครื่องที่มีแซนด์บ็อกซ์ที่ทำงานอยู่รองรับ ลงทะเบียนกับ Codex app-server และเริ่มเธรดกับเทิร์น Codex ด้วยสภาพแวดล้อมที่ OpenClaw เป็นเจ้าของ หาก app-server ไม่สามารถลงทะเบียนสภาพแวดล้อมได้ การทำงานจะปิดกั้นเมื่อเกิดความล้มเหลว แทนที่จะย้อนกลับไปใช้การดำเนินการบนโฮสต์โดยไม่แจ้งให้ทราบ
เส้นทางพรีวิวนี้ใช้ได้เฉพาะภายในเครื่อง WebSocket app-server ระยะไกลไม่สามารถเข้าถึง exec-server แบบลูปแบ็กได้ เว้นแต่จะทำงานอยู่บนโฮสต์เดียวกัน ดังนั้น OpenClaw จึงปฏิเสธการใช้งานร่วมกันดังกล่าว
การยืนยันตัวตนและการแยกสภาพแวดล้อม
ในโฮมต่อเอเจนต์ตามค่าเริ่มต้น ระบบจะเลือกการยืนยันตัวตนตามลำดับนี้:
- โปรไฟล์การยืนยันตัวตน OpenClaw Codex ที่ระบุไว้อย่างชัดเจนสำหรับเอเจนต์
- บัญชีที่มีอยู่ของ app-server ในโฮม Codex ของเอเจนต์นั้น
- สำหรับการเปิดใช้ stdio app-server ภายในเครื่องเท่านั้น ใช้
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 ที่ระบุไว้อย่างชัดเจนและทางเลือกสำรองคีย์จากสภาพแวดล้อม สำหรับ stdio ภายในเครื่องจะใช้การเข้าสู่ระบบ app-server แทนสภาพแวดล้อมของกระบวนการลูก ที่สืบทอดมา การเชื่อมต่อ WebSocket app-server จะไม่ได้รับทางเลือกสำรองคีย์ API จากสภาพแวดล้อมของ Gateway ให้ใช้โปรไฟล์การยืนยันตัวตนที่ระบุไว้อย่างชัดเจน หรือบัญชีของ app-server ระยะไกลเอง
การเปิดใช้ stdio app-server จะสืบทอดสภาพแวดล้อมของกระบวนการ 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
ซึ่งเป็นตัวเลือก) อ่าน ฟอร์ก เปลี่ยนชื่อ เก็บถาวร และยกเลิกการเก็บถาวรเธรดเหล่านั้น
ให้ฟอร์กเธรดก่อนดำเนินการต่อใน OpenClaw เนื่องจากกระบวนการ Codex ที่แยกจากกัน
จะไม่ประสานงานผู้เขียนพร้อมกันสำหรับเธรดเดียวกัน
การเลือกใช้ homeScope ดังกล่าวมีผลกับเซสชันชุดควบคุมทั่วไป Chat ที่สร้างผ่าน
Codex Sessions จะใช้การเชื่อมต่อการกำกับดูแลส่วนตัวแทน ซึ่งจะรักษาการยืนยันตัวตน
และการกำหนดค่าผู้ให้บริการของการเชื่อมต่อดั้งเดิมไว้สำหรับสาขาหลักและการดำเนินการต่อ
ในอนาคต
ใน Chat ภายใต้การกำกับดูแลที่ล็อกโมเดล codex_threads ไม่สามารถแนบฟอร์กอื่น
หรือเก็บถาวรเธรดดั้งเดิมที่ผูกกับ Chat ได้ การแสดงรายการและการอ่านเฉพาะข้อมูลเมตา
ยังคงใช้งานได้ การอ่านทรานสคริปต์ดิบต้องใช้ allowRawTranscripts เมื่อปิดใช้งาน
การค้นหารายการจะถูกปฏิเสธด้วย เนื่องจากการค้นหาแบบดั้งเดิมอาจตรงกับตัวอย่างทรานสคริปต์
การเปลี่ยนชื่อ การยกเลิกการเก็บถาวร การฟอร์กแบบแยกออก และการเก็บถาวรเธรดที่ไม่เกี่ยวข้อง
ซึ่งไม่ได้เป็นของ OpenClaw Chat อื่น ต้องใช้ 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 หรือ Plugin ของ Codex CLI
ที่เป็นประโยชน์จากโฮม 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 เป็นค่าเริ่มต้น
โดยเปิดเผยภายใต้เนมสเปซ openclaw พร้อม deferLoading: true
ตามปกติ OpenClaw จะไม่เปิดเผยเครื่องมือไดนามิกที่ทำซ้ำการดำเนินการเวิร์กสเปซดั้งเดิม
ของ Codex หรือพื้นผิวการค้นหาเครื่องมือของ Codex เอง:
readwriteeditapply_patchexecprocessupdate_plantool_calltool_describetool_searchtool_search_code
เมื่อรายการอนุญาตรันไทม์แบบจำกัดปิดใช้งาน Code Mode ดั้งเดิม OpenClaw จะส่ง
การเลือกสภาพแวดล้อมการดำเนินการที่ว่างเปล่า ในกรณีโดยตรงที่ไม่มีแซนด์บ็อกซ์นี้
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" รวมถึงเครื่องมือ computer
ของ OpenClaw จะถูกจัดกลุ่มภายใต้ openclaw_direct OpenClaw เพิ่มเนมสเปซนั้นลงใน
รายการ code_mode.direct_only_tool_namespaces ของ Codex โดยไม่แทนที่
รายการที่ผู้ดำเนินการกำหนดไว้ ดังนั้น Codex จึงเปิดเผยเครื่องมือเหล่านั้นเป็น
DirectModelOnly ในเธรดปกติและเธรดเฉพาะโหมดโค้ด แทนที่จะกำหนดเส้นทาง
ผ่านการเรียก Code Mode tools.* แบบซ้อน ขอบเขตนี้จำเป็นสำหรับ
ผลลัพธ์ที่มีรูปภาพ: การทำซีเรียลไลซ์ Code Mode แบบซ้อนจะแปลงเอาต์พุตรูปภาพให้เป็น
ข้อความ ซึ่งจะทำให้ภาพหน้าจอที่จำเป็นต่อการดำเนินการกับคอมพิวเตอร์ครั้งถัดไปสูญหาย
ตั้งค่า codexDynamicToolsLoading: "direct" เฉพาะเมื่อเชื่อมต่อกับ
Codex app-server แบบกำหนดเองที่ไม่สามารถค้นหาเครื่องมือไดนามิกที่เลื่อนการโหลดไว้ หรือเมื่อตรวจแก้จุดบกพร่อง
เพย์โหลดเครื่องมือแบบเต็ม
การหมดเวลา
การเรียกเครื่องมือไดนามิกที่ OpenClaw เป็นเจ้าของถูกจำกัดอย่างเป็นอิสระจาก
appServer.requestTimeoutMs คำขอ Codex item/tool/call แต่ละรายการใช้
ค่าการหมดเวลาแรกที่พร้อมใช้งานตามลำดับนี้:
- อาร์กิวเมนต์
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 ตอบกลับคำขอ app-server
ที่มีขอบเขตเฉพาะรอบการสนทนา ชุดควบคุมคาดว่า Codex จะดำเนินงานของรอบปัจจุบัน
ต่อไป และจบรอบแบบเนทีฟด้วย turn/completed ในที่สุด หาก
app-server ไม่มีความเคลื่อนไหวเป็นเวลา 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 app-server ที่สามารถเล่นซ้ำได้อย่างปลอดภัย รวมถึงการหมดเวลารอการจบรอบ
โดยไม่มีหลักฐานจากผู้ช่วย เครื่องมือ รายการที่ทำงานอยู่ หรือผลข้างเคียง
จะถูกลองใหม่หนึ่งครั้งใน app-server ครั้งใหม่ การหมดเวลาที่ไม่ปลอดภัยยังคงยุติ
ไคลเอนต์ app-server ที่ค้างและปล่อยเลนเซสชัน OpenClaw พร้อมทั้ง
ล้างการผูกเธรดแบบเนทีฟที่ค้างแทนการเล่นซ้ำ
โดยอัตโนมัติ การหมดเวลาของตัวเฝ้าระวังการเสร็จสิ้นจะแสดงข้อความการหมดเวลาเฉพาะ Codex:
กรณีที่เล่นซ้ำได้อย่างปลอดภัยจะระบุว่าการตอบกลับอาจไม่สมบูรณ์ ส่วนกรณีที่ไม่ปลอดภัยจะแจ้ง
ให้ผู้ใช้ตรวจสอบสถานะปัจจุบันก่อนลองใหม่ การวินิจฉัยการหมดเวลาสาธารณะ
มีฟิลด์เชิงโครงสร้าง เช่น เมธอดการแจ้งเตือน app-server ล่าสุด
รหัส/ประเภท/บทบาทของรายการการตอบกลับผู้ช่วยแบบดิบ จำนวนคำขอ/รายการที่ทำงานอยู่ และ
สถานะตัวเฝ้าระวังที่เปิดใช้ เมื่อการแจ้งเตือนล่าสุดเป็นรายการการตอบกลับผู้ช่วยแบบดิบ
การวินิจฉัยยังมีตัวอย่างข้อความผู้ช่วยแบบจำกัดขนาด แต่ไม่มี
พรอมต์ดิบหรือเนื้อหาเครื่องมือ
การค้นหาโมเดล
ตามค่าเริ่มต้น Plugin Codex จะขอรายการโมเดลที่พร้อมใช้งานจาก app-server ความพร้อมใช้งาน
ของโมเดลอยู่ภายใต้การดูแลของ Codex app-server ดังนั้นรายการจึงอาจเปลี่ยนเมื่อ
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 ส่วนที่เหลือ