فاز 14 · درس 39

ایجنت بازبین: تفکیک سازنده از ارزیاب در جریان‌های کاری هوش مصنوعی

نوع
ساختنی
زمان
حدود 55 دقیقه
زبان‌ها
Python (stdlib)
پیش‌نیاز
فصل 14 · 38 (گیت اعتبارسنجی)
یک صفحه شفاف ارزیابی با چک‌لیست و ذره‌بین که تغییرات کد را بررسی می‌کند و از بخش نوشتن کد تفکیک شده است
فهرست مطالب
  1. اهداف یادگیری
  2. صورت‌مسئله
  3. مفاهیم پایه
  4. شیوه‌نامه‌ی نمره‌دهی بازبین
  5. بازبین یک نقش مجزاست، نه لزوماً مدلی مجزا
  6. بازبین نمی‌تواند diff را ویرایش کند
  7. مقایسه‌ی شیوه‌نامه‌ی نمره‌دهی بازبین و گیت اعتبارسنجی
  8. پیاده‌سازی از صفر
  9. الگوهای محیط عملیاتی در دنیای واقعی
  10. استفاده از ابزارهای واقعی
  11. خروجی این درس
  12. تمرین‌ها
  13. اصطلاحات کلیدی
  14. برای مطالعه‌ی بیشتر

یکی از دام‌های رایج در استفاده از مدل‌های زبانی برای تولید کد، اتکای کامل به خودبازبینی (Self-Review) یا آزمون‌های واحد خودکار است. مدل ممکن است تست‌ها را پاس کند و گیت اعتبارسنجی را پشت سر بگذارد، اما در عمل راه‌حلی نامربوط ارائه داده باشد یا دامنه‌ی تغییرات را بی‌دلیل گسترش دهد. ایجنتی که کد را نوشته، دچار سوگیری تایید می‌شود و نمی‌تواند داور مطمئنی برای کار خودش باشد.

در این درس یاد می‌گیرید که چطور با تفکیک نقش سازنده (Builder) از بازبین (Reviewer)، یک حلقه‌ی نظارتی مستقل ایجاد کنید. بازبین با دسترسی فقط‌خواندنی، تغییرات را بر اساس یک شیوه‌نامه‌ی دقیق پنج‌بعدی می‌سنجد تا ارزیابی کیفی پیش از رسیدن کد به مرحله‌ی بررسی انسانی تکمیل شود.

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

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

  • توضیح دهید چرا یک ایجنت واحد نمی‌تواند کارهای خودش را با اطمینان بازبینی کند.
  • یک حلقه‌ی ایجنت (agent loop) بازبین بسازید که دست‌سازه‌های سازنده را دریافت کند و گزارشی ساختاریافته از بازبینی تحویل دهد.
  • یک شیوه‌نامه‌ی نمره‌دهی (rubric) برای بازبین بنویسید که ابعاد مشخصی را بسنجد، نه حس‌وحال کلی را.
  • بازبین را به میز کار (workbench) متصل کنید تا مرحله‌ی بازبینی انسانی از یک دست‌سازه‌ی واقعی شروع شود.

صورت‌مسئله

از ایجنت می‌خواهید باگی را برطرف کند. چهار فایل را ویرایش می‌کند، تست‌ها را اجرا می‌کند و می‌گوید کار تمام است. گیت اعتبارسنجی (فصل 14 · 38) تأیید می‌کند که معیارهای پذیرش اجرا شده‌اند و دامنه (scope) رعایت شده است. گیت خروجی passed: true می‌دهد. تغییرات را merge می‌کنید. دو روز بعد متوجه می‌شوید که این راه‌حل، نیمه‌ی اشتباه باگ را حل کرده است.

پذیرش شرط لازم است، اما کافی نیست. بازبین سؤالاتی را می‌پرسد که فرایند پذیرش توان پرسیدنش را ندارد: آیا مسئله‌ی درست حل شد؟ آیا بدون اعلام قبلی، دامنه گسترش پیدا کرد؟ آیا فرضیاتی پنهان مانده‌اند که باید زیر سؤال می‌رفتند؟ آیا وضعیت میز کار طوری رها شده که نشست بعدی بتواند کار را به راحتی ادامه دهد؟

مفاهیم پایه

ایجنت سازندهdiff + state + feedback + verdictایجنت بازبینreviewer_checklist.mdreview_report.jsonتأیید نهایی انسان

شیوه‌نامه‌ی نمره‌دهی بازبین

پنج بعد، هر کدام با امتیازی بین 0 تا 2:

بعد پرسش
تطابق با مسئله (Problem fit) آیا تغییرات اعمال‌شده دقیقاً همان وظیفه‌ی خواسته‌شده را حل کرد، نه وظیفه‌ای مشابه در همان حوالی را؟
انضباط در دامنه (Scope discipline) آیا ویرایش‌ها به قرارداد اولیه محدود ماندند یا دامنه عامدانه گسترش یافت؟
فرضیات (Assumptions) آیا تمام فرضیات پنهان، در جایی قابل‌بررسی مستند شده‌اند؟
کیفیت اعتبارسنجی (Verification quality) آیا دستور پذیرش واقعاً دستیابی به هدف را اثبات می‌کند، یا فقط نسخه‌ی ضعیف‌تری از آن را نشان می‌دهد؟
آمادگی برای تحویل (Handoff readiness) آیا نشست بعدی می‌تواند از وضعیت فعلی کار را بدون دردسر پیش ببرد؟

مجموع نمرات از 10 است. نمره‌ی زیر 7 رد مشروط (soft fail) به حساب می‌آید؛ نمره‌ی زیر 5 یا گرفتن امتیاز 0 در هر کدام از ابعاد، رد قطعی (hard fail) است.

بازبین یک نقش مجزاست، نه لزوماً مدلی مجزا

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

بازبین نمی‌تواند diff را ویرایش کند

بازبین فقط diff، وضعیت، بازخورد و نتیجه‌ی نهایی را می‌خواند؛ سپس گزارش می‌نویسد. بازبین به هیچ وجه روی diff تکه (patch) اعمال نمی‌کند. اگر گزارش بگوید «این بخش باید اصلاح شود»، نوبت بعدی سازنده کار اصلاح را انجام می‌دهد و بازبین دوباره به نقش نظارتی خود برمی‌گردد. ترکیب این دو نقش، فاصله‌ی اعتبارسنجی را از بین می‌برد.

مقایسه‌ی شیوه‌نامه‌ی نمره‌دهی بازبین و گیت اعتبارسنجی

گیت اعتبارسنجی (فصل 14 · 38) فکت‌های قطعی را بررسی می‌کند: آیا فرایند پذیرش اجرا شد؟ آیا قواعد رعایت شدند؟ آیا دامنه حفظ شد؟ در مقابل، بازبین قضاوت‌های کیفی انجام می‌دهد: آیا این کار درست بود؟ آیا مستندسازی شده؟ آیا خروجی برای تحویل به نفر بعدی قابل استفاده است؟ وجود هر دو الزامی است.

ایجنت بازبین (REVIEWER)خروجی سازنده به یک ارزیاب منتقل می‌شود
REVIEWER AGENTThe builder cannot grade its own work, so its artifacts pass through a slot in the wall to a second loop with a different system prompt, a different goal, and read-only access. The reviewer grades against a rubric line by line and emits a report; nothing it does can modify what the builder produced.سازندهتغییرات را نوشتبازبینفقط-خواندنی با پرامپت مجزادست‌سازه‌هاreview_report.jsonامتیازدهی طبق rubricدست‌سازه‌ها از دیوار رد می‌شوند؛ ویرایش‌ها هرگز برنمی‌گردند
سازنده نمی‌تواند کار خودش را نمره‌دهی کند، بنابراین دست‌سازه‌های آن از شکافی در دیوار به حلقه‌ی دومی با پرامپت سیستمی متفاوت، هدفی متفاوت و دسترسی فقط-خواندنی منتقل می‌شوند. بازبین سطر به سطر بر اساس یک شیوه‌نامه‌ی نمره‌دهی ارزیابی کرده و گزارشی صادر می‌کند؛ هیچ اقدامی از سوی آن نمی‌تواند تولیدات سازنده را تغییر دهد.

پیاده‌سازی از صفر

کد code/main.py این بخش‌ها را پیاده‌سازی می‌کند:

  • دیتاکلاس ReviewerInputs برای بسته‌بندی دست‌سازه‌هایی که بازبین مطالعه می‌کند.
  • یک سیستم نمره‌دهی بر اساس شیوه‌نامه با تابعی اختصاصی برای هر بعد. هر تابع به صورت قطعی و در حد استاب برای آموزش طراحی شده؛ در دنیای واقعی این توابع یک LLM را فراخوانی می‌کنند.
  • ثبت‌کننده‌ی review_report.json که پنج امتیاز، مجموع نمرات و نتیجه‌ی نهایی (pass، soft_fail، hard_fail) را ذخیره می‌کند.
  • دو نمونه برای دمو: یک تغییر بی‌نقص و تمیز، و یک تغییر از نوع «تست‌های درست، مسئله‌ی غلط».

اجرای برنامه:

python3 code/main.py

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

الگوهای محیط عملیاتی در دنیای واقعی

شواهد عینی: سیستم بازبینی کد مبتنی بر هوش مصنوعی Cloudflare در آوریل 2026، در طول 30 روز 131,246 بازبینی را روی 48,095 درخواست merge در 5,169 مخزن اجرا کرد. میانه‌ی زمان بازبینی 3 دقیقه و 39 ثانیه بود. تا هفت بازبین متخصص (امنیت، عملکرد، کیفیت کد، مستندات، مدیریت انتشار، انطباق با قوانین، استانداردهای مهندسی) به‌صورت موازی زیر نظر یک هماهنگ‌کننده‌ی بازبینی (Review Coordinator) اجرا می‌شدند؛ این هماهنگ‌کننده یافته‌های تکراری را حذف و سطح اهمیت را تعیین می‌کرد. مدل‌های رده‌بالا منحصراً به هماهنگ‌کننده اختصاص داشتند و متخصصان روی مدل‌های ارزان‌تر اجرا می‌شدند.

چهار الگو پیاده‌سازی این رویکرد را در مقیاس بزرگ ممکن می‌کنند:

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

کاهش سوگیری به‌منزله‌ی پیش‌نیاز طراحی، نه بهینه‌سازی ثانویه. مدل‌های داور چهار سوگیری ثابت نشان می‌دهند (عدنان مسعود، آوریل 2026): سوگیری موقعیت (GPT-4 در ترتیب (A,B) در مقایسه با (B,A) حدود 40% ناسازگاری دارد)، سوگیری پرحرفی (حدود 15% نمره‌ی بالاتر به پاسخ‌های طولانی‌تر)، سوگیری خودی (ترجیح خروجی‌های مدل‌های هم‌خانواده)، سوگیری مرجعیت (نمره‌ی بیش‌ازحد به ارجاعاتی با نام نویسندگان مشهور). راه‌حل‌ها: ارزیابی هر دو ترتیب و احتساب برد فقط در صورت پیروزی در هر دو حالت؛ استفاده از مقیاس 1 تا 4 که صراحتاً به ایجاز پاداش می‌دهد؛ چرخش داوران بین خانواده‌های مختلف مدل‌ها؛ حذف نام نویسندگان قبل از نمره‌دهی.

مجموعه‌ی کالیبراسیون، نه ارزیابی حسی. مجموعه‌ای شامل 10 تا 20 وظیفه‌ی گذشته با نتایج قطعی و درست. با هر تغییر پرامپت، بازبین را روی آن اجرا کنید. اگر هم‌پوشانی با داده‌های تاریخی زیر 80% آمد، شیوه‌نامه پیش از انتشار بازبین باید بازنگری شود. همه‌ی تیم‌ها در نهایت به همین نتیجه می‌رسند؛ بهتر است از اول با آن شروع کنید.

رویکرد ترکیبی با گیت اعتبارسنجی. گیت اعتبارسنجی (فصل 14 · 38) بررسی‌های قطعی را بر عهده می‌گیرد (آیا فرایند پذیرش اجرا شد، آیا تست‌ها پاس شدند، آیا دامنه حفظ شد). بازبین به سراغ بررسی‌های معنایی می‌رود (آیا کار درستی بود، آیا فرضیات ثبت شده‌اند، آیا تحویل کار قابل استفاده است). راهنمای سال 2026 شرکت Anthropic صراحتاً بر این تفکیک تأکید دارد: کاری را که گیت قبلاً اثبات کرده دوباره به بازبین نسپارید.

استفاده از ابزارهای واقعی

الگوهای عملیاتی:

  • ساب‌ایجنت‌های Claude Code: یک ساب‌ایجنت بازبین بعد از بسته‌شدن تسک توسط سازنده اجرا می‌شود و نمرات شیوه‌نامه را در قالب کامنت روی PR ثبت می‌کند.
  • تحویل تسک‌ها (handoffs) در OpenAI Agents SDK: سازنده پس از اتمام کار، وظیفه را به بازبین تحویل می‌دهد. بازبین می‌تواند کار را با فهرستی از یافته‌ها بازگرداند یا آن را به انسان ارجاع دهد.
  • جفت‌کردن دو مدل: سازنده با مدلی سریع‌تر و ارزان‌تر کار می‌کند؛ بازبین روی مدلی قدرتمندتر با زمینه‌ی متنی (context) کوچک‌تر اجرا می‌شود و تمرکزش فقط روی قضاوت است.

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

خروجی این درس

فایل outputs/skill-reviewer-agent.md یک شیوه‌نامه‌ی نمره‌دهی اختصاصی پروژه، اسکلت اولیه‌ی ایجنت بازبین متصل به دست‌سازه‌های سازنده، و یکپارچه‌سازی با گیت اعتبارسنجی را تولید می‌کند؛ تا بازبینی انسانی به‌جای صفحه‌ای خالی، از گزارشی مکتوب آغاز شود.

تمرین‌ها

  1. بعد ششمی مختص حوزه‌ی کاری محصول خود اضافه کنید. دفاع کنید که چرا این بعد در پنج مورد فعلی پوشش داده نشده است.
  2. بازبین را با دو پرامپت سیستمی مختلف (موجز، مفصل) اجرا کنید. کدام‌یک گزارشی تولید می‌کند که انسان تمایل بیشتری به خواندنش داشته باشد؟
  3. به هر بعد یک فیلد confidence اضافه کنید. اگر اطمینان در پایین‌ترین بعد کمتر از 0.6 بود، از صدور گزارش خودداری کنید.
  4. یک مجموعه‌ی کالیبراسیون بسازید: پرونده‌ی 10 وظیفه‌ی پیشین با نتایج قطعی مشخص. بازبین را روی آن‌ها اجرا کنید. کجاها با خروجی‌های واقعی گذشته مغایرت دارد؟
  5. قابلیتی برای «درخواست شواهد بیشتر» اضافه کنید؛ طوری که بازبین بتواند قبل از نمره‌دهی، از سازنده اجرای یک تست خاص را بخواهد. چطور باید عقب‌نشینی تدریجی (back-off) تعریف کرد تا سیستم دچار حلقه‌ی بی‌پایان نشود؟

اصطلاحات کلیدی

اصطلاح در گفت‌وگوهای عامیانه معنای دقیق فنی
شیوه‌نامه‌ی نمره‌دهی بازبین (Reviewer rubric) «چک‌لیست» نمره‌دهی 0 تا 2 در پنج بعد با سؤالی مکتوب برای هر بعد
رد مشروط (Soft fail) «نیاز به بازنگری دارد» مجموع نمرات کمتر از 7؛ یافته‌ها برای اصلاح به سازنده تحویل داده می‌شود
رد قطعی (Hard fail) «رد کامل» مجموع نمرات کمتر از 5 یا نمره‌ی 0 در هر بعد؛ توقف فرایند و ارجاع به انسان
تفکیک نقش‌ها (Role separation) «یک پرامپت دیگر» یک مدل می‌تواند در هر دو نقش عمل کند؛ اصل موضوع، انضباط در ورودی‌ها و موضع ارزیابی است
کف اطمینان (Confidence floor) «گزارش‌های با سیگنال ضعیف را منتشر نکنید» خودداری از صدور رأی قطعی وقتی شیوه‌نامه قطعیت کافی ندارد

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

خودآزمایی

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

  1. پیش از درسچرا سازنده نمی‌تواند با قابلیت اطمینان به کار خودش نمره دهد؟
  2. پیش از درسکدام مورد جزو پنج بعد شیوه‌نامه‌ی نمره‌دهی نیست؟
  3. حین درستفکیک نقش‌ها مستلزم چیست؟
  4. حین درسمعماری بازبینی کلودفلر در سال 2026 چگونه است؟
  5. حین درسکدام‌یک از موارد زیر جزو سوگیری‌های چهارگانه‌ی قضاوت LLM در درس نیست؟
  6. پس از درسمجموعه‌ی کالیبراسیون چیست؟
  7. پس از درسگزارش بازبین در کجای بقیه‌ی میز کار ادغام می‌شود؟

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

آیا ایجنت بازبین باید حتماً مدلی متفاوت از ایجنت سازنده باشد؟

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

تفاوت گیت اعتبارسنجی با ایجنت بازبین چیست؟

گیت اعتبارسنجی فکت‌های قطعی مانند پاس‌شدن تست‌ها و حفظ دامنه را بررسی می‌کند، در حالی که بازبین به قضاوت‌های معنایی و کیفی نظیر تناسب راه‌حل با مسئله و مستندسازی فرضیات می‌پردازد.

شیوه‌نامه‌ی نمره‌دهی پنج‌بعدی بازبین شامل چه مواردی است؟

تطابق با مسئله، انضباط در دامنه، مستندسازی فرضیات، کیفیت اعتبارسنجی و آمادگی برای تحویل؛ که هر بعد بین 0 تا 2 نمره دریافت می‌کند.

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

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