Skip to main content
المهارة قطعة تعليمات لها اسم (مستند markdown) يحمّلها النموذج عند حاجته إليها فقط. هذا هو الإفصاح التدريجي (progressive disclosure): بدل لصق كل دليل إجراءات في موجّه النظام، تسرد المهارات بالاسم مع وصف من سطر واحد، والنموذج يجلب النص الكامل عند الطلب. كيف يعمل ذلك حين يكون للوكيل مهارات:
  1. يُضاف إلى موجّه النظام قسم موجز بعنوان Available skills: سطر واحد لكل مهارة (- name: description) وجملة واحدة تطلب من النموذج استدعاء load_skill قبل تنفيذ مهمة تغطيها مهارة.
  2. تُسجَّل الأداة load_skill (مدخلها { name }) تلقائيًا. وهي تُعيد المحتوى الكامل للمهارة نتيجةً للأداة.
  3. نصوص المهارات ليست في الموجّه إلى أن تُحمَّل. فالوكيل الذي له عشرون مهارة طويلة يدفع نحو سطر واحد لكل مهارة في كل طلب، ولا يدفع تكلفة النص الكامل إلا في التشغيلات التي تستخدمه.
الاسم غير المعروف يُنتج خطأ أداة يسرد أسماء المهارات الصالحة، فيستطيع النموذج تصحيح نفسه.

المهارات في الشيفرة

defineSkill({ name, description, content }) تتحقق من مدخلاتها. يجب أن يطابق name النمط ^[a-z0-9][a-z0-9-_]{0,63}$؛ ويجب ألا يكون description وcontent فارغين. والأخطاء تبيّن موضع الخلل وطريقة إصلاحه. واجهة المنفّذ الكاملة تقبل الخيار نفسه:
إذا كنت قد سجّلت أداة باسم load_skill، فإن تمرير skills يرمي خطأ: أعد تسمية أداتك أو احذف الخيار.

المهارات من القرص

loadSkills(dir) تقرأ ملفات المهارات، فيستطيع غير المطوّرين تعديلها دون لمس الشيفرة. تُدعم بنيتان ويمكن الجمع بينهما في مجلد واحد:
يبدأ كل ملف بترويسة YAML (frontmatter)؛ والباقي هو محتوى المهارة:
  • description مطلوب.
  • name اختياري وقيمته الافتراضية اسم المجلد (في بنية SKILL.md) أو اسم الملف دون .md.
  • المجلدات التي ليس فيها SKILL.md تُتجاهل.
  • تُعاد المهارات مرتبة بالاسم، فتكون الموجّهات حتمية.
  • الأخطاء تذكر الملف والمشكلة: وصف مفقود، أو YAML غير صالح، أو اسم غير صالح، أو مجلد تتعذر قراءته، أو مهارتان بالاسم نفسه (ويُسرد المساران كلاهما).

اختبار المهارات

استخدم mockModel للتحقق من أن النموذج يرى الأوصاف دون النصوص الكاملة إلى أن يحمّل مهارة: موجّه النظام في الطلب الأول يسرد المهارات، والطلب الذي يلي استدعاء load_skill يحتوي النص الكامل في نتيجة الأداة.