Plugin guides

نظارت بر نشست‌های Codex

نظارت Codex یک قابلیت اختیاری در Plugin رسمی codex است. این قابلیت نشست‌های منبع بایگانی‌نشدهٔ Codex CLI، VS Code، Atlas و ChatGPT را از رایانهٔ Gateway و رایانه‌های جفت‌شده‌ای که این قابلیت را فعال کرده‌اند، در نوار کناری معمول نشست‌ها و پنل Chat نمایش می‌دهد.

نسخهٔ اولیه عمداً دامنهٔ مالکیت را محدود نگه می‌دارد:

  • یک نشست محلی ذخیره‌شده یا بی‌کار می‌تواند از تاریخچهٔ محدود و ماندگارشدهٔ کاربر و دستیار، یک گفت‌وگوی OpenClaw با مدل قفل‌شده ایجاد کند. نخستین پیام یک انشعاب snapshot بومی را آغاز می‌کند و سپس رشتهٔ کامل harness مربوط به Codex را دقیقاً با همان مدل و ارائه‌دهنده‌ای شروع می‌کند که Codex App Server برای آن انشعاب انتخاب کرده است. در نوبت‌های بعدی، جفت ماندگارشدهٔ رشتهٔ بومی متعارف بازیابی می‌شود، درحالی‌که اتصال تحت نظارت مانع می‌شود OpenClaw زمان‌اجرای دیگر، مدل دیگر یا مسیر جایگزینی را جایگزین کند. یک کنترل بومی و جداگانهٔ Codex همچنان می‌تواند آن جفت ماندگارشده را تغییر دهد. شاخه‌ای که قبلاً ایجاد شده است، گفت‌وگوی موجود خود را باز می‌کند.
  • فعالیت زندهٔ یک نشست ذخیره‌شده که از فرایند دیگری از Codex کشف شده است، نامشخص است. می‌توان از آن شاخه ساخت، یا تنها پس از آنکه اپراتور تأیید کند هیچ کلاینت دیگری از Codex از آن استفاده نمی‌کند، آن را بایگانی کرد.
  • یک منبع فعال قابل‌مشاهده می‌ماند، اما تا پایان نوبت جاری آن نمی‌توان شاخه‌ای ایجاد کرد یا آن را بایگانی کرد. اگر از قبل گفت‌وگویی تحت نظارت داشته باشد، Open Chat همچنان در دسترس است.
  • یک نشست روی Node جفت‌شده، رونوشت ماندگارشدهٔ خود را از طریق خواندن‌های محدود و صفحه‌بندی‌شده با مکان‌نما در App Server ارائه می‌کند. ادامه‌دادن از راه دور به یک پل Node جریانی در آینده نیاز دارد؛ بایگانی از راه دور نیز به اجارهٔ مالکیت اجراکننده یا حصارگذاری معادل نیاز دارد.
  • نشست‌های بایگانی‌شده فهرست نمی‌شوند. یک نشست محلی ذخیره‌شده یا بی‌کار را تنها پس از آن می‌توان بایگانی کرد که اپراتور تأیید کند هیچ کلاینت دیگری از Codex از آن استفاده نمی‌کند.

پیش از شروع

  • Plugin رسمی @openclaw/codex را روی Gateway نصب کنید. برنامهٔ macOS مربوط به OpenClaw می‌تواند هنگام فعال‌کردن قابلیت‌های 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، harness و سیاست نظارت در دسترس عامل را بدون تغییر باقی می‌گذارد و هم‌زمان فرمان‌های فهرست‌کردن/خواندن کاتالوگ Nodeهای جفت‌شده را نیز از این میزبان حذف می‌کند. نصب‌های موجود می‌توانند همین قابلیت را به‌صورت دستی فعال کنند:

Plugin مربوط به codex و قابلیت نظارت آن را در openclaw.json فعال کنید:

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

اگر plugins.allow وجود دارد، codex را نیز اضافه کنید. پس از تغییر فعال‌سازی Plugin، Gateway را راه‌اندازی مجدد کنید.

بدون تنظیمات اتصال صریح appServer، نظارت از یک اتصال نظارتی مدیریت‌شدهٔ stdio و جداگانه در برابر خانهٔ بومی کاربر Codex استفاده می‌کند. harness معمولی Codex به‌طور پیش‌فرض محدود به عامل باقی می‌ماند. در نتیجه نشست‌های بومی در هر دو برنامه قابل‌مشاهده می‌شوند، بدون آنکه نوبت‌های معمول OpenClaw وضعیت بومی Codex را به‌اشتراک بگذارند. اگر harness نیز باید آن وضعیت را به‌اشتراک بگذارد، appServer.homeScope: "user" را صریحاً تنظیم کنید. نظارت به‌جای جایگزین‌کردن تنظیمات صریح اتصال appServer با پیش‌فرض خانهٔ کاربر محلی خود، آن تنظیمات را رعایت می‌کند.

گفت‌وگویی که از گروه Codex در نوار کناری پذیرفته شده است، یک نشست معمولی harness نیست. اتصال خصوصی نظارت آن برای خواندن منبع، ایجاد شاخهٔ متعارف، تزریق تاریخچه و تمام نوبت‌های بعدی از اتصال نظارت استفاده می‌کند. با اتصال محلی پیش‌فرض، خانهٔ بومی کاربر Codex، احراز هویت و پیکربندی ارائه‌دهنده حفظ می‌شود، بدون آنکه پیش‌فرض سایر نشست‌ها تغییر کند. گفت‌وگوهای پذیرفته‌شده‌ای که تحت پایش هستند نیز در آگاهی از وضعیت نشست مشارکت دارند.

برای اتصال نظارت محلی پیش‌فرض، مخزن با کلاینت‌های بومی Codex مشترک است. OpenClaw فرض نمی‌کند کلاینت دیگری همان فرایند زندهٔ App Server را به‌اشتراک می‌گذارد و مالکیت وضعیت بومی، محلیِ فرایند است. بنابراین رشته‌ای را که App Server نظارتی آن به‌صورت notLoaded گزارش می‌کند، به‌عنوان Stored / activity unknown در نظر می‌گیرد، نه بی‌کار.

همین فعال‌سازی اختیاری را روی هر میزبان Node بدون رابطی که نشست‌هایش باید نمایش داده شوند، اعمال کنید. برنامهٔ بومی OpenClaw برای macOS هنگام معرفی کاتالوگ Codex محلی خود به Gateway جفت‌شده، همان تنظیم محلی را می‌خواند. کاتالوگ Mac بومی جفت‌شده فقط از پیش‌فرض یا appServer.transport: "stdio" صریح با appServer.homeScope: "user" تنظیم‌نشده یا صریح پشتیبانی می‌کند. command، args و clearEnv برای آن فرایند stdio رعایت می‌شوند. اگر پیکربندی Mac، "unix"، "websocket" یا homeScope: "agent" را انتخاب کند، برنامه قابلیت یا فرمان کاتالوگ را معرفی نمی‌کند و فراخوانی مستقیم قدیمی، به‌جای افشای خانهٔ کاربر Codex یا ایجاد یک App Server محلی stdio متفاوت، با شکست مواجه می‌شود.

فرمان تازه معرفی‌شدهٔ Node، سطح فرمان‌های تأییدشدهٔ Node را تغییر می‌دهد. به‌روزرسانی را از میزبان Gateway تأیید کنید:

bash
openclaw nodes pendingopenclaw nodes approve <requestId>

نشست‌های بایگانی‌نشدهٔ Codex همچنین در نوار کناری اصلی Control UI به‌صورت گروه‌بندی‌شده بر اساس میزبان نمایش داده می‌شوند. برای خواندن رونوشت ماندگارشدهٔ یک نشست، آن را انتخاب کنید. نمایشگر از جدیدترین API مربوط به thread/turns/list در Codex با itemsView: "full" استفاده می‌کند و در هر درخواست حداکثر 20 نوبت بارگیری می‌کند؛ Load older transcript items مکان‌نمای مبهم App Server را از جدیدترین صفحه دنبال می‌کند. صفحه‌های بارگیری‌شده به ترتیب زمانی نمایش داده می‌شوند. نمایشگر هرگز تاریخچهٔ نامحدود thread/read را بارگیری نمی‌کند. صفحه‌ای فراتر از سقف ایمنی انتقال 20 MiB به‌صورت بسته شکست می‌خورد تا اتصال Node یا Gateway به خطر نیفتد.

گروه Codex را در نوار کناری معمول نشست‌ها باز کنید. همان نشست‌ها را به‌صورت گروه‌بندی‌شده بر اساس میزبان فهرست می‌کند. Load more sessions صفحهٔ بعدی را از هر میزبانی که ردیف‌های قدیمی‌تری دارد اضافه می‌کند و ردیف‌های افزوده‌شده پس از تازه‌سازی دوره‌ای نوار کناری نیز باقی می‌مانند. هر میزبان به‌محض تثبیت فهرست بومی خودش ظاهر می‌شود. صفحهٔ قابل‌مشاهده پس از تغییرات اتصال Node، هنگام بازیابی تمرکز و حداکثر هر 30 ثانیه همگام‌سازی می‌شود؛ نتیجهٔ تغییریافته یک گذر پیگیری سریع‌تر دریافت می‌کند. بنابراین نشست‌هایی که در Codex Desktop، CLI یا کلاینت بومی دیگری ایجاد شده‌اند، بدون بارگیری مجدد کامل صفحه ظاهر می‌شوند. صفحهٔ نخست از ترتیب خود Codex بر اساس آخرین به‌روزرسانی پیروی می‌کند، بنابراین نشست بومی تازه‌ای که ایجاد شده است، بلافاصله واجد شرایط است. هر صفحهٔ جست‌وجوی بازگشتی، به‌جای ارسال پرس‌وجو به App Server، تعداد محدودی از صفحه‌های بومی هر میزبان را بررسی می‌کند، زیرا جست‌وجوی بومی می‌تواند با پیش‌نمایش رونوشت‌ها نیز مطابقت داشته باشد.

دردسترس‌بودن میزبان و وضعیت رشته از یکدیگر جدا هستند. Offline یا Unavailable تازه‌سازی میزبان را توصیف می‌کند؛ میزبان دردسترس‌نبوده هیچ ردیف تازه‌ای از نشست‌ها بازنمی‌گرداند و وضعیت بومی رشته را به offline تغییر نمی‌دهد. ردیف‌های نشست از وضعیت‌های Codex مانند idle، active، notLoaded یا خطا استفاده می‌کنند. خرابی یک میزبان، نتایج میزبان‌های سالم را پنهان نمی‌کند.

هشدار نوار کناری شامل کد خطای کاتالوگ و خطای ایمن زیربنایی Gateway است. برای غیرفعال‌کردن کشف بدون غیرفعال‌کردن Codex، Settings > Automation > Plugins > Codex > Native Session Discovery را باز کنید. برای NODE_LIST_FAILED، openclaw nodes list و Settings > Devices را مقایسه کنید؛ علت تفصیلی مشخص می‌کند کدام خرابی مخزن جفت‌سازی، رجیستری Node، مجوز یا چرخهٔ عمر Gateway نیاز به تعمیر دارد.

استفاده از CLI اپراتور

CLI ترمینال، همان کاتالوگ بایگانی‌نشده و عملیات شاخه‌سازی و بایگانی محلیِ Gateway را ارائه می‌کند:

bash
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های جفت‌شده فرصت تکمیل داشته باشند؛ زمان پیش‌فرض ادامه‌دادن و بایگانی‌کردن 30,000 ms است. آن‌ها همچنین کلید مشترک --expect-final را ارائه می‌کنند که این RPCهای یک‌درخواستی نظارت را تغییر نمی‌دهد. هر فرمان به دامنهٔ Gateway با شناسهٔ operator.write نیاز دارد. خروجی استاندارد -h, --help در هر زیرفرمان در دسترس است. هیچ گزینه‌ای برای بایگانی‌شده‌ها یا شامل‌کردن بایگانی‌شده‌ها وجود ندارد. 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، Continue as branch را روی یک ردیف ذخیره‌شده یا بی‌کار انتخاب کنید. OpenClaw یک ورودی معمولی گفت‌وگو ایجاد می‌کند، تاریخچهٔ محدود کاربر و دستیار را تا آخرین نوبت پایانیِ ماندگارشدهٔ منبع (تکمیل‌شده، قطع‌شده یا ناموفق) بازتاب می‌دهد، یک شاخهٔ در انتظار harness ثبت می‌کند و گفت‌وگو را باز می‌کند. انتخاب‌گر عمومی مدل قفل است، اما هنوز هیچ مدل یا ارائه‌دهندهٔ مشخصی انتخاب نشده است. منبع از سر گرفته نمی‌شود و رشتهٔ متعارف harness نیز هنوز آغاز نشده است. تکرار این اقدام به‌جای ایجاد شاخه‌ای دیگر، گفت‌وگوی موجود را باز می‌کند.

بازتاب، جدیدترین بخش انتهایی قابل‌مشاهده‌ای را نگه می‌دارد که در هر سه محدودیت جا شود: حداکثر 200 پیام کاربر یا دستیار، در مجموع 512 KiB متن UTF-8 و 64 KiB برای هر پیام. پیام‌های بیش‌ازحد بزرگ با یک نشانگر کوتاه می‌شوند و هنگام رسیدن به سقف، پیام‌های قدیمی‌تر حذف می‌شوند. ورودی تصویر یا تصویر محلی به جای‌نگهدار تحت‌اللفظی [Image attachment] تبدیل می‌شود؛ دادهٔ تصویر و مسیرهای محلی کپی نمی‌شوند.

برای آغاز کار، نخستین پیام عادی گفت‌وگو را ارسال کنید. هارنس Codex، کنترل‌کننده‌های واقعی تأیید، درخواست ورودی، رویداد و تحویل را نصب می‌کند. این هارنس از یک فورک بومی موقت روی اتصال نظارت استفاده می‌کند تا اسنپ‌شات منبع را بدون ارائهٔ جایگزین برای مدل یا ارائه‌دهنده ثابت نگه دارد. Codex App Server هر دو را از پیکربندی بومی فعلی خود انتخاب می‌کند و انتخاب واقعی را برمی‌گرداند. روی همان اتصال، OpenClaw رشتهٔ کامل و استاندارد هارنس با منبع appServer را در مسیر کاری جاری و تحت سیاست زمان اجرای آن، دقیقاً با همان جفت بازگشتی آغاز می‌کند، تاریخچهٔ قابل‌مشاهدهٔ محدود را تزریق می‌کند و فورک موقت را بایگانی می‌کند. رشتهٔ استاندارد به سطح کامل ابزارهای هارنس OpenClaw دسترسی دارد. این یک شاخه از تاریخچهٔ قابل‌مشاهده است، نه یک همتای کامل از اجرای بومی: استدلال منبع، فراخوانی‌های ابزار و نتایج ابزار حذف می‌شوند. این نوبت و همهٔ نوبت‌های بعدی روی اتصال تحت نظارت Codex باقی می‌مانند، نه روی زمان اجرای مدل دیگری از OpenClaw یا هارنس عادی خانهٔ عامل.

انتخاب بازگشتی، اثباتی برای مدل تاریخی منبع نیست. اگر پیکربندی بومی فعلی با مدل ثبت‌شده برای آخرین نوبت منبع متفاوت باشد، Codex هشدار عادی تفاوت مدل را صادر می‌کند. OpenClaw از جفت بازگشتی برای آغاز رشتهٔ استاندارد استفاده می‌کند. Codex مدل و ارائه‌دهندهٔ بومی آن رشتهٔ استاندارد را ماندگار می‌کند و ازسرگیری‌های بعدی آن‌ها را حفظ می‌کنند، زیرا OpenClaw جایگزین‌های مدل و ارائه‌دهنده را مشخص نمی‌کند. اگر رشتهٔ استاندارد از طریق یک کنترل بومی جداگانهٔ Codex تغییر کند، OpenClaw انتخاب ماندگارشدهٔ Codex را می‌پذیرد. OpenClaw هرگز مدل بیرونی یا زنجیرهٔ جایگزین خود را جانشین نمی‌کند.

گفت‌وگوی تحت نظارت و قفل‌شده به مدل را نمی‌توان حذف کرد، مدل آن را تغییر داد، از /new یا /reset استفاده کرد، کنش بازنشانی نشست Gateway را فراخواند یا از کنش عمومی Fork session استفاده کرد. تغییر /codex model <model>، /codex bind، /codex resume (از جمله یک نشست Node با --bind here) و /codex detach یا /codex unbind نیز رد می‌شود، زیرا این کار اتصال بومی قفل‌شده را جایگزین یا پاک می‌کند. پرس‌وجوی /codex model و /codex fast، /codex permissions و /codex threads همچنان در دسترس می‌مانند. هنگامی که مدلی متفاوت یا رشته‌ای تازه می‌خواهید، نشست عادی دیگری را آغاز کنید.

نظارت را برای این گفت‌وگو فعال نگه دارید. اگر نظارت غیرفعال شود یا اتصال ذخیره‌شدهٔ آن از دسترس خارج یا ناسازگار شود، نوبت به‌صورت بسته و ایمن شکست می‌خورد، به‌جای آنکه به یک نشست عادی خانهٔ عامل منتقل شود.

غیرفعال‌کردن یا حذف Plugin ‏codex، آن مالکیت را آزاد نمی‌کند و گفت‌وگو را واجد شرایط استفاده از مدلی دیگر نمی‌سازد. گفت‌وگوی قفل‌شده حفظ می‌شود، اما در دسترس نخواهد بود؛ برای ازسرگیری آن، همان Plugin را دوباره نصب یا فعال کنید و Gateway را راه‌اندازی مجدد کنید. این رفتار عمدیِ بسته و ایمن مانع از آن می‌شود که پاک‌سازی نگهداشت یا اختلال موقت Plugin، اتصال بومی را بی‌سروصدا بدون مالک باقی بگذارد.

ابزار عامل codex_threads از همین مرز پیروی می‌کند. این ابزار نمی‌تواند فورکی متفاوت را متصل کند یا رشتهٔ بومیِ متصل به گفت‌وگو را بایگانی کند. فهرست‌کردن و خواندن صرفاً فراداده همچنان در دسترس‌اند. خواندن متن خام نشست به allowRawTranscripts نیاز دارد. وقتی دسترسی خام غیرفعال است، codex_threads جست‌وجوی فهرست را نیز رد می‌کند، زیرا جست‌وجوی بومی شامل پیش‌نمایش متن نشست است؛ Control UI و CLI اپراتور همچنان جست‌وجوی محدود و صرفاً مبتنی بر عنوان را ارائه می‌کنند. تغییر نام، خارج‌کردن از بایگانی، فورک جداشده و بایگانی یک رشتهٔ نامرتبط و بدون مالک به allowWriteControls نیاز دارند. هیچ‌یک از گزینه‌ها اتصال قفل‌شده را دور نمی‌زنند.

OpenClaw هنگام صرفاً فهرست‌کردن رشتهٔ منبع یا نمایش گفت‌وگوی در انتظار، درخواست‌های تأیید را دریافت نمی‌کند یا به آن‌ها پاسخ نمی‌دهد. آغاز یک رشتهٔ متمایز و استاندارد هارنس در نخستین نوبت، به فرایند دیگری از Codex اجازه می‌دهد مالکیت منبع را حفظ کند، بدون آنکه نویسندگان رقیب اجرا ایجاد شوند.

منبع اصلی CLI، ‏VS Code، ‏Atlas یا ChatGPT برای کلاینت‌های بومی و کاتالوگ OpenClaw قابل‌مشاهده باقی می‌ماند. شاخهٔ استاندارد به‌صورت یک رشتهٔ بومی Codex ذخیره می‌شود، اما نوع منبع آن appServer است؛ Codex Desktop یا یک کلاینت بومی دیگر ممکن است آن نوع منبع را فیلتر کند، بنابراین تضمینی نیست که خود شاخه در همهٔ نماهای تاریخچهٔ بومی ظاهر شود.

ردیفی فعال که App Server مربوط به OpenClaw گزارش کرده است، نمی‌تواند شاخه‌ای جدید آغاز کند. منتظر بمانید تا نوبت فعلی پایان یابد و سپس کاتالوگ را تازه‌سازی کنید. Codex App Server تغییرات را درون یک فرایند به‌ترتیب اجرا می‌کند، اما اجراکنندهٔ انحصاری میان‌فرایندی یا اجارهٔ مالک تأیید ارائه نمی‌دهد.

برای ردیف Stored / activity unknown، آینهٔ گفت‌وگو و تثبیت اسنپ‌شات نخستین نوبت، از وضعیت Codex تا آخرین نوبت نهاییِ ماندگارشده استفاده می‌کنند. رشتهٔ منبع از سر گرفته، متوقف یا بایگانی نمی‌شود. اگر فرایند دیگری نوبتی در حال اجرا داشته باشد، ممکن است جدیدترین کار در جریان آن در شاخه وجود نداشته باشد.

بایگانی یک نشست محلی

در یک ردیف ذخیره‌شده یا غیرفعالِ محلی Gateway، گزینهٔ Archive را انتخاب کنید، سپس تأیید کنید که هیچ کلاینت دیگری از Codex یا اجراکنندهٔ OpenClaw از آن رشته یا فرزندان ایجادشدهٔ آن استفاده نمی‌کند. OpenClaw وضعیت محلی فرایند را دوباره و تازه می‌خواند، فقط برای idle یا notLoaded ادامه می‌دهد، عملیات بومی بایگانی Codex را فراخوانی می‌کند و نشست را از فهرست بایگانی‌نشده حذف می‌کند. Codex بومی همچنین تلاش می‌کند فرزندان ایجادشدهٔ رشته را بایگانی کند.

وقتی خواندن تازه، نشست را فعال یا در وضعیت خطا گزارش کند، نشست متعلق به یک Node جفت‌شده باشد یا گفت‌وگوی تحت نظارتی که به‌تازگی ایجاد شده هنوز شاخه‌ای در انتظار از آن منبع داشته باشد، بایگانی در دسترس نیست. پیش از بایگانی منبع، نخستین پیام گفت‌وگو را ارسال کنید تا شاخهٔ استاندارد آن محقق شود. همچنین وقتی OpenClaw بداند یک اتصال فعال مالک دقیقاً همان رشتهٔ هدف یا هر فرزند ایجادشدهٔ بایگانی‌نشده‌ای است، بایگانی مسدود می‌شود. OpenClaw پرس‌وجوی آزمایشی فرزندان Codex را در تمام صفحه‌ها دنبال می‌کند؛ پاسخ نامعتبر، شکست درخواست، تکرار مکان‌نما یا رشته، یا تمام‌شدن حد ایمنی باعث رد بایگانی می‌شود.

درخواست‌های خواندن، شمارش فرزندان و بایگانی یک عملیات شرطی واحد نیستند، بنابراین ممکن است بین آن‌ها همچنان نوبتی آغاز شود. وضعیت App Server نیز میان فرایندهای مستقل مشترک نیست. بنابراین تأیید، مرز ایمنی برای کلاینت‌های ناشناخته و آن وضعیت رقابتی است: پیش از تأیید، همهٔ کلاینت‌های دیگر را ببندید یا وضعیتشان را به روشی دیگر بررسی کنید. یک رشتهٔ بایگانی‌شده را با Codex Desktop، ‏Codex CLI یا یک جریان مدیریت بومی رشته که مالک مجاز کرده است بازیابی کنید؛ پس از خارج‌شدن از بایگانی دوباره ظاهر می‌شود.

bash
codex unarchive <thread-id>

درک محدودیت‌های Node جفت‌شده

Nodeهای جفت‌شده فرمان‌های فقط‌خواندنی و نسخه‌بندی‌شدهٔ codex.appServer.threads.list.v1 و codex.appServer.thread.turns.list.v1 را ارائه می‌کنند. میزبان‌های بومی Node که Codex CLI روی آن‌ها در دسترس است، فرمان مجازشدهٔ codex.terminal.resume.v1 را نیز ارائه می‌کنند. Gateway فرادادهٔ نرمال‌سازی‌شده و صفحه‌های محدود متن نشست را که صریحاً درخواست شده‌اند دریافت می‌کند، نه نقاط پایانی خام App Server را. بازکردن یک ردیف در ترمینال اپراتور، codex resume <thread-id> را روی میزبان مالک اجرا و PTY آن فرمان را بازپخش می‌کند؛ این کار پوسته‌ای عمومی یا argv تأمین‌شده از سوی Gateway را در معرض دسترس قرار نمی‌دهد.

بازپخش ترمینال، قراردادهای ادامهٔ هارنس یا مالکیت بایگانی را ارائه نمی‌کند. بنابراین ردیف‌های راه‌دور قابل‌مشاهده باقی می‌مانند، اما Continue یا Archive را ارائه نمی‌کنند، حتی وقتی رشتهٔ راه‌دور غیرفعال باشد. از طریق Open in terminal روی همان رایانه از Codex استفاده کنید، یا از یک جریان ادامهٔ آینده با مرز ایمن مالکیت اجراکننده بهره ببرید.

فراداده و مجوزها

ردیف‌های کاتالوگ ممکن است شامل موارد زیر باشند:

  • شناسه‌های رشته و نشست
  • عنوان و دایرکتوری کاری
  • وضعیت فعلی و پرچم‌های انتظار فعال
  • مهرهای زمانی ایجاد، به‌روزرسانی و فعالیت
  • منبع، ارائه‌دهندهٔ مدل، نسخهٔ Codex CLI و شاخهٔ Git

نمایش کاتالوگ، پیش‌نمایش متن نشست، نوبت‌ها، مسیرهای اجرا، مسیر خانهٔ Codex، ‏remoteهای Git، ‏SHAهای commit و خطاهای خام App Server را حذف می‌کند. دسترسی به کاتالوگ و خواندن متن نشست در Control UI به دامنهٔ Gateway یعنی operator.write نیاز دارند، زیرا تجمیع ناوگان از مسیر استاندارد node.invoke استفاده می‌کند، حتی با وجود آنکه هر دو فرمان Node فقط‌خواندنی هستند.

supervision.allowRawTranscripts و supervision.allowWriteControls ابزارهای عامل خودکار و MCP مستقل را کنترل می‌کنند. مقدار پیش‌فرض هر دو false است. با فعال‌بودن نظارت، codex_threads پیش‌نمایش‌های متن نشست و نوبت‌ها را از نتایج فهرست و خواندن صرفاً فراداده حذف می‌کند، مگر آنکه متن خام نشست مجاز باشد؛ خواندنی که شامل نوبت‌ها باشد به‌صورت بسته و ایمن شکست می‌خورد. هر فورک، تغییر نام، بایگانی و خارج‌کردن از بایگانی به کنترل‌های نوشتن نیاز دارد. این گزینه‌ها مشاهدهٔ احراز هویت‌شدهٔ متن نشست در Control UI را محدود نمی‌کنند و بررسی‌های اتصال، میزبان، وضعیت یا تأیید را دور نمی‌زنند.

ابزارهای سازگاری

Plugin رسمی codex پنج نام عرضه‌شدهٔ ابزار Supervisor را برای عامل‌های موجود و کلاینت‌های مستقل MCP حفظ می‌کند:

  • codex_endpoint_probe
  • codex_sessions_list
  • codex_session_read
  • codex_session_send
  • codex_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 Sessions ارائه می‌شود؛ جایی که هارنس کامل، کنترل‌کننده‌های تأیید و ابزار را پیش از ادامه نصب می‌کند. وقفه نیز به یک نوبت فعال و خواندنی نیاز دارد. این ابزارها رشتهٔ منبع غیرفعال را از سر نمی‌گیرند یا آغاز نمی‌کنند.

openclaw doctor --fix یک ورودی بازنشستهٔ codex-supervisor، فیلدهای نقطهٔ پایانی و مجوز آن و ارجاع‌های سیاست مجاز/غیرمجاز Plugin را بدون بازنویسی تنظیمات صریح و استاندارد به Plugin رسمی codex منتقل می‌کند. آداپتور مستقل سازگاری MCP همچنان همان پنج ابزار را از آن Plugin بارگذاری می‌کند؛ متغیرهای محیطی سیاست قدیمی فقط درون همان آداپتور قابل‌اعتماد اعمال می‌شوند.

برای همهٔ فیلدهای پیکربندی نظارت، به مرجع هارنس Codex مراجعه کنید.

عیب‌یابی

هیچ نشستی ظاهر نمی‌شود: بررسی کنید که @openclaw/codex نصب شده باشد، هم Plugin و هم supervision.enabled مقدار true داشته باشند، فهرست مجاز فعلی Plugin، codex را مجاز بداند و نشست‌ها بایگانی نشده باشند. پس از تغییر فعال‌سازی، Gateway یا Node را راه‌اندازی مجدد کنید.

Continue غیرفعال است: یک ردیف نگاشت‌نشده فعال است، به یک Node جفت‌شده تعلق دارد، میزبان آن آفلاین است یا کنش دیگری در انتظار است. ردیف‌های محلی Gateway که ذخیره‌شده یا غیرفعال‌اند، به‌جای تصاحب ناامن دقیق رشته، Continue as branch را ارائه می‌کنند. ردیفی که از قبل گفت‌وگویی تحت نظارت دارد، Open Chat را ارائه می‌کند.

Archive غیرفعال است: پس از تأیید اینکه اجراکنندهٔ دیگری وجود ندارد، بایگانی برای ردیف‌های محلی Gateway با وضعیت ذخیره‌شده/فعالیت نامشخص و غیرفعال در دسترس است. ردیف‌های فعال، خطادار، آفلاین، مربوط به Node جفت‌شده، دارای شاخهٔ در انتظار و دارای مالک شناخته‌شدهٔ اتصال دقیق، برای بایگانی فقط‌خواندنی باقی می‌مانند.

یک نشست بایگانی‌شده ناپدید شد: این رفتار مورد انتظار است. صفحهٔ نظارت نمای بایگانی‌شده ندارد. codex unarchive <thread-id> را اجرا کنید یا از Codex Desktop استفاده کنید تا دوباره نمایش داده شود.

پیکربندی قدیمی codex-supervisor باقی مانده است: openclaw doctor --fix را اجرا کنید. Doctor ورودی بازنشستهٔ Plugin و ارجاع‌های مرتبط سیاست Plugin را بدون بازنویسی تنظیمات صریح Codex به plugins.entries.codex.config.supervision منتقل می‌کند.

مرتبط

Was this useful?
On this page

On this page