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 เปิดใช้งาน การตั้งค่าการค้นพบโมเดลสำหรับ 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 ที่จับคู่ซึ่งเลือกเปิดใช้ ปิดใช้งานเฉพาะแค็ตตาล็อกนั้นด้วย:

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

bash
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:

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 ของ 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 เฉพาะเมื่อจำเป็นต้องใช้ชื่อภายในเครื่องที่คงที่

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 ที่ไม่ใช่ลูปแบ็กเป็นระบบระยะไกล และกำหนดให้ ใช้การยืนยันตัวตน 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:

json5
{  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 ทุกเวอร์ชันที่รองรับ

json5
{  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 จึงปฏิเสธการใช้งานร่วมกันดังกล่าว

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

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

  1. โปรไฟล์การยืนยันตัวตน OpenClaw Codex ที่ระบุไว้อย่างชัดเจนสำหรับเอเจนต์
  2. บัญชีที่มีอยู่ของ app-server ในโฮม Codex ของเอเจนต์นั้น
  3. สำหรับการเปิดใช้ 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 ที่แยกไว้ ให้จัดทำรายการอย่างชัดเจน:

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

เมื่อรายการอนุญาตรันไทม์แบบจำกัดปิดใช้งาน 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:

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