Codex harness
Pluginهای بومی Codex
پشتیبانی بومی Plugin برای Codex به یک عامل OpenClaw در حالت Codex اجازه میدهد از قابلیتهای خودِ برنامه و Plugin در app-server مربوط به Codex، داخل همان رشته Codex که نوبت OpenClaw را مدیریت میکند، استفاده کند.
OpenClaw Pluginهای Codex را به ابزارهای پویای مصنوعی codex_plugin_* در OpenClaw تبدیل نمیکند. فراخوانیهای Plugin در رونوشت بومی Codex باقی میمانند، و app-server مربوط به Codex اجرای MCP پشتوانهدار با برنامه را بر عهده دارد.
پس از کار کردن مهار Codex پایه، از این صفحه استفاده کنید.
الزامات
- زمان اجرای عامل OpenClaw انتخابشده باید مهار بومی Codex باشد.
plugins.entries.codex.enabledباید true باشد.plugins.entries.codex.config.codexPlugins.enabledباید true باشد.- نسخه V1 فقط از Pluginهای
openai-curatedپشتیبانی میکند که مهاجرت مشاهده کرده است بهصورت منبعنصبشده در خانه Codex منبع وجود دارند. - app-server هدف Codex باید بتواند بازارچه، Plugin و موجودی برنامه مورد انتظار را ببیند.
codexPlugins روی اجرایهای PI، اجرایهای عادی فراهمکننده OpenAI، اتصالهای گفتوگوی ACP، یا مهارهای دیگر اثری ندارد، چون این مسیرها رشتههای app-server مربوط به Codex را با پیکربندی بومی apps ایجاد نمیکنند.
شروع سریع
پیشنمایش مهاجرت از خانه Codex منبع:
openclaw migrate codex --dry-run
وقتی میخواهید مهاجرت پیش از برنامهریزی فعالسازی بومی Plugin، دسترسیپذیری برنامه منبع را بررسی کند، از راستیآزمایی سختگیرانه برنامه منبع استفاده کنید:
openclaw migrate codex --dry-run --verify-plugin-apps
وقتی برنامه درست به نظر میرسد، مهاجرت را اعمال کنید:
openclaw migrate apply codex --yes
مهاجرت ورودیهای صریح codexPlugins را برای Pluginهای واجد شرایط مینویسد و برای Pluginهای انتخابشده، plugin/install مربوط به app-server متعلق به Codex را فراخوانی میکند. یک پیکربندی مهاجرتیافته معمولی به این شکل است:
{
plugins: {
entries: {
codex: {
enabled: true,
config: {
codexPlugins: {
enabled: true,
allow_destructive_actions: true,
plugins: {
"google-calendar": {
enabled: true,
marketplaceName: "openai-curated",
pluginName: "google-calendar",
},
},
},
},
},
},
},
}
پس از تغییر codexPlugins، از /new، /reset استفاده کنید یا Gateway را بازراهاندازی کنید تا نشستهای آینده مهار Codex با مجموعه برنامه بهروزشده شروع شوند.
سازوکار راهاندازی بومی Plugin
این یکپارچهسازی سه وضعیت جداگانه دارد:
- نصبشده: Codex بسته محلی Plugin را در زمان اجرای app-server هدف دارد.
- فعالشده: پیکربندی OpenClaw مایل است Plugin را برای نوبتهای مهار Codex در دسترس قرار دهد.
- دسترسپذیر: app-server مربوط به Codex تأیید میکند که ورودیهای برنامه Plugin برای حساب فعال در دسترس هستند و میتوانند به هویت Plugin مهاجرتیافته نگاشت شوند.
مهاجرت مرحله پایدار نصب/واجدشرایطبودن است. هنگام برنامهریزی، OpenClaw جزئیات plugin/read منبع Codex را میخواند و بررسی میکند که پاسخ حساب app-server منبع Codex یک حساب اشتراک ChatGPT باشد. پاسخهای غیر ChatGPT یا پاسخهای حساب مفقود، Pluginهای پشتوانهدار با برنامه را با codex_subscription_required رد میکنند. بهطور پیشفرض، مهاجرت app/list منبع را فراخوانی نمیکند؛ Pluginهای منبع پشتوانهدار با برنامه که از دروازه حساب عبور میکنند، بدون راستیآزمایی دسترسیپذیری برنامه منبع برنامهریزی میشوند، و شکستهای انتقال در جستوجوی حساب با codex_account_unavailable رد میشوند. با --verify-plugin-apps، مهاجرت یک نمای لحظهای تازه از app/list منبع میگیرد و پیش از برنامهریزی فعالسازی بومی، لازم میداند هر برنامه مالکیتدار حاضر، فعال و دسترسپذیر باشد. در آن حالت، شکستهای انتقال در جستوجوی حساب به دروازه موجودی برنامه منبع واگذار میشوند. موجودی برنامه زمان اجرا، بررسی دسترسیپذیری نشست هدف پس از مهاجرت است. سپس راهاندازی نشست مهار Codex یک پیکربندی محدودکننده برنامه رشته را برای برنامههای Plugin فعالشده و دسترسپذیر محاسبه میکند.
پیکربندی برنامه رشته زمانی محاسبه میشود که OpenClaw یک نشست مهار Codex برقرار میکند یا یک اتصال رشته Codex کهنه را جایگزین میکند. این پیکربندی در هر نوبت دوباره محاسبه نمیشود.
مرز پشتیبانی V1
V1 عمداً محدود است:
- فقط Pluginهای
openai-curatedکه از قبل در موجودی app-server منبع Codex نصب شده بودند، واجد شرایط مهاجرت هستند. - Pluginهای منبع پشتوانهدار با برنامه باید از دروازه اشتراک هنگام مهاجرت عبور کنند.
--verify-plugin-appsدروازه موجودی برنامه منبع را اضافه میکند. حسابهای نیازمند اشتراک، و در حالت راستیآزمایی، برنامههای منبع دسترسناپذیر، غیرفعال یا مفقود، یا شکستهای تازهسازی موجودی برنامه منبع، بهجای ورودیهای پیکربندی فعالشده، بهعنوان موارد دستی ردشده گزارش میشوند. جزئیات خواندنشدنی Plugin پیش از دروازه موجودی برنامه منبع رد میشوند. - مهاجرت هویتهای صریح Plugin را با
marketplaceNameوpluginNameمینویسد؛ مسیرهای کش محلیmarketplacePathرا نمینویسد. codexPlugins.enabledکلید فعالسازی سراسری است.- هیچ wildcard با
plugins["*"]و هیچ کلید پیکربندیای که اختیار نصب دلخواه بدهد وجود ندارد. - بازارچههای پشتیبانینشده، بستههای کششده Plugin، hookها و فایلهای پیکربندی Codex برای بررسی دستی در گزارش مهاجرت حفظ میشوند.
موجودی برنامه و مالکیت
OpenClaw موجودی برنامه Codex را از طریق app/list مربوط به app-server میخواند، آن را بهمدت یک ساعت کش میکند، و ورودیهای کهنه یا مفقود را بهصورت ناهمگام تازهسازی میکند. کش فقط در حافظه است؛ بازراهاندازی CLI یا Gateway آن را حذف میکند، و OpenClaw آن را از خواندن بعدی app/list دوباره میسازد.
مهاجرت و زمان اجرا از کلیدهای کش جداگانه استفاده میکنند:
- راستیآزمایی مهاجرت منبع از خانه Codex منبع و گزینههای شروع app-server منبع استفاده میکند. این فقط وقتی اجرا میشود که
--verify-plugin-appsتنظیم شده باشد، و برای همان اجرای برنامهریزی، یک پیمایش تازهapp/listمنبع را اجباری میکند. - راهاندازی زمان اجرای هدف از هویت app-server مربوط به Codex برای عامل هدف استفاده میکند، وقتی که پیکربندی برنامه رشته Codex را میسازد. فعالسازی Plugin آن کلید کش هدف را نامعتبر میکند و سپس پس از
plugin/installآن را بهاجبار تازهسازی میکند.
یک برنامه Plugin فقط زمانی نمایان میشود که OpenClaw بتواند آن را از طریق مالکیت پایدار به Plugin مهاجرتیافته نگاشت کند:
- شناسه دقیق برنامه از جزئیات Plugin
- نام شناختهشده سرور MCP
- فراداده پایدار یکتا
مالکیت فقط بر پایه نام نمایشی یا مالکیت مبهم تا تازهسازی بعدی موجودی که مالکیت را اثبات کند حذف میشود.
پیکربندی برنامه رشته
OpenClaw یک وصله محدودکننده config.apps را برای رشته Codex تزریق میکند: _default غیرفعال میشود و فقط برنامههایی که مالکیت آنها با Pluginهای مهاجرتیافته فعال است، فعال میشوند.
OpenClaw مقدار destructive_enabled در سطح برنامه را از سیاست مؤثر سراسری یا مختص Plugin برای allow_destructive_actions تنظیم میکند و اجازه میدهد Codex فراداده ابزار مخرب را از حاشیهنویسیهای ابزار برنامه بومی خودش اعمال کند. پیکربندی برنامه _default با open_world_enabled: false غیرفعال میشود. برنامههای Plugin فعالشده با open_world_enabled: true صادر میشوند؛ OpenClaw دستگیره سیاست جهانباز جداگانهای برای Plugin ارائه نمیکند و فهرستهای رد نام ابزار مخرب در سطح Plugin نگه نمیدارد.
حالت تأیید ابزار بهطور پیشفرض برای برنامههای Plugin خودکار است تا ابزارهای خواندن غیرمخرب بتوانند بدون UI تأیید در همان رشته اجرا شوند. ابزارهای مخرب همچنان توسط سیاست destructive_enabled هر برنامه کنترل میشوند.
سیاست کنش مخرب
درخواستهای مخرب Plugin بهطور پیشفرض برای Pluginهای Codex مهاجرتیافته مجاز هستند، در حالی که شِماهای ناامن و مالکیت مبهم همچنان بسته شکست میخورند:
- مقدار پیشفرض سراسری
allow_destructive_actionsبرابرtrueاست. - مقدار مختص Plugin برای
allow_destructive_actionsسیاست سراسری را برای همان Plugin بازنویسی میکند. - وقتی سیاست
falseباشد، OpenClaw یک رد قطعی برمیگرداند. - وقتی سیاست
trueباشد، OpenClaw فقط شِماهای امنی را که بتواند به پاسخ تأیید نگاشت کند، مانند یک فیلد تأیید بولی، بهطور خودکار میپذیرد. - هویت Plugin مفقود، مالکیت مبهم، شناسه نوبت مفقود، شناسه نوبت اشتباه، یا شِمای درخواست ناامن بهجای نمایش درخواست، رد میشود.
عیبیابی
auth_required: مهاجرت Plugin را نصب کرده است، اما یکی از برنامههای آن هنوز به احراز هویت نیاز دارد. ورودی صریح Plugin تا وقتی دوباره مجوزدهی و فعالش کنید، بهصورت غیرفعال نوشته میشود.
app_inaccessible، app_disabled یا app_missing:
مهاجرت Plugin را نصب نکرد، چون موجودی برنامه منبع Codex نشان نمیداد همه برنامههای مالکیتدار هنگام تنظیم بودن --verify-plugin-apps حاضر، فعال و دسترسپذیر هستند. در Codex دوباره به برنامه مجوز بدهید یا آن را فعال کنید، سپس مهاجرت را با --verify-plugin-apps دوباره اجرا کنید.
app_inventory_unavailable: مهاجرت Plugin را نصب نکرد، چون راستیآزمایی سختگیرانه برنامه منبع درخواست شده بود و تازهسازی موجودی برنامه منبع Codex شکست خورد. دسترسی app-server منبع Codex را درست کنید یا اگر برنامه سریعترِ مبتنی بر دروازه حساب را میپذیرید، بدون --verify-plugin-apps دوباره تلاش کنید.
codex_subscription_required: مهاجرت Plugin پشتوانهدار با برنامه را نصب نکرد، چون حساب app-server منبع Codex با یک حساب اشتراک ChatGPT وارد نشده بود. با احراز هویت اشتراک وارد برنامه Codex شوید، سپس مهاجرت را دوباره اجرا کنید.
codex_account_unavailable: مهاجرت Plugin پشتوانهدار با برنامه را نصب نکرد، چون حساب app-server منبع Codex قابل خواندن نبود. احراز هویت app-server منبع Codex را درست کنید یا اگر میخواهید هنگام شکست جستوجوی حساب، موجودی برنامه منبع درباره واجد شرایط بودن تصمیم بگیرد، با --verify-plugin-apps دوباره اجرا کنید.
marketplace_missing یا plugin_missing: app-server هدف Codex نمیتواند بازارچه یا Plugin مورد انتظار openai-curated را ببیند. مهاجرت را در برابر زمان اجرای هدف دوباره اجرا کنید یا وضعیت Plugin در app-server مربوط به Codex را بررسی کنید.
app_inventory_missing یا app_inventory_stale: آمادگی برنامه از یک کش خالی یا کهنه آمده است. OpenClaw یک تازهسازی ناهمگام زمانبندی میکند و تا وقتی مالکیت و آمادگی شناخته شوند، برنامههای Plugin را حذف میکند.
app_ownership_ambiguous: موجودی برنامه فقط با نام نمایشی منطبق شده است، بنابراین برنامه به رشته Codex نمایان نمیشود.
پیکربندی تغییر کرده اما عامل نمیتواند Plugin را ببیند: از /new، /reset استفاده کنید یا Gateway را بازراهاندازی کنید. اتصالهای رشته Codex موجود تا وقتی OpenClaw یک نشست مهار جدید برقرار کند یا یک اتصال کهنه را جایگزین کند، پیکربندی برنامهای را نگه میدارند که با آن شروع شدهاند.
کنش مخرب رد میشود: مقدارهای سراسری و مختص Plugin در allow_destructive_actions را بررسی کنید. حتی وقتی سیاست true باشد، شِماهای درخواست ناامن و هویت مبهم Plugin همچنان بسته شکست میخورند.