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

متى تستخدم حاضنة

سجّل حاضنة وكيل عندما تكون لعائلة نماذج بيئة جلسات أصلية خاصة بها ويكون نقل مزوّد OpenClaw المعتاد تجريدًا غير مناسب. أمثلة:
  • خادم وكيل برمجة أصلي يملك الخيوط وCompaction
  • CLI محلي أو خدمة خفية يجب أن تبث أحداث الخطة/الاستدلال/الأدوات الأصلية
  • بيئة تشغيل نموذج تحتاج إلى معرّف استئناف خاص بها إضافةً إلى نص جلسة OpenClaw
لا تسجّل حاضنة لمجرد إضافة واجهة LLM API جديدة. لواجهات نماذج HTTP أو WebSocket المعتادة، ابنِ provider plugin.

ما يبقى النواة مالكة له

قبل اختيار حاضنة، يكون OpenClaw قد حلّ بالفعل:
  • المزوّد والنموذج
  • حالة مصادقة بيئة التشغيل
  • مستوى التفكير وميزانية السياق
  • ملف نص/جلسة OpenClaw
  • مساحة العمل، وصندوق العزل، وسياسة الأدوات
  • استدعاءات رد القناة واستدعاءات البث
  • سياسة الرجوع إلى نموذج بديل وتبديل النموذج الحي
هذا الفصل مقصود. تشغّل الحاضنة محاولة مُعدّة؛ ولا تختار المزوّدين، ولا تستبدل تسليم القناة، ولا تبدّل النماذج بصمت. تتضمن المحاولة المُعدّة أيضًا params.runtimePlan، وهي حزمة سياسات يملكها OpenClaw لقرارات بيئة التشغيل التي يجب أن تبقى مشتركة بين OpenClaw والحاضنات الأصلية:
  • runtimePlan.tools.normalize(...) و runtimePlan.tools.logDiagnostics(...) لسياسة مخطط الأدوات الواعية بالمزوّد
  • runtimePlan.transcript.resolvePolicy(...) لسياسة تنقية النص وإصلاح استدعاءات الأدوات
  • runtimePlan.delivery.isSilentPayload(...) لقمع التسليم المشترك لـ NO_REPLY والوسائط
  • runtimePlan.outcome.classifyRunResult(...) لتصنيف الرجوع إلى نموذج بديل
  • runtimePlan.observability لبيانات تعريف المزوّد/النموذج/الحاضنة المحلولة
يمكن للحاضنات استخدام الخطة للقرارات التي تحتاج إلى مطابقة سلوك OpenClaw، لكنها يجب أن تظل تتعامل معها كحالة محاولة مملوكة للمضيف. لا تعدّلها أو تستخدمها لتبديل المزوّدين/النماذج داخل دورة.

تسجيل حاضنة

الاستيراد: openclaw/plugin-sdk/agent-harness
import type { AgentHarness } from "openclaw/plugin-sdk/agent-harness";
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";

const myHarness: AgentHarness = {
  id: "my-harness",
  label: "My native agent harness",

  supports(ctx) {
    return ctx.provider === "my-provider"
      ? { supported: true, priority: 100 }
      : { supported: false };
  },

  async runAttempt(params) {
    // Start or resume your native thread.
    // Use params.prompt, params.tools, params.images, params.onPartialReply,
    // params.onAgentEvent, and the other prepared attempt fields.
    return await runMyNativeTurn(params);
  },
};

export default definePluginEntry({
  id: "my-native-agent",
  name: "My Native Agent",
  description: "Runs selected models through a native agent daemon.",
  register(api) {
    api.registerAgentHarness(myHarness);
  },
});

سياسة الاختيار

يختار OpenClaw حاضنة بعد حلّ المزوّد/النموذج:
  1. سياسة بيئة التشغيل على نطاق النموذج لها الأولوية.
  2. تليها سياسة بيئة التشغيل على نطاق المزوّد.
  3. يطلب auto من الحاضنات المسجّلة ما إذا كانت تدعم المزوّد/النموذج المحلول.
  4. إذا لم تطابق أي حاضنة مسجّلة، يستخدم OpenClaw بيئة التشغيل المضمّنة.
تظهر إخفاقات حاضنة Plugin كإخفاقات تشغيل. في وضع auto، لا يُستخدم الرجوع المضمّن إلا عندما لا تدعم أي حاضنة Plugin مسجّلة المزوّد/النموذج المحلول. بمجرد أن تطالب حاضنة Plugin بتشغيل ما، لا يعيد OpenClaw تشغيل الدورة نفسها عبر بيئة تشغيل أخرى لأن ذلك يمكن أن يغيّر دلالات المصادقة/بيئة التشغيل أو يكرر الآثار الجانبية. يتجاهل الاختيار تثبيتات بيئة التشغيل على مستوى الجلسة الكاملة والوكيل الكامل. يشمل ذلك قيم agentHarnessId القديمة للجلسة، وagents.defaults.agentRuntime، وagents.list[].agentRuntime، وOPENCLAW_AGENT_RUNTIME. يعرض /status بيئة التشغيل الفعلية المختارة من مسار المزوّد/النموذج. إذا كانت الحاضنة المختارة مفاجئة، فعّل تسجيل التصحيح agents/harness وافحص سجل Gateway المنظّم agent harness selected. يتضمن معرّف الحاضنة المختارة، وسبب الاختيار، وسياسة بيئة التشغيل/الرجوع، وفي وضع auto، نتيجة دعم كل مرشح Plugin. يسجّل Plugin Codex المضمّن codex كمعرّف حاضنته. تتعامل النواة مع ذلك كمعرّف حاضنة Plugin عادي؛ الأسماء البديلة الخاصة بـ Codex مكانها في Plugin أو إعدادات المشغّل، لا في محدّد بيئة التشغيل المشتركة.

إقران المزوّد والحاضنة

ينبغي لمعظم الحاضنات أن تسجّل مزوّدًا أيضًا. يجعل المزوّد مراجع النموذج، وحالة المصادقة، وبيانات تعريف النموذج، واختيار /model مرئية لبقية OpenClaw. ثم تطالب الحاضنة بذلك المزوّد في supports(...). يتبع Plugin Codex المضمّن هذا النمط:
  • مراجع نموذج المستخدم المفضلة: openai/gpt-5.5
  • مراجع التوافق: تبقى مراجع codex/gpt-* القديمة مقبولة، لكن الإعدادات الجديدة يجب ألا تستخدمها كمراجع مزوّد/نموذج عادية
  • معرّف الحاضنة: codex
  • المصادقة: إتاحة مزوّد اصطناعية، لأن حاضنة Codex تملك تسجيل دخول/جلسة Codex الأصلية
  • طلب خادم التطبيق: يرسل OpenClaw معرّف النموذج المجرد إلى Codex ويترك الحاضنة تتحدث إلى بروتوكول خادم التطبيق الأصلي
Plugin Codex إضافي. تختار مراجع وكلاء openai/gpt-* العادية على مزوّد OpenAI الرسمي حاضنة Codex افتراضيًا. لا تزال مراجع codex/gpt-* الأقدم تختار مزوّد Codex وحاضنته للتوافق. لإعداد المشغّل، وأمثلة بادئات النماذج، وإعدادات Codex فقط، راجع حاضنة Codex. يتطلب OpenClaw خادم تطبيق Codex بإصدار 0.125.0 أو أحدث. يتحقق Plugin Codex من مصافحة تهيئة خادم التطبيق ويحظر الخوادم الأقدم أو غير المرقّمة حتى يشغّل OpenClaw فقط سطح البروتوكول الذي اختُبر معه. يشمل حد 0.125.0 الأدنى دعم حمولة خطاف MCP الأصلية الذي وصل في Codex 0.124.0، مع تثبيت OpenClaw على خط مستقر أحدث ومختبر.

وسيط نتائج الأدوات

يمكن للـ plugins المضمّنة والـ plugins المثبّتة المفعّلة صراحةً ذات عقود بيان مطابقة إرفاق وسيط نتائج أدوات محايد لبيئة التشغيل عبر api.registerAgentToolResultMiddleware(...) عندما يعلن بيانها معرّفات بيئة التشغيل المستهدفة في contracts.agentToolResultMiddleware. هذا السطح الموثوق مخصص لتحويلات نتائج الأدوات غير المتزامنة التي يجب أن تعمل قبل أن يعيد OpenClaw أو Codex تغذية خرج الأداة إلى النموذج. لا تزال plugins المضمّنة القديمة قادرة على استخدام api.registerCodexAppServerExtensionFactory(...) لوسيط مخصص لخادم تطبيق Codex فقط، لكن تحويلات النتائج الجديدة يجب أن تستخدم واجهة API المحايدة لبيئة التشغيل. أزيل خطاف api.registerEmbeddedExtensionFactory(...) الخاص بالمشغّل المضمّن فقط؛ ويجب أن تستخدم تحويلات نتائج الأدوات المضمّنة وسيطًا محايدًا لبيئة التشغيل.

تصنيف النتيجة الطرفية

يمكن للحاضنات الأصلية التي تملك إسقاط البروتوكول الخاص بها استخدام classifyAgentHarnessTerminalOutcome(...) من openclaw/plugin-sdk/agent-harness-runtime عندما تنتج دورة مكتملة بلا نص مساعد مرئي. يعيد المساعد empty، أو reasoning-only، أو planning-only حتى تتمكن سياسة الرجوع في OpenClaw من تحديد ما إذا كان يجب إعادة المحاولة على نموذج مختلف. يتطلب planning-only حقل planText الصريح من الحاضنة؛ ولا يستنتجه OpenClaw من نثر المساعد. يترك المساعد عمدًا أخطاء الموجه، والدورات قيد التنفيذ، والردود الصامتة المقصودة مثل NO_REPLY غير مصنّفة.

الآثار الجانبية عند نهاية الوكيل

يجب على الحاضنات الأصلية استدعاء runAgentEndSideEffects(...) من openclaw/plugin-sdk/agent-harness-runtime بعد أن تنهي محاولة. يرسل الخطاف المحمول agent_end والتقاط الأبحاث في OpenClaw من دون تأخير الردود التفاعلية. استخدم awaitAgentEndSideEffects(...) للتشغيلات المحلية غير التفاعلية حيث يجب ألا تُحل المحاولة حتى تنتهي تلك الآثار الجانبية. يقبل كلا المساعدين حمولة { event, ctx } نفسها مثل runAgentHarnessAgentEndHook(...)؛ ولا تغيّر إخفاقاتهما نتيجة المحاولة المكتملة.

إدخال المستخدم وأسطح الأدوات

يجب على الحاضنات الأصلية التي تعرض طلب إدخال مستخدم على مستوى بيئة التشغيل أن تستخدم مساعدات إدخال المستخدم من openclaw/plugin-sdk/agent-harness-runtime لتنسيق الموجه، وتسليمه عبر مسار الرد الحاجب في OpenClaw، وتطبيع إجابات الاختيار/النص الحر إلى شكل الاستجابة الأصلي لبيئة التشغيل. يحافظ المساعد على اتساق عرض القناة/TUI بينما تحتفظ كل حاضنة بتحليل بروتوكولها ودورة حياة طلبها المعلّق. يجب على الحاضنات الأصلية التي تحتاج إلى توجيه أدوات مدمج شبيه بـ PI استخدام createAgentHarnessToolSurfaceRuntime(...) من openclaw/plugin-sdk/agent-harness-tool-runtime. يملك اختيار التحكم في البحث عن الأدوات/وضع الشفرة، وافتراضات النماذج المحلية الخفيفة، وترشيح المخططات المتوافق مع بيئة التشغيل، وتنفيذ الفهرس المخفي، وترطيب الأدلة، وتنظيف الفهرس. تبقى الحاضنات مالكة لتحويل الأدوات الخاص بـ SDK واستدعاء التنفيذ الأصلي.

وضع حاضنة Codex الأصلية

حاضنة codex المضمّنة هي وضع Codex الأصلي لدورات وكيل OpenClaw المضمّنة. فعّل Plugin codex المضمّن أولًا، وأدرج codex في plugins.allow إذا كانت إعداداتك تستخدم قائمة سماح مقيّدة. يجب أن تستخدم إعدادات خادم التطبيق الأصلي openai/gpt-*؛ تختار دورات وكيل OpenAI حاضنة Codex افتراضيًا. يجب إصلاح مسارات مراجع نموذج Codex القديمة باستخدام openclaw doctor --fix، وتبقى مراجع نموذج codex/* القديمة أسماءً بديلة للتوافق مع الحاضنة الأصلية. عند تشغيل هذا الوضع، يملك Codex معرّف الخيط الأصلي، وسلوك الاستئناف، وCompaction، وتنفيذ خادم التطبيق. لا يزال OpenClaw يملك قناة الدردشة، ومرآة النص المرئية، وسياسة الأدوات، والموافقات، وتسليم الوسائط، واختيار الجلسة. استخدم provider/model agentRuntime.id: "codex" عندما تحتاج إلى إثبات أن مسار خادم تطبيق Codex وحده يمكنه المطالبة بالتشغيل. تفشل بيئات تشغيل Plugin الصريحة بإغلاق صارم؛ ولا يُعاد محاولة إخفاقات اختيار خادم تطبيق Codex وإخفاقات بيئة التشغيل عبر بيئة تشغيل أخرى.

صرامة بيئة التشغيل

افتراضيًا، يستخدم OpenClaw سياسة بيئة تشغيل المزوّد/النموذج auto: يمكن لحاضنات Plugin المسجّلة المطالبة بزوج مزوّد/نموذج، وتتولى بيئة التشغيل المضمّنة الدورة عندما لا يطابق أي منها. مراجع وكلاء OpenAI على مزوّد OpenAI الرسمي تستخدم Codex افتراضيًا. استخدم بيئة تشغيل Plugin صريحة للمزوّد/النموذج مثل agentRuntime.id: "codex" عندما يجب أن يفشل غياب اختيار الحاضنة بدلًا من التوجيه عبر بيئة التشغيل المضمّنة. تفشل إخفاقات حاضنة Plugin المختارة دائمًا بصرامة. لا يمنع هذا agentRuntime.id: "openclaw" صريحًا للمزوّد/النموذج. لتشغيلات Codex المضمّنة فقط:
{
  "models": {
    "providers": {
      "openai": {
        "agentRuntime": {
          "id": "codex"
        }
      }
    }
  },
  "agents": {
    "defaults": {
      "model": "openai/gpt-5.5"
    }
  }
}
إذا كنت تريد خلفية CLI لنموذج قانوني واحد، فضع بيئة التشغيل على إدخال ذلك النموذج:
{
  "agents": {
    "defaults": {
      "model": "anthropic/claude-opus-4-8",
      "models": {
        "anthropic/claude-opus-4-8": {
          "agentRuntime": {
            "id": "claude-cli"
          }
        }
      }
    }
  }
}
تستخدم التجاوزات لكل وكيل الشكل نفسه على نطاق النموذج:
{
  "agents": {
    "list": [
      {
        "id": "codex-only",
        "model": "openai/gpt-5.5",
        "models": {
          "openai/gpt-5.5": {
            "agentRuntime": { "id": "codex" }
          }
        }
      }
    ]
  }
}
تُتجاهل أمثلة بيئة التشغيل القديمة على مستوى الوكيل الكامل مثل هذا:
{
  "agents": {
    "defaults": {
      "agentRuntime": {
        "id": "codex"
      }
    }
  }
}
مع وقت تشغيل Plugin صريح، تفشل الجلسة مبكرًا عندما لا تكون حزمة التشغيل المطلوبة مسجّلة، أو لا تدعم المزوّد/النموذج الذي تم حله، أو تفشل قبل إنتاج آثار جانبية للدور. هذا مقصود لعمليات النشر الخاصة بـ Codex فقط، وللاختبارات الحية التي يجب أن تثبت أن مسار خادم تطبيق Codex مستخدم فعليًا. يتحكم هذا الإعداد فقط في حزمة تشغيل الوكيل المضمّنة. ولا يعطّل توجيه نماذج الصور أو الفيديو أو الموسيقى أو TTS أو PDF أو غيرها من التوجيهات الخاصة بالمزوّد.

الجلسات الأصلية ومرآة النص

قد تحتفظ حزمة التشغيل بمعرّف جلسة أصلي، أو معرّف سلسلة محادثة، أو رمز استئناف من جهة الخدمة الخفية. أبقِ هذا الربط مرتبطًا صراحةً بجلسة OpenClaw، واستمر في عكس مخرجات المساعد/الأدوات المرئية للمستخدم في نص OpenClaw. يبقى نص OpenClaw طبقة التوافق من أجل:
  • سجل الجلسة المرئي للقناة
  • البحث في النص وفهرسته
  • الرجوع إلى حزمة تشغيل OpenClaw المضمّنة في دور لاحق
  • سلوك /new و/reset العام وحذف الجلسات
إذا كانت حزمة التشغيل لديك تخزن ربطًا جانبيًا، فنفّذ reset(...) كي يتمكن OpenClaw من مسحه عند إعادة ضبط جلسة OpenClaw المالكة.

نتائج الأدوات والوسائط

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

القيود الحالية

  • مسار الاستيراد العام عام، لكن بعض الأسماء المستعارة لأنواع المحاولة/النتيجة لا تزال تحمل أسماء قديمة للتوافق.
  • تثبيت حزم تشغيل الجهات الخارجية تجريبي. فضّل Pluginات المزوّدين إلى أن تحتاج إلى وقت تشغيل جلسة أصلي.
  • تبديل حزم التشغيل مدعوم عبر الأدوار. لا تبدّل حزم التشغيل في منتصف الدور بعد بدء الأدوات الأصلية أو الموافقات أو نص المساعد أو إرسال الرسائل.

ذو صلة