Codex harness

مرجع بيئة Codex التشغيلية

يغطي هذا المرجع الإعدادات التفصيلية لـ 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 مفعّل إعدادات اكتشاف النماذج لـ 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 والعُقد المقترنة التي اشتركت اختياريًا. فعّله بصورة مستقلة عن حاضنة الوكيل:

json5
{  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):

bash
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:

json5
{  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 فقط عندما يلزم اسم محلي ثابت.

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

إذا كان وقت تشغيل خادم التطبيق العادي سيستخدم 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 التي يراجعها الحارس:

json5
{  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.

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

عند تفعيل العلامة وكون جلسة OpenClaw الحالية معزولة، يبدأ OpenClaw خادم تنفيذ عبر local loopback مدعومًا بالعزل النشط، ويسجله لدى خادم تطبيق Codex، ويبدأ سلسلة Codex والدور باستخدام تلك البيئة المملوكة لـ OpenClaw. إذا تعذر على خادم التطبيق تسجيل البيئة، يفشل التشغيل في وضع الإغلاق بدلًا من الرجوع بصمت إلى التنفيذ على المضيف.

مسار المعاينة هذا محلي فقط. لا يستطيع خادم تطبيق بعيد عبر WebSocket الوصول إلى خادم التنفيذ عبر local loopback ما لم يكن يعمل على المضيف نفسه، لذا يرفض OpenClaw هذه التوليفة.

عزل المصادقة والبيئة

في المجلد الرئيسي الافتراضي لكل وكيل، تُحدد المصادقة بالترتيب الآتي:

  1. ملف تعريف مصادقة OpenClaw Codex صريح للوكيل.
  2. حساب خادم التطبيق الحالي في مجلد Codex الرئيسي لذلك الوكيل.
  3. لتشغيل خادم التطبيق المحلي عبر 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 معزول، فاحصرها صراحةً:

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 الابنة المُنشأة. يزيل OpenClaw CODEX_HOME وHOME من هذه القائمة أثناء تسوية التشغيل المحلي: يظل CODEX_HOME يشير إلى نطاق الوكيل أو المستخدم المحدد، ويظل HOME موروثًا كي تتمكن العمليات الفرعية من استخدام الحالة العادية في المجلد الرئيسي للمستخدم.

الأدوات الديناميكية

تستخدم أدوات Codex الديناميكية افتراضيًا التحميل searchable، وتُتاح ضمن نطاق الأسماء openclaw مع deferLoading: true. لا يتيح OpenClaw الأدوات الديناميكية التي تكرر عمليات مساحة العمل الأصلية في Codex أو سطح البحث عن الأدوات الخاص بـ Codex:

  • read
  • write
  • edit
  • apply_patch
  • exec
  • process
  • update_plan
  • tool_call
  • tool_describe
  • tool_search
  • tool_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:

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