الدرس 12 · تعاون

لا ينبغي للوكلاء المختلفين الاستيلاء على نفس الشجرة.

"العزل حسب الدليل، والتنسيق حسب معرف المهمة." طائرتان لا تتداخلان مع بعضهما البعض.

⏱ ~10 د · 📝 3 مكونات تفاعلية · 🧑‍💻 مبني على shareAI-lab · s12_worktree_task_isolation.py

مشكلة صعبة مع الوكلاء الموازيين

يسمح لك s09-s11 ببدء عدة زملاء في الفريق في نفس الوقت، ولكن هناك مأزق: جميعهم في نفس دليل العمل. تقوم أليس بتغيير auth.py، ويقوم بوب أيضًا بتغيير auth.py في نفس الوقت - تعارضات git، وارتباك الملفات، والتلوث المتبادل للاختبارات.

الحل لـ s12 هو git Worktree: في نفس المستودع، يمكنك التحقق من فروع مختلفة في أدلة مختلفة من خلال git Worktree add. يحصل كل وكيل على شجرة العمل الخاصة به ويعمل في الدليل الخاص به، ويكون غير مرئي لبعضه البعض.

my-repo/ # مساحة العمل الرئيسية (للرصاص)
.أشجار العمل/
  alice-auth/ # دليل عزل أليس
    (الفرع: وزن/أليس-auth)
  bob-api/ # دليل عزل بوب
    (الفرع: وزن/بوب-API)
  Index.json # سجل شجرة العمل
  events.jsonl # سجل أحداث دورة الحياة

تقسيم العمل في طائرتين

s12 قم بتقسيم النظام بشكل صريح إلى مستويين:

  • مستوى التحكم: ملف JSON في .tasks/. المهمة هي وحدة مجردة من "ما يجب فعله"، بما في ذلك التبعيات والمالك والحالة.
  • مستوى التنفيذ: الدليل في .worktrees/. Worktree هي الحاوية المادية لـ "مكان القيام بذلك"، دليل + فرع.

يرتبط الاثنان بشكل ثنائي الاتجاه من خلال task.worktree وworktree.task_id.

يسمح لك هذا النوع من الفصل بما يلي: إعادة استخدام آلية إدارة المهام مع تغيير بيئة التنفيذ (على سبيل المثال، ليس شجرة عمل git، بل حاوية عامل الإرساء). أو قم بتغيير آلية المهمة مع إعادة استخدام شجرة العمل (على سبيل المثال، ليس ملف JSON بل قاعدة بيانات).

مظاهرة دورة الحياة

راجع الأمر بالكامل أدناه: إنشاء مهمة ← إنشاء شجرة عمل ← تشغيل الأوامر ← الاحتفاظ أو الإزالة. تحتوي كل خطوة على سجل سجل الأحداث (events.jsonl)، والذي يُستخدم لإمكانية الملاحظة في الإنتاج.

keep vs remove

هناك نهايتان عندما تكمل شجرة العمل مهمتها:

  • إزالة: إزالة شجرة العمل --force، احذف الدليل. يتم أيضًا تنظيف الفروع بشكل عام. إنه يعادل "لا أريد هذا الاستكشاف بعد الآن."
  • الاحتفاظ: قم فقط بوضع علامة على الحالة: محفوظ في .worktrees/index.json، ويتم الاحتفاظ بالدليل الفعلي. إنه يعادل "سأحصل على هذه النتيجة، انتظر حتى أقوم بدمجها."

الوضع المشترك: يقوم الوكيل الفرعي بتشغيل إعادة بناء تجريبي ← يعمل بنتائج جيدة ← احتفاظ ← مراجعة بشرية ← دمج في الفرع الرئيسي ← إزالة يدويًا. تأثير ضعيف؟ فقط قم بإزالته ورميه بعيدًا.

تفاعلي

Widget 1 · دورة الحياة · من إنشاء المهمة إلى الاحتفاظ بها/الإزالة

قم بتشغيل 5 أحداث في خطوات. انظر إلى حالة القرص على اليسار (.tasks/ + .worktrees/)، وسجل الأحداث (events.jsonl) على اليمين.

磁盘状态
events.jsonl(append-only)
تفاعلي

Widget 2 · الممرات الموازية · 3 وكلاء في 3 أشجار عمل في وقت واحد

تقوم أليس / بوب / تشارلي بتعديل نفس الملف في أشجار عمل مختلفة في نفس الوقت. هل هم مرئيون لبعضهم البعض؟ هل سيكون هناك صراع؟

📂 .worktrees/alice/
📂 .worktrees/bob/
📂 .worktrees/charlie/
تفاعلي

Widget 3 · تدفق القرار · اختر الخطوة التالية الصحيحة لكل خطوة

عندما يكمل وكيل الإنتاج العمل في شجرة العمل، هل يجب الاحتفاظ به أم إزالته؟ 5 مشاهد.

答对 0 / 5