تخطَّ إلى المحتوى

تشغيل الوكلاء بالتوازي

يبيّن هذا الدليل كيف تشغّل عدة وكلاء في الوقت نفسه من غير أن يكتب أحدهم فوق عمل الآخر.

وحدة العزل هي المساحة لا الوكيل

قسم بعنوان “وحدة العزل هي المساحة لا الوكيل”

حين يبدأ العمل في مساحة، يجهّز Control Center، لكل مستودع مسجّل، شجرة عمل واحدة بالنسخ عند الكتابة تحت جذر تلك المساحة الخاص، على فرع مشتق من قالب اسم الفرع في مساحة العمل. ثم يحصل كل وكيل في المساحة على دليل عمل متراكب خاص به — لكن الأدلة المتراكبة تشترك في دليل repos/ الخاص بتلك المساحة.

إذن:

  • وكيلان في مساحات مختلفة يعملان في أشجار عمل مختلفة وعلى فروع مختلفة. هذا عزل حقيقي.
  • وكيلان في المساحة نفسها يعملان في شجرة العمل نفسها وعلى الفرع نفسه. مسارات التراكب تختلف، فقفل مسار الإرسال (الذي لا يُسلسل التشغيلات إلا حين تطلب دليل العمل نفسه) لا يُسلسلهما أيضًا. يستطيعان كتابة الملفات نفسها في الوقت نفسه.

فالقاعدة: مساحة واحدة لكل مهمة متوازية.

تشغيل المهام بالتوازي — مساحات منفصلة

قسم بعنوان “تشغيل المهام بالتوازي — مساحات منفصلة”
  1. افتح مساحة مع الوكيل A وأرسل إليه مهمة.
  2. افتح مساحة ثانية مع الوكيل B وأرسل إليه مهمة مختلفة.
  3. يُرسَل الاثنان فورًا، كل منهما في شجرة عمل مساحته وعلى فرعه.

هذه الطريقة التي تعتمدها كلما كان الوكلاء سيعدّلون ملفات.

العمل معًا في مساحة واحدة — عدة إشارات

قسم بعنوان “العمل معًا في مساحة واحدة — عدة إشارات”

في المساحة الواحدة، أشر بـ @ إلى أكثر من وكيل:

@alice refactor the auth module. @bob review what alice lands.

يُرسَل الوكيلان بالتوازي ويبثّان في المساحة نفسها، والبث موسوم بمرسله. ولأنهما يشتركان في شجرة عمل المساحة، فاستخدم هذا للتعاون — واحد يكتب وآخر يقرأ، أو وكيلان يستدلان على الشجرة نفسها — لا لتحريرين مستقلين.

قالب pr_review المضمّن هو المثال المشحون للتفرّع: تعمل عدة عقد مراجع بالتزامن انطلاقًا من مشغّل واحد، وتجمع عقدة تجميع (ضم) نتائج المراجعين في تقرير واحد. شغّله من شاشة خطوط الأنابيب، فيُرسَل كل مراجع بالتوازي.

يخفي محرّر خط الأنابيب الحارس الطرفي ويعيد توصيله لينتظر كل عقدة يمكن بلوغها وليس لها مخرج حين تضيف خطوة أو تصلها، فالفروع التي ترسمها أنت تعمل.

قابلية الملاحظة ← مباشر (تذييل الشريط الجانبي ← قابلية الملاحظة، ثم علامة تبويب مباشر) يعرض كشف وكلاء مساحة العمل هذه، ويُحدَّث كل ثانية: الحالة (قيد التشغيل / خامل / مركون / أُجهِض)، وما يفعله كل وكيل، ورموز آخر تشغيل وتكلفته، وتحكم لإنهاء العملية الجارية. اختيار صف يثبّت درج نص حي.

الإعدادات ← مساحة العمل ← الوكلاء يعرض الكشف نفسه بمفردات حالة مختلفة تضع ما يحتاج انتباهًا أولًا، وهي مشتقة من سجل تشغيل كل وكيل — قيد التشغيل، ومحظور، وفشل، وخامل، ولا عمليات تشغيل بعد — ومرتّبًا بحيث يُرفَع ما يحتاج انتباهًا إلى الأعلى. علامة تبويب السجلات لكل وكيل تحمل سجل تشغيله.

السطحان محصوران بمساحة العمل النشطة.

عبر المساحات، كل مساحة على فرعها، فيظهر الاصطدام تعارض دمج Git عاديًا حين تدمج طلب السحب الثاني. حلّه كما تحل أي تعارض دمج.

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

لتقليل الاصطدام في الحالين:

  • أعطِ كل وكيل نطاقًا مستقلًا — ملفات مختلفة، ووحدات مختلفة.
  • استخدم مخطط الشفرة لتتبين ما يمسّه التغيير قبل الإرسال. انظر البحث في الشفرة عبر مخطط الشفرة.
  • راجع طلب سحب كل وكيل وادمجه أولًا بأول.

كل وكيل قيد التشغيل يكلّف:

  • شجرة عمل للمساحة — حيزها على القرص ضئيل ما دام النسخ عند الكتابة متاحًا؛ وعلى Windows فهي git worktree. نظام الملفات الذي لا يدعم reflink يُفشل التجهيز بدل أن ينسخ.
  • عملية على مضيف الخادم
  • رموز النموذج، وتتراكم لكل وكيل

تظهر التكاليف في قابلية الملاحظة ← الرؤى. والجولة التفاعلية العادية بلا سقف إنفاق؛ انظر إدارة التكاليف للأمرين اللذين لهما سقف.