Skip to main content
تتيح Plugins الخاصة بواجهات CLI الخلفية لـ OpenClaw استدعاء واجهة CLI محلية للذكاء الاصطناعي بوصفها واجهة خلفية للاستدلال النصي. تظهر الواجهة الخلفية كبادئة موفّر في مراجع النماذج:
استخدم واجهة CLI خلفية عندما يكون التكامل العلوي متاحًا بالفعل كأمر محلي، أو عندما تدير واجهة CLI حالة تسجيل الدخول المحلية، أو كخيار احتياطي عندما لا تكون موفّرات API متاحة.
إذا كانت الخدمة العلوية توفّر API عادية لنموذج عبر HTTP، فاكتب Plugin للموفّر بدلًا من ذلك. وإذا كانت بيئة التشغيل العلوية تدير جلسات الوكيل الكاملة، أو أحداث الأدوات، أو Compaction، أو حالة المهام في الخلفية، فاستخدم إطار تشغيل للوكيل.

ما الذي يديره Plugin

لـ Plugin الخاص بواجهة CLI الخلفية ثلاثة عقود: البيان هو بيانات وصفية للاكتشاف: فهو لا ينفّذ واجهة CLI ولا يسجّل سلوك وقت التشغيل. يبدأ سلوك وقت التشغيل عندما يستدعي مدخل Plugin الدالة api.registerCliBackend(...).

Plugin أدنى لواجهة خلفية

1

إنشاء البيانات الوصفية للحزمة

package.json
يجب أن تتضمن الحزم المنشورة ملفات JavaScript المبنية الخاصة بوقت التشغيل. إذا كان مدخل المصدر لديك هو ./src/index.ts، فأضف openclaw.runtimeExtensions ليشير إلى ملف JavaScript المبني المناظر. راجع نقاط الدخول.
2

إعلان ملكية الواجهة الخلفية

openclaw.plugin.json
تمثّل cliBackends قائمة ملكية وقت التشغيل؛ وهي تتيح لـ OpenClaw تحميل Plugin تلقائيًا عندما تشير الإعدادات أو عملية اختيار النموذج إلى acme-cli/....تمثّل setup.cliBackends سطح الإعداد المعتمد أولًا على الواصفات. أضفها عندما ينبغي لاكتشاف النماذج أو الإعداد الأولي أو الحالة التعرّف على الواجهة الخلفية دون تحميل بيئة تشغيل Plugin. استخدم requiresRuntime: false فقط عندما تكون تلك الواصفات الثابتة كافية للإعداد.
3

تسجيل الواجهة الخلفية

index.ts
يجب أن يطابق معرّف الواجهة الخلفية مدخل cliBackends في البيان. تمثّل config المسجّلة الإعداد الافتراضي فقط؛ إذ تُدمج إعدادات المستخدم ضمن agents.defaults.cliBackends.acme-cli فوقها في وقت التشغيل.

بنية الإعدادات

يصف CliBackendConfig كيفية تشغيل OpenClaw لواجهة CLI وتحليل مخرجاتها: فضّل أصغر إعداد ثابت يطابق واجهة CLI. لا تضف استدعاءات رجوع خاصة بـ Plugin إلا للسلوك الذي ينتمي فعلًا إلى الواجهة الخلفية.

خطافات الواجهة الخلفية المتقدمة

يمكن لـ CliBackendPlugin أيضًا تعريف ما يلي: أبقِ هذه الخطافات ضمن ملكية الموفّر. لا تضف فروعًا خاصة بواجهة CLI إلى النواة عندما يستطيع خطاف للواجهة الخلفية التعبير عن السلوك. يكون runtimeArtifact مملوكًا لـ Plugin ولا يمكن للمستخدم تجاوزه. ولا يُرجع إليه إلا عندما تُنشئ دورة استدلال حية صلاحية إعداد موثّقة أو تعيد التحقق منها؛ ولا تتطلبه عمليات تشغيل CLI العادية. لا تستطيع واجهة خلفية لا تتضمن هذا الإعلان إنشاء صلاحية إعداد CLI موثّقة. يحدّد إعلان bundled-package-tree مالك package.json الدقيق، ويشترط أن تكون نقطة دخول الحزمة هي الأمر. يحسب OpenClaw تجزئة شجرة الحزمة المثبّتة الكاملة والمحدودة، بما في ذلك التبعيات المتداخلة، ويرفض التشغيل افتراضيًا عند وجود روابط رمزية تعيد التوجيه، أو مشغّلات خارج الحزمة المعلنة، أو إعلانات لتبعيات خارجية مطلوبة، أو أشجار تتجاوز الحجم المسموح، أو برامج نصية مجهولة. لا تعلن ذلك إلا عندما تحتوي تلك الشجرة على تنفيذ الاستدلال الكامل؛ فتكاملات الأدوات الاختيارية لا تجعل مخطط تنفيذ خارجي آمنًا. إذا كانت الواجهة الخلفية نفسها توفّر أيضًا ملفًا تنفيذيًا أصليًا مكتفيًا ذاتيًا، فأدرج أسماءه الأساسية القياسية في nativeExecutableNames. تظل الأوامر الأصلية الأخرى غير موثّقة حتى عندما يتجاوز المستخدم أمر الواجهة الخلفية. ctx.executionMode هو "agent" للجولات العادية و"side-question" لاستدعاءات /btw المؤقتة. استخدمه عندما تحتاج CLI إلى أعلام تشغيل لمرة واحدة مختلفة، مثل تعطيل الأدوات الأصلية أو استمرارية الجلسة أو سلوك الاستئناف لـ BTW. إذا كانت الواجهة الخلفية تستخدم عادةً nativeToolMode: "always-on" لكن وسائط argv الخاصة بالسؤال الجانبي تعطل تلك الأدوات بصورة موثوقة، فعيّن أيضًا sideQuestionToolMode: "disabled"؛ وإلا فإن OpenClaw يفشل بوضع مغلق عندما يتطلب BTW تشغيل CLI بلا أدوات. عيّن nativeToolMode: "selectable" فقط عندما تستطيع resolveExecutionArgs تعطيل كل أداة أصلية للواجهة الخلفية في تشغيل منفرد. في عمليات التشغيل المقيّدة هذه، تكون ctx.toolAvailability.native صفًا فارغًا، وتكون ctx.toolAvailability.mcp قائمة السماح الدقيقة لـ MCP والمعزولة عن المضيف. يجب على الخطاف استبدال أعلام الأدوات المتعارضة وإرجاع argv تفرض القيمتين؛ يستدعيه OpenClaw مرة واحدة مع وسائط argv النهائية لبدء جديد أو للاستئناف، ويفشل بوضع مغلق عندما تعجز الواجهة الخلفية عن فرض القيد. تكون أسماء MCP في هذا السياق آمنة للموافقة التلقائية فقط لأن المضيف سبق أن قيّد إعداد MCP المُنشأ بهذه الخوادم والأدوات.

ownsNativeCompaction: إلغاء الاشتراك في Compaction الخاص بـ OpenClaw

إذا كانت واجهتك الخلفية تشغّل وكيلًا يضغط سجل المحادثة الخاص به، فعيّن ownsNativeCompaction: true كي لا يعمل مُلخّص الحماية في OpenClaw أبدًا على جلساته؛ إذ تعيد دورة حياة Compaction في CLI عملية بلا تأثير وتستمر الجولة. يصرّح claude-cli بذلك لأن Claude Code ينفّذ Compaction داخليًا من دون نقطة نهاية في إطار التشغيل. أما جلسات إطار التشغيل الأصلية مثل Codex فتستمر في التوجيه إلى نقطة نهاية Compaction الخاصة بإطار تشغيلها. لا تصرّح به إلا عند تحقق كل ما يلي، وإلا فقد تظل جلسة مؤجلة متجاوزة للميزانية كذلك أو تصبح قديمة (إذ لن ينقذها OpenClaw بعد الآن):
  • تنفّذ الواجهة الخلفية Compaction لسجلها أو تقيّد حجمه بموثوقية عند اقترابه من حد النافذة؛
  • تحفظ جلسة قابلة للاستئناف كي تبقى الحالة المضغوطة بين الجولات (مثل --resume / --session-id
  • ليست جلسة Compaction لإطار تشغيل أصلي؛ إذ تُوجَّه الجلسات المطابقة لـ agentHarnessId إلى نقطة نهاية إطار التشغيل بدلًا من ذلك.

جسر أدوات MCP

لا تتلقى واجهات CLI الخلفية أدوات OpenClaw افتراضيًا. إذا كانت CLI تستطيع استهلاك إعداد MCP، فاشترك صراحةً:
أوضاع الجسر المدعومة: لا تفعّل الجسر إلا عندما تستطيع CLI استهلاكه فعليًا. إذا كانت CLI تملك طبقة أدوات مضمّنة خاصة بها ولا يمكن تعطيلها، فعيّن nativeToolMode: "always-on" كي يتمكن OpenClaw من الفشل بوضع مغلق عندما يطلب المستدعي عدم استخدام أدوات أصلية. وإذا أمكنها تعطيل كل أداة أصلية لكل تشغيل، فاستخدم "selectable" مع عقد resolveExecutionArgs الموضح أعلاه.

إعداد المستخدم

يمكن للمستخدمين تجاوز أي قيمة افتراضية للواجهة الخلفية:
وثّق الحد الأدنى من التجاوزات التي يُرجح أن يحتاج إليها المستخدمون، وعادةً لا يتعدى command عندما يكون الملف التنفيذي خارج PATH.

التحقق

بالنسبة إلى Plugins المضمّنة، أضف اختبارًا مركّزًا حول المُنشئ وتسجيل الإعداد، ثم شغّل مسار الاختبار المستهدف للـ Plugin:
بالنسبة إلى Plugins المحلية أو المثبّتة، تحقّق من الاكتشاف ومن تشغيل حقيقي واحد للنموذج:
إذا كانت الواجهة الخلفية تدعم الصور أو MCP، فأضف اختبارًا حيًا سريعًا يثبت تلك المسارات باستخدام CLI الحقيقية. لا تعتمد على الفحص الساكن للتحقق من سلوك الموجّه أو الصور أو MCP أو استئناف الجلسة.

قائمة التحقق

يحتوي package.json على openclaw.extensions وإدخالات وقت تشغيل مبنية للحزم المنشورة
يصرّح openclaw.plugin.json بـ cliBackends وبقيمة مقصودة لـ activation.onStartup
يكون setup.cliBackends موجودًا عندما ينبغي للإعداد أو اكتشاف النموذج رؤية الواجهة الخلفية قبل تشغيلها
تستخدم api.registerCliBackend(...) معرّف الواجهة الخلفية نفسه الموجود في البيان
تظل تجاوزات المستخدم ضمن agents.defaults.cliBackends.<id> ذات الأولوية
تطابق إعدادات الجلسة وموجّه النظام والصور ومحلّل المخرجات عقد CLI الحقيقي
تثبت الاختبارات المستهدفة واختبار حي واحد على الأقل لـ CLI مسار الواجهة الخلفية

ذو صلة