Codex harness

ข้อมูลอ้างอิงชุดควบคุม Codex

ข้อมูลอ้างอิงนี้ครอบคลุมการกำหนดค่าโดยละเอียดสำหรับ Plugin codex อย่างเป็นทางการ สำหรับการตั้งค่าและการตัดสินใจเกี่ยวกับการกำหนดเส้นทาง ให้เริ่มจาก ชุดควบคุม Codex

พื้นผิวการกำหนดค่า Plugin

การตั้งค่าชุดควบคุม Codex ทั้งหมดอยู่ภายใต้ plugins.entries.codex.config

json5
{  plugins: {    entries: {      codex: {        enabled: true,        config: {          discovery: {            enabled: true,            timeoutMs: 2500,          },          appServer: {            mode: "guardian",          },        },      },    },  },}

ฟิลด์ระดับบนสุด:

ฟิลด์ ค่าเริ่มต้น ความหมาย
discovery เปิดใช้งาน การตั้งค่าการค้นหาโมเดลสำหรับ model/list ของเซิร์ฟเวอร์แอป Codex
appServer เซิร์ฟเวอร์แอป stdio ที่มีการจัดการ การตั้งค่าการรับส่งข้อมูล คำสั่ง การยืนยันตัวตน การอนุมัติ แซนด์บ็อกซ์ และการหมดเวลา ชุดควบคุมทั่วไปใช้สถานะที่มีขอบเขตระดับเอเจนต์เป็นค่าเริ่มต้น
codexDynamicToolsLoading "searchable" ใช้ "direct" เพื่อใส่เครื่องมือแบบไดนามิกของ OpenClaw ลงในบริบทเครื่องมือ Codex เริ่มต้นโดยตรง
codexDynamicToolsExclude [] ชื่อเครื่องมือแบบไดนามิกของ OpenClaw เพิ่มเติมที่จะละเว้นจากรอบการทำงานของเซิร์ฟเวอร์แอป Codex
codexPlugins ปิดใช้งาน การรองรับ Plugin/แอปแบบเนทีฟของ Codex รวมถึงการเลือกอนุญาตให้เข้าถึงแอปของบัญชีที่เชื่อมต่อ ดู Plugin แบบเนทีฟของ Codex
computerUse ปิดใช้งาน การตั้งค่า Codex Computer Use ดู Codex Computer Use
supervision ปิดใช้งาน แค็ตตาล็อกเซสชันแบบเนทีฟที่ยังไม่เก็บถาวร การดำเนินการต่อจากสาขาในเครื่อง และนโยบายเครื่องมือเอเจนต์ ดู การกำกับดูแล Codex

การกำกับดูแล

การกำกับดูแลจะแสดงรายการเซสชัน Codex ที่ยังไม่เก็บถาวรจากคอมพิวเตอร์ Gateway และ Node ที่จับคู่ซึ่งเลือกเข้าร่วม เปิดใช้งานส่วนนี้แยกจากชุดควบคุมเอเจนต์:

json5
{  plugins: {    entries: {      codex: {        enabled: true,        config: {          supervision: {            enabled: true,          },        },      },    },  },}

ฟิลด์ supervision:

ฟิลด์ ค่าเริ่มต้น ความหมาย
enabled false ประกาศแค็ตตาล็อกเซสชันในเครื่อง และเมื่ออยู่บน Gateway ให้รวบรวมแค็ตตาล็อกจาก Node ที่จับคู่ซึ่งเลือกเข้าร่วมสำหรับหน้าเซสชัน Codex
endpoints ปลายทางในเครื่องที่มีในตัว เป้าหมายปลายทางสำหรับความเข้ากันได้และการใช้งานขั้นสูงของเอเจนต์กำกับดูแล Codex ที่ยังคงไว้และเครื่องมือ MCP แบบสแตนด์อโลน แค็ตตาล็อกสำหรับมนุษย์และโฟลว์สาขาจะไม่ใช้เป้าหมายเหล่านี้ แต่จะใช้ App Server สำหรับการกำกับดูแลที่แก้ไขจาก appServer
allowRawTranscripts false เมื่อเปิดใช้การกำกับดูแล ให้อนุญาตเอเจนต์อัตโนมัติหรือ MCP แบบสแตนด์อโลนให้อ่านบทถอดเสียงและฟิลด์รายการที่ได้มาจากบทถอดเสียง การอ่าน codex_threads เฉพาะข้อมูลเมตายังคงใช้งานได้ ไม่ได้ควบคุมการดำเนินการต่อของ Control UI ที่ผ่านการยืนยันตัวตน
allowWriteControls false เมื่อเปิดใช้การกำกับดูแล ให้อนุญาตการกลายพันธุ์ของ codex_threads สำหรับการ fork เปลี่ยนชื่อ เก็บถาวร และยกเลิกการเก็บถาวร รวมถึงการส่ง ชี้นำ และขัดจังหวะของ MCP แบบสแตนด์อโลน โดยไม่ข้ามการตรวจสอบการผูก โฮสต์ สถานะ หรือการยืนยันอื่น ๆ

รายการปลายทางรองรับฟิลด์เหล่านี้:

ฟิลด์ ใช้กับ ความหมาย
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 มาตรฐานที่ระบุอย่างชัดเจนจะมีลำดับความสำคัญเมื่อเกิดข้อขัดแย้ง

การรับส่งข้อมูลของเซิร์ฟเวอร์แอป

สำหรับเทิร์นของชุดควบคุมทั่วไป OpenClaw จะเริ่มไบนารี Codex ที่มีการจัดการซึ่งมาพร้อม กับ Plugin อย่างเป็นทางการ (ปัจจุบันคือ @openai/codex 0.144.1):

bash
codex app-server --listen stdio://

วิธีนี้ทำให้เวอร์ชันของเซิร์ฟเวอร์แอปผูกกับ 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 ที่แยกจากกัน จะคงสถานะสดและสถานะการอนุมัติแยกจากกัน

สำหรับเซิร์ฟเวอร์แอปที่กำลังทำงานอยู่แล้ว ให้ใช้การรับส่งข้อมูลผ่าน WebSocket:

json5
{  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 ของ 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 ไม่ได้ตั้งค่า รากของพื้นที่ทำงาน app-server ของ Codex ระยะไกล เมื่อตั้งค่า OpenClaw จะอนุมานรากของพื้นที่ทำงานภายในเครื่องจากพื้นที่ทำงาน OpenClaw ที่แก้ไขแล้ว รักษาส่วนต่อท้ายของ cwd ปัจจุบันไว้ภายใต้รากระยะไกลนี้ และส่งเฉพาะ cwd สุดท้ายของ app-server ไปยัง Codex หาก cwd อยู่นอกรากของพื้นที่ทำงาน OpenClaw ที่แก้ไขแล้ว OpenClaw จะปฏิเสธอย่างปลอดภัยแทนการส่งพาธภายใน Gateway ไปยัง app-server ระยะไกล
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 ให้เป็น workspace-write ของ Codex; แฟล็กเครือข่ายของรอบการทำงานจะเป็นไปตามการรับส่งข้อมูลขาออกของแซนด์บ็อกซ์ OpenClaw
approvalsReviewer "user" หรือผู้ตรวจสอบที่เป็นผู้พิทักษ์ซึ่งได้รับอนุญาต ใช้ "auto_review" เพื่อให้ Codex ตรวจสอบพรอมต์การอนุมัติดั้งเดิมเมื่อได้รับอนุญาต
defaultWorkspaceDir ไดเรกทอรีของโพรเซสปัจจุบัน พื้นที่ทำงานที่ /codex bind ใช้เมื่อละเว้น --cwd
serviceTier ไม่ได้ตั้งค่า ระดับบริการ app-server ของ Codex ที่เลือกใช้ได้ "priority" เปิดใช้การกำหนดเส้นทางแบบโหมดรวดเร็ว "flex" ขอการประมวลผลแบบยืดหยุ่น และ null ล้างค่าที่เขียนทับ ระบบรองรับ "fast" แบบเก่าโดยตีความเป็น "priority"
networkProxy ปิดใช้งาน เลือกใช้เครือข่ายตามโปรไฟล์สิทธิ์ของ Codex สำหรับคำสั่ง app-server OpenClaw กำหนดการตั้งค่า permissions.<profile>.network ที่เลือก และเลือกด้วย default_permissions แทนการส่ง sandbox
experimental.sandboxExecServer false ตัวเลือกเข้าร่วมฟีเจอร์ตัวอย่าง ซึ่งลงทะเบียนสภาพแวดล้อม Codex ที่ใช้แซนด์บ็อกซ์ของ OpenClaw กับ app-server ของ Codex ที่รองรับ เพื่อให้การดำเนินงานดั้งเดิมของ Codex สามารถทำงานภายในแซนด์บ็อกซ์ OpenClaw ที่ใช้งานอยู่

appServer.networkProxy ต้องเปิดใช้อย่างชัดเจน เนื่องจากเปลี่ยนสัญญาแซนด์บ็อกซ์ของ Codex เมื่อเปิดใช้ OpenClaw จะตั้งค่า features.network_proxy.enabled และ default_permissions ในการกำหนดค่าเธรดของ Codex ด้วย เพื่อให้โปรไฟล์สิทธิ์ที่สร้างขึ้น สามารถเริ่มระบบเครือข่ายที่ Codex จัดการได้ ตามค่าเริ่มต้น OpenClaw จะสร้างชื่อโปรไฟล์ openclaw-network-<fingerprint> ที่ทนต่อการชนกันจากเนื้อหาของโปรไฟล์ ใช้ profileName เฉพาะเมื่อต้องการชื่อภายในเครื่องที่คงที่เท่านั้น

js
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 ที่ไม่ใช่ local loopback เป็นรีโมต และกำหนดให้ มีการยืนยันตัวตน 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 จัดการและการรีเฟรชคลังรายการแอปเท่านั้น

โหมดการอนุมัติและแซนด์บ็อกซ์

เซสชัน app-server แบบ stdio ภายในเครื่องมีค่าเริ่มต้นเป็นโหมด 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:

json5
{  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

เมื่อแซนด์บ็อกซ์ 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 ทุกเวอร์ชัน ที่รองรับ

json5
{  plugins: {    entries: {      codex: {        enabled: true,        config: {          appServer: {            experimental: {              sandboxExecServer: true,            },          },        },      },    },  },}

เมื่อเปิดแฟล็กและเซสชัน OpenClaw ปัจจุบันอยู่ในแซนด์บ็อกซ์ OpenClaw จะเริ่ม exec-server แบบ local loopback ซึ่งมีแซนด์บ็อกซ์ที่ทำงานอยู่รองรับ ลงทะเบียน กับ Codex app-server และเริ่มเธรดกับเทิร์น Codex โดยใช้สภาพแวดล้อมที่ OpenClaw เป็นเจ้าของ หาก app-server ลงทะเบียนสภาพแวดล้อมไม่ได้ การทำงานจะล้มเหลวแบบปิด แทนที่จะย้อนกลับไปใช้การเรียกใช้บนโฮสต์โดยไม่แจ้งให้ทราบ

เส้นทางตัวอย่างนี้ใช้ได้เฉพาะภายในเครื่อง WebSocket app-server ระยะไกลไม่สามารถ เข้าถึง exec-server แบบ local loopback ได้ เว้นแต่จะทำงานอยู่บนโฮสต์เดียวกัน ดังนั้น OpenClaw จึงปฏิเสธการใช้ร่วมกันในรูปแบบนั้น

การยืนยันตัวตนและการแยกสภาพแวดล้อม

ในโฮมเริ่มต้นแยกตามเอเจนต์ ระบบจะเลือกการยืนยันตัวตนตามลำดับนี้:

  1. โปรไฟล์การยืนยันตัวตน Codex ของ OpenClaw ที่กำหนดไว้อย่างชัดเจนสำหรับเอเจนต์
  2. บัญชีที่มีอยู่ของ app-server ในโฮม Codex ของเอเจนต์นั้น
  3. สำหรับการเปิด 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 ที่ระบุไว้อย่างชัดเจนและการย้อนกลับไปใช้คีย์จาก ตัวแปรสภาพแวดล้อมของ stdio ภายในเครื่องจะใช้การเข้าสู่ระบบ app-server แทน การสืบทอดตัวแปรสภาพแวดล้อมของโปรเซสลูก การเชื่อมต่อ WebSocket app-server จะไม่ได้รับการย้อนกลับไปใช้คีย์ API จากตัวแปรสภาพแวดล้อมของ 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 ซึ่งเป็นทางเลือก), อ่าน, ฟอร์ก, เปลี่ยนชื่อ, เก็บถาวร และยกเลิกการเก็บถาวรเธรดเหล่านั้น ให้ฟอร์กเธรดก่อนดำเนินการต่อใน OpenClaw โปรเซส Codex ที่แยกจากกันจะไม่ประสานงานผู้เขียนที่ทำงานพร้อมกันในเธรดเดียวกัน

การเลือกใช้ homeScope นี้มีผลกับเซสชัน harness ทั่วไป แชตที่สร้างผ่าน Codex Sessions จะใช้การเชื่อมต่อกำกับดูแลส่วนตัวแทน ซึ่งจะรักษาการยืนยันตัวตนและ การกำหนดค่าผู้ให้บริการของการเชื่อมต่อแบบเนทีฟไว้สำหรับสาขาหลักและการทำงานต่อ ในอนาคต

ในแชตภายใต้การกำกับดูแลที่ล็อกโมเดล codex_threads ไม่สามารถแนบฟอร์กอื่น หรือเก็บเธรดแบบเนทีฟที่ผูกกับแชตไว้ในคลังได้ การแสดงรายการและการอ่านเฉพาะ เมทาดาทายังคงพร้อมใช้งาน การอ่านทรานสคริปต์ดิบต้องใช้ allowRawTranscripts เมื่อปิดใช้งานตัวเลือกนี้ การค้นหาในรายการจะถูกปฏิเสธด้วย เนื่องจากการค้นหา แบบเนทีฟอาจตรงกับตัวอย่างทรานสคริปต์ การเปลี่ยนชื่อ การยกเลิกการเก็บถาวร การฟอร์กแบบแยก และการเก็บถาวรเธรดที่ไม่เกี่ยวข้องซึ่งไม่ได้เป็นของแชต 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 หรือ Plugin ของ Codex CLI ที่มีประโยชน์จากโฮม Codex และควรเป็นส่วนหนึ่งของเอเจนต์ OpenClaw ที่แยกไว้ ให้จัดทำรายการอย่างชัดเจน:

bash
openclaw migrate codex --dry-runopenclaw migrate apply codex --yes

หากการติดตั้งใช้งานต้องการการแยกสภาพแวดล้อมเพิ่มเติม ให้เพิ่มตัวแปรเหล่านั้น ลงใน appServer.clearEnv:

json5
{  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 เอง:

  • read
  • write
  • edit
  • apply_patch
  • exec
  • process
  • update_plan
  • tool_call
  • tool_describe
  • tool_search
  • tool_search_code

เครื่องมือผสานรวม 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 ในเธรดปกติและเธรดที่ใช้เฉพาะโหมดโค้ด แทนการกำหนดเส้นทางผ่านการเรียก tools.* ของ Code Mode แบบซ้อน ขอบเขตนี้ จำเป็นสำหรับผลลัพธ์ที่มีรูปภาพ: การทำให้เป็นอนุกรมของ Code Mode แบบซ้อน จะแปลงผลลัพธ์รูปภาพให้เป็นข้อความ ซึ่งจะทำให้ภาพหน้าจอที่จำเป็นสำหรับ การดำเนินการกับคอมพิวเตอร์ครั้งถัดไปสูญหาย

ตั้ง codexDynamicToolsLoading: "direct" เฉพาะเมื่อเชื่อมต่อกับ Codex app-server แบบกำหนดเองที่ไม่สามารถค้นหาเครื่องมือแบบไดนามิกที่เลื่อนการโหลดไว้ หรือเมื่อ ดีบักเพย์โหลดเครื่องมือทั้งหมด

การหมดเวลา

การเรียกใช้เครื่องมือแบบไดนามิกที่ 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 มิลลิวินาที เมื่อหมดเวลา 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 จะพยายามขัดจังหวะเทิร์น แบบเนทีฟและปล่อยเลนเซสชัน ความล้มเหลวของ app-server ผ่าน stdio ที่เล่นซ้ำ ได้อย่างปลอดภัย รวมถึงการหมดเวลารอเทิร์นเสร็จสิ้นโดยไม่มีหลักฐานจากผู้ช่วย เครื่องมือ รายการที่กำลังทำงาน หรือผลข้างเคียง จะถูกลองใหม่หนึ่งครั้งด้วย การเรียก app-server ครั้งใหม่ การหมดเวลาที่ไม่ปลอดภัยจะยังคงปลดไคลเอนต์ app-server ที่ค้างอยู่และปล่อยเลนเซสชันของ OpenClaw นอกจากนี้ยังล้างการผูก เธรดแบบเนทีฟที่ล้าสมัยแทนที่จะเล่นซ้ำโดยอัตโนมัติ การหมดเวลาของตัวเฝ้าดู การเสร็จสิ้นจะแสดงข้อความการหมดเวลาเฉพาะ Codex โดยกรณีที่เล่นซ้ำได้อย่าง ปลอดภัยจะระบุว่าการตอบกลับอาจไม่สมบูรณ์ ส่วนกรณีที่ไม่ปลอดภัยจะแจ้งให้ผู้ใช้ ตรวจสอบสถานะปัจจุบันก่อนลองใหม่ ข้อมูลวินิจฉัยการหมดเวลาสาธารณะประกอบด้วย ฟิลด์เชิงโครงสร้าง เช่น เมธอดการแจ้งเตือนล่าสุดของ app-server รหัส/ประเภท/ บทบาทของรายการตอบกลับจากผู้ช่วยแบบข้อมูลดิบ จำนวนคำขอ/รายการที่กำลังทำงาน และสถานะตัวเฝ้าดูที่เปิดใช้งาน เมื่อการแจ้งเตือนล่าสุดเป็นรายการตอบกลับจาก ผู้ช่วยแบบข้อมูลดิบ ข้อมูลยังรวมตัวอย่างข้อความของผู้ช่วยที่จำกัดความยาวไว้ ด้วย โดยจะไม่รวมพรอมต์แบบข้อมูลดิบหรือเนื้อหาของเครื่องมือ

การค้นพบโมเดล

โดยค่าเริ่มต้น Plugin Codex จะขอรายการโมเดลที่พร้อมใช้งานจาก app-server ความพร้อมใช้งานของโมเดลอยู่ภายใต้การควบคุมของ app-server ของ 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:

json5
{  plugins: {    entries: {      codex: {        enabled: true,        config: {          discovery: {            enabled: true,            timeoutMs: 2500,          },        },      },    },  },}

ปิดใช้งานการค้นพบเมื่อต้องการหลีกเลี่ยงการตรวจสอบ Codex ระหว่างเริ่มต้นระบบ และใช้เฉพาะแค็ตตาล็อกสำรอง:

json5
{  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_BIN
  • OPENCLAW_CODEX_APP_SERVER_ARGS
  • OPENCLAW_CODEX_APP_SERVER_MODE=yolo|guardian
  • OPENCLAW_CODEX_APP_SERVER_APPROVAL_POLICY
  • OPENCLAW_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 ส่วนที่เหลือ

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

Was this useful?
On this page

On this page