Plugin guides
กำกับดูแลเซสชัน Codex
การกำกับดูแล Codex เป็นความสามารถแบบเลือกใช้ของ Plugin codex อย่างเป็นทางการ โดยจะแสดงเซสชันต้นทางที่ไม่ถูกเก็บถาวรจาก Codex CLI, VS Code, Atlas และ ChatGPT ของคอมพิวเตอร์ Gateway และคอมพิวเตอร์ที่จับคู่ซึ่งเลือกใช้ความสามารถนี้ ในแถบด้านข้างของเซสชันและบานหน้าต่างแชทตามปกติ
รุ่นแรกตั้งใจจำกัดขอบเขตความเป็นเจ้าของไว้ดังนี้:
- เซสชันภายในเครื่องที่จัดเก็บไว้หรือไม่ได้ใช้งานสามารถสร้างแชท OpenClaw ที่ล็อกโมเดลจากประวัติผู้ใช้และผู้ช่วยที่คงอยู่ถาวรภายในขอบเขตได้ ข้อความแรกจะเริ่มการแยกสแนปช็อตแบบเนทีฟ จากนั้นเริ่มเธรดชุดควบคุม Codex แบบเต็มด้วยโมเดลและผู้ให้บริการที่ Codex App Server เลือกไว้สำหรับการแยกนั้นอย่างตรงกันทุกประการ เทิร์นถัดไปจะกู้คืนคู่ค่าที่คงอยู่ถาวรของเธรดเนทีฟมาตรฐาน ขณะที่การเชื่อมโยงภายใต้การกำกับดูแลจะป้องกันไม่ให้ OpenClaw แทนที่ด้วยรันไทม์ โมเดล หรือทางเลือกสำรองอื่น ส่วนการควบคุม Codex แบบเนทีฟที่แยกต่างหากยังคงเปลี่ยนคู่ค่าที่คงอยู่ถาวรนั้นได้ สาขาที่สร้างไว้แล้วจะเปิดแชทเดิมของสาขานั้น
- เซสชันที่จัดเก็บไว้ซึ่งค้นพบจากกระบวนการ Codex อื่นจะมีสถานะกิจกรรมสดที่ไม่ทราบแน่ชัด สามารถสร้างสาขาจากเซสชันนั้นได้ หรือจะเก็บถาวรได้ก็ต่อเมื่อผู้ดำเนินการยืนยันว่าไม่มีไคลเอนต์ Codex อื่นกำลังใช้งานอยู่
- ต้นทางที่กำลังทำงานจะยังคงมองเห็นได้ แต่ไม่สามารถสร้างสาขาหรือเก็บถาวรได้จนกว่าเทิร์นปัจจุบันจะเสร็จสิ้น หากมีแชทภายใต้การกำกับดูแลอยู่แล้ว เปิดแชท จะยังคงใช้งานได้
- เซสชันบน Node ที่จับคู่จะเปิดเผยทรานสคริปต์ที่คงอยู่ถาวรผ่านการอ่านจาก App Server ที่จำกัดขอบเขตและแบ่งหน้าโดยใช้เคอร์เซอร์ การดำเนินการต่อจากระยะไกลต้องใช้บริดจ์ Node แบบสตรีมมิงในอนาคต ส่วนการเก็บถาวรจากระยะไกลยังต้องใช้ลีสความเป็นเจ้าของรันเนอร์หรือกลไกกั้นที่เทียบเท่า
- เซสชันที่เก็บถาวรแล้วจะไม่แสดงในรายการ เซสชันภายในเครื่องที่จัดเก็บไว้หรือไม่ได้ใช้งานจะเก็บถาวรได้ก็ต่อเมื่อผู้ดำเนินการยืนยันว่าไม่มีไคลเอนต์ Codex อื่นกำลังใช้งานอยู่
ก่อนเริ่มต้น
- ติดตั้ง Plugin
@openclaw/codexอย่างเป็นทางการบน Gateway แอป OpenClaw สำหรับ macOS สามารถติดตั้งให้ได้เมื่อเปิดใช้ฟีเจอร์ Codex ส่วนการติดตั้งผ่าน CLI สามารถเรียกใช้openclaw plugins install @openclaw/codex - ติดตั้งและลงชื่อเข้าใช้ Codex Desktop หรือ Codex CLI บนคอมพิวเตอร์แต่ละเครื่องที่ต้องการแสดงเซสชัน
- จับคู่คอมพิวเตอร์ระยะไกลเป็น Node ของ OpenClaw คอมพิวเตอร์แต่ละเครื่องต้องเลือกใช้ภายในเครื่อง การเปิดใช้การกำกับดูแลเฉพาะบน Gateway ไม่ได้ให้สิทธิ์แก่ Node อื่น
- ใช้ Gateway ที่เจ้าของควบคุม ชื่อเซสชัน ไดเรกทอรีทำงาน และสาขา Git อาจเปิดเผยข้อมูลโครงการที่ละเอียดอ่อน
เปิดใช้การกำกับดูแล
การตั้งค่า openclaw onboard แบบมีคำแนะนำและการตั้งค่าเมื่อเรียกใช้ macOS ครั้งแรกจะพยายามติดตั้งและเปิดใช้การกำกับดูแล Codex หลังจากตรวจพบการติดตั้ง Codex แบบเนทีฟและเปิดใช้งานแบ็กเอนด์การอนุมานที่เลือกสำเร็จแล้ว Codex ไม่จำเป็นต้องเป็นแบ็กเอนด์หลัก การกำกับดูแลจะพร้อมใช้งานเมื่อการเปิดใช้งาน Plugin ตามโอกาสดังกล่าวสำเร็จ ระบบจะตรวจสอบความพร้อมใช้งานของ App Server เมื่อการกำกับดูแลเชื่อมต่อเป็นครั้งแรก การปิดใช้ Plugin Codex อย่างชัดเจนหรือการบล็อกด้วยนโยบายจะป้องกันการเปิดใช้งานตามโอกาส และ supervision.enabled: false ที่ตั้งไว้อย่างชัดเจนอยู่แล้วจะปิดใช้เครื่องมือการกำกับดูแลที่เอเจนต์เข้าถึงได้ แค็ตตาล็อกผู้ดำเนินการจะยังคงลงทะเบียนอยู่ทุกครั้งที่ Plugin Codex ทำงาน เว้นแต่ sessionCatalog.enabled: false จะปิดใช้ สวิตช์แยกนี้จะคงผู้ให้บริการ Codex ชุดควบคุม และนโยบายการกำกับดูแลที่เอเจนต์เข้าถึงได้ไว้โดยไม่เปลี่ยนแปลง พร้อมทั้งนำคำสั่งแสดงรายการ/อ่านแค็ตตาล็อกของ Node ที่จับคู่ออกจากโฮสต์นี้ด้วย การติดตั้งที่มีอยู่สามารถเปิดใช้ความสามารถเดียวกันด้วยตนเองได้ดังนี้:
เปิดใช้ Plugin codex และความสามารถด้านการกำกับดูแลใน openclaw.json:
{ plugins: { entries: { codex: { enabled: true, config: { supervision: { enabled: true, }, }, }, }, },}หากมี plugins.allow ให้รวม codex ด้วย รีสตาร์ต Gateway หลังเปลี่ยนการเปิดใช้งาน Plugin
เมื่อไม่มีการตั้งค่าการเชื่อมต่อ appServer อย่างชัดเจน การกำกับดูแลจะใช้การเชื่อมต่อการกำกับดูแล stdio ที่มีการจัดการแยกต่างหากกับโฮม Codex ของผู้ใช้แบบเนทีฟ โดยค่าเริ่มต้น ชุดควบคุม Codex ปกติจะยังคงจำกัดขอบเขตตามเอเจนต์ ซึ่งทำให้เซสชันแบบเนทีฟปรากฏในทั้งสองแอปโดยไม่ทำให้เทิร์น OpenClaw ปกติใช้สถานะ Codex แบบเนทีฟร่วมกัน ตั้งค่า appServer.homeScope: "user" อย่างชัดเจนหากต้องการให้ชุดควบคุมใช้สถานะนั้นร่วมกันด้วย การกำกับดูแลจะปฏิบัติตามการตั้งค่าการเชื่อมต่อ appServer ที่ระบุไว้อย่างชัดเจนแทนการแทนที่ด้วยค่าเริ่มต้นโฮมผู้ใช้ภายในเครื่อง
แชทที่รับมาจากกลุ่ม Codex ในแถบด้านข้างไม่ใช่เซสชันชุดควบคุมปกติ การเชื่อมโยงการกำกับดูแลส่วนตัวของแชทจะใช้การเชื่อมต่อการกำกับดูแลสำหรับการอ่านต้นทาง การสร้างสาขามาตรฐาน การแทรกประวัติ และทุกเทิร์นถัดไป เมื่อใช้การเชื่อมต่อภายในเครื่องเริ่มต้น วิธีนี้จะรักษาโฮม Codex ของผู้ใช้แบบเนทีฟ การตรวจสอบสิทธิ์ และการกำหนดค่าผู้ให้บริการไว้ โดยไม่เปลี่ยนค่าเริ่มต้นของเซสชันอื่น แชทที่รับมาและเฝ้าดูยังมีส่วนร่วมในการรับรู้สถานะเซสชันด้วย
สำหรับการเชื่อมต่อการกำกับดูแลภายในเครื่องเริ่มต้น ที่จัดเก็บข้อมูลจะใช้ร่วมกับไคลเอนต์ Codex แบบเนทีฟ OpenClaw จะไม่ถือว่าไคลเอนต์อื่นใช้กระบวนการ App Server สดเดียวกัน และความเป็นเจ้าของสถานะแบบเนทีฟจะจำกัดอยู่ภายในกระบวนการ ดังนั้นจึงถือว่าเธรดที่ App Server สำหรับการกำกับดูแลรายงานเป็น notLoaded นั้นเป็น จัดเก็บไว้ / ไม่ทราบกิจกรรม ไม่ใช่ไม่ได้ใช้งาน
ใช้การเลือกใช้แบบเดียวกันกับโฮสต์ Node แบบไร้ส่วนหัวทุกเครื่องที่ควรแสดงเซสชัน แอป OpenClaw แบบเนทีฟสำหรับ macOS จะอ่านการตั้งค่าภายในเครื่องเดียวกันเมื่อประกาศแค็ตตาล็อก Codex ไปยัง Gateway ที่จับคู่ แค็ตตาล็อก Mac แบบเนทีฟที่จับคู่นั้นรองรับเฉพาะค่าเริ่มต้นหรือ appServer.transport: "stdio" ที่ระบุไว้อย่างชัดเจน โดยไม่ได้ตั้งค่าหรือระบุ appServer.homeScope: "user" อย่างชัดเจน กระบวนการ stdio ดังกล่าวจะปฏิบัติตาม command, args และ clearEnv หากการกำหนดค่า Mac เลือก "unix", "websocket" หรือ homeScope: "agent" แอปจะไม่ประกาศความสามารถหรือคำสั่งของแค็ตตาล็อก และการเรียกใช้โดยตรงที่ล้าสมัยจะล้มเหลวแทนที่จะเปิดเผยโฮม Codex ของผู้ใช้หรือสร้าง App Server stdio ภายในเครื่องตัวอื่น
คำสั่ง Node ที่ประกาศใหม่จะเปลี่ยนพื้นผิวคำสั่งที่ได้รับอนุมัติของ Node อนุมัติการอัปเดตจากโฮสต์ Gateway:
openclaw nodes pendingopenclaw nodes approve <requestId>เซสชัน Codex ที่ไม่ถูกเก็บถาวรจะปรากฏในแถบด้านข้างหลักของ Control UI โดยจัดกลุ่มตามโฮสต์ด้วย เลือกเซสชันเพื่ออ่านทรานสคริปต์ที่คงอยู่ถาวร โปรแกรมดูจะใช้ API thread/turns/list ล่าสุดของ Codex ร่วมกับ itemsView: "full" และโหลดไม่เกิน 20 เทิร์นต่อคำขอ โหลดรายการทรานสคริปต์ที่เก่ากว่า จะติดตามเคอร์เซอร์ App Server แบบทึบจากหน้าล่าสุด หน้าที่โหลดจะแสดงผลตามลำดับเวลา โปรแกรมดูจะไม่โหลดประวัติ thread/read แบบไม่จำกัด หากหน้ามีขนาดเกินเพดานความปลอดภัยในการส่งข้อมูล 20 MiB ระบบจะปิดโดยไม่ดำเนินการ แทนที่จะเสี่ยงต่อการเชื่อมต่อของ Node หรือ Gateway
เปิดกลุ่ม Codex ในแถบด้านข้างของเซสชันตามปกติ กลุ่มนี้จะแสดงเซสชันชุดเดียวกันโดยจัดกลุ่มตามโฮสต์ โหลดเซสชันเพิ่มเติม จะเพิ่มหน้าถัดไปจากแต่ละโฮสต์ที่มีแถวเก่ากว่า และแถวที่เพิ่มเหล่านั้นจะยังคงอยู่หลังการรีเฟรชตามระยะเวลาของแถบด้านข้าง แต่ละโฮสต์จะปรากฏทันทีที่การแสดงรายการแบบเนทีฟของโฮสต์นั้นเสร็จสิ้น หน้าที่มองเห็นจะปรับให้ตรงกันหลังการเปลี่ยนแปลงการเชื่อมต่อของ Node เมื่อกลับมาได้รับโฟกัส และอย่างช้าที่สุดทุก 30 วินาที หากผลลัพธ์เปลี่ยนแปลง จะมีการตรวจติดตามที่เร็วขึ้น ดังนั้นเซสชันที่สร้างใน Codex Desktop, CLI หรือไคลเอนต์แบบเนทีฟอื่นจะปรากฏโดยไม่ต้องโหลดหน้าใหม่ทั้งหมด หน้าแรกเรียงตามลำดับการอัปเดตล่าสุดของ Codex เอง ดังนั้นเซสชันแบบเนทีฟที่สร้างใหม่จึงมีสิทธิ์ปรากฏทันที หน้าผลการค้นหาแต่ละหน้าจะสแกนหน้าแบบเนทีฟจำนวนจำกัดต่อโฮสต์ แทนที่จะส่งคำค้นไปยัง App Server เนื่องจากการค้นหาแบบเนทีฟสามารถจับคู่กับตัวอย่างทรานสคริปต์ได้ด้วย
ความพร้อมใช้งานของโฮสต์และสถานะเธรดเป็นคนละส่วนกัน ออฟไลน์ หรือ ไม่พร้อมใช้งาน ใช้อธิบายการรีเฟรชโฮสต์ โฮสต์ที่ไม่พร้อมใช้งานจะไม่ส่งคืนแถวเซสชันใหม่ และจะไม่เปลี่ยนสถานะแบบเนทีฟของเธรดเป็น offline แถวเซสชันใช้สถานะของ Codex เช่น idle, active, notLoaded หรือข้อผิดพลาด โฮสต์ที่ล้มเหลวจะไม่ซ่อนผลลัพธ์จากโฮสต์ที่ทำงานปกติ
คำเตือนในแถบด้านข้างจะรวมรหัสข้อผิดพลาดของแค็ตตาล็อกและข้อผิดพลาด Gateway เบื้องหลังที่ปลอดภัย เปิด Settings > Automation > Plugins > Codex > Native Session
Discovery เพื่อปิดใช้การค้นพบโดยไม่ปิดใช้ Codex สำหรับ NODE_LIST_FAILED ให้เปรียบเทียบ openclaw nodes list กับ Settings > Devices สาเหตุโดยละเอียดจะระบุความล้มเหลวของที่จัดเก็บการจับคู่ รีจิสทรี Node สิทธิ์ หรือวงจรชีวิต Gateway ที่ต้องแก้ไข
ใช้ CLI สำหรับผู้ดำเนินการ
CLI ในเทอร์มินัลเปิดเผยแค็ตตาล็อกที่ไม่ถูกเก็บถาวรชุดเดียวกัน รวมถึงการดำเนินการสร้างสาขาและเก็บถาวรภายใน Gateway:
openclaw codex sessions [--search <text>] [--host <id>] [--limit <count>] [--cursor <cursor>] [--json] [--url <url>] [--token <token>] [--timeout <ms>] [--expect-final]openclaw codex continue <thread-id> [--json] [--url <url>] [--token <token>] [--timeout <ms>] [--expect-final]openclaw codex archive <thread-id> --confirm-no-other-runner [--json] [--url <url>] [--token <token>] [--timeout <ms>] [--expect-final]ตัวเลือก openclaw codex sessions:
--search <text>ค้นหาชื่อเซสชันโดยไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่--host <id>จำกัดการตอบกลับไว้ที่โฮสต์แค็ตตาล็อกที่คงที่หนึ่งรายการ เช่นgateway:localหรือnode:<node-id>--limit <count>กำหนดจำนวน 1 ถึง 100 แถวต่อโฮสต์ ค่าเริ่มต้นคือ 50--cursor <cursor>ดำเนินการหน้าของโฮสต์หนึ่งต่อ จึงต้องมี--host--jsonพิมพ์การตอบกลับ Gateway แบบมีโครงสร้าง
คำสั่งทั้งสามรับช่วง --url, --token และ --timeout <ms> จากไคลเอนต์ Gateway การแสดงรายการเซสชันมีค่าเริ่มต้นเป็น 75,000 ms เพื่อให้แค็ตตาล็อก Node ที่จับคู่แบบเริ่มทำงานช้าสามารถดำเนินการจนเสร็จ ส่วน continue และ archive มีค่าเริ่มต้นเป็น 30,000 ms นอกจากนี้ยังเปิดเผยสวิตช์ --expect-final ที่ใช้ร่วมกัน ซึ่งไม่เปลี่ยน RPC การกำกับดูแลแบบยูนารีเหล่านี้ แต่ละคำสั่งต้องใช้ขอบเขต Gateway operator.write
เอาต์พุตมาตรฐาน -h, --help พร้อมใช้งานในแต่ละคำสั่งย่อย
ไม่มีตัวเลือก archived หรือ include-archived sessions สามารถแสดงรายการโฮสต์ที่จับคู่ได้ แต่ continue และ archive จะกำหนดเป้าหมายไปที่ gateway:local เสมอ แถวที่จับคู่ใช้สำหรับแสดงรายการเท่านั้น การเก็บถาวรต้องใช้ --confirm-no-other-runner เสมอ
คำสั่งเชลล์เหล่านี้แตกต่างจากคำสั่งรันไทม์ /codex ภายในแชท /codex threads [filter] จะแสดงรายการเธรด App Server ที่พร้อมใช้งานสำหรับการเชื่อมต่อของบทสนทนาปัจจุบัน /codex sessions --host <node> จะแสดงรายการไฟล์เซสชัน Codex CLI ที่สามารถดำเนินการต่อได้บน Node หนึ่งเครื่อง ไม่ใช่แค็ตตาล็อกของกลุ่มการกำกับดูแล /codex resume และ /codex bind จะเชื่อมต่อบทสนทนาปัจจุบันแทนการสร้างสาขาภายใต้การกำกับดูแลที่ปลอดภัย และแชทภายใต้การกำกับดูแลที่ล็อกโมเดลจะปฏิเสธการเปลี่ยนแปลงการเชื่อมโยงเหล่านั้น ไม่มีคำสั่งรันไทม์ /codex continue หรือ /codex archive
สร้างสาขาจากเซสชันภายในเครื่อง
เลือก ดำเนินการต่อเป็นสาขา บนแถวที่จัดเก็บไว้หรือไม่ได้ใช้งานจากคอมพิวเตอร์ Gateway OpenClaw จะสร้างรายการแชทปกติ ทำสำเนาประวัติผู้ใช้และผู้ช่วยที่จำกัดขอบเขตจนถึงเทิร์นสุดท้ายที่คงอยู่ถาวรและสิ้นสุดแล้วของต้นทาง (เสร็จสมบูรณ์ ถูกขัดจังหวะ หรือล้มเหลว) บันทึกสาขาชุดควบคุมที่รอดำเนินการ และเปิดแชท ตัวเลือกโมเดลทั่วไปจะถูกล็อก แต่ยังไม่มีการเลือกโมเดลหรือผู้ให้บริการอย่างเป็นรูปธรรม ต้นทางจะไม่ถูกดำเนินการต่อ และเธรดชุดควบคุมมาตรฐานจะยังไม่เริ่มต้น การทำซ้ำการดำเนินการนี้จะเปิดแชทเดิมแทนการสร้างสาขาใหม่
สำเนาจะเก็บส่วนท้ายล่าสุดที่มองเห็นได้และอยู่ภายในขีดจำกัดทั้งสาม ได้แก่ ข้อความของผู้ใช้หรือผู้ช่วยไม่เกิน 200 ข้อความ ข้อความ UTF-8 รวมไม่เกิน 512 KiB และไม่เกิน 64 KiB ต่อข้อความ ข้อความที่มีขนาดใหญ่เกินไปจะถูกตัดทอนพร้อมเครื่องหมายกำกับ และข้อความเก่ากว่าจะถูกละเว้นเมื่อถึงขีดจำกัด อินพุตรูปภาพหรือรูปภาพภายในเครื่องจะกลายเป็นตัวยึดตำแหน่งแบบข้อความ [Image attachment] โดยจะไม่มีการคัดลอกข้อมูลรูปภาพและพาธภายในเครื่อง
ส่งข้อความ Chat ปกติข้อความแรกเพื่อเริ่มทำงาน Codex harness จะติดตั้งตัวจัดการการอนุมัติ การซักถาม เหตุการณ์ และการส่งมอบจริง โดยใช้ fork แบบ native ชั่วคราวบนการเชื่อมต่อการควบคุมเพื่อปักหมุดสแนปช็อตต้นทางโดยไม่ระบุการแทนที่โมเดลหรือผู้ให้บริการ Codex App Server จะเลือกทั้งสองอย่างจากการกำหนดค่า native ปัจจุบันและส่งคืนค่าที่เลือกจริง บนการเชื่อมต่อเดียวกันนั้น OpenClaw จะเริ่มเธรด full harness ต้นฉบับจากแหล่ง appServer ภายใต้ cwd และนโยบายรันไทม์ของเธรด โดยใช้คู่ค่าที่ส่งคืนมานั้นอย่างถูกต้อง จากนั้นแทรกประวัติที่มองเห็นได้แบบจำกัดขอบเขตและเก็บ fork ชั่วคราวไว้ในคลัง เธรดต้นฉบับมีพื้นผิวเครื่องมือ OpenClaw harness ครบถ้วน นี่คือสาขาของประวัติที่มองเห็นได้ ไม่ใช่สำเนาการดำเนินงาน native แบบสมบูรณ์: ระบบจะละเว้นการให้เหตุผล การเรียกเครื่องมือ และผลลัพธ์ของเครื่องมือจากต้นทาง เทิร์นนี้และเทิร์นหลังจากนี้ทั้งหมดจะอยู่บนการเชื่อมต่อ Codex ที่มีการควบคุม แทนที่จะเป็นรันไทม์โมเดล OpenClaw อื่นหรือ agent-home harness ตามปกติ
ค่าที่เลือกซึ่งส่งคืนมาไม่ได้เป็นหลักฐานยืนยันโมเดลในอดีตของต้นทาง หากการกำหนดค่า native ปัจจุบันแตกต่างจากโมเดลที่บันทึกไว้สำหรับเทิร์นล่าสุดของต้นทาง Codex จะแสดงคำเตือนตามปกติเกี่ยวกับความแตกต่างของโมเดล OpenClaw ใช้คู่ค่าที่ส่งคืนมาเพื่อเริ่มเธรดต้นฉบับ Codex จะบันทึกโมเดลและผู้ให้บริการแบบ native ของเธรดต้นฉบับนั้น และการดำเนินการต่อภายหลังจะคงค่าเหล่านั้นไว้ เนื่องจาก OpenClaw ไม่ระบุการแทนที่โมเดลและผู้ให้บริการ หากเธรดต้นฉบับถูกเปลี่ยนผ่านตัวควบคุม Codex แบบ native แยกต่างหาก OpenClaw จะยอมรับค่าที่ Codex บันทึกไว้ OpenClaw จะไม่ใช้โมเดลภายนอกหรือสายโซ่สำรองของตนแทนโดยเด็ดขาด
Chat ที่ล็อกโมเดลและอยู่ภายใต้การควบคุมจะไม่สามารถลบ เปลี่ยนโมเดล ใช้ /new หรือ /reset เรียกการดำเนินการรีเซ็ตเซสชันของ Gateway หรือใช้การดำเนินการทั่วไป Fork เซสชัน ได้ การแก้ไข /codex model <model>, /codex bind, /codex resume (รวมถึงเซสชันของ Node ที่มี --bind here) และ /codex detach หรือ /codex unbind จะถูกปฏิเสธเช่นกัน เนื่องจากการดำเนินการเหล่านี้จะแทนที่หรือล้างการผูกแบบ native ที่ล็อกไว้ คำค้น /codex model รวมถึง /codex fast, /codex permissions และ /codex threads ยังคงใช้งานได้ เริ่มเซสชันปกติอีกเซสชันเมื่อต้องการโมเดลอื่นหรือเธรดใหม่
เปิดใช้งานการควบคุมสำหรับ Chat นี้ไว้เสมอ หากปิดใช้งานการควบคุม หรือการผูกการเชื่อมต่อที่จัดเก็บไว้ไม่พร้อมใช้งานหรือไม่สอดคล้องกัน เทิร์นจะล้มเหลวแบบปิดเพื่อความปลอดภัย แทนที่จะย้ายไปยังเซสชัน agent-home ปกติ
การปิดใช้งานหรือถอนการติดตั้ง Plugin codex จะไม่ปลดความเป็นเจ้าของดังกล่าวหรือทำให้ Chat สามารถใช้โมเดลอื่นได้ Chat ที่ล็อกไว้จะยังคงถูกเก็บรักษาแต่ไม่พร้อมใช้งาน ให้ติดตั้งใหม่หรือเปิดใช้งาน Plugin เดิมอีกครั้งแล้วรีสตาร์ต Gateway เพื่อดำเนินการต่อ พฤติกรรมแบบล้มเหลวปิดเพื่อความปลอดภัยโดยเจตนานี้ป้องกันไม่ให้การล้างข้อมูลตามระยะเวลาการเก็บรักษาหรือการหยุดทำงานชั่วคราวของ Plugin ทำให้การผูกแบบ native ขาดเจ้าของโดยไม่มีการแจ้งเตือน
เครื่องมือเอเจนต์ codex_threads ใช้ขอบเขตเดียวกัน เครื่องมือนี้ไม่สามารถแนบ fork อื่นหรือเก็บเธรด native ที่ผูกกับ Chat ไว้ในคลังได้ การแสดงรายการและการอ่านเฉพาะเมทาดาทายังคงใช้งานได้ การอ่านทรานสคริปต์ดิบต้องใช้ allowRawTranscripts
เมื่อปิดใช้งานการเข้าถึงข้อมูลดิบ codex_threads จะปฏิเสธการค้นหาในรายการด้วย เนื่องจากการค้นหาแบบ native รวมตัวอย่างทรานสคริปต์ไว้ด้วย ส่วน Control UI และ CLI สำหรับผู้ดูแลยังคงให้การค้นหาเฉพาะชื่อเรื่องแบบจำกัดขอบเขต การเปลี่ยนชื่อ การนำออกจากคลัง การสร้าง fork แบบแยก และการเก็บเธรดอื่นที่ไม่มีเจ้าของไว้ในคลังต้องใช้
allowWriteControls ไม่มีตัวเลือกใดข้ามการผูกที่ล็อกไว้ได้
OpenClaw จะไม่สมัครรับหรือตอบคำขออนุมัติขณะเพียงแสดงรายการเธรดต้นทางหรือแสดง Chat ที่รอดำเนินการ การเริ่มเธรด harness ต้นฉบับแยกต่างหากในเทิร์นแรกช่วยให้กระบวนการ Codex อื่นยังคงเป็นเจ้าของต้นทางได้โดยไม่สร้างตัวเขียนการดำเนินงานที่แข่งขันกัน
ต้นทางเดิมจาก CLI, VS Code, Atlas หรือ ChatGPT ยังคงมองเห็นได้ในไคลเอนต์ native และแค็ตตาล็อก OpenClaw สาขาต้นฉบับจะถูกจัดเก็บเป็นเธรด Codex แบบ native แต่ชนิดต้นทางคือ appServer; Codex Desktop หรือไคลเอนต์ native อื่นอาจกรองชนิดต้นทางนั้น ดังนั้นจึงไม่รับประกันว่าสาขานั้นจะปรากฏในมุมมองประวัติ native ทุกแห่ง
แถวที่ OpenClaw App Server รายงานว่ากำลังทำงานอยู่ไม่สามารถเริ่มสาขาใหม่ได้ ให้รอจนกว่าเทิร์นปัจจุบันจะเสร็จสิ้นแล้วรีเฟรชแค็ตตาล็อก Codex App Server จะจัดลำดับการแก้ไขภายในกระบวนการเดียว แต่ไม่ได้ให้ตัวเรียกทำงานแบบเอกสิทธิ์ข้ามกระบวนการหรือสิทธิ์เช่าเจ้าของการอนุมัติ
สำหรับแถว จัดเก็บแล้ว / ไม่ทราบกิจกรรม มิเรอร์ Chat และการปักหมุดสแนปช็อตในเทิร์นแรกจะใช้สถานะของ Codex จนถึงเทิร์นสุดท้ายที่สิ้นสุดและถูกบันทึกไว้ เธรดต้นทางจะไม่ถูกดำเนินการต่อ ขัดจังหวะ หรือเก็บไว้ในคลัง หากกระบวนการอื่นมีเทิร์นที่กำลังดำเนินการ งานล่าสุดที่ยังดำเนินอยู่ของกระบวนการนั้นอาจไม่ปรากฏในสาขา
เก็บเซสชันภายในเครื่องไว้ในคลัง
เลือก เก็บเข้าคลัง บนแถวที่จัดเก็บไว้หรือไม่ได้ใช้งานซึ่งอยู่ภายใน Gateway จากนั้นยืนยันว่าไม่มีไคลเอนต์ Codex หรือตัวเรียกทำงาน OpenClaw อื่นกำลังใช้เธรดนั้นหรือรายการลูกหลานที่เธรดสร้างขึ้น OpenClaw จะอ่านสถานะภายในกระบวนการใหม่ ดำเนินการต่อเฉพาะสำหรับ idle หรือ notLoaded เรียกการดำเนินการเก็บเข้าคลังแบบ native ของ Codex และนำเซสชันออกจากรายการที่ไม่ได้เก็บเข้าคลัง Codex แบบ native จะพยายามเก็บรายการลูกหลานที่เธรดสร้างขึ้นไว้ในคลังด้วย
การเก็บเข้าคลังจะใช้ไม่ได้เมื่อการอ่านใหม่รายงานว่าเซสชันกำลังทำงานหรืออยู่ในสถานะข้อผิดพลาด เมื่อเซสชันเป็นของ Node ที่จับคู่ หรือขณะที่ Chat ที่มีการควบคุมซึ่งเพิ่งสร้างขึ้นยังมีสาขาจากต้นทางนั้นรอดำเนินการ ส่งข้อความแรกของ Chat เพื่อสร้างสาขาต้นฉบับให้เป็นรูปธรรมก่อนเก็บต้นทางเข้าคลัง นอกจากนี้ การเก็บเข้าคลังยังถูกบล็อกเมื่อ OpenClaw ทราบว่าการผูกที่กำลังทำงานเป็นเจ้าของเธรดเป้าหมายที่ตรงกันทุกประการหรือรายการลูกหลานที่ยังไม่ได้เก็บเข้าคลัง OpenClaw จะติดตามคำค้นรายการลูกหลานของ Codex ซึ่งเป็นฟีเจอร์ทดลองไปจนครบทุกหน้า โดยการตอบกลับที่ไม่ถูกต้อง คำขอล้มเหลว เคอร์เซอร์หรือเธรดซ้ำ หรือการใช้ขีดจำกัดความปลอดภัยจนหมด จะทำให้คำขอเก็บเข้าคลังถูกปฏิเสธ
คำขออ่าน แจกแจงรายการลูกหลาน และเก็บเข้าคลังไม่ได้เป็นการดำเนินการแบบมีเงื่อนไขรายการเดียว ดังนั้นเทิร์นอาจยังเริ่มขึ้นระหว่างคำขอเหล่านั้น สถานะ App Server ยังไม่ถูกแชร์ระหว่างกระบวนการอิสระ การยืนยันจึงเป็นขอบเขตความปลอดภัยสำหรับไคลเอนต์ที่ไม่ทราบและสภาวะแข่งขันดังกล่าว: ให้ออกจากไคลเอนต์อื่นทั้งหมดหรือยืนยันด้วยวิธีอื่นก่อนกดยืนยัน กู้คืนเธรดที่เก็บเข้าคลังด้วย Codex Desktop, Codex CLI หรือขั้นตอนการจัดการเธรดแบบ native ที่ได้รับอนุญาตจากเจ้าของ เธรดจะปรากฏอีกครั้งหลังนำออกจากคลัง
codex unarchive <thread-id>ทำความเข้าใจข้อจำกัดของ Node ที่จับคู่
Node ที่จับคู่จะเปิดเผยคำสั่งแบบอ่านอย่างเดียวที่มีการกำหนดเวอร์ชัน
codex.appServer.threads.list.v1 และ
codex.appServer.thread.turns.list.v1 โฮสต์ Node แบบ native ที่มี
Codex CLI พร้อมใช้งานจะเปิดเผยคำสั่ง codex.terminal.resume.v1
ที่อยู่ในรายการอนุญาตด้วย Gateway จะได้รับเมทาดาทาที่ปรับให้อยู่ในรูปแบบมาตรฐานและหน้าทรานสคริปต์แบบจำกัดขอบเขตที่มีการร้องขออย่างชัดเจน โดยจะไม่ได้รับปลายทาง App Server ดิบ การเปิดแถวในเทอร์มินัลสำหรับผู้ดูแลจะเรียกใช้ codex resume <thread-id>
บนโฮสต์เจ้าของและถ่ายทอด PTY ของคำสั่งนั้น โดยไม่เปิดเผยเชลล์ทั่วไปหรือ argv ที่ Gateway เป็นผู้ระบุ
การถ่ายทอดเทอร์มินัลไม่ได้ให้สัญญาการดำเนินการต่อของ harness หรือความเป็นเจ้าของการเก็บเข้าคลัง ดังนั้นแถวระยะไกลจึงยังคงมองเห็นได้ แต่ไม่มี ดำเนินการต่อ หรือ เก็บเข้าคลัง แม้เธรดระยะไกลจะไม่ได้ใช้งาน ให้ใช้ Codex บนคอมพิวเตอร์เครื่องนั้นผ่าน เปิดในเทอร์มินัล หรือใช้ขั้นตอนการดำเนินการต่อในอนาคตที่มีขอบเขตความเป็นเจ้าของตัวเรียกทำงานที่ปลอดภัย
เมทาดาทาและสิทธิ์
แถวในแค็ตตาล็อกอาจประกอบด้วย:
- ตัวระบุเธรดและเซสชัน
- ชื่อเรื่องและไดเรกทอรีทำงาน
- สถานะปัจจุบันและแฟล็กรอที่กำลังทำงาน
- เวลาที่สร้าง อัปเดต และมีกิจกรรม
- ต้นทาง ผู้ให้บริการโมเดล เวอร์ชัน Codex CLI และสาขา Git
การฉายภาพแค็ตตาล็อกจะไม่รวมตัวอย่างทรานสคริปต์ เทิร์น พาธการดำเนินงาน พาธโฮมของ Codex รีโมต Git, SHA ของคอมมิต และข้อผิดพลาด App Server ดิบ การเข้าถึงแค็ตตาล็อกและการอ่านทรานสคริปต์ใน Control UI ต้องใช้ขอบเขต Gateway operator.write เนื่องจากการรวมข้อมูลทั้งฟลีตใช้พาธมาตรฐาน node.invoke แม้ว่าคำสั่งของ Node ทั้งสองจะเป็นแบบอ่านอย่างเดียวก็ตาม
supervision.allowRawTranscripts และ supervision.allowWriteControls ควบคุมเครื่องมือเอเจนต์อัตโนมัติและเครื่องมือ MCP แบบสแตนด์อโลน ทั้งสองมีค่าเริ่มต้นเป็น false เมื่อเปิดใช้งานการควบคุม codex_threads จะนำตัวอย่างทรานสคริปต์และเทิร์นออกจากผลลัพธ์การแสดงรายการและการอ่านเฉพาะเมทาดาทา เว้นแต่จะอนุญาตทรานสคริปต์ดิบ การอ่านที่รวมเทิร์นจะล้มเหลวแบบปิดเพื่อความปลอดภัย ทุกการสร้าง fork การเปลี่ยนชื่อ การเก็บเข้าคลัง และการนำออกจากคลังต้องใช้การควบคุมการเขียน ตัวเลือกเหล่านี้ไม่จำกัดการดูทรานสคริปต์ผ่าน Control UI ที่ผ่านการรับรองความถูกต้อง และไม่ข้ามการตรวจสอบการผูก โฮสต์ สถานะ หรือการยืนยัน
เครื่องมือความเข้ากันได้
Plugin codex อย่างเป็นทางการยังคงเก็บชื่อเครื่องมือ Supervisor ทั้งห้าชื่อที่เผยแพร่แล้วไว้สำหรับเอเจนต์และไคลเอนต์ MCP แบบสแตนด์อโลนที่มีอยู่:
codex_endpoint_probecodex_sessions_listcodex_session_readcodex_session_sendcodex_session_interrupt
โดยค่าเริ่มต้น codex_sessions_list จะใช้เฉพาะรายการที่โหลดแล้ว และไม่มีพารามิเตอร์ loaded_only
ตั้งค่า include_stored: true เพื่ออ่านแถวที่จัดเก็บไว้และยังไม่ได้เก็บเข้าคลังจากฐานข้อมูลสถานะของ Codex ด้วย ขีดจำกัด max_stored_sessions ซึ่งเป็นตัวเลือกมีค่าเริ่มต้นเป็น 200 และยอมรับ 1 ถึง 1,000 แถวต่อปลายทาง ขีดจำกัดนี้ไม่จำกัดแถวที่โหลดแล้ว หากไม่มีสิทธิ์เข้าถึงทรานสคริปต์ดิบ ผลลัพธ์รายการจะละเว้นชื่อและตัวอย่างที่ได้มาจากทรานสคริปต์ รวมถึงข้อผิดพลาดโดยละเอียดของปลายทาง
codex_session_read ต้องใช้ allowRawTranscripts; ส่วน include_turns: true
จะขอเทิร์นจาก Codex เพิ่มเติม
codex_session_send และ codex_session_interrupt ต้องใช้
allowWriteControls การส่งยอมรับ mode: "auto" | "start" | "steer" แต่
"start" จะถูกปฏิเสธเสมอ และทั้ง "auto" กับ "steer" สามารถชี้นำได้เฉพาะเทิร์นที่กำลังทำงานและอ่านได้เท่านั้น เธรดที่ไม่ได้ใช้งานจะถูกปฏิเสธพร้อมคำแนะนำให้ใช้ เซสชัน Codex ซึ่ง full harness จะติดตั้งตัวจัดการการอนุมัติและเครื่องมือก่อนดำเนินการต่อ การขัดจังหวะต้องใช้เทิร์นที่กำลังทำงานและอ่านได้เช่นกัน เครื่องมือเหล่านี้จะไม่ดำเนินการต่อหรือเริ่มเธรดต้นทางที่ไม่ได้ใช้งาน
openclaw doctor --fix จะย้ายรายการ codex-supervisor ที่เลิกใช้แล้ว ฟิลด์ปลายทางและสิทธิ์ของรายการดังกล่าว และการอ้างอิงนโยบายรายการอนุญาต/ปฏิเสธของ Plugin ไปยัง Plugin codex อย่างเป็นทางการโดยไม่เขียนทับการตั้งค่าต้นฉบับที่ระบุไว้อย่างชัดเจน อะแดปเตอร์ MCP สำหรับความเข้ากันได้แบบสแตนด์อโลนจะยังคงโหลดเครื่องมือห้ารายการเดิมจาก Plugin นั้น ตัวแปรสภาพแวดล้อมของนโยบายแบบเดิมจะมีผลเฉพาะภายในอะแดปเตอร์ที่เชื่อถือได้นั้น
สำหรับฟิลด์การกำหนดค่าการควบคุมทั้งหมด โปรดดู ข้อมูลอ้างอิง Codex harness
การแก้ไขปัญหา
ไม่มีเซสชันปรากฏ: ตรวจสอบว่าได้ติดตั้ง @openclaw/codex แล้ว ทั้ง Plugin และ supervision.enabled เป็น true รายการอนุญาตของ Plugin ปัจจุบันอนุญาต codex และเซสชันไม่ได้ถูกเก็บเข้าคลัง รีสตาร์ต Gateway หรือ Node หลังเปลี่ยนการเปิดใช้งาน
ปิดใช้งานการดำเนินการต่อ: แถวที่ยังไม่ได้แมปกำลังทำงาน เป็นของ Node ที่จับคู่ โฮสต์ออฟไลน์ หรือมีการดำเนินการอื่นรอดำเนินการ แถวภายใน Gateway ที่จัดเก็บไว้และไม่ได้ใช้งานจะแสดง ดำเนินการต่อเป็นสาขา แทนการเข้าควบคุมเธรดเดิมโดยตรงซึ่งไม่ปลอดภัย แถวที่มี Chat ภายใต้การควบคุมอยู่แล้วจะแสดง เปิด Chat
ปิดใช้งานการเก็บเข้าคลัง: การเก็บเข้าคลังพร้อมใช้งานสำหรับแถวภายใน Gateway ที่จัดเก็บไว้/ไม่ทราบกิจกรรมและแถวที่ไม่ได้ใช้งาน หลังยืนยันว่าไม่มีตัวเรียกทำงานอื่น แถวที่กำลังทำงาน มีข้อผิดพลาด ออฟไลน์ เป็นของ Node ที่จับคู่ มีสาขารอดำเนินการ และมีเจ้าของการผูกที่ตรงกันซึ่งระบบทราบ จะยังคงเป็นแบบอ่านอย่างเดียวสำหรับการเก็บเข้าคลัง
เซสชันที่เก็บเข้าคลังหายไป: นี่เป็นพฤติกรรมที่คาดไว้ หน้าการควบคุมไม่มีมุมมองรายการที่เก็บเข้าคลัง เรียกใช้ codex unarchive <thread-id> หรือใช้ Codex Desktop เพื่อแสดงอีกครั้ง
ยังมีการกำหนดค่า codex-supervisor แบบเก่า: เรียกใช้ openclaw doctor --fix Doctor จะย้ายรายการ Plugin ที่เลิกใช้แล้วและการอ้างอิงนโยบาย Plugin ที่เกี่ยวข้องไปยัง plugins.entries.codex.config.supervision โดยไม่เขียนทับการตั้งค่า Codex ที่ระบุไว้อย่างชัดเจน