چیتشیت
موردکاویهای چندایجنت و مزارع ارزیابی
Multi-Agent Case Studies and Eval Farms
سه سیستم مرجع 2026، پروژهی پایانی تیم نرمافزاری و مزرعهی ارزیابی فنسشده با قابلیت ادامهی کار در Go.
فهرست مطالب
سه مورد مرجع
مقایسه| عامل | Anthropic Research | MetaGPT / ChatDev | OpenClaw / Moltbook |
|---|---|---|---|
| توپولوژی | سرپرست-کارگر | تجزیهی وظایف بر اساس نقش با SOP | بستر بر پایهی جمعیت آماری کلان |
| نتیجهی کلیدی | +90.2٪ نسبت به تکایجنت Opus 4 | MacNet: بیش از 1000 ایجنت از طریق DAGها | حدود 2.3 میلیون حساب ایجنت ظرف چند روز |
| سیگنال هزینه | 15 برابر توکن بهازای هر پرسمان | بودجهبندی بهازای هر نقش | قیمتگذاری بهازای هر تعامل |
| الگوی مناسب الگوبرداری | سابایجنتهای بافتار تازه | دستبهدستکردن دستسازههای ساختاریافته | مدل تهدید تزریق پرامپت |
| اعتبارسنجی | نقش صریح مدل اعتبارسنج | مهندس تضمین کیفیت (QA) | اعتبارسنجهای درونشبکهای |
| فریمورک | Claude Agent SDK یا LangGraph | CrewAI یا MetaGPT | بستر سفارشی + MCP + A2A |
| مناسب برای | وظایف پژوهشی و دانشی | زنجیرههای ابزار مهندسی | محصولات اجتماعی مبتنی بر اثر شبکهای |
الگوهای رایج
مفهومها- هماهنگکننده + کارگران
- هر مورد شامل یک سرپرست یا اثر شبکهای است.
- قراردادهای دستبهدستکردن وظایف
- دستسازهها میان نقشها از یک اسکیما پیروی میکنند.
- اعتبارسنجی
- در هر مورد یک نقش تراز اول است.
- مقیاسپذیری
- توپولوژی + بستر، نه فقط افزایش ایجنتها.
- مقیاسبندی تلاش
- حالت ساده شامل 1 ایجنت با 3 تا 10 فراخوانی ابزار است؛ حالت پیچیده بیش از 10 سابایجنت دارد.
- استقرار رنگینکمانی
- نگهداشتن نسخههای قدیمی محیط اجرا برای ایجنتهای در حال پردازش.
- تزریق پرامپت
- با پروفایلهای ایجنت و پیامهای بین ایجنتها مثل ورودی غیرقابلاعتماد رفتار کنید.
نگاشت طراحی به یک مورد
کدpython
def map_to_case(d: Design) -> str:
if d.task_type == "population" or d.user_facing_network:
return "openclaw_moltbook"
if d.task_type == "engineering" or d.roles_distinct:
return "metagpt_chatdev"
return "anthropic_research" # پژوهش و حالت پیشفرض
print_case(case_key) # الگوها، فریمورک، ارجاع
print_landscape() # ردیفهای FRAMEWORK_LANDSCAPE
مراحل ساخت تیم نرمافزاری
گامبهگام- تابلوی تسکهافایل JSONL حاوی پیامهای تایپشده؛ ایجنتها عضو برچسبها میشوند.
- معمارصادر کردن یک
plan_requestبا یک DAG از زیروظایف و رابطها. - کدنویسهاهر کدام یک زیروظیفه را در یک برنچ حاصل از
git worktree addتازه برمیدارند. - هماهنگکنندهی مرجمرج سهطرفهی N برنچ به درون یک برنچ staging.
- بازبینمجاز به تأیید Diffهای نوشتهشده توسط خود نیست؛
review_feedbackرا به کدنویس ارجاع میدهد. - تستراجرای تستها در یک ساندباکس ایزوله؛ خطاها به مسئول وظیفه بازگردانده میشوند.
- حسابدارییک اسپن بهازای هر پیام مرز میان نقشها، شامل حجم داده و مدل.
- کالبدشکافیهیستوگرام شکستهای تحویل وظیفه برای هر ایشوی ناموفق.
معماری مزرعهی ارزیابی
معماریدستورات مزرعهی ارزیابی
دستورها| دستور | عملکرد |
|---|---|
go build -o /tmp/eval-farm . | ساخت باینری مرجع در solution |
init --store DIR --input FILE --shards N | اتصال هش دیتاست و تعداد شاردها |
run ... --shards N --workers W | راهاندازی موجهای فرایندی محدود |
worker --store DIR --worker-id NAME | تصاحب، ارزیابی و ثبت یک شارد |
status --store DIR | اعتبارسنجی و گزارش اسنپشات |
demo --input FILE | چاپ اسنپشاتهای کرش و بازیابی |
--crash-after-claim | خروج با کد 86 پس از تصاحب پایدار |
--all --solution --strict | نمرهدهی مرجع با project_test.py |
قراردادهای مزرعهی ارزیابی
کار و کد| وظیفه | کد |
|---|---|
| مرحلهی 1، شارد پایدار بهازای شناسه | Partition(ids []string, shards int) |
| هش کردن شناسه | h := fnv.New32a() |
| مرحلهی 2، فنسبندی اجاره | Acquire(l, worker, now, ttl) |
| مرحلهی 3، پذیرش یک نتیجه | Submit(l, worker, version, now, result) |
| مرحلهی 4، استخر محدود | Parallel(ctx, ids, workers, run) |
| فیلدهای اجاره | Shard, Worker, Version, Until, Result, Done |
| خطاها | `ErrInvalid`, `ErrConflict`, `ErrLimit` |
قوانین اجاره و رسید
کدgo
// تصاحب (Acquire): اجارهی انجامشده یا فعال به معنی تداخل است
if l.Done || (l.Worker != "" && now < l.Until) {
l.Until = now + ttl
l.Version++
// ارسال (Submit): ابتدا بررسی مالک و نسخه
if l.Worker != worker || l.Version != version {
// اجارهی انجامشده فقط نتیجهی یکسان را دوباره میپذیرد
if l.Result == result {
// اولین تکمیل باید پیش از اتمام انقضا انجام شود
if now >= l.Until {
مقادیر پیشفرض و محدودیتها
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
--shards | 4 | تعداد پارتیشن ثابت، در بازهی 1..1024 |
--workers | 2 | فرایندهای همزمان، در بازهی 1..64 |
--lease-ms | 30000 | مدتزمان تصاحب |
--now-ms | -1 | استفاده از ساعت فیزیکی سیستم |
--delay-ms | 0 | در بازهی 0..60000 |
--store | farm-data | پوشهی روی همان میزبان |
Snapshot size | 4 MiB | اسنپشات کل دور اجرا |
Result size | 1 MiB | بزرگترین نتیجهی پذیرفتهشده |
حالتهای شکست
عیبیابیخروج Worker با کد 86
- علت
- کرش عمدی پس از تصاحب
- راهحل
- اجرای مجدد دقیقاً در مرز انقضا
خروج Run با کد 1 و complete:false
- علت
- اجارههای باقیمانده هنوز مالک دارند
- راهحل
- اجرای مجدد دستور run پس از انقضا
خطای Fencing در Worker قدیمی
- علت
- جایگزین ابتدا commit شده است
- راهحل
- طبیعی است؛ اسنپشات دستنخورده میماند
خروج Run با کد 1 روی دیتاست تغییریافته
- علت
- هش دیتاست متفاوت است
- راهحل
- استفاده از یک محل ذخیرهسازی دیگر
زیروظایف قابل پیادهسازی نیستند
- علت
- طرح بیش از حد مبهم است
- راهحل
- استفاده از قالب طرح با رابطهای صریح
تأیید باگ توسط بازبین
- علت
- تأیید نادرست توسط بازبین
- راهحل
- آزمون ارزیابی باگ تزریقشده، بهینهسازی پرامپت
شیوع پرامپت ویروسی به ایجنتها
- علت
- تزریق پرامپت در مقیاس وسیع
- راهحل
- ورودی غیرقابلاعتماد شمردن پیامهای بین ایجنتها
توهم زدن ایجنتهای پژوهشی
- علت
- عدم وجود نقش صریح مدل اعتبارسنج
- راهحل
- افزودن مدل اعتبارسنج، با مصرف حدود 20-30٪ از توکنها
اعداد کلیدی برای حفظ کردن
مفهومها- میزان مصرف توکن
- توضیحدهندهی 80٪ از واریانس BrowseComp.
- MAST
- نرخ شکست 41 تا 86.7٪ در سیستمهای چندایجنت واقعی.
- OpenClaw
- 247 هزار ستارهی گیتهاب ظرف حدود 4 ماه.
- ارزیابی پروژهی پایانی
- 50 ایشوی SWE-bench Pro در برابر یک خط مبنای Sonnet 4.7.
- شیوهنامهی نمرهدهی
- 25 برای pass@1، 20 برای سرعت، 20 برای کیفیت بازبینی، 20 برای توکنها و 15 برای هماهنگی.
- نمونهی مزرعه
- چهار رکورد امتیاز 3/4 کسب میکنند؛ دو موج، چهار فرایند را لانچ میکنند.
پرسشها
پرسش و پاسخ- چرا پژوهشهای چندایجنت برنده میشوند؟
- هر سابایجنت یک پنجرهی بافتار تازه دریافت میکند.
- کدام بنچمارک؟
- SWE-bench Pro؛ نسخهی Verified آلوده شده است.
- پروژهی پایانی چه چیزی را میسنجد؟
- اینکه آیا چندایجنت بهازای هر دلار بهصرفهتر است یا خیر، نه فقط صرفاً کار کردن آن.
- آیا یک Worker درست اما دیرهنگام میتواند بازنویسی کند؟
- خیر؛ old/v1 زمانی که new/v2 شارد را تمام کرده باشد با شکست روبهرو میشود.
- آیا بازیابی در زمان 109 اجاره را تصاحب میکند؟
- خیر؛ یک اجرای معلق را گزارش میدهد و با کد 1 خارج میشود.