إذا كانت الخدمة العلوية تعرض API نماذج HTTP عادية، فاكتب
provider plugin بدلًا من ذلك. إذا كان وقت التشغيل العلوي يمتلك جلسات الوكيل الكاملة، أو أحداث الأدوات، أو Compaction، أو حالة المهام الخلفية، فاستخدم agent harness.
ما يملكه Plugin
يمتلك Plugin خلفية CLI ثلاثة عقود:| العقد | الملف | الغرض |
|---|---|---|
| مدخل الحزمة | package.json | يوجّه OpenClaw إلى وحدة وقت تشغيل Plugin |
| ملكية البيان | openclaw.plugin.json | يعلن معرّف الخلفية قبل تحميل وقت التشغيل |
| تسجيل وقت التشغيل | index.ts | يستدعي api.registerCliBackend(...) مع افتراضيات الأمر |
api.registerCliBackend(...).
Plugin خلفية بسيط بالحد الأدنى
Create package metadata
package.json
./src/index.ts، فأضف openclaw.runtimeExtensions يشير إلى نظير JavaScript المبني. راجع Entry points.Declare backend ownership
openclaw.plugin.json
cliBackends هي قائمة ملكية وقت التشغيل. تسمح لـ OpenClaw بتحميل Plugin تلقائيًا عندما يذكر الإعداد أو اختيار النموذج acme-cli/....setup.cliBackends هو سطح الإعداد المعتمد على الواصفات أولًا. أضفه عندما ينبغي لاكتشاف النماذج، أو الإعداد الأولي، أو الحالة أن يتعرّف على الخلفية من دون تحميل وقت تشغيل Plugin. استخدم requiresRuntime: false فقط عندما تكون هذه الواصفات الثابتة كافية للإعداد.شكل الإعداد
يصفCliBackendConfig كيف ينبغي لـ OpenClaw تشغيل CLI وتحليل مخرجاته:
| الحقل | الاستخدام |
|---|---|
command | اسم الملف الثنائي أو مسار الأمر المطلق |
args | argv الأساسية لعمليات التشغيل الجديدة |
resumeArgs | argv بديلة للجلسات المستأنفة؛ تدعم {sessionId} |
output / resumeOutput | المحلّل: json أو jsonl أو text |
input | نقل الموجّه: arg أو stdin |
modelArg | العلم المستخدم قبل معرّف النموذج |
modelAliases | يربط معرّفات نماذج OpenClaw بمعرّفات CLI الأصلية |
sessionArg / sessionArgs | كيفية تمرير معرّف الجلسة |
sessionMode | always أو existing أو none |
sessionIdFields | حقول JSON التي يقرأها OpenClaw من مخرجات CLI |
systemPromptArg / systemPromptFileArg | نقل موجّه النظام |
systemPromptWhen | first أو always أو never |
imageArg / imageMode | دعم مسار الصورة |
serialize | إبقاء عمليات تشغيل الخلفية نفسها مرتبة |
reliability.watchdog | ضبط مهلة عدم وجود مخرجات |
خطافات الخلفية المتقدمة
يمكن لـCliBackendPlugin أيضًا تعريف:
| الخطاف | الاستخدام |
|---|---|
normalizeConfig(config, context) | يعيد كتابة إعدادات المستخدم القديمة بعد الدمج |
resolveExecutionArgs(ctx) | يضيف أعلامًا مقيّدة بالطلب مثل جهد التفكير أو عزل السؤال الجانبي |
prepareExecution(ctx) | ينشئ جسور مصادقة أو إعداد مؤقتة قبل التشغيل |
transformSystemPrompt(ctx) | يطبّق تحويلًا نهائيًا خاصًا بـ CLI لموجّه النظام |
textTransforms | استبدالات ثنائية الاتجاه للموجّه/المخرجات |
defaultAuthProfileId | يفضّل ملف تعريف مصادقة محددًا في OpenClaw |
authEpochMode | يقرر كيف تؤدي تغييرات المصادقة إلى إبطال جلسات CLI المخزنة |
nativeToolMode | يعلن ما إذا كان CLI يملك أدوات أصلية مفعّلة دائمًا |
sideQuestionToolMode | يعلن الأدوات الأصلية المعطلة لأسئلة /btw الجانبية |
bundleMcp / bundleMcpMode | يختار استخدام جسر أدوات MCP المحلي من OpenClaw |
ownsNativeCompaction | الخلفية تمتلك Compaction الخاصة بها - يؤجل OpenClaw |
ctx.executionMode تكون "agent" للدورات العادية و"side-question" لاستدعاءات /btw المؤقتة. استخدمها عندما يحتاج CLI إلى أعلام مختلفة لمرة واحدة، مثل تعطيل الأدوات الأصلية، أو استمرارية الجلسة، أو سلوك الاستئناف لـ BTW. إذا كانت الخلفية عادة تحتوي على nativeToolMode: "always-on" لكن argv الخاصة بالسؤال الجانبي لديها تعطل تلك الأدوات بشكل موثوق، فعيّن أيضًا sideQuestionToolMode: "disabled"؛ وإلا يفشل OpenClaw مغلقًا عندما يتطلب BTW تشغيل CLI بلا أدوات.
ownsNativeCompaction: إلغاء استخدام Compaction في OpenClaw
إذا كانت خلفيتك تشغّل وكيلًا يضغط سجلّه الخاص، فعيّن ownsNativeCompaction: true حتى لا يعمل ملخّص الحماية في OpenClaw أبدًا على جلساته - تعيد دورة حياة Compaction في CLI عملية بلا تأثير وتستمر الدورة. يعلن claude-cli ذلك لأن Claude Code يجري Compaction داخليًا بلا نقطة نهاية harness. أما جلسات native-harness مثل Codex فتستمر في التوجيه إلى نقطة نهاية Compaction الخاصة بـ harness بدلًا من ذلك.
لا تعلن ذلك إلا عندما تنطبق كل الشروط التالية، وإلا يمكن لجلسة مؤجلة متجاوزة للميزانية أن تبقى فوق الميزانية / تصبح قديمة (لن ينقذها OpenClaw بعد الآن):
- تضغط الخلفية سجلّها أو تحدّه بشكل موثوق عندما يقترب من نافذته؛
- تحتفظ بجلسة قابلة للاستئناف حتى تبقى الحالة المضغوطة عبر الدورات
(مثل
--resume/--session-id)؛ - ليست جلسة Compaction من native-harness - فالجلسات المطابقة لـ
agentHarnessIdتُوجّه إلى نقطة نهاية harness بدلًا من ذلك.
جسر أدوات MCP
لا تتلقى خلفيات CLI أدوات OpenClaw افتراضيًا. إذا كان CLI يستطيع استهلاك إعداد MCP، فاختر ذلك صراحة:| الوضع | الاستخدام |
|---|---|
claude-config-file | أدوات CLI التي تقبل ملف إعداد MCP |
codex-config-overrides | أدوات CLI التي تقبل تجاوزات الإعداد على argv |
gemini-system-settings | أدوات CLI التي تقرأ إعدادات MCP من دليل إعدادات النظام الخاص بها |
nativeToolMode: "always-on" حتى يستطيع OpenClaw الفشل مغلقًا عندما يتطلب المستدعي عدم وجود أدوات أصلية.
إعداد المستخدم
يمكن للمستخدمين تجاوز أي افتراضي للخلفية:command فقط عندما يكون الملف الثنائي خارج PATH.
التحقق
بالنسبة إلى Plugins المضمّنة، أضف اختبارًا مركّزًا حول أداة البناء وتسجيل الإعداد، ثم شغّل مسار الاختبار المستهدف للـ Plugin:قائمة التحقق
يحتوي
package.json على openclaw.extensions ومدخلات وقت تشغيل مبنية للحزم المنشورةيعلن
openclaw.plugin.json عن cliBackends وactivation.onStartup المقصوديكون
setup.cliBackends موجودًا عندما ينبغي للإعداد/اكتشاف النماذج رؤية الخلفية وهي باردةيستخدم
api.registerCliBackend(...) معرّف الخلفية نفسه الموجود في البيانتظل تجاوزات المستخدم ضمن
agents.defaults.cliBackends.<id> هي الغالبةتطابق إعدادات الجلسة وموجّه النظام والصورة ومحلّل الإخراج عقد CLI الحقيقي
تثبت الاختبارات المستهدفة واختبار دخان CLI حي واحد على الأقل مسار الخلفية
ذو صلة
- خلفيات CLI - إعدادات المستخدم وسلوك وقت التشغيل
- بناء Plugins - أساسيات الحزمة والبيان
- نظرة عامة على Plugin SDK - مرجع واجهة API للتسجيل
- بيان Plugin -
cliBackendsوواصفات الإعداد - مشغّل الوكيل - أوقات تشغيل كاملة للوكلاء الخارجيين