---
read_when:
    - أنت تختار بين Pi أو Codex أو ACP أو بيئة تشغيل وكيل أصلية أخرى
    - أنت محتار بسبب تسميات المزوّد/النموذج/بيئة التشغيل في الحالة أو الإعدادات
    - أنت توثّق تكافؤ الدعم لبيئة تشغيل أصلية harness
summary: كيف يفصل OpenClaw بين موفري النماذج، والنماذج، والقنوات، وبيئات تشغيل الوكلاء
title: بيئات تشغيل الوكلاء
x-i18n:
    generated_at: "2026-04-26T11:26:59Z"
    model: gpt-5.4
    provider: openai
    source_hash: f99e88a47a78c48b2f2408a3feedf15cde66a6bacc4e7bfadb9e47c74f7ce633
    source_path: concepts/agent-runtimes.md
    workflow: 15
---

**بيئة تشغيل الوكيل** هي المكوّن الذي يملك حلقة نموذج مُحضّرة واحدة: فهو
يتلقى prompt، ويقود مخرجات النموذج، ويتعامل مع استدعاءات الأدوات الأصلية، ويعيد
الدور المكتمل إلى OpenClaw.

من السهل الخلط بين بيئات التشغيل والموفّرين لأن كليهما يظهر بالقرب من
إعدادات النموذج. لكنهما طبقتان مختلفتان:

| الطبقة | أمثلة | ما الذي تعنيه |
| ------------- | ------------------------------------- | ------------------------------------------------------------------- |
| المزوّد | `openai`, `anthropic`, `openai-codex` | كيف يصادق OpenClaw، ويكتشف النماذج، ويسمّي مراجع النماذج. |
| النموذج | `gpt-5.5`, `claude-opus-4-6` | النموذج المحدد لدور الوكيل. |
| بيئة تشغيل الوكيل | `pi`, `codex`, `claude-cli` | الحلقة أو backend منخفض المستوى الذي ينفّذ الدور المُحضّر. |
| القناة | Telegram, Discord, Slack, WhatsApp | المكان الذي تدخل منه الرسائل إلى OpenClaw وتغادره. |

سترى أيضًا كلمة **harness** في الكود. يشير harness إلى التنفيذ
الذي يوفّر بيئة تشغيل وكيل. على سبيل المثال، ينفّذ Codex harness المضمّن
بيئة التشغيل `codex`. يستخدم config العام `agentRuntime.id`؛ ويقوم `openclaw
doctor --fix` بإعادة كتابة مفاتيح سياسات بيئة التشغيل الأقدم إلى هذا الشكل.

هناك عائلتان لبيئات التشغيل:

- تعمل **Embedded harnesses** داخل حلقة الوكيل المُحضّرة في OpenClaw. وحتى الآن يشمل ذلك
  بيئة التشغيل `pi` المضمنة بالإضافة إلى plugin harnesses المسجّلة مثل
  `codex`.
- تشغّل **CLI backends** عملية CLI محلية مع الإبقاء على مرجع النموذج
  canonical. على سبيل المثال، تعني
  `anthropic/claude-opus-4-7` مع
  `agentRuntime.id: "claude-cli"` ما يلي: "حدّد نموذج Anthropic، ثم نفّذ
  من خلال Claude CLI." لا يُعد `claude-cli` معرّف embedded harness ولا
  يجب تمريره إلى اختيار AgentHarness.

## ثلاثة أشياء باسم Codex

ينشأ معظم الالتباس من ثلاثة أسطح مختلفة تشترك في اسم Codex:

| السطح | اسم/إعداد OpenClaw | ما الذي يفعله |
| ---------------------------------------------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------- |
| مسار موفّر OAuth الخاص بـ Codex | مراجع النماذج `openai-codex/*` | يستخدم اشتراك OAuth الخاص بـ ChatGPT/Codex عبر مشغّل PI العادي في OpenClaw. |
| بيئة تشغيل app-server الأصلية لـ Codex | `agentRuntime.id: "codex"` | تشغّل دور الوكيل المضمن من خلال Codex app-server harness المضمّن. |
| محوّل ACP الخاص بـ Codex | `runtime: "acp"`, `agentId: "codex"` | يشغّل Codex عبر مستوى التحكم الخارجي ACP/acpx. استخدمه فقط عندما يُطلب ACP/acpx صراحةً. |
| مجموعة أوامر التحكم الأصلية في دردشة Codex | `/codex ...` | تربط وتستأنف وتوجّه وتوقف وتفحص خيوط Codex app-server من الدردشة. |
| مسار OpenAI Platform API لنماذج GPT/Codex-style | مراجع النماذج `openai/*` | يستخدم مصادقة مفتاح OpenAI API ما لم يؤدِّ تجاوز لبيئة التشغيل، مثل `runtime: "codex"`، إلى تشغيل الدور. |

هذه الأسطح مستقلة عن بعضها عمدًا. يؤدي تمكين plugin ‏`codex` إلى
إتاحة ميزات app-server الأصلية؛ لكنه لا يعيد كتابة
`openai-codex/*` إلى `openai/*`، ولا يغيّر الجلسات الحالية، كما
أنه لا يجعل ACP هو الوضع الافتراضي لـ Codex. اختيار `openai-codex/*`
يعني "استخدم مسار موفّر OAuth الخاص بـ Codex" ما لم تفرض بيئة تشغيل بشكل منفصل.

يستخدم إعداد Codex الشائع المزوّد `openai` مع بيئة التشغيل `codex`:

```json5
{
  agents: {
    defaults: {
      model: "openai/gpt-5.5",
      agentRuntime: {
        id: "codex",
      },
    },
  },
}
```

هذا يعني أن OpenClaw يختار مرجع نموذج OpenAI، ثم يطلب من
بيئة تشغيل Codex app-server تشغيل دور الوكيل المضمن. ولا يعني هذا أن القناة أو
فهرس مزوّد النموذج أو مخزن جلسات OpenClaw تصبح Codex.

عندما يكون plugin ‏`codex` المضمّن مفعّلًا، يجب أن يستخدم التحكم في Codex
باللغة الطبيعية سطح الأوامر الأصلي `/codex` (`/codex bind`, `/codex threads`,
`/codex resume`, `/codex steer`, `/codex stop`) بدلًا من ACP. استخدم ACP مع
Codex فقط عندما يطلب المستخدم صراحةً ACP/acpx أو يختبر مسار
محوّل ACP. أما Claude Code وGemini CLI وOpenCode وCursor وغيرها من
الـ harnesses الخارجية المشابهة فتبقى تستخدم ACP.

هذه هي شجرة القرار الموجّهة للوكيل:

1. إذا طلب المستخدم **ربط/تحكم/خيط/استئناف/توجيه/إيقاف Codex**، فاستخدم
   سطح الأوامر الأصلي `/codex` عندما يكون plugin ‏`codex` المضمّن مفعّلًا.
2. إذا طلب المستخدم **Codex كبيئة تشغيل مضمنة**، فاستخدم
   `openai/<model>` مع `agentRuntime.id: "codex"`.
3. إذا طلب المستخدم **مصادقة Codex OAuth/الاشتراك على مشغّل OpenClaw
   العادي**، فاستخدم `openai-codex/<model>` واترك بيئة التشغيل على PI.
4. إذا قال المستخدم صراحةً **ACP** أو **acpx** أو **Codex ACP adapter**، فاستخدم
   ACP مع `runtime: "acp"` و`agentId: "codex"`.
5. إذا كان الطلب متعلقًا بـ **Claude Code أو Gemini CLI أو OpenCode أو Cursor أو Droid أو
   harness خارجي آخر**، فاستخدم ACP/acpx، وليس بيئة تشغيل الوكيل الفرعي الأصلية.

| ما الذي تقصده... | استخدم... |
| --------------------------------------- | -------------------------------------------- |
| التحكم في دردشة/خيط Codex app-server | `/codex ...` من plugin ‏`codex` المضمّن |
| بيئة تشغيل الوكيل المضمنة لـ Codex app-server | `agentRuntime.id: "codex"` |
| OpenAI Codex OAuth على مشغّل PI | مراجع النماذج `openai-codex/*` |
| Claude Code أو harness خارجي آخر | ACP/acpx |

بالنسبة إلى انقسام بادئات عائلة OpenAI، راجع [OpenAI](/ar/providers/openai) و
[Model providers](/ar/concepts/model-providers). وبالنسبة إلى عقد دعم
بيئة تشغيل Codex، راجع [Codex harness](/ar/plugins/codex-harness#v1-support-contract).

## ملكية بيئة التشغيل

تملك بيئات التشغيل المختلفة مقادير مختلفة من الحلقة.

| السطح | OpenClaw PI المضمن | Codex app-server |
| --------------------------- | --------------------------------------- | --------------------------------------------------------------------------- |
| مالك حلقة النموذج | OpenClaw من خلال مشغّل PI المضمن | Codex app-server |
| حالة الخيط canonical | سجل OpenClaw | خيط Codex، بالإضافة إلى نسخة mirror من سجل OpenClaw |
| أدوات OpenClaw الديناميكية | حلقة أدوات OpenClaw الأصلية | يتم ربطها عبر محوّل Codex |
| أدوات shell والملفات الأصلية | مسار PI/OpenClaw | أدوات Codex الأصلية، مع ربطها عبر الخطافات الأصلية حيثما كان ذلك مدعومًا |
| محرك السياق | تجميع السياق الأصلي في OpenClaw | يقوم OpenClaw بإسقاط السياق المُجمّع داخل دور Codex |
| Compaction | OpenClaw أو محرك السياق المحدد | Compaction أصلية في Codex، مع إشعارات OpenClaw وصيانة النسخة mirror |
| تسليم القناة | OpenClaw | OpenClaw |

يُعد هذا الانقسام في الملكية قاعدة التصميم الأساسية:

- إذا كان OpenClaw يملك السطح، فيمكن لـ OpenClaw توفير سلوك خطافات Plugin المعتاد.
- إذا كانت بيئة التشغيل الأصلية تملك السطح، فيحتاج OpenClaw إلى أحداث وقت التشغيل أو خطافات أصلية.
- إذا كانت بيئة التشغيل الأصلية تملك حالة الخيط canonical، فيجب على OpenClaw أن يعكس السياق ويسقطه، لا أن يعيد كتابة الأجزاء الداخلية غير المدعومة.

## اختيار بيئة التشغيل

يختار OpenClaw بيئة تشغيل مضمنة بعد حلّ المزوّد والنموذج:

1. تفوز بيئة التشغيل المسجّلة للجلسة. لا تؤدي تغييرات config إلى تبديل
   سجل حالي سريعًا إلى نظام خيوط أصلية مختلف.
2. يفرض `OPENCLAW_AGENT_RUNTIME=<id>` تلك البيئة على الجلسات الجديدة أو
   المعاد تعيينها.
3. يمكن لـ `agents.defaults.agentRuntime.id` أو `agents.list[].agentRuntime.id` ضبط
   `auto` أو `pi` أو معرّف embedded harness مسجّل مثل `codex` أو
   اسمًا مستعارًا مدعومًا لـ CLI backend مثل `claude-cli`.
4. في وضع `auto`، يمكن لبيئات تشغيل plugin المسجّلة المطالبة بأزواج
   مزوّد/نموذج التي تفهمها.
5. إذا لم تطالب أي بيئة تشغيل بالدور في وضع `auto` وكان
   `fallback: "pi"` مضبوطًا (وهو الافتراضي)، يستخدم OpenClaw بيئة PI كبديل
   للتوافق. اضبط `fallback: "none"` لجعل اختيار وضع `auto` غير المطابق
   يفشل بدلًا من ذلك.

تفشل بيئات تشغيل Plugin الصريحة إلى وضع مغلق افتراضيًا. على سبيل المثال،
تعني `runtime: "codex"` إما Codex أو خطأ اختيار واضح ما لم تضبط
`fallback: "pi"` في نطاق التجاوز نفسه. لا يرث تجاوز بيئة التشغيل إعداد
fallback أوسع، لذلك فإن `runtime: "codex"` على مستوى الوكيل لا يُعاد
توجيهه بصمت إلى PI لمجرد أن الإعدادات الافتراضية استخدمت `fallback: "pi"`.

تختلف أسماء CLI backend المستعارة عن معرّفات embedded harness. والشكل
المفضّل لـ Claude CLI هو:

```json5
{
  agents: {
    defaults: {
      model: "anthropic/claude-opus-4-7",
      agentRuntime: { id: "claude-cli" },
    },
  },
}
```

لا تزال المراجع القديمة مثل `claude-cli/claude-opus-4-7` مدعومة من أجل
التوافق، لكن config الجديدة يجب أن تُبقي المزوّد/النموذج canonical وتضع
backend التنفيذ في `agentRuntime.id`.

وضع `auto` متحفّظ عمدًا. يمكن لبيئات تشغيل Plugin المطالبة
بأزواج مزوّد/نموذج التي تفهمها، لكن plugin ‏Codex لا يطالب بمزوّد
`openai-codex` في وضع `auto`. وهذا يُبقي
`openai-codex/*` بوصفه مسار PI Codex OAuth الصريح ويتجنب
نقل إعدادات المصادقة القائمة على الاشتراك بصمت إلى app-server harness الأصلية.

إذا حذّر `openclaw doctor` من أن plugin ‏`codex` مفعّل بينما
لا يزال `openai-codex/*` يوجَّه من خلال PI، فتعامل مع ذلك
بوصفه تشخيصًا، لا ترحيلًا. أبقِ config كما هي عندما يكون PI Codex OAuth
هو ما تريده.
انتقل إلى `openai/<model>` مع `agentRuntime.id: "codex"` فقط عندما تريد تنفيذ
Codex app-server الأصلي.

## عقد التوافق

عندما لا تكون بيئة التشغيل هي PI، ينبغي لها أن توثّق الأسطح التي تدعمها
في OpenClaw. استخدم هذا الشكل لوثائق بيئة التشغيل:

| السؤال | لماذا يهم |
| -------------------------------------- | ------------------------------------------------------------------------------------------------- |
| من يملك حلقة النموذج؟ | يحدد أين تحدث إعادة المحاولة، واستمرار الأدوات، وقرارات الإجابة النهائية. |
| من يملك سجل الخيط canonical؟ | يحدد ما إذا كان OpenClaw يمكنه تعديل السجل أو مجرد عكسه. |
| هل تعمل أدوات OpenClaw الديناميكية؟ | تعتمد الرسائل والجلسات وCron والأدوات المملوكة لـ OpenClaw على ذلك. |
| هل تعمل خطافات الأدوات الديناميكية؟ | تتوقع Plugins وجود `before_tool_call` و`after_tool_call` وmiddleware حول الأدوات المملوكة لـ OpenClaw. |
| هل تعمل خطافات الأدوات الأصلية؟ | تحتاج أدوات shell وpatch والأدوات المملوكة لبيئة التشغيل إلى دعم خطافات أصلية للسياسات والمراقبة. |
| هل تعمل دورة حياة محرك السياق؟ | تعتمد إضافات الذاكرة والسياق على assemble وingest وafter-turn ودورة حياة Compaction. |
| ما بيانات Compaction المكشوفة؟ | تحتاج بعض Plugins إلى إشعارات فقط، بينما يحتاج البعض الآخر إلى بيانات kept/dropped الوصفية. |
| ما الذي يُعد غير مدعوم عن قصد؟ | يجب ألا يفترض المستخدمون تكافؤ PI عندما تملك بيئة التشغيل الأصلية قدرًا أكبر من الحالة. |

تم توثيق عقد دعم بيئة تشغيل Codex في
[Codex harness](/ar/plugins/codex-harness#v1-support-contract).

## تسميات الحالة

قد يُظهر مخرج الحالة كلًا من التسميتين `Execution` و`Runtime`. اقرأهما على
أنهما تشخيصات، لا أسماء موفّرين.

- مرجع نموذج مثل `openai/gpt-5.5` يبيّن المزوّد/النموذج المحدد.
- يبيّن معرّف بيئة تشغيل مثل `codex` الحلقة التي تنفّذ الدور.
- تبيّن تسمية قناة مثل Telegram أو Discord المكان الذي تحدث فيه المحادثة.

إذا كانت الجلسة لا تزال تُظهر PI بعد تغيير إعدادات بيئة التشغيل، فابدأ جلسة
جديدة باستخدام `/new` أو امسح الجلسة الحالية باستخدام `/reset`. تحتفظ الجلسات الحالية
ببيئة التشغيل المسجّلة لها حتى لا يُعاد تشغيل سجل واحد عبر نظامي جلسات أصليين
غير متوافقين.

## ذو صلة

- [Codex harness](/ar/plugins/codex-harness)
- [OpenAI](/ar/providers/openai)
- [Agent harness plugins](/ar/plugins/sdk-agent-harness)
- [Agent loop](/ar/concepts/agent-loop)
- [Models](/ar/concepts/models)
- [Status](/ar/cli/status)
