Codex harness
مرجع بيئة Codex التشغيلية
يغطي هذا المرجع الإعدادات التفصيلية لـ Plugin الرسمي codex.
للبدء بقرارات الإعداد والتوجيه، راجع
حاضنة Codex.
نطاق إعدادات Plugin
توجد جميع إعدادات حاضنة Codex ضمن plugins.entries.codex.config.
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, appServer: { mode: "guardian", }, }, }, }, },}حقول المستوى الأعلى:
| الحقل | القيمة الافتراضية | المعنى |
|---|---|---|
discovery |
مفعّل | إعدادات اكتشاف النماذج لـ model/list في خادم تطبيق Codex. |
appServer |
خادم تطبيق stdio مُدار | إعدادات النقل والأمر والمصادقة والموافقة والعزل والمهلة الزمنية. تستخدم الحاضنة العادية افتراضيًا حالة خاصة بكل وكيل. |
codexDynamicToolsLoading |
"searchable" |
استخدم "direct" لوضع أدوات OpenClaw الديناميكية مباشرةً في سياق أدوات Codex الأولي. |
codexDynamicToolsExclude |
[] |
أسماء إضافية لأدوات OpenClaw الديناميكية يجب حذفها من أدوار خادم تطبيق Codex. |
codexPlugins |
معطّل | دعم Plugins/التطبيقات الأصلية في Codex، بما في ذلك الوصول الاختياري إلى تطبيقات الحسابات المتصلة. راجع Plugins الأصلية في Codex. |
computerUse |
معطّل | إعداد استخدام الكمبيوتر في Codex. راجع استخدام الكمبيوتر في Codex. |
supervision |
معطّل | فهرس الجلسات الأصلية غير المؤرشفة، ومتابعة الفرع المحلي، وسياسة أدوات الوكيل. راجع الإشراف في Codex. |
الإشراف
يسرد الإشراف جلسات Codex غير المؤرشفة من حاسوب Gateway والعُقد المقترنة التي اشتركت اختياريًا. فعّله بصورة مستقلة عن حاضنة الوكيل:
{ plugins: { entries: { codex: { enabled: true, config: { supervision: { enabled: true, }, }, }, }, },}حقول supervision:
| الحقل | القيمة الافتراضية | المعنى |
|---|---|---|
enabled |
false |
أعلن عن فهرس الجلسات المحلي، واجمع في Gateway فهارس العُقد المقترنة التي اشتركت اختياريًا لصفحة جلسات Codex. |
endpoints |
نقطة نهاية محلية مضمّنة | أهداف نقاط النهاية للتوافق والاستخدامات المتقدمة لوكيل إشراف Codex المحتفظ به وأدوات MCP المستقلة. يتجاهل الفهرس البشري وتدفق الفروع هذه الأهداف ويستخدمان خادم تطبيق الإشراف المحسوم من appServer. |
allowRawTranscripts |
false |
عند تمكين الإشراف، اسمح للوكيل المستقل أو MCP المستقل بقراءة النصوص الخام والحقول المدرجة المشتقة منها. تظل قراءات البيانات الوصفية فقط في codex_threads متاحة. لا يتحكم هذا في المتابعة المصادق عليها من واجهة التحكم. |
allowWriteControls |
false |
عند تمكين الإشراف، اسمح لعمليات codex_threads المستقلة بالتفرع وإعادة التسمية والأرشفة وإلغاء الأرشفة، بالإضافة إلى عمليات الإرسال والتوجيه والمقاطعة في MCP المستقل. لا يتجاوز هذا عمليات التحقق الأخرى من الربط أو المضيف أو الحالة أو التأكيد. |
تقبل إدخالات نقاط النهاية الحقول التالية:
| الحقل | ينطبق على | المعنى |
|---|---|---|
id |
الكل | معرّف ثابت لنقطة النهاية. |
label |
الكل | تسمية عرض اختيارية. |
transport |
الكل | "stdio-proxy" أو "websocket". |
command |
stdio-proxy |
أمر اختياري لخادم التطبيق. |
args |
stdio-proxy |
وسيطات أمر اختيارية. |
cwd |
stdio-proxy |
دليل عمل اختياري للعملية الفرعية. |
url |
websocket |
عنوان URL مطلوب لـ WebSocket أو لمقبس محلي مدعوم. |
authTokenEnv |
websocket |
متغير بيئة اختياري تُصادق قيمته على نقطة النهاية. |
تستخدم صفحة جلسات Codex خادم تطبيق الإشراف الخاص بالـ Plugin، ولا تعرض
إلا الجلسات غير المؤرشفة. في غياب إعدادات اتصال صريحة لـ appServer،
يكون ذلك الاتصال عبر stdio مُدار في الدليل المنزلي للمستخدم. يمكن للصفوف المحلية المخزنة أو الخاملة إنشاء
محادثة مقيدة بالنموذج، مع سجل محدود للمستخدم والمساعد حتى آخر
دور مصدري نهائي محفوظ. يحافظ ربطها الخاص على تفرع اللقطة،
وفرع المصدر الأساسي لـ appServer، وحقن السجل، والأدوار اللاحقة على ذلك
الاتصال. تستخدم البداية الأساسية الأولى الزوج الذي يعيده التفرع. أما عمليات
الاستئناف اللاحقة فتحذف تجاوزات نموذج OpenClaw ومزوده كي يستعيد Codex
الزوج المحفوظ للمحادثة الأساسية؛ ويمكن لتغيير أصلي منفصل تحديث ذلك
الزوج، لكن النموذج الخارجي وسلسلة البدائل لا يستبدلانه أبدًا. يمكن أرشفة الصفوف
المخزنة والخاملة بعد التأكد من عدم وجود منفّذ آخر، ما لم يمتلك ربط OpenClaw
نشط آخر الهدف نفسه تمامًا أو أحد الفروع المتفرعة غير المؤرشفة التابعة له.
يتبع OpenClaw ترقيم صفحات الفروع التابعة في Codex ويتوقف بصورة آمنة عند
أخطاء التعداد أو الحلقات أو استنفاد حد الأمان. يظل التأكيد
يشمل العملاء الأصليين غير المعروفين وسباق الانتقال من الحالة إلى الأرشفة. لا يمكن
حذف محادثة مقيدة بالنموذج وخاضعة للإشراف ما دامت تحمي الربط الأصلي.
لا يمكن للمصادر النشطة إنشاء فرع أو أن تُؤرشف، لكن تظل إمكانية فتح محادثة خاضعة للإشراف
موجودة. يبقى كل صف لعقدة مقترنة للقراءة فقط؛ إذ إن نقل العقدة
لا يوفر بعد دورة حياة البث التي تحتاجها الحاضنة.
يغيّر appServer.homeScope: "user" وحده دليل Codex المنزلي الذي تستخدمه عملية
الحاضنة المُدارة؛ ولا ينشر فهرس المجموعة. لا يؤدي تمكين الإشراف
إلى تغيير القيمة الافتراضية للحاضنة. بل يستخدم اتصال الإشراف المنفصل
افتراضيًا stdio مُدارًا في الدليل المنزلي للمستخدم عند عدم وجود إعدادات اتصال
صريحة لـ appServer. تُحترم الإعدادات الصريحة لذلك الاتصال.
تحتفظ عمليات الربط الخاضعة للإشراف، المعلقة والمثبتة، بذلك الاتصال في كل دور؛
ويؤدي تعطيل الإشراف أو انحراف الاتصال/دورة الحياة إلى التوقف بصورة آمنة بدلًا من
الرجوع إلى حاضنة الدليل المنزلي للوكيل. يشارك الاتصال الافتراضي الجلسات المخزنة
مع عملاء Codex الأصليين، لا حالة نشاط عملياتهم المحلية.
تقاعدت إعدادات plugins.entries.codex-supervisor القديمة. شغّل
openclaw doctor --fix لترحيل الإدخال القديم، وتعريفات نقاط النهاية، وأعلام
السياسة، ومراجع السماح/الرفض الخاصة بالـ Plugin إلى هذه الكتلة. تنتصر قيم
codex.config.supervision الأساسية الصريحة عند التعارض.
نقل خادم التطبيق
بالنسبة إلى أدوار الحاضنة العادية، يشغّل OpenClaw ملف Codex التنفيذي المُدار والمرفق
مع Plugin الرسمي (حاليًا @openai/codex 0.144.1):
codex app-server --listen stdio://يبقي ذلك إصدار خادم التطبيق مرتبطًا بـ Plugin الرسمي codex بدلًا من
أي Codex CLI منفصل قد يكون مثبتًا محليًا. لا تضبط
appServer.command إلا عندما تريد عمدًا ملفًا تنفيذيًا مختلفًا.
تفضّل الأدوار المُدارة العادية ذات الدليل المنزلي المعزول الافتراضي للوكيل هذه
الحزمة المثبتة حتى عند تثبيت حزمة سطح مكتب macOS. عند تمكين
استخدام الكمبيوتر، أو عندما تكون قيمة homeScope
هي "user" ويمكنها تحميل حالة استخدام الكمبيوتر الأصلية، يفضّل بدء التشغيل المُدار
بدلًا من ذلك ملف تطبيق سطح المكتب التنفيذي الذي يمتلك أذونات macOS المطلوبة. تنطبق
قاعدة تفضيل سطح المكتب نفسها عندما تفعّل إعدادات Codex الفعالة لدليل منزلي معزول
للوكيل استخدام الكمبيوتر الأصلي. إذا لم تكن أي حزمة لتطبيق سطح المكتب مثبتة، يرجع OpenClaw
إلى الملف التنفيذي للحزمة المثبتة.
ينسّق تسليم الملفات التنفيذية وتسييج الإعدادات الأصلية العملاء داخل عملية Gateway واحدة قيد التشغيل. أعد تشغيل Gateway بعد أن تغيّر عملية أخرى إعدادات Plugin الأصلي في Codex.
يحل الإشراف اتصالًا منفصلًا. عند عدم وجود إعدادات اتصال صريحة
لـ appServer، يستخدم stdio مُدارًا مع homeScope: "user"؛
بينما تظل الحاضنة العادية على stdio مُدار مع homeScope: "agent". تُحترم
إعدادات الاتصال الصريحة في كلا المسارين. اضبط homeScope: "user"
صراحةً عندما ينبغي للحاضنة العادية مشاركة $CODEX_HOME (أو ~/.codex)
مع العملاء الأصليين. يستخدم الربط الخاص الخاضع للإشراف اتصال الإشراف
بغض النظر عن القيمة الافتراضية للحاضنة العادية. تحتفظ عمليات خادم التطبيق
المستقلة بحالات منفصلة للحالة المباشرة والموافقة.
بالنسبة إلى خادم تطبيق قيد التشغيل بالفعل، استخدم نقل WebSocket:
{ 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 أو عنوان 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 |
غير مضبوط | جذر مساحة عمل app-server البعيد في Codex. عند ضبطه، يستنتج OpenClaw جذر مساحة العمل المحلية من مساحة عمل OpenClaw المحلولة، ويحافظ على لاحقة cwd الحالية تحت هذا الجذر البعيد، ويرسل إلى Codex قيمة cwd النهائية لـ app-server فقط. إذا كانت cwd خارج جذر مساحة عمل OpenClaw المحلول، يفشل OpenClaw بشكل مغلق بدلًا من إرسال مسار محلي خاص بـ Gateway إلى app-server البعيد. |
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 إلى workspace-write في Codex؛ وتتبع علامة شبكة الدور خروج شبكة صندوق عزل OpenClaw. |
approvalsReviewer |
"user" أو مراجع مسموح به للحارس |
استخدم "auto_review" للسماح لـ Codex بمراجعة مطالبات الموافقة الأصلية عند السماح بذلك. |
defaultWorkspaceDir |
دليل العملية الحالي | مساحة العمل التي يستخدمها /codex bind عند حذف --cwd. |
serviceTier |
غير مضبوط | فئة خدمة اختيارية لـ app-server في Codex. تمكّن "priority" توجيه الوضع السريع، وتطلب "flex" المعالجة المرنة، بينما تزيل null التجاوز. تُقبل "fast" القديمة باعتبارها "priority". |
networkProxy |
معطّل | موافقة اشتراك في شبكة ملف أذونات Codex لأوامر app-server. يعرّف OpenClaw إعداد permissions.<profile>.network المحدد ويختاره باستخدام default_permissions بدلًا من إرسال sandbox. |
experimental.sandboxExecServer |
false |
موافقة اشتراك تجريبية أولية تسجّل بيئة Codex مدعومة بصندوق عزل OpenClaw لدى app-server المدعوم في Codex، بحيث يمكن لتنفيذ Codex الأصلي العمل داخل صندوق عزل OpenClaw النشط. |
يُعد appServer.networkProxy صريحًا لأنه يغيّر عقد صندوق عزل Codex.
عند تمكينه، يضبط OpenClaw أيضًا features.network_proxy.enabled و
default_permissions في إعداد سلسلة Codex كي يتمكن ملف الأذونات المُنشأ
من بدء الشبكة التي يديرها Codex. يُنشئ OpenClaw افتراضيًا اسم ملف
openclaw-network-<fingerprint> مقاومًا للتصادم من محتوى الملف؛ استخدم
profileName فقط عندما يلزم اسم محلي ثابت.
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", }, }, }, }, }, },};إذا كان وقت تشغيل خادم التطبيق العادي سيستخدم danger-full-access، فإن تمكين
networkProxy يستخدم بدلًا من ذلك وصولًا إلى نظام الملفات بنمط مساحة العمل لملف
تعريف الأذونات المُنشأ. إنفاذ الشبكة المُدار بواسطة Codex هو اتصال شبكي معزول،
لذا لن يحمي ملف تعريف الوصول الكامل حركة البيانات الصادرة.
يحظر Plugin مصافحات خادم التطبيق القديمة أو غير المرقّمة بإصدار: يجب أن يُبلغ
خادم تطبيق Codex عن الإصدار المستقر 0.143.0 أو أحدث.
يتعامل OpenClaw مع عناوين URL لخادم التطبيق عبر WebSocket غير المحلية على أنها
بعيدة، ويتطلب مصادقة WebSocket حاملة للهوية من خلال appServer.authToken أو
ترويسة Authorization. يمكن أن تكون قيمة appServer.authToken وكل قيمة ضمن
appServer.headers.* من النوع SecretInput؛ إذ يحل وقت تشغيل الأسرار مراجع
SecretRefs والصيغة المختصرة لمتغيرات البيئة قبل أن يبني OpenClaw خيارات تشغيل
خادم التطبيق، وتفشل مراجع SecretRefs المهيكلة غير المحلولة قبل إرسال أي رمز
مميز أو ترويسة. عند إعداد إضافات Codex الأصلية، يستخدم OpenClaw مستوى التحكم
بالإضافات في خادم التطبيق المتصل لتثبيت تلك الإضافات أو تحديثها، ثم يحدّث مخزون
التطبيقات كي تصبح التطبيقات المملوكة للإضافات مرئية لسلسلة Codex. يظل app/list
المصدر الموثوق للمخزون والبيانات الوصفية، لكن سياسة OpenClaw تقرر ما إذا كان
thread/start سيرسل config.apps[appId].enabled = true لتطبيق مدرج ومتاح حتى
إذا كان Codex يضع عليه حاليًا علامة التعطيل. تظل معرّفات التطبيقات المجهولة أو
المفقودة مغلقة عند الفشل؛ ولا يفعّل هذا المسار إلا إضافات السوق عبر
plugin/install ويحدّث المخزون. لا توصل OpenClaw إلا بخوادم تطبيقات بعيدة موثوقة
لقبول عمليات تثبيت الإضافات وتحديثات مخزون التطبيقات التي يديرها OpenClaw.
أوضاع الموافقة والعزل
تستخدم جلسات خادم التطبيق المحلية عبر stdio وضع YOLO افتراضيًا:
approvalPolicy: "never" وapprovalsReviewer: "user" و
sandbox: "danger-full-access". يتيح نهج المشغّل المحلي الموثوق هذا لأدوار
OpenClaw غير المراقبة وعمليات Heartbeat إحراز تقدم من دون مطالبات موافقة أصلية
لا يوجد من يجيب عنها.
إذا كان ملف متطلبات النظام المحلي الخاص بـ Codex لا يسمح بقيم YOLO الضمنية
للموافقة أو المراجع أو العزل، فإن OpenClaw يعامل القيمة الافتراضية الضمنية على
أنها وضع الحارس بدلًا من ذلك، ويحدد أذونات الحارس المسموح بها.
يفرض tools.exec.mode: "auto" أيضًا موافقات Codex التي يراجعها الحارس، ولا
يحتفظ بتجاوزات approvalPolicy: "never" أو
sandbox: "danger-full-access" القديمة غير الآمنة؛ اضبط
tools.exec.mode: "full" لاعتماد نهج مقصود بلا موافقات. تُحترم إدخالات
[[remote_sandbox_config]] المطابقة لاسم المضيف في ملف المتطلبات نفسه عند اتخاذ
قرار الإعداد الافتراضي للعزل.
اضبط appServer.mode: "guardian" لموافقات Codex التي يراجعها الحارس:
{ 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 المحلية تعمل على مضيف
Gateway. لذلك يعطّل OpenClaw وضع الشيفرة الأصلي في Codex وخوادم MCP الخاصة
بالمستخدم وتنفيذ الإضافات المدعومة بالتطبيقات لذلك الدور، بدلًا من اعتبار العزل
من جانب مضيف Codex مكافئًا للواجهة الخلفية لعزل OpenClaw. يُتاح الوصول إلى الصدفة
من خلال أدوات OpenClaw الديناميكية المدعومة بالعزل، مثل sandbox_exec و
sandbox_process، عندما تكون أدوات التنفيذ والعمليات العادية متاحة.
التنفيذ الأصلي المعزول
الإعداد الافتراضي المستقر هو الإغلاق عند الفشل: يعطّل عزل OpenClaw النشط أسطح
تنفيذ Codex الأصلية التي كانت ستعمل لولا ذلك من مضيف خادم تطبيق Codex. استخدم
appServer.experimental.sandboxExecServer: true فقط عندما تريد تجربة دعم
البيئات البعيدة في Codex مع الواجهة الخلفية لعزل OpenClaw. يعمل مسار المعاينة
هذا مع كل إصدار مدعوم من خادم تطبيق Codex.
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { experimental: { sandboxExecServer: true, }, }, }, }, }, },}عند تفعيل العلامة وكون جلسة OpenClaw الحالية معزولة، يبدأ OpenClaw خادم تنفيذ عبر local loopback مدعومًا بالعزل النشط، ويسجله لدى خادم تطبيق Codex، ويبدأ سلسلة Codex والدور باستخدام تلك البيئة المملوكة لـ OpenClaw. إذا تعذر على خادم التطبيق تسجيل البيئة، يفشل التشغيل في وضع الإغلاق بدلًا من الرجوع بصمت إلى التنفيذ على المضيف.
مسار المعاينة هذا محلي فقط. لا يستطيع خادم تطبيق بعيد عبر WebSocket الوصول إلى خادم التنفيذ عبر local loopback ما لم يكن يعمل على المضيف نفسه، لذا يرفض OpenClaw هذه التوليفة.
عزل المصادقة والبيئة
في المجلد الرئيسي الافتراضي لكل وكيل، تُحدد المصادقة بالترتيب الآتي:
- ملف تعريف مصادقة OpenClaw Codex صريح للوكيل.
- حساب خادم التطبيق الحالي في مجلد Codex الرئيسي لذلك الوكيل.
- لتشغيل خادم التطبيق المحلي عبر stdio فقط،
CODEX_API_KEYثمOPENAI_API_KEY، عندما لا يكون لخادم التطبيق حساب وتظل مصادقة OpenAI مطلوبة.
عندما يكتشف OpenClaw ملف تعريف مصادقة Codex بنمط اشتراك ChatGPT، سواء كان نوع
بيانات الاعتماد OAuth أو رمزًا مميزًا، فإنه يزيل CODEX_API_KEY و
OPENAI_API_KEY من عملية Codex الابنة المُنشأة. يُبقي ذلك مفاتيح API على مستوى
Gateway متاحة للتضمينات أو نماذج OpenAI المباشرة، من دون أن تتسبب أدوار خادم
تطبيق Codex الأصلية في الفوترة عبر API عن طريق الخطأ.
تستخدم ملفات تعريف مفتاح API الصريحة في Codex والخيار الاحتياطي المحلي لمفتاح البيئة عبر stdio تسجيل دخول خادم التطبيق بدلًا من بيئة العملية الابنة الموروثة. لا تتلقى اتصالات خادم التطبيق عبر WebSocket خيارًا احتياطيًا لمفتاح API من بيئة Gateway؛ استخدم ملف تعريف مصادقة صريحًا أو حساب خادم التطبيق البعيد نفسه.
ترث عمليات تشغيل خادم التطبيق عبر stdio بيئة عملية OpenClaw افتراضيًا. يمتلك
OpenClaw جسر حساب خادم تطبيق Codex، ويضبط CODEX_HOME على مجلد خاص بكل وكيل ضمن
حالة OpenClaw لذلك الوكيل. يُبقي ذلك إعدادات Codex وحساباته وذاكرة الإضافات
المؤقتة وبياناتها وحالة السلاسل محصورة في وكيل OpenClaw بدلًا من تسربها من مجلد
~/.codex الشخصي للمشغّل.
اضبط appServer.homeScope: "user" لمشاركة حالة Codex الأصلية مع Codex Desktop
وCLI. يدعم وضع المجلد الرئيسي المحلي للمستخدم هذا stdio المُدار ونقل Unix
الصريح. يستخدم $CODEX_HOME عند ضبطه، ويستخدم ~/.codex خلاف ذلك، بما يشمل
المصادقة الأصلية والإعدادات والإضافات والسلاسل. يتجاوز OpenClaw جسر ملف تعريف
المصادقة الخاص به لخادم التطبيق. يمكن لأدوار المالك المتحقق منها استخدام
codex_threads لسرد تلك السلاسل، مع مرشح search اختياري، وقراءتها وتفريعها
وإعادة تسميتها وأرشفتها وإلغاء أرشفتها. فرّع السلسلة قبل متابعتها في OpenClaw؛
فعمليات Codex المستقلة لا تنسق بين الكاتبين المتزامنين على السلسلة نفسها.
ينطبق الاشتراك الاختياري في homeScope على جلسات المشغّل العادية. أما المحادثة
المنشأة عبر Codex Sessions فتستخدم اتصال الإشراف الخاص بها بدلًا من ذلك، مما
يحافظ على إعدادات المصادقة والموفر الخاصة بالاتصال الأصلي للفرع الأساسي وعمليات
الاستئناف المستقبلية.
في محادثة خاضعة للإشراف ومقيدة بالنموذج، لا يستطيع codex_threads إرفاق تفرع
مختلف أو أرشفة سلسلة Codex الأصلية المرتبطة بالمحادثة. يظل السرد وقراءة البيانات
الوصفية فقط متاحين. تتطلب قراءات النص الخام allowRawTranscripts؛ وعندما يكون
معطلًا، يُرفض البحث في القائمة أيضًا لأن البحث الأصلي قد يطابق معاينات النصوص.
تتطلب إعادة التسمية وإلغاء الأرشفة والتفريع المنفصل وأرشفة سلسلة غير مرتبطة لا
تملكها محادثة OpenClaw أخرى allowWriteControls. لا يتجاوز أي من الخيارين
ارتباطًا مقفلًا.
لا يعيد OpenClaw كتابة HOME لعمليات التشغيل المحلية العادية لخادم التطبيق.
ترى العمليات الفرعية التي يشغلها Codex، مثل openclaw وgh وgit وأدوات CLI
السحابية وأوامر الصدفة، مجلد العملية الرئيسي العادي، ويمكنها العثور على إعدادات
المستخدم ورموزه المميزة في مجلده الرئيسي. قد يكتشف Codex أيضًا
$HOME/.agents/skills و$HOME/.agents/plugins/marketplace.json؛ وتُشارك عملية
اكتشاف .agents هذه عمدًا مع المجلد الرئيسي للمشغّل، وهي منفصلة عن حالة
~/.codex المعزولة.
في نطاق الوكيل الافتراضي، تظل إضافات OpenClaw ولقطات Skills الخاصة بـ OpenClaw
تمر عبر سجل إضافات OpenClaw ومحمّل المهارات الخاص به؛ ولا تمر أصول Codex
الشخصية في ~/.codex. إذا كانت لديك مهارات CLI أو إضافات مفيدة من مجلد Codex
رئيسي وينبغي أن تصبح جزءًا من وكيل OpenClaw معزول، فاحصرها صراحةً:
openclaw migrate codex --dry-runopenclaw migrate apply codex --yesإذا احتاج النشر إلى عزل إضافي للبيئة، فأضف تلك المتغيرات إلى
appServer.clearEnv:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { clearEnv: ["CODEX_API_KEY", "OPENAI_API_KEY"], }, }, }, }, },}لا يؤثر appServer.clearEnv إلا في عملية خادم تطبيق Codex الابنة المُنشأة.
يزيل OpenClaw CODEX_HOME وHOME من هذه القائمة أثناء تسوية التشغيل المحلي:
يظل CODEX_HOME يشير إلى نطاق الوكيل أو المستخدم المحدد، ويظل HOME موروثًا كي
تتمكن العمليات الفرعية من استخدام الحالة العادية في المجلد الرئيسي للمستخدم.
الأدوات الديناميكية
تستخدم أدوات Codex الديناميكية افتراضيًا التحميل searchable، وتُتاح ضمن نطاق
الأسماء openclaw مع deferLoading: true. لا يتيح OpenClaw الأدوات الديناميكية
التي تكرر عمليات مساحة العمل الأصلية في Codex أو سطح البحث عن الأدوات الخاص
بـ Codex:
readwriteeditapply_patchexecprocessupdate_plantool_calltool_describetool_searchtool_search_code
تتوفر معظم أدوات تكامل OpenClaw المتبقية، مثل المراسلة والوسائط وCron والمتصفح
والعُقد و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 في السلاسل العادية والسلاسل المقصورة على وضع الشيفرة، بدلًا من
توجيهها عبر استدعاءات tools.* المتداخلة في وضع الشيفرة. هذه الحدود مطلوبة
للنتائج التي تحمل صورًا: إذ يحوّل التسلسل المتداخل في وضع الشيفرة مخرجات الصور
إلى نص مسطح، مما سيؤدي إلى فقدان لقطة الشاشة اللازمة لإجراء الحاسوب التالي.
اضبط codexDynamicToolsLoading: "direct" فقط عند الاتصال بخادم تطبيق Codex مخصص
لا يستطيع البحث في الأدوات الديناميكية المؤجلة، أو عند تصحيح أخطاء حمولة الأدوات
الكاملة.
المُهل الزمنية
تُقيَّد استدعاءات الأدوات الديناميكية المملوكة لـ 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 ميلي ثانية.
عند انتهاء المهلة، يُجهض 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، بأفضل جهد ممكن، مقاطعة المنعطف الأصلي
وتحرير مسار الجلسة. تُعاد محاولة إخفاقات app-server الآمنة لإعادة التشغيل
عبر stdio مرة واحدة باستخدام محاولة app-server جديدة، بما في ذلك مهل خمول
اكتمال المنعطف التي لا تتضمن دليلًا على وجود مساعد أو أداة أو عنصر نشط أو
أثر جانبي. أما المهل غير الآمنة، فتظل تُخرج عميل app-server العالق من الخدمة
وتحرر مسار جلسة OpenClaw. كما تمسح ارتباط سلسلة المحادثة الأصلية القديمة
بدلًا من إعادة تشغيلها تلقائيًا. تعرض مهل مراقبة الاكتمال نصوص مهلة خاصة بـ
Codex: تذكر الحالات الآمنة لإعادة التشغيل أن الاستجابة قد تكون غير مكتملة،
بينما تطلب الحالات غير الآمنة من المستخدم التحقق من الحالة الحالية قبل
إعادة المحاولة. تتضمن تشخيصات المهلة العامة حقولًا بنيوية، مثل آخر طريقة
إشعار من app-server، ومعرّف عنصر استجابة المساعد الخام ونوعه ودوره، وأعداد
الطلبات والعناصر النشطة، وحالة المراقبة المفعّلة. وعندما يكون آخر إشعار عنصر
استجابة مساعد خام، تتضمن التشخيصات أيضًا معاينة محدودة لنص المساعد. ولا
تتضمن محتوى الموجّه أو الأداة الخام.
اكتشاف النماذج
افتراضيًا، يطلب Plugin Codex من app-server النماذج المتاحة. يملك app-server
الخاص بـ 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:
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, }, }, }, },}عطّل الاكتشاف عندما تريد تجنب فحص Codex عند بدء التشغيل واستخدام الكتالوج الاحتياطي فقط:
{ 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_BINOPENCLAW_CODEX_APP_SERVER_ARGSOPENCLAW_CODEX_APP_SERVER_MODE=yolo|guardianOPENCLAW_CODEX_APP_SERVER_APPROVAL_POLICYOPENCLAW_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.