فاز 14 · درس 45

واگذاری کار به ایجنت‌ها با ایزوله‌سازی و قراردادهای ادغام

نوع
مفهومی و ساختنی
زمان
حدود 70 دقیقه
زبان‌ها
Python (stdlib)
یک طرح نموداری فنی از چند مسیر موازی مجزا که به یک گیت مرکزی ادغام متصل می‌شوند
فهرست مطالب
  1. اهداف یادگیری
  2. آزمون موازی‌سازی
  3. هر واحد کاری یک قرارداد است
  4. ایزوله‌سازی سه لایه دارد
  5. ادغام‌کننده کار را از اول نمی‌سازد
  6. نقش انسان و ایجنت
  7. آن را بسازید
  8. تمرین‌ها
  9. مطالعه‌ی بیشتر
  10. چیزی که پیش خود نگه می‌دارید

وقتی چند ایجنت هوش مصنوعی را هم‌زمان به کار می‌گیرید، سرعت توسعه در نگاه اول شگفت‌انگیز به نظر می‌رسد؛ اما اگر مرز کارها مشخص نباشد، خیلی زود به جای کد تمیز با تعارض‌های پیچیده در فایل‌ها و بازنویسی‌های بی‌پایان روبرو می‌شوید. موازی‌سازی تنها زمانی زمان اجرای واقعی را کاهش می‌دهد که وظایف واقعاً مستقل باشند.

در این درس می‌آموزید که چطور وظایف را به واحدهای کاریِ دارای قرارداد، مالکیت مشخص و شواهد راستی‌آزمایی تفکیک کنید. همچنین با لایه‌های سه‌گانه‌ی ایزوله‌سازی و نقش ادغام‌کننده آشنا می‌شوید تا کدهای تولیدشده توسط ایجنت‌ها بدون از بین بردن یکدیگر به شکلی ایمن ادغام شوند.

اجرای موازی ایجنت‌ها تنها زمانی در زمان صرفه‌جویی می‌کند که کارها مستقل باشند. در غیر این صورت، یک کار سرراست را به مسئله‌ای در هماهنگی تبدیل می‌کنید که نرخ شکست سریع‌تری دارد.

اهداف یادگیری

  • تصمیم‌گیری درباره‌ی اینکه آیا استقلال واقعی، واگذاری کار را توجیه می‌کند یا نه.
  • تعیین مالکیت انحصاری فایل‌ها و الزام ارائه‌ی شواهد صریح برای هر مجری.
  • محاسبه‌ی موج‌های اجرایی بر اساس وابستگی‌ها.
  • طراحی یک قرارداد merge برای ترکیب ایمن کار ایجنت‌ها.

آزمون موازی‌سازی

فقط به این دلیل که ایجنت‌های بیشتری در اختیار دارید، کار را واگذار نکنید. تنها زمانی کار را به دیگری بسپارید که حداقل یکی از شرایط زیر برقرار باشد:

  • دو بررسی بتوانند به‌طور مستقل به مجهولات متفاوتی پاسخ دهند؛
  • دو پیاده‌سازی، فایل‌ها و قراردادهای کاملاً مجزایی در اختیار داشته باشند؛
  • یک بازبین بتواند یک دست‌سازه (Artifact) نهایی را بدون تغییر دادنش بررسی کند؛
  • یک اعتبارسنجی خارجیِ کُند بتواند هم‌زمان با ادامه‌ی کارهای محلی اجرا شود.

اگر ایجنت‌ها به فایل‌های یکسان، تصمیمی بلاتکلیف و مشترک، یا محیط تغییرپذیرِ یکسانی نیاز دارند، کار را حتماً ترتیبی پیش ببرید.

هر واحد کاری یک قرارداد است

هر واحد کاریِ واگذارشده به این موارد نیاز دارد:

فیلد مفهوم
هدف یک نتیجه‌ی قابل‌مشاهده
مسئول یک مجریِ پاسخ‌گو
مسیرها مالکیت انحصاری برای نوشتن روی فایل‌ها
وابستگی‌ها واحدهای تکمیل‌شده‌ای که پیش از شروع لازم‌اند
شواهد شواهد دقیقی که باید به ادغام‌کننده برگردانده شوند
تحویل کار فایل‌های تغییریافته، تصمیم‌های گرفته‌شده و ریسک‌های باقی‌مانده

عبارت «بخش بک‌اند را دست بگیر» یک واحد کاری نیست. اما «بررسی تکراری بودن را در app/accounts.py پیاده‌سازی کن و درستی‌اش را با تستِ متمرکز حساب‌ها ثابت کن» یک واحد کاری است.

ایزوله‌سازی سه لایه دارد

  1. ایزوله‌سازی فایل‌سیستم: ورک‌تری‌های (Worktree) مجزا یا ساندباکس‌ها (محیط‌های ایزوله) جلوی ویرایش‌های اشتراکی و تصادفی را می‌گیرند.
  2. ایزوله‌سازی مالکیت: قراردادها مانع از آن می‌شوند که دو مجری عمداً یک مسیر مشترک را ویرایش کنند.
  3. ایزوله‌سازی وضعیت: لاگ‌ها و خروجی‌های جداگانه مانع از این می‌شوند که یک مجری شواهد مجری دیگر را بازنویسی کند و از بین ببرد.

ایزوله‌سازی فایل‌سیستم مسئله‌ی مالکیت را حل نمی‌کند. دو ورک‌تری تمیز هم ممکن است در نهایت طراحی‌های متناقضی بسازند. قرارداد merge باید پیش از شروع کار، تکلیف رابط‌های (Interface) مشترک را روشن کند.

طرح تأییدشدهواحد کاری APIواحد کاری مستنداتبررسی اولیه و تحویلبررسی اولیه و تحویلبازبینی یکپارچه‌سازی فقط‌خواندنیدروازه تأیید نهایی

ادغام‌کننده کار را از اول نمی‌سازد

ادغام‌کننده باید:

  1. تأیید کند که هر موردِ تحویلی با دامنه‌ی (Scope) تعیین‌شده‌اش مطابقت دارد؛
  2. خروجیِ شواهد را بخواند، نه فقط خلاصه‌ی مجری را؛
  3. تغییرات را به ترتیب وابستگی‌ها ترکیب کند؛
  4. گیت کاملِ بین‌واحدی را اجرا کند؛
  5. گسترش پنهانی دامنه‌ی کار را رد کند؛
  6. تعارض‌ها را به‌صورت تصمیم‌های جدید ثبت کند، نه ویرایش‌های بی‌سر‌و‌صدا.

اگر ادغام کارها نیازمند بازنویسی بخش بزرگی از دستاورد مجری باشد، یعنی خرد کردن اولیه‌ی کار اشتباه بوده است.

نقش انسان و ایجنت

واگذاری کار قضاوت انسانی را حذف نمی‌کند. مسئولیت انتخاب‌هایی که رفتار بیرونی، ریسک، حدود اختیارات یا هزینه‌های بازگشت‌ناپذیر را تغییر می‌دهند، همچنان با انسان است. ایجنت‌ها می‌توانند مسئولیت بررسی‌های محدود، پیاده‌سازی، راستی‌آزمایی و بازبینی را بر عهده بگیرند.

این یعنی خودمختاری تنظیم‌شده (Calibrated Autonomy): سیستم در جایی که شواهد و امکان بازگشت (Rollback) قوی باشند آزادی عمل می‌دهد، و در جایی که پیامدها سنگین باشند، وجود یک چک‌پوینت (Checkpoint) را الزامی می‌کند.

آن را بسازید

محیط آزمایشگاهی تداخل مسیرها را بررسی می‌کند، وابستگی‌ها را می‌سنجد، موج‌های اجرایی ایمن را محاسبه می‌کند و در نهایت فایل outputs/delegation-plan.json را می‌نویسد.

اجرا کنید:

python3 code/main.py
python3 -m unittest discover code/tests -v

واحد مستندات را طوری تغییر دهید که مالک app/ باشد. برنامه باید جلوی طرح را بگیرد؛ چون این مسیر والد با واحد API هم‌پوشانی دارد.

تمرین‌ها

  1. یک تغییر واقعی را به دو واحد کاری مستقل و یک ادغام‌کننده خرد کنید.
  2. نمونه‌ای از یک تقسیم‌بندی موازی پیدا کنید که فقط در ظاهر مستقل به نظر می‌رسد. تصمیم مشترکِ میان آن‌ها را مشخص کنید.
  3. یک مجریِ پژوهشیِ فقط‌خواندنی (Read-only) اضافه کنید که خروجی‌اش یک جدول فکت باشد.
  4. یک گیت merge اضافه کنید که مجموعه‌ی نهاییِ فایل‌های تغییریافته را با قرارداد تمام واحدها بسنجد.
  5. یک قانون لغو کار تعریف کنید تا اگر وابستگیِ یک مجری نامعتبر شد، کار متوقف شود.

مطالعه‌ی بیشتر

چیزی که پیش خود نگه می‌دارید

فایل outputs/delegation-plan.json را پیش خود نگه دارید. این فایل ثبت می‌کند که چرا این تقسیم‌بندی ایمن است، چه کسی مالک هر مسیر است و مرحله‌ی ادغام باید چه شواهدی را تحویل بگیرد.

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسچه زمانی واگذاری موازی (parallel delegation) توجیه‌پذیر است؟
  2. حین درسایزوله‌سازی فایل‌سیستم کدام تضمین را ارائه نمی‌دهد؟
  3. حین درسچرا هر واحد کاری باید مدرک اثبات را مشخص کند؟
  4. حین درساگر دو واحد کاری مالک مسیرهای دارای تداخل باشند، چه باید کرد؟
  5. پس از درسخودمختاری تنظیم‌شده (calibrated autonomy) چیست؟
  6. پس از درسمسئولیت نهایی یکپارچه‌ساز چیست؟

سؤالات متداول

چه زمانی موازی‌سازی کار ایجنت‌ها مجاز است؟

تنها زمانی که کارها واقعاً مستقل باشند؛ مثلاً دو پیاده‌سازی روی فایل‌های کاملاً مجزا، دو بررسی مستقل برای مجهولات مختلف، یا اجرای یک تست کند هم‌زمان با کدنویسی محلی.

چرا ایزوله‌سازی فایل‌سیستم (مثل ورک‌تری‌ها) به تنهایی کافی نیست؟

چون محیط‌های جداگانه مانع تضادهای معماری و رابط‌های ناسازگار نمی‌شوند؛ قرارداد ادغام باید پیش از شروع کار، مرز مالکیت و رابط‌های مشترک را مشخص کند.

یک واحد کاری استاندارد برای ایجنت چه بخش‌هایی دارد؟

شامل هدف مشخص، مسئول واحد، مالکیت انحصاری مسیرها، وابستگی‌های پیشین، شواهد عینی موفقیت (مانند خروجی تست) و گزارش نهایی تحویل کار است.

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.