الامتدادات
بيان الإضافة
يجب أن تشحن كل إضافة إلزامياً ملف openclaw.plugin.json في جذر الإضافة. يستخدم OpenClaw هذا البيان للتحقق من صحة التكوين بدون تنفيذ كود الإضافة. تعامل البيانات المفقودة أو غير الصالحة كأخطاء في الإضافة وتمنع التحقق من التكوين. راجع الدليل الكامل لنظام الإضافات: الإضافات.
الحقول المطلوبة
{
"id": "voice-call",
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
}
}
المفاتيح المطلوبة:
id(سلسلة نصية): معرف الإضافة الأساسي.configSchema(كائن): JSON Schema لتكوين الإضافة (مضمن).
مفاتيح اختيارية:
kind(سلسلة نصية): نوع الإضافة (أمثلة:"memory","context-engine").channels(مصفوفة): معرفات القنوات المسجلة بواسطة هذه الإضافة (مثال:["matrix"]).providers(مصفوفة): معرفات المزودين المسجلين بواسطة هذه الإضافة.skills(مصفوفة): أدلة المهارات المراد تحميلها (نسبية لجذر الإضافة).name(سلسلة نصية): اسم العرض للإضافة.description(سلسلة نصية): ملخص قصير للإضافة.uiHints(كائن): تسميات/نصوص توضيحية/علامات حساسية لحقول التكوين لعرض واجهة المستخدم.version(سلسلة نصية): إصدار الإضافة (إعلامي).
متطلبات JSON Schema
- يجب أن تشحن كل إضافة JSON Schema، حتى لو لم تقبل أي تكوين.
- المخطط الفارغ مقبول (على سبيل المثال،
{ "type": "object", "additionalProperties": false }). - يتم التحقق من صحة المخططات في وقت قراءة/كتابة التكوين، وليس في وقت التشغيل.
سلوك التحقق
- المفاتيح غير المعروفة في
channels.*هي أخطاء، إلا إذا تم الإعلان عن معرف القناة بواسطة بيان إضافة. - يجب أن تشير
plugins.entries.<id>،plugins.allow،plugins.deny، وplugins.slots.*إلى معرفات إضافات قابلة للاكتشاف. المعرفات غير المعروفة هي أخطاء. - إذا تم تثبيت إضافة ولكن لديها بيان أو مخطط تالف أو مفقود، فإن التحقق يفشل ويبلغ Doctor عن خطأ الإضافة.
- إذا كان تكوين الإضافة موجوداً ولكن الإضافة معطلة، يتم الاحتفاظ بالتكوين ويتم تحذير في Doctor + السجلات.
ملاحظات
- البيان مطلوب لجميع الإضافات، بما في ذلك التحميلات من نظام الملفات المحلي.
- وقت التشغيل لا يزال يحمل وحدة الإضافة بشكل منفصل؛ البيان مخصص فقط للاكتشاف + التحقق.
- يتم اختيار أنواع الإضافات الحصرية من خلال
plugins.slots.*.kind: "memory"يتم اختيارها بواسطةplugins.slots.memory.kind: "context-engine"يتم اختيارها بواسطةplugins.slots.contextEngine(الافتراضي: المدمجlegacy).
- إذا كانت إضافتك تعتمد على وحدات أصلية (native modules)، قم بتوثيق خطوات البناء وأي متطلبات قائمة السماح لمدير الحزم (على سبيل المثال،
allow-build-scriptsفي pnpmpnpm rebuild <package>).