Codex harness

ข้อมูลอ้างอิง Codex harness

เอกสารอ้างอิงนี้ครอบคลุมการกำหนดค่าโดยละเอียดสำหรับ 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 เมื่อเปิดใช้งานการกำกับดูแล อนุญาตให้เอเจนต์อัตโนมัติทำการกลายพันธุ์ codex_threads ได้แก่ fork เปลี่ยนชื่อ เก็บถาวร และยกเลิกการเก็บถาวร รวมถึงการดำเนินการส่ง ชี้นำ และขัดจังหวะของ MCP แบบสแตนด์อโลน การตั้งค่านี้ไม่ข้ามการตรวจสอบอื่น ๆ เกี่ยวกับการผูก โฮสต์ สถานะ หรือการยืนยัน

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

ฟิลด์ ใช้กับ ความหมาย
id ทั้งหมด ID ปลายทางที่คงที่
label ทั้งหมด ป้ายกำกับที่แสดงซึ่งระบุหรือไม่ก็ได้
transport ทั้งหมด "stdio-proxy" หรือ "websocket"
command stdio-proxy คำสั่ง App Server ที่ระบุหรือไม่ก็ได้
args stdio-proxy อาร์กิวเมนต์คำสั่งที่ระบุหรือไม่ก็ได้
cwd stdio-proxy ไดเรกทอรีทำงานของโพรเซสลูกที่ระบุหรือไม่ก็ได้
url websocket URL ของ WebSocket หรือซ็อกเก็ตภายในเครื่องที่รองรับซึ่งจำเป็นต้องระบุ
authTokenEnv websocket ตัวแปรสภาพแวดล้อมที่ระบุหรือไม่ก็ได้ ซึ่งค่าของมันใช้ยืนยันตัวตนกับปลายทาง

หน้า เซสชัน Codex ใช้ App Server สำหรับการกำกับดูแลของ Plugin และแสดง เฉพาะเซสชันที่ไม่ได้เก็บถาวร หากไม่มีการตั้งค่าการเชื่อมต่อ appServer อย่างชัดเจน การเชื่อมต่อนั้นจะเป็น stdio ในโฮมของผู้ใช้ที่ได้รับการจัดการ แถวในเครื่องที่จัดเก็บไว้หรือไม่ได้ใช้งานสามารถสร้าง แชตที่ล็อกกับโมเดลพร้อมประวัติผู้ใช้และผู้ช่วยแบบมีขอบเขต จนถึงรอบต้นทางสุดท้ายที่คงอยู่และสิ้นสุดแล้ว การผูกแบบส่วนตัวจะคง fork ของสแนปช็อต สาขาต้นทาง appServer ที่เป็นมาตรฐาน การแทรกประวัติ และรอบถัดไปไว้บนการเชื่อมต่อนั้น การเริ่มต้นแบบมาตรฐานครั้งแรกใช้คู่ที่ fork ส่งคืน การกลับมาทำงานต่อในภายหลังจะละเว้นการแทนที่โมเดลและผู้ให้บริการของ OpenClaw เพื่อให้ Codex คืนค่าคู่ที่คงอยู่ของเธรดมาตรฐาน การเปลี่ยนแปลงแบบเนทีฟแยกต่างหากสามารถอัปเดตคู่นั้นได้ แต่โมเดลภายนอกและลำดับสำรองจะไม่แทนที่คู่นั้น แถวที่จัดเก็บไว้และไม่ได้ใช้งานสามารถเก็บถาวรได้ หลังจากยืนยันว่าไม่มีตัวรันอื่น เว้นแต่การผูก OpenClaw อื่นที่ทำงานอยู่จะเป็นเจ้าของเป้าหมายที่ตรงกันทุกประการ หรือหนึ่งในลูกหลานที่สร้างขึ้นและไม่ได้เก็บถาวร OpenClaw ปฏิบัติตามการแบ่งหน้าลูกหลานของ Codex และหยุดแบบปิดเมื่อเกิดข้อผิดพลาดในการแจกแจง วงจร หรือใช้ขีดจำกัดความปลอดภัยจนหมด การยืนยันยังคงครอบคลุมไคลเอนต์แบบเนทีฟที่ไม่รู้จักและภาวะแข่งขันระหว่างสถานะกับการเก็บถาวร ไม่สามารถลบแชตที่ล็อกกับโมเดลภายใต้การกำกับดูแลได้ ขณะที่แชตนั้นปกป้องการผูกแบบเนทีฟ ต้นทางที่ทำงานอยู่ไม่สามารถสร้างสาขาหรือถูกเก็บถาวรได้ แต่ยังสามารถเปิดแชตภายใต้การกำกับดูแลที่มีอยู่ได้ ทุกแถวของ Node ที่จับคู่จะเป็นแบบอ่านอย่างเดียว การรับส่งข้อมูลของ Node ยังไม่รองรับวงจรการทำงานแบบสตรีมที่ชุดควบคุมต้องใช้

appServer.homeScope: "user" เพียงอย่างเดียวจะเปลี่ยนโฮม Codex ที่โพรเซสชุดควบคุม ที่ได้รับการจัดการใช้ แต่ไม่ได้เผยแพร่แค็ตตาล็อกกลุ่มระบบ การเปิดใช้งานการกำกับดูแล ไม่เปลี่ยนค่าเริ่มต้นของชุดควบคุม แต่การเชื่อมต่อสำหรับการกำกับดูแลที่แยกต่างหาก จะใช้ stdio ในโฮมของผู้ใช้ที่ได้รับการจัดการเป็นค่าเริ่มต้น เมื่อไม่มีการตั้งค่าการเชื่อมต่อ appServer อย่างชัดเจน การตั้งค่าที่ระบุอย่างชัดเจนจะถูกใช้กับการเชื่อมต่อนั้น การผูกภายใต้การกำกับดูแลทั้งที่รอดำเนินการและยืนยันแล้วจะคงการเชื่อมต่อนั้นไว้สำหรับทุก ๆ รอบ หากปิดใช้งานการกำกับดูแลหรือเกิดความคลาดเคลื่อนของการเชื่อมต่อ/วงจรการทำงาน ระบบจะหยุดแบบปิดแทน ที่จะย้อนกลับไปใช้ชุดควบคุมในโฮมของเอเจนต์ การเชื่อมต่อเริ่มต้นใช้เซสชันที่จัดเก็บร่วมกับไคลเอนต์ Codex แบบเนทีฟ แต่ไม่ใช้สถานะกิจกรรมภายในโพรเซสของไคลเอนต์เหล่านั้นร่วมกัน

การตั้งค่า plugins.entries.codex-supervisor แบบเดิมถูกยกเลิกแล้ว เรียกใช้ openclaw doctor --fix เพื่อย้ายรายการเดิม คำจำกัดความปลายทาง แฟล็กนโยบาย และการอ้างอิงรายการอนุญาต/ปฏิเสธของ Plugin มายังบล็อกนี้ ค่า codex.config.supervision แบบมาตรฐานที่ระบุอย่างชัดเจนจะมีลำดับความสำคัญเมื่อเกิดข้อขัดแย้ง

การรับส่งข้อมูลของ app-server

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

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,          },        },      },    },  },}

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

ฟิลด์ appServer:

ฟิลด์ ค่าเริ่มต้น ความหมาย
transport "stdio" "stdio" เรียกใช้ Codex; การระบุ "unix" จะเชื่อมต่อกับซ็อกเก็ตควบคุมภายในเครื่อง; "websocket" จะเชื่อมต่อกับ url
homeScope "agent" "agent" แยกสถานะทั่วไปของชุดทดสอบสำหรับเอเจนต์ OpenClaw แต่ละตัว "user" เป็นการเลือกใช้อย่างชัดเจนเพื่อแชร์ $CODEX_HOME หรือ ~/.codex แบบเนทีฟ ใช้การยืนยันตัวตนแบบเนทีฟ และเปิดใช้การจัดการเธรดเฉพาะเจ้าของ ขอบเขตผู้ใช้รองรับ stdio ภายในเครื่องหรือการรับส่งผ่าน Unix สำหรับการเชื่อมต่อกำกับดูแลแยกต่างหาก หากไม่ได้ตั้งค่า ระบบจะใช้ "user" สำหรับ stdio หรือ Unix และ "agent" สำหรับ WebSocket
command ไบนารี Codex ที่มีการจัดการ ไฟล์ปฏิบัติการสำหรับการรับส่งผ่าน stdio เว้นว่างไว้เพื่อใช้ไบนารีที่มีการจัดการ
args ["app-server", "--listen", "stdio://"] อาร์กิวเมนต์สำหรับการรับส่งผ่าน stdio
url ไม่ได้ตั้งค่า URL ของ App Server ผ่าน WebSocket หรือ URL unix:// การระบุพาธ Unix ว่างอย่างชัดเจนจะเลือกซ็อกเก็ตควบคุมมาตรฐานในโฮมของผู้ใช้
authToken ไม่ได้ตั้งค่า โทเค็น Bearer สำหรับการรับส่งผ่าน WebSocket รองรับสตริงลิเทอรัลหรือ SecretInput เช่น ${CODEX_APP_SERVER_TOKEN}
headers {} ส่วนหัว WebSocket เพิ่มเติม ค่าส่วนหัวรองรับสตริงลิเทอรัลหรือค่า SecretInput เช่น x-codex-client-session-token: "${CODEX_CLIENT_SESSION_TOKEN}"
clearEnv [] ชื่อตัวแปรสภาพแวดล้อมเพิ่มเติมที่จะถูกนำออกจากโปรเซส app-server แบบ stdio ที่เรียกใช้ หลังจาก OpenClaw สร้างสภาพแวดล้อมที่สืบทอดมาแล้ว
remoteWorkspaceRoot ไม่ได้ตั้งค่า รูทเวิร์กสเปซของ Codex app-server ระยะไกล เมื่อตั้งค่า OpenClaw จะอนุมานรูทเวิร์กสเปซภายในเครื่องจากเวิร์กสเปซ OpenClaw ที่แก้ไขแล้ว รักษาส่วนต่อท้าย cwd ปัจจุบันไว้ภายใต้รูทระยะไกลนี้ และส่งเฉพาะ cwd สุดท้ายของ app-server ไปยัง Codex หาก cwd อยู่นอกรูทเวิร์กสเปซ OpenClaw ที่แก้ไขแล้ว OpenClaw จะปฏิเสธอย่างปลอดภัยแทนการส่งพาธภายใน Gateway ไปยัง app-server ระยะไกล
loopDetectionPreToolUseRelay true ติดตั้งโปรเซสย่อย PreToolUse ของ Codex ซึ่งใช้เฉพาะสำหรับการตรวจจับลูปของ OpenClaw และมาร์กเกอร์ไม่มีนโยบายที่ระบุอย่างชัดเจน ตั้งค่า false เพื่อลดการแตกแขนงโปรเซสต่อเครื่องมือ ฮุก Plugin ก่อนเรียกเครื่องมือและนโยบายเครื่องมือที่เชื่อถือได้จะยังคงติดตั้งรีเลย์ที่จำเป็น
requestTimeoutMs 60000 ระยะหมดเวลาสำหรับการเรียกใช้ระนาบควบคุมของ app-server
turnCompletionIdleTimeoutMs 60000 ช่วงเวลาสงบหลังจาก Codex ยอมรับเทิร์น หรือหลังจากคำขอ app-server ที่อยู่ในขอบเขตเทิร์น ขณะที่ OpenClaw รอ turn/completed
turnAssistantCompletionIdleTimeoutMs 10000 ช่วงเวลาสงบหลังจากรายการสุดท้ายของผู้ช่วย/รายการผู้ช่วยที่ไม่ใช่คำอธิบายประกอบ หรือหลังจากการทำงานของผู้ช่วยแบบดิบก่อนเรียกเครื่องมือเสร็จสิ้น ทำให้การปล่อยเอาต์พุตผู้ช่วยพร้อมทำงาน ขณะที่ OpenClaw ยังคงรอ turn/completed การเพิ่มค่านี้ช่วยให้ Codex มีเวลาส่ง turn/completed มากขึ้น ก่อนที่ OpenClaw จะขัดจังหวะและปล่อยเลนเซสชัน
postToolRawAssistantCompletionIdleTimeoutMs 300000 ตัวป้องกันภาวะว่างเมื่อเสร็จสิ้นและความคืบหน้า ซึ่งใช้หลังจากส่งต่องานให้เครื่องมือ การทำงานของเครื่องมือแบบเนทีฟเสร็จสิ้น ความคืบหน้าของผู้ช่วยแบบดิบหลังเรียกเครื่องมือ การให้เหตุผลแบบดิบเสร็จสิ้น หรือความคืบหน้าของการให้เหตุผล ขณะที่ OpenClaw รอ turn/completed ใช้ค่านี้สำหรับเวิร์กโหลดที่เชื่อถือได้หรือหนัก ซึ่งการสังเคราะห์หลังเรียกเครื่องมืออาจไม่มีเอาต์พุตได้นานกว่างบเวลาปล่อยผู้ช่วยขั้นสุดท้ายโดยสมเหตุสมผล
mode "yolo" เว้นแต่ข้อกำหนด Codex ภายในเครื่องไม่อนุญาต YOLO ค่าที่ตั้งไว้ล่วงหน้าสำหรับการดำเนินการแบบ YOLO หรือที่ผ่านการตรวจสอบโดยผู้พิทักษ์
approvalPolicy "never" หรือนโยบายการอนุมัติของผู้พิทักษ์ที่อนุญาต นโยบายการอนุมัติแบบเนทีฟของ Codex ที่ส่งเมื่อเริ่มเธรด ดำเนินเธรดต่อ และเริ่มเทิร์น
sandbox "danger-full-access" หรือแซนด์บ็อกซ์ของผู้พิทักษ์ที่อนุญาต โหมดแซนด์บ็อกซ์แบบเนทีฟของ Codex ที่ส่งเมื่อเริ่มเธรดและดำเนินเธรดต่อ แซนด์บ็อกซ์ OpenClaw ที่ทำงานอยู่จะจำกัดเทิร์น danger-full-access ให้เป็น workspace-write ของ Codex; แฟล็กเครือข่ายของเทิร์นจะเป็นไปตามการส่งข้อมูลขาออกของแซนด์บ็อกซ์ OpenClaw
approvalsReviewer "user" หรือผู้ตรวจสอบของผู้พิทักษ์ที่อนุญาต ใช้ "auto_review" เพื่อให้ Codex ตรวจสอบพรอมต์การอนุมัติแบบเนทีฟเมื่อได้รับอนุญาต
defaultWorkspaceDir ไดเรกทอรีของโปรเซสปัจจุบัน เวิร์กสเปซที่ /codex bind ใช้เมื่อไม่ได้ระบุ --cwd
serviceTier ไม่ได้ตั้งค่า ระดับบริการของ Codex app-server ที่ระบุหรือไม่ก็ได้ "priority" เปิดใช้การกำหนดเส้นทางโหมดเร็ว "flex" ร้องขอการประมวลผลแบบยืดหยุ่น และ null ล้างค่าที่เขียนทับ ระบบรองรับ "fast" แบบเดิมในฐานะ "priority"
networkProxy ปิดใช้งาน เลือกใช้เครือข่ายตามโปรไฟล์สิทธิ์ของ Codex สำหรับคำสั่ง app-server OpenClaw กำหนดค่ากำหนด permissions.<profile>.network ที่เลือก และเลือกค่านั้นด้วย default_permissions แทนการส่ง sandbox
experimental.sandboxExecServer false การเลือกเข้าร่วมฟีเจอร์ตัวอย่างที่ลงทะเบียนสภาพแวดล้อม Codex ซึ่งใช้แซนด์บ็อกซ์ของ OpenClaw กับเซิร์ฟเวอร์แอป Codex ที่รองรับ เพื่อให้การเรียกใช้ Codex แบบเนทีฟสามารถทำงานภายในแซนด์บ็อกซ์ OpenClaw ที่ใช้งานอยู่ได้

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

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 จัดการเป็นเครือข่าย ใน sandbox ดังนั้นโปรไฟล์ที่เข้าถึงได้เต็มรูปแบบจะไม่ปกป้องทราฟฟิกขาออก

Plugin จะบล็อกการจับมือของ app-server ที่เก่ากว่า ใหม่กว่าแต่ยังไม่ผ่านการตรวจสอบ เป็นรุ่นก่อนเผยแพร่ มีส่วนต่อท้ายของบิลด์ หรือไม่ระบุเวอร์ชัน Codex app-server ต้องรายงานเวอร์ชันเสถียรตั้งแต่ 0.143.0 จนถึง 0.144.6 ที่มาพร้อมกัน

OpenClaw ถือว่า URL ของ WebSocket app-server ที่ไม่ใช่ loopback เป็นระยะไกล และกำหนดให้ใช้ การยืนยันตัวตน WebSocket ที่มีข้อมูลระบุตัวตนผ่าน appServer.authToken หรือส่วนหัว Authorization ค่า appServer.authToken และค่า appServer.headers.* แต่ละค่าสามารถเป็น SecretInput ได้ รันไทม์ข้อมูลลับจะแก้ไข SecretRef และรูปแบบย่อของ env ก่อนที่ OpenClaw จะสร้างตัวเลือกการเริ่มต้น app-server และ SecretRef แบบมีโครงสร้างที่แก้ไขไม่ได้ จะทำให้ล้มเหลวก่อนส่งโทเค็นหรือส่วนหัวใด ๆ เมื่อกำหนดค่า Plugin ดั้งเดิมของ Codex OpenClaw จะใช้ระนาบควบคุม Plugin ของ app-server ที่เชื่อมต่ออยู่เพื่อติดตั้งหรือรีเฟรช Plugin เหล่านั้น จากนั้นรีเฟรชรายการแอปเพื่อให้แอปที่ Plugin เป็นเจ้าของปรากฏต่อเธรด Codex app/list ยังคงเป็นแหล่งข้อมูลรายการและข้อมูลเมตาที่มีอำนาจ แต่นโยบาย OpenClaw จะตัดสินว่า thread/start ส่ง config.apps[appId].enabled = true สำหรับแอปที่เข้าถึงได้ซึ่งอยู่ในรายการหรือไม่ แม้ปัจจุบัน Codex จะระบุว่าแอปนั้นปิดใช้งาน ID แอปที่ไม่รู้จักหรือไม่มีอยู่จะยังคงล้มเหลวแบบปิด เส้นทางนี้เพียงเปิดใช้งาน Plugin จากมาร์เก็ตเพลสผ่าน plugin/install และรีเฟรชรายการเท่านั้น เชื่อมต่อ OpenClaw กับ app-server ระยะไกลที่เชื่อถือได้ว่ายอมรับการติดตั้ง Plugin ที่ OpenClaw จัดการ และการรีเฟรชรายการแอปเท่านั้น

โหมดการอนุมัติและ sandbox

เซสชัน stdio app-server ภายในเครื่องใช้โหมด YOLO เป็นค่าเริ่มต้น: approvalPolicy: "never", approvalsReviewer: "user" และ sandbox: "danger-full-access" แนวทางสำหรับผู้ดำเนินการภายในเครื่องที่เชื่อถือได้นี้ช่วยให้ รอบการทำงานและ Heartbeat ของ OpenClaw ที่ไม่มีผู้ดูแลดำเนินต่อไปได้ โดยไม่แสดงพรอมต์ การอนุมัติดั้งเดิมที่ไม่มีใครอยู่ตอบ

หากไฟล์ข้อกำหนดระบบภายในเครื่องของ Codex ไม่อนุญาตค่าการอนุมัติ YOLO ผู้ตรวจสอบ หรือ sandbox โดยปริยาย OpenClaw จะถือว่าค่าเริ่มต้นโดยปริยายเป็น guardian แทน และเลือกสิทธิ์ guardian ที่อนุญาต tools.exec.mode: "auto" ยังบังคับใช้การอนุมัติ Codex ที่ผ่านการตรวจสอบโดย guardian และไม่เก็บค่าการแทนที่ approvalPolicy: "never" หรือ sandbox: "danger-full-access" แบบเดิมที่ไม่ปลอดภัยไว้ ให้ตั้งค่า tools.exec.mode: "full" เมื่อตั้งใจใช้แนวทางที่ไม่มีการอนุมัติ รายการ [[remote_sandbox_config]] ที่ตรงกับชื่อโฮสต์ในไฟล์ข้อกำหนดเดียวกัน จะถูกนำมาใช้ประกอบการตัดสินใจค่าเริ่มต้นของ sandbox

ตั้งค่า appServer.mode: "guardian" สำหรับการอนุมัติ Codex ที่ผ่านการตรวจสอบโดย guardian:

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

เมื่อ sandbox ของ OpenClaw ทำงาน กระบวนการ Codex app-server ภายในเครื่องยังคง ทำงานบนโฮสต์ Gateway ดังนั้น OpenClaw จะปิดใช้งาน Code Mode ดั้งเดิมของ Codex, เซิร์ฟเวอร์ MCP ของผู้ใช้ และการเรียกใช้ Plugin ที่มีแอปรองรับสำหรับรอบการทำงานนั้น แทนที่จะถือว่า sandbox ฝั่งโฮสต์ของ Codex เทียบเท่ากับแบ็กเอนด์ sandbox ของ OpenClaw การเข้าถึงเชลล์จะเปิดให้ใช้ผ่านเครื่องมือแบบไดนามิกที่มี sandbox ของ OpenClaw รองรับ เช่น sandbox_exec และ sandbox_process เมื่อมีเครื่องมือ exec/process ปกติ

การเรียกใช้แบบดั้งเดิมใน sandbox

ค่าเริ่มต้นที่เสถียรคือล้มเหลวแบบปิด: sandbox ของ OpenClaw ที่ทำงานอยู่จะปิดใช้งาน พื้นผิวการเรียกใช้ Codex แบบดั้งเดิม ซึ่งมิฉะนั้นจะทำงานจากโฮสต์ Codex app-server ใช้ appServer.experimental.sandboxExecServer: true เฉพาะเมื่อต้องการทดลองใช้การรองรับสภาพแวดล้อมระยะไกล ของ Codex กับแบ็กเอนด์ sandbox ของ OpenClaw เส้นทางตัวอย่างนี้ใช้ได้กับ Codex app-server ทุกเวอร์ชันที่รองรับ

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

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

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

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

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

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

การเริ่ม app-server แบบ stdio จะสืบทอดสภาพแวดล้อมกระบวนการของ OpenClaw โดยค่าเริ่มต้น OpenClaw เป็นเจ้าของบริดจ์บัญชี Codex app-server และตั้งค่า CODEX_HOME เป็นไดเรกทอรีต่อเอเจนต์ภายใต้สถานะ OpenClaw ของเอเจนต์นั้น วิธีนี้ทำให้การกำหนดค่า บัญชี แคช/ข้อมูล Plugin และสถานะเธรดของ Codex จำกัดขอบเขตอยู่ที่เอเจนต์ OpenClaw แทนที่จะรั่วไหลมาจากโฮม ~/.codex ส่วนบุคคลของผู้ดำเนินการ

ตั้งค่า appServer.homeScope: "user" เพื่อแชร์สถานะ Codex แบบดั้งเดิมกับ Codex Desktop และ CLI โหมดโฮมผู้ใช้ภายในเครื่องนี้รองรับ stdio ที่มีการจัดการ และการรับส่งผ่าน Unix ที่ระบุไว้อย่างชัดเจน โดยใช้ $CODEX_HOME เมื่อตั้งค่าไว้ และใช้ ~/.codex ในกรณีอื่น รวมถึงการยืนยันตัวตน การกำหนดค่า Plugin และเธรดแบบดั้งเดิม OpenClaw จะข้ามบริดจ์โปรไฟล์การยืนยันตัวตนสำหรับ app-server รอบการทำงานของเจ้าของที่ผ่านการตรวจสอบสามารถใช้ codex_threads เพื่อแสดงรายการ (พร้อมตัวกรอง search ที่เป็นทางเลือก) อ่าน fork เปลี่ยนชื่อ เก็บถาวร และยกเลิกการเก็บถาวรเธรดเหล่านั้น ให้ fork เธรดก่อนทำงานต่อใน OpenClaw กระบวนการ Codex ที่แยกจากกันจะไม่ประสานงานผู้เขียนพร้อมกันสำหรับเธรดเดียวกัน

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

ใน Chat ภายใต้การกำกับดูแลที่ล็อกโมเดลไว้ codex_threads ไม่สามารถแนบ fork อื่น หรือเก็บเธรดแบบดั้งเดิมที่ผูกกับ Chat ไว้ถาวรได้ การแสดงรายการและการอ่านเฉพาะข้อมูลเมตา ยังคงใช้ได้ การอ่านทรานสคริปต์ดิบต้องใช้ allowRawTranscripts เมื่อปิดใช้งาน การค้นหารายการจะถูกปฏิเสธด้วย เนื่องจากการค้นหาแบบดั้งเดิมสามารถจับคู่กับตัวอย่าง ทรานสคริปต์ได้ การเปลี่ยนชื่อ การยกเลิกการเก็บถาวร การ fork แบบแยกออก และการเก็บถาวรเธรดที่ไม่เกี่ยวข้องซึ่ง Chat อื่นของ OpenClaw ไม่ได้เป็นเจ้าของ ต้องใช้ allowWriteControls ตัวเลือกทั้งสองไม่สามารถข้ามการผูกที่ล็อกไว้ได้

OpenClaw จะไม่เขียน HOME ใหม่สำหรับการเริ่ม app-server ภายในเครื่องตามปกติ กระบวนการย่อยที่ Codex เรียกใช้ เช่น openclaw, gh, git, CLI ระบบคลาวด์ และคำสั่งเชลล์ จะเห็นโฮมกระบวนการตามปกติ และสามารถค้นหาการกำหนดค่าและโทเค็นในโฮมผู้ใช้ได้ Codex อาจค้นพบ $HOME/.agents/skills และ $HOME/.agents/plugins/marketplace.json ด้วย การค้นพบ .agents ดังกล่าวตั้งใจให้แชร์กับโฮมของผู้ดำเนินการ และแยกจากสถานะ ~/.codex ที่ถูกแยกไว้

ในขอบเขตเอเจนต์เริ่มต้น Plugin ของ OpenClaw และสแนปช็อต Skills ของ OpenClaw ยังคงไหลผ่านรีจิสทรี Plugin และตัวโหลด Skills ของ OpenClaw เอง แต่แอสเซ็ต ~/.codex ส่วนบุคคลของ Codex จะไม่ไหลผ่าน หากมี Skills ของ Codex CLI หรือ Plugin จากโฮม Codex ที่มีประโยชน์และควรเป็นส่วนหนึ่งของเอเจนต์ OpenClaw ที่แยกไว้ ให้จัดทำรายการอย่างชัดเจน:

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 เป็นค่าเริ่มต้น โดยเปิดให้ใช้ภายใต้ namespace 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 จะส่งการเลือกสภาพแวดล้อมการเรียกใช้ที่ว่างเปล่า ในกรณีโดยตรงที่ไม่มี sandbox ดังกล่าว OpenClaw จะเก็บเครื่องมือ exec และ process ที่ผ่านการกรองตามนโยบายไว้เป็นทางเลือกสำรองของเชลล์ รายการอนุญาตของรันไทม์ และ codexDynamicToolsExclude ยังคงมีผลบังคับใช้

เครื่องมือการผสานรวม OpenClaw ส่วนใหญ่ที่เหลือ เช่น การส่งข้อความ สื่อ Cron เบราว์เซอร์ Node ต่างๆ Gateway, heartbeat_respond และ web_search พร้อมใช้งาน ผ่านการค้นหาเครื่องมือของ Codex ภายใต้เนมสเปซดังกล่าว วิธีนี้ช่วยลดขนาดบริบท เริ่มต้นของโมเดล เครื่องมือชุดเล็กบางส่วนยังคงเรียกใช้ได้โดยตรงโดยไม่คำนึงถึง codexDynamicToolsLoading เนื่องจากการค้นหาเครื่องมือของ Codex อาจไม่พร้อมใช้งานหรือ อาจพบเฉพาะขอบเขตที่มีแต่ตัวเชื่อมต่อ ได้แก่ agents_list, sessions_spawn และ sessions_yield คำสั่งสำหรับนักพัฒนายังคงชี้นำซับเอเจนต์ Codex ตามปกติ ให้ใช้ spawn_agent แบบเนทีฟสำหรับงานซับเอเจนต์ที่เป็นเนทีฟของ Codex ขณะที่ sessions_spawn ยังคงพร้อมใช้งานสำหรับการมอบหมายงานให้ OpenClaw หรือ ACP อย่างชัดเจน การตอบกลับต้นทางที่ใช้เฉพาะเครื่องมือข้อความยังคงเป็นแบบโดยตรงเช่นกัน เนื่องจากเป็น สัญญาการควบคุมรอบการทำงาน

เครื่องมือที่ทำเครื่องหมาย catalogMode: "direct-only" รวมถึงเครื่องมือ OpenClaw computer จะถูกจัดกลุ่มภายใต้ openclaw_direct โดย OpenClaw จะเพิ่มเนมสเปซดังกล่าวลงใน รายการ code_mode.direct_only_tool_namespaces ของ Codex โดยไม่แทนที่ รายการที่ผู้ปฏิบัติงานระบุไว้ ดังนั้น Codex จึงเปิดเผยเครื่องมือเหล่านั้นเป็น DirectModelOnly ในเธรดปกติและเธรดที่ใช้เฉพาะโหมดโค้ด แทนที่จะกำหนดเส้นทาง ผ่านการเรียก tools.* ของ Code Mode ที่ซ้อนกัน ขอบเขตนี้จำเป็นสำหรับ ผลลัพธ์ที่มีรูปภาพ เนื่องจากการทำให้เป็นอนุกรมของ Code Mode ที่ซ้อนกันจะแปลงเอาต์พุตรูปภาพ ให้เป็นข้อความ ซึ่งจะทำให้ภาพหน้าจอที่จำเป็นสำหรับการดำเนินการกับคอมพิวเตอร์ครั้งถัดไปสูญหาย

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

การหมดเวลา

การเรียกเครื่องมือแบบไดนามิกที่ OpenClaw เป็นเจ้าของจะถูกจำกัดเวลาแยกจาก appServer.requestTimeoutMs คำขอ item/tool/call แต่ละรายการของ Codex จะใช้ ค่าหมดเวลาแรกที่มีอยู่ตามลำดับต่อไปนี้:

  • อาร์กิวเมนต์ timeoutMs ต่อการเรียกที่มีค่าเป็นบวก
  • สำหรับ image_generate ให้ใช้ agents.defaults.imageGenerationModel.timeoutMs
  • สำหรับ image_generate ที่ไม่ได้กำหนดค่าหมดเวลา ให้ใช้ค่าเริ่มต้น สำหรับการสร้างรูปภาพ 120 วินาที
  • สำหรับเครื่องมือทำความเข้าใจสื่อ image ให้ใช้ tools.media.image.timeoutSeconds ที่แปลงเป็นมิลลิวินาที หรือค่าเริ่มต้นสำหรับสื่อ 60 วินาที สำหรับการทำความเข้าใจ รูปภาพ ค่านี้ใช้กับตัวคำขอเองและจะไม่ถูกลดลงจาก งานเตรียมการก่อนหน้า
  • สำหรับเครื่องมือ message ให้ใช้ค่าเริ่มต้นคงที่ 120 วินาที
  • ค่าเริ่มต้นสำหรับเครื่องมือแบบไดนามิก 90 วินาที

ตัวเฝ้าระวังนี้เป็นงบประมาณ item/tool/call แบบไดนามิกชั้นนอก ค่าหมดเวลา ของคำขอเฉพาะผู้ให้บริการจะทำงานภายในการเรียกนั้นและคงความหมายของการหมดเวลาของตนเองไว้ งบประมาณของเครื่องมือแบบไดนามิกถูกจำกัดสูงสุดที่ 600000 ms เมื่อหมดเวลา OpenClaw จะยกเลิก สัญญาณของเครื่องมือในกรณีที่รองรับ และส่งการตอบกลับเครื่องมือแบบไดนามิกที่ล้มเหลวกลับไปยัง Codex เพื่อให้รอบการทำงานดำเนินต่อไปได้ แทนที่จะปล่อยให้เซสชันค้างอยู่ใน processing

หลังจาก Codex ยอมรับรอบการทำงาน และหลังจาก OpenClaw ตอบกลับคำขอของ เซิร์ฟเวอร์แอปที่มีขอบเขตเฉพาะรอบการทำงานแล้ว ชุดควบคุมคาดว่า Codex จะดำเนินงานในรอบปัจจุบัน ต่อไป และสิ้นสุดรอบการทำงานแบบเนทีฟด้วย turn/completed ในท้ายที่สุด หาก เซิร์ฟเวอร์แอปไม่มีความเคลื่อนไหวเป็นเวลา appServer.turnCompletionIdleTimeoutMs OpenClaw จะ พยายามขัดจังหวะรอบการทำงานของ Codex บันทึกการหมดเวลาเพื่อการวินิจฉัย และ ปล่อยเลนเซสชัน OpenClaw เพื่อไม่ให้ข้อความแชตที่ตามมาต้องเข้าคิว ต่อท้ายรอบการทำงานแบบเนทีฟที่ค้างอยู่

การแจ้งเตือนที่ยังไม่สิ้นสุดส่วนใหญ่สำหรับรอบการทำงานเดียวกันจะยกเลิกตัวเฝ้าระวังระยะสั้นนั้น เนื่องจาก Codex แสดงให้เห็นแล้วว่ารอบการทำงานยังทำงานอยู่ การส่งต่องานให้เครื่องมือจะใช้งบประมาณ ช่วงว่างหลังใช้เครื่องมือที่ยาวกว่า กล่าวคือ หลังจาก OpenClaw ส่งคืนการตอบกลับ item/tool/call หลังจากรายการเครื่องมือแบบเนทีฟ เช่น commandExecution ทำงานเสร็จ หลังจาก การทำงาน custom_tool_call_output แบบดิบเสร็จสิ้น และหลังจากความคืบหน้าของผู้ช่วยแบบดิบ หลังใช้เครื่องมือ การให้เหตุผลแบบดิบเสร็จสิ้น หรือความคืบหน้าของการให้เหตุผล ตัวป้องกันจะใช้ appServer.postToolRawAssistantCompletionIdleTimeoutMs เมื่อมีการกำหนดค่าไว้ และ ใช้ค่าเริ่มต้นเป็นห้านาทีในกรณีอื่น งบประมาณหลังใช้เครื่องมือเดียวกันนี้ยังขยาย ตัวเฝ้าระวังความคืบหน้าสำหรับช่วงสังเคราะห์แบบเงียบก่อนที่ Codex จะส่งเหตุการณ์ ถัดไปของรอบปัจจุบัน การให้เหตุผลที่เสร็จสิ้น การทำ agentMessage ในส่วนคำอธิบายประกอบเสร็จสิ้น และความคืบหน้าของการให้เหตุผลหรือผู้ช่วยแบบดิบก่อนใช้เครื่องมือ อาจตามด้วยการตอบกลับสุดท้ายโดยอัตโนมัติ จึงใช้ตัวป้องกันการตอบกลับหลังมีความคืบหน้า แทนการปล่อยเลนเซสชันทันที เฉพาะรายการ agentMessage ที่เสร็จสิ้น แบบสุดท้าย/ไม่ใช่คำอธิบายประกอบ และการทำงานของผู้ช่วยแบบดิบก่อนใช้เครื่องมือที่เสร็จสิ้นเท่านั้น ที่จะเปิดใช้การปล่อยเอาต์พุตของผู้ช่วย หากหลังจากนั้น Codex ไม่มีความเคลื่อนไหวโดยไม่มี turn/completed OpenClaw จะพยายามขัดจังหวะรอบการทำงานแบบเนทีฟและปล่อย เลนเซสชัน ความล้มเหลวของเซิร์ฟเวอร์แอป stdio ที่เล่นซ้ำได้อย่างปลอดภัย รวมถึงการหมดเวลาจาก การไม่มีความเคลื่อนไหวระหว่างรอรอบการทำงานเสร็จ โดยไม่มีหลักฐานจากผู้ช่วย เครื่องมือ รายการที่กำลังทำงาน หรือผลข้างเคียง จะถูกลองใหม่หนึ่งครั้งด้วยเซิร์ฟเวอร์แอปชุดใหม่ การหมดเวลาที่ไม่ปลอดภัยจะยังคงยุติไคลเอนต์เซิร์ฟเวอร์แอปที่ค้างและปล่อยเลนเซสชัน OpenClaw อีกทั้งยังล้างการผูกเธรดแบบเนทีฟที่ค้าง แทนที่จะเล่นซ้ำ โดยอัตโนมัติ การหมดเวลาของการเฝ้าดูการเสร็จสิ้นจะแสดงข้อความหมดเวลาเฉพาะ Codex: กรณีที่เล่นซ้ำได้อย่างปลอดภัยจะแจ้งว่าการตอบกลับอาจไม่สมบูรณ์ ส่วนกรณีที่ไม่ปลอดภัยจะแจ้ง ให้ผู้ใช้ตรวจสอบสถานะปัจจุบันก่อนลองใหม่ ข้อมูลวินิจฉัยการหมดเวลาสาธารณะ ประกอบด้วยฟิลด์เชิงโครงสร้าง เช่น เมธอดการแจ้งเตือนล่าสุดของเซิร์ฟเวอร์แอป รหัส/ประเภท/บทบาทของรายการการตอบกลับแบบดิบจากผู้ช่วย จำนวนคำขอ/รายการที่กำลังทำงาน และ สถานะการเฝ้าดูที่เปิดใช้อยู่ เมื่อการแจ้งเตือนล่าสุดเป็นรายการการตอบกลับแบบดิบจากผู้ช่วย ข้อมูลดังกล่าวจะรวมตัวอย่างข้อความของผู้ช่วยที่จำกัดขนาดไว้ด้วย แต่จะไม่ รวมพรอมต์ดิบหรือเนื้อหาเครื่องมือ

การค้นหาโมเดล

โดยค่าเริ่มต้น Plugin Codex จะขอรายการโมเดลที่พร้อมใช้งานจากเซิร์ฟเวอร์แอป ความพร้อมใช้งาน ของโมเดลอยู่ภายใต้การควบคุมของเซิร์ฟเวอร์แอป Codex ดังนั้นรายการอาจเปลี่ยนแปลงเมื่อ OpenClaw อัปเกรดเวอร์ชัน @openai/codex ที่รวมมาให้ หรือเมื่อการติดตั้งใช้งาน กำหนดให้ appServer.command ชี้ไปยังไบนารี Codex อื่น ความพร้อมใช้งานอาจ จำกัดตามบัญชีด้วย ใช้ /codex models บน Gateway ที่กำลังทำงานเพื่อดูแค็ตตาล็อกปัจจุบัน สำหรับชุดควบคุมและบัญชีนั้น

หากการค้นหาล้มเหลวหรือหมดเวลา OpenClaw จะใช้แค็ตตาล็อกสำรองที่รวมมาให้:

รหัสโมเดล ชื่อที่แสดง ระดับการให้เหตุผล
gpt-5.5 gpt-5.5 low, medium, high, xhigh
gpt-5.4-mini GPT-5.4-Mini low, medium, high, xhigh

ปรับแต่งการค้นหาภายใต้ plugins.entries.codex.config.discovery:

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