نموذج الوكيل
ما الوكيل؟
قسم بعنوان “ما الوكيل؟”الوكيل فاعل له اسم وشخصية ومجموعة مهارات ومحوّل يعمل عليه. الوكلاء أطراف بالمعنى نفسه الذي يكون به البشر أطرافًا: يكتبون الرسائل، ويملكون التذاكر، ويتركون المراجعات، ويظهرون في الكشف نفسه. هم من ينجز العمل.
كل وكيل ينتمي إلى مساحة عمل واحدة بالضبط. هذا قيد صارم: agent.workspaceId لا يقبل قيمة فارغة، ومساحة عمل الوكيل نفسها هي التي تختار ملف قاعدة البيانات الذي تستقر فيه صفوفه، ويُرفض إنشاء وكيل من غير مساحة عمل.
الوكيل مجلد على القرص أيضًا. تعريفه في agents/<slug>/AGENTS.md تحت دليل بيانات مساحة العمل، والمهارات التي يحملها مربوطة بوصلات رمزية داخل agents/<slug>/.agents/skills. صف قاعدة البيانات والملف يُكتبان معًا. البذر لا يكرّر الصف: إن وُجد صف الوكيل أصلًا، تُعاد كتابة الملفات على القرص ووصلات المهارات. في الإنتاج، الاستدعاء يأتي من إنشاء مساحة العمل، لا من كل إقلاع للخادم.
ما يحمله الوكيل
قسم بعنوان “ما يحمله الوكيل”| الحقل | ما يفعله |
|---|---|
name |
معرّف قصير على شكل اسم مسار (architect وqa). وهو أيضًا ما تُحلّ @mentions مقابله |
title |
مسمّى وظيفي يقرأه الإنسان |
persona |
شخصية وتعليمات سلوك بنص حر، تُحقن قسمًا في المطالبة |
systemPrompt |
تعليمات إضافية اختيارية، تُحقن قسمًا بعنوان “Agent instructions”، ولا تستبدل بقية المطالبة المجمّعة |
skills |
مجموعة أسماء مهارات لا تميّز حالة الأحرف، وتُقابَل بوصلات للمهارات على القرص |
adapterId |
المشغّل الذي يُرسَل الوكيل إليه. القيمة الفارغة تعود إلى الحلقة المضمّنة |
modelId |
النموذج داخل ذلك المحوّل |
effort |
مستوى الاستدلال، بألفاظ النموذج المختار نفسه |
contextSize |
تجاوز لحجم نافذة السياق |
silenceTimeoutMinutes |
تجاوز لكل وكيل (1–240) لمراقب الصمت |
reportsTo |
معرّف الوكيل الأعلى، وسلسلة التبعية التي يرسمها الهيكل التنظيمي |
تحرّر هذه الحقول كلها من الإعدادات ← مساحة العمل ← الوكلاء. وكيل جديد ينشئ وكيلًا بلا اسم، ثم تملأ بياناته.
المهارات
قسم بعنوان “المهارات”المهارات أسماء على كيان الوكيل، لا تميّز حالة الأحرف. يحدث معها أمران منفصلان:
- تُدرَج الأسماء في المطالبة المجمّعة تحت عنوان “Skills”. هذا كل ما تفعله مجموعة الكيان وحدها. لا توجد مكتبة مطالبات لكل مهارة تُستدعى من هذه المجموعة.
- مجلد كل مهارة مسمّاة (
skills/<slug>/SKILL.mdداخل مساحة العمل) يُربَط بمجلد الوكيل نفسه. في الإطار المضمّن تُحمَّل البيانات الأمامية للمهارات المربوطة تلقائيًا إلى موجّه النظام، ويقرأ الوكيل المتن عند الطلب. كتابة/skill:<name>في محادثة تحمّل ذلك المتن توجيهًا للجولة.
المهارات المجلوبة من الخارج تمر بفحص لسلسلة التوريد، مغلق عند الفشل، بين الجلب والكتابة. لا يصل محتوى أي مهارة إلى القرص أو إلى مطالبة من غير حكم. الخارج هنا مستودعات GitHub تسجّلها أنت مصادر للمهارات. لا يوجد متجر مُنتقى، فبيانات المستودع نفسه (وصفه، ونجومه، واسم المهارة) بيانات عرض غير موثوقة، وحكم الفحص هو إشارة الأمان الوحيدة. التثبيت يجلب مجلد المهارة كاملًا، ويثبّتها على الإيداع الذي جاءت منه في skills-lock.json، وأي تحديث لاحق يعيد عبور البوابة قبل أن يستبدل شيئًا. الشرح العملي في تثبيت المهارات وإدارتها.
مهارات على نطاق المستودع
قسم بعنوان “مهارات على نطاق المستودع”يستطيع المستودع أن يشحن مهاراته في أي من المواضع المعتادة (.agents/skills/ و.claude/skills/ و.opencode/skills/). المساحة تُخرج كل مستودع مرتبط جنبًا إلى جنب تحت repos/<name>/، لكن الوكيل يعمل في مستودع واحد في كل مرة، فيحمل مهارات ذلك المستودع وحده، وتتبدل حين ينتقل.
يُستنتج المستودع النشط من الملفات التي يلمسها الوكيل. كتابة ملف تحت repos/<name>/ تجعل ذلك المستودع هو النشط، ومجرد القراءة عبر المستودعات لا تفعل. ملاحقة رمز إلى خدمة شقيقة لا تبدّل المجموعة من تحت المهمة. في مساحة بمستودع واحد تُعرف الإجابة قبل الجولة الأولى.
هذا الحصر قرار لميزانية السياق. فهرس المهارات يبقى في المطالبة في كل جولة، والمتون لا تبقى، فسرد مهارات كل المستودعات دفعة واحدة يستهلك الرموز باستمرار. ومهارة testing من خدمة واحدة تضلّل حين يكون العمل في خدمة أخرى. المنطق نفسه يفسّر لماذا يحمل فهرس الوكيل مستودعًا واحدًا بينما حقل الكتابة ليس محصورًا كذلك: تسمية المهارة بنفسك فعل صريح واحد، فيصل /skill:<repo>:<name> إلى أي مستودع في المساحة.
تُحمَّل مهارات المستودع مع كل محوّل، لا مع الإطار المضمّن وحده. تُجهَّز مهارات المستودع النشط في دليل عمل الوكيل، وهو المسار الذي يمسحه Claude Code أصلًا، ويُدخَل الفهرس نفسه في AGENTS.md الذي يقرأه الإطار المضمّن. مهارات المستودع تمر بالفحص المغلق عند الفشل نفسه الذي تمر به المهارة المثبّتة، قبل أن يحدث أي من ذلك. المستودع المُخرَج محتوى مُستنسَخ، وبياناته الأمامية تصل إلى مطالبة.
الأذونات
قسم بعنوان “الأذونات”لا يحمل الوكيل أي أعلام أذونات. هل يستطيع إنشاء إيداع، أو الدفع، أو فتح طلب سحب، أو الكتابة إلى متتبع، أو الوصول إلى الشبكة؟ تقرر ذلك ضوابط الإجراء: السماح أو السؤال أولًا أو الرفض، على نطاق مساحة العمل أو الوكيل أو المساحة، والقواعد نفسها تنطبق أيًا كان المحوّل الذي يشغّله.
ما يُسلَّم إلى التشغيل لا يتغير بتغير هذه القواعد. التشغيل في شجرة عمل GitHub يحصل دائمًا على رمز GitHub للقراءة فقط، ويُسأل عن الدفع لحظة حدوثه: تهيئة git لدى الوكيل توجّه كل دفع إلى GitHub عبر Control Center، الذي يطبّق قاعدة الدفع إلى مستودع بعيد قبل تمريره.
انظر البيئة المعزولة والأمان لكيفية عمل ذلك، بما يُفرض على مستوى نظام الملفات وما يبقى بلا فرض.
المحوّل يقرّر ما يمكن فرضه
قسم بعنوان “المحوّل يقرّر ما يمكن فرضه”الحقل الأثقل أثرًا في الوكيل هو محوّله، لأن نقل المحوّل يحدّد مقدار ما يمكن فرضه فعلًا من سياسة Control Center.
| النقل | المحوّلات | ما يفرضه Control Center |
|---|---|---|
| الإطار المضمّن | Control Center (built-in) | كل شيء. سطح الأدوات يُبنى من الوضع، فالأداة الممنوعة غير مرئية ولا تُرفض بعد ظهورها. كل استدعاء يمر ببوابة الموافقة وضوابط الإجراء. عقد الإكمال يستطيع أن ينبّه ثم يُفشل تشغيلًا ينتهي من غير التسليم المطلوب |
| Claude CLI | Claude Code | أدوات mcp__* التي تُقدَّم إليه، وأوامر Bash لديه، إذ يرسلها خطاف إلى سياسة الإجراءات قبل تنفيذها. أدوات القراءة والكتابة والتحرير الخاصة بـ Claude تعيش في عمليته وتعمل من غير رصد، ويُطلَق مع --dangerously-skip-permissions، لأن claude -p غير التفاعلي سيتوقف إلى الأبد على طلب الإذن الخاص به |
عمليًا، الإطار المضمّن وحده يدعم الوكلاء الفرعيين، والتوجيه في أثناء التشغيل، والإيقاف المؤقت والاستئناف (ومعها التولّي)، وفرض الوضع بنيويًا. Claude Code لا يحصل على شيء من ذلك.
الوكيل بلا محوّل يعود إلى Control Center (built-in)، وهي الحلقة داخل الخادم، فلا سطر أوامر لتثبيته، ويسجّل سجل تشغيله cc-harness. كل وكيل مبذور يُنشأ بلا محوّل ولا نموذج، فيعمل الوكلاء الخمسة في مساحة العمل الجديدة هناك كلهم، على النموذج الافتراضي لدى Anthropic، إلى أن تضبط محوّلًا ونموذجًا لكل وكيل. اختيار «المحوّل الافتراضي» في الإعداد الأول تفضيل على جهة العميل: الخادم لا يقرأه، ولا يُطبَّق بأثر رجعي على الوكلاء الذين أُنشئوا من قبل.
من أين يأتي الوكلاء
قسم بعنوان “من أين يأتي الوكلاء”- يُبذَرون مع مساحة العمل. كل مساحة عمل، لا الأولى وحدها، تحصل على وكيل CEO وأربعة متخصصين (
qaوarchitectوengineerوlibrarian) يتبعون له، ويُنشَؤون في الخلفية عند إنشاء مساحة العمل من غير تكرار الصف. انظر مساحات العمل والعزل. - يُضافون يدويًا من الإعدادات ← مساحة العمل ← الوكلاء. أن تطلب من وكيل توظيف زميل لا ينشئ صفًا. استخدم تلك الشاشة.
الحالة الحيّة
قسم بعنوان “الحالة الحيّة”ليس للوكيل عمود حالة مخزّن. حالته الحيّة تُشتق من أحدث سجلات تشغيله كلما قُرئ:
| الحالة | المعنى |
|---|---|
neverRun |
لا يوجد سجل تشغيل |
running |
تشغيل واحد على الأقل قيد التنفيذ |
failed |
آخر تشغيل انتهى بخطأ، أو حيويته فاشلة أو ميتة |
blocked |
حيوية آخر تشغيل محجوبة أو عالقة أو في حلقة |
idle |
ما عدا ذلك: الوكيل اشتغل من قبل، وليس لديه عمل جارٍ |
حالتان أخريان، queued وsucceeded، تخصّان التشغيلات المفردة في شجرة تشغيل المحادثة. الكشف لا ينتجهما، لأن نجاح تشغيل منتهٍ حقيقة عن التشغيل لا عن الوكيل.
كشف الحضور يعرض صورة موازية أقل تفصيلًا، يركّبها الخادم من أحداث التشغيل الحيّة: يفكّر، يعمل، محجوب بانتظار موافقة، انتهى. وهذا ما يجعل الوكلاء يظهرون إلى جانب البشر. انظر تعدد اللاعبين والحضور.
مفاهيم ذات صلة
قسم بعنوان “مفاهيم ذات صلة”- دورة حياة إرسال الوكيل: ما يحدث حين يُشغَّل الوكيل فعلًا
- الأوضاع: الإعداد الخاص بكل محادثة الذي يشكّل سطح أدوات الوكيل
- تعدد اللاعبين والحضور: الوكلاء أطرافًا، والحضور، ومؤشر الاستقلالية
- البيئة المعزولة والأمان: ما يقيّد التشغيل اليوم
- تهيئة الوكيل: قائمة الحقول كاملة