يتواصل العديد من الوكلاء من خلال صناديق بريد الملفات
من وكيل فرعي إلى زميل في الفريق: مرة واحدة ← مستمر؛ غير مسمى → مسمى؛ لا يوجد اتصال → صندوق بريد الملف.
ما هو الفرق بين Subagent و Teammate؟
الوكيل الفرعي لـ S04 بسيط وخام: تفرخ → تشغيل → العودة إلى الملخص → الموت. لمرة واحدة، بلا اسم، ولا اتصال ثنائي الاتجاه بين الأب والابن. ص> زميل فريق
s09 هو وكيل مستقل له اسم، ويمكن إيقاظه بشكل متكرر، ويمكنه إرسال واستقبال الرسائل:
الوكيل الفرعي (s04): تفرخ -> تنفيذ -> العودة -> مدمرة
زميل الفريق (s09): تفرخ -> العمل -> خامل -> العمل -> ... -> إيقاف التشغيل
تخدم الآليتان أغراضًا مختلفة:
- Subagent مناسب "للقيام باستكشاف محدد" (مثل مراجعة العلاقات العامة). لي>
- يعتبر زميل الفريق مناسبًا "لتولي دور ما بشكل مستمر" (مثل المراجع طويل الأمد الذي يتم إيقاظه في كل مرة يكون هناك التزام جديد). لي>
صندوق البريد هو ملف JSONL
كيف يتواصل أعضاء الفريق مع بعضهم البعض؟ يستخدم s09 الآلية الأكثر بدائية: لإلحاق ملف JSONL فقط. ص>
.team/ config.json # قائمة الفريق البريد الوارد/ alice.jsonl تم إلحاق # رسائل إلى أليس هنا bob.jsonl الرصاص.jsonl
الإرسال هو open("alice.jsonl", "a").write(msg); القراءة هي قراءة الملف بأكمله، وتحليل JSONL، ثم اقتطاع لمسح (استنزاف دلالات). ص>
لماذا نستخدم الملفات بدلاً من قوائم انتظار الذاكرة؟ المستندات متينة بشكل طبيعي. يتم إعادة تشغيل الوكيل، وتعطل العمليات، وحتى إعادة تشغيل الجهاز - لا تزال رسائل البريد الإلكتروني موجودة. بالإضافة إلى أنه قابل للقراءة وقابل لـ grep، كما أن تجربة تصحيح الأخطاء جيدة جدًا.
انظر إلى العملية الكاملة للرسالة من العميل المحتمل إلى أليس
تسمح لك الأداة التالية بإرسال رسالة إلى أليس ومعرفة ما يحدث على القرص في كل خطوة. ص>
5 أنواع من الرسائل
يحدد s09 5 أنواع من الرسائل (VALID_MSG_TYPES)، ولكن يتم تنفيذ النوعين الأولين فقط، ويتم إضافة الثلاثة الأخيرة في فئة البروتوكول s10:
رسالة— رسالة نصية عادية. لي>البث— يتم إرساله إلى جميع أعضاء الفريق باستثناء نفسك. لي>shutdown_request/shutdown_response— طلب/استجابة لإيقاف التشغيل بسلاسة (s10). لي>plan_approval_response— الموافقة على الخطة (s10). لي>
لماذا تم الإعلان عنه ولم يتم تنفيذه؟ نظرًا لأن s09 يريد جعل "امتداد البروتوكول" مفتوحًا، فإن نوع الرسالة هو تعداد. لإضافة إدخال جديد، ما عليك سوى إضافة إدخال في القاموس ومعالجته في المسار _exec. ص>