Skip to main content

ما وراء الأساسيات

يغطي هذا الدليل الأنماط المتقدمة لإضافات القدرات بما يتجاوز الأساسيات الموجودة في إنشاء القدرات. تتعامل هذه الأنماط مع التعقيدات الواقعية: التبعيات، العمليات طويلة التشغيل، إدارة الحالة، والإضافات متعددة الأدوات.

تبعيات الإضافة

أضف ملف package.json بجانب ملف SKILL.md للتصريح عن تبعيات npm. يقوم cerebellum بتثبيتها بشكل كسول عند أول تحميل:
يتم تثبيت التبعيات باستخدام npm install --production في مجلد القدرة. يقوم cerebellum بتشغيل هذا مرة واحدة ويخزن النتيجة مؤقتًا. احذف node_modules/ لفرض إعادة التثبيت.

تبعيات المهارات

استخدم حقل requires في البيانات الوصفية لملف SKILL.md للتصريح بأن قدرتك تعتمد على قدرات أخرى يجب تحميلها:
إذا لم يكن shell محملاً، يسجل cerebellum تحذيرًا ويتخطى قدرتك.

الأدوات طويلة التشغيل مع الإلغاء

استخدم signal (AbortSignal) من السياق لدعم الإلغاء. يمرر motor cortex هذا عندما ينقر المستخدم على إيقاف أو عند انتهاء مهلة المهمة:
تحقق دائمًا من signal.aborted داخل الحلقات وقبل العمليات المكلفة. يعيد motor cortex المحاولة عند الفشل 3 مرات - لكن الإلغاء يجب ألا يُعاد محاولته.

العمليات الخلفية

يمكن للإضافات تشغيل عمليات فرعية منفصلة لخوادم التطوير أو المراقبين أو البرامج الأخرى طويلة التشغيل. أرجع معرف العملية PID حتى يتمكن الوكيل من الرجوع إليه لاحقًا:

أنماط إدخال/إخراج الملفات

استخدم context.workspaceRoot لقراءة/كتابة ملفات مساحة العمل و context.pluginDir لتكوين الإضافة المحلي:
استخدم دائمًا context.workspaceRoot - لا تقم أبدًا بتثبيت المسارات في الكود. يمكن للمستخدمين نقل مساحة العمل إلى أي مكان.

الإضافات متعددة الأدوات

يمكن لإضافة واحدة تصدير أدوات متعددة. قم بالتوجيه حسب toolName في execute():

معالجة الأخطاء

أرجع دائمًا ToolResult مع success: false ورسالة خطأ عند الفشل. لا ترمي استثناءات أبدًا - يلتقط motor cortex الاستثناءات لكنه يعيد المحاولة 3 مرات، مما يهدر الرموز إذا كان الخطأ حتميًا:
يعيد motor cortex محاولة استدعاءات الأدوات الفاشلة حتى 3 مرات مع تراجع أسي (2 ثانية، 6 ثوانٍ، 18 ثانية). أرجع رسائل خطأ واضحة حتى يتمكن نموذج اللغة من تعديل نهجه في المحاولة التالية.

الإضافات ذات الحالة

تعمل init() مرة واحدة عند التحميل، و destroy() عند الإغلاق. خزّن الحالة في الإغلاقات أو نطاق الوحدة:

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

يُعرض نص الإخراج على نموذج اللغة للدورة التالية. اجعله مفيدًا لكن موجزًا - نموذج اللغة لديه سياق محدود:
اقتطع المخرجات الطويلة. لا يحتاج نموذج اللغة لكل التفاصيل - أعطه ما يكفي لاتخاذ قرار. قاعدة جيدة: أبقِ مخرجات الأداة أقل من 4000 حرف.

التواصل بين الإضافات

لا تستطيع الإضافات استدعاء إضافات أخرى مباشرة. إذا احتاجت إضافتك لمخرجات قدرة أخرى، أصدر الحاجة كجزء من نتيجتك ودع نموذج اللغة ينسق:
يقرأ نموذج اللغة هذا الإخراج ويقرر استدعاء file_read بعد ذلك. هذا يحافظ على نظافة البنية - نموذج اللغة هو المنسق، والإضافات هي الأدوات.

نموذج الأمان

تعمل الإضافات بصلاحيات Node.js الكاملة في عملية Electron الرئيسية. يمكنها فعل أي شيء: نظام الملفات، الشبكة، العمليات الفرعية، الوحدات الأصلية. amygdala هي البوابة الوحيدة - تقرر ما إذا كان مسموحًا لنموذج اللغة باستدعاء أداة بناءً على أنماط الخطر.
ثبّت فقط الإضافات التي تثق بها. الإضافة الخبيثة لديها نفس صلاحيات وولفيش نفسه. راجع كود الإضافة قبل إضافتها لمساحة العمل، خاصة إضافات المجتمع.

اختبار الإضافات

هناك طريقتان للاختبار:
أنشئ سياقًا وهميًا واستدعِ execute() مباشرة:

مثال واقعي: عميل API مع ترقيم الصفحات

إضافة كاملة تقوم باستدعاءات HTTP API، وتتعامل مع ترقيم الصفحات، وتعيد نتائج منظمة: