Knaph

چند عامل، چند ابزار29 از 376 دقیقه مطالعه

ذهنی تازه برای یک کار فرعی

لیلا از عاملش می‌پرسد کدام‌یک از ۲۰۰ صفحه‌ی محصول در یک پوشه هنوز قیمت‌های پارسال را نشان می‌دهند. ده دقیقه بعد جواب آماده است: ۱۱ صفحه. اما وقتی به کار اصلی برمی‌گردد، یعنی بازنویسیِ کمپین بهاره، عامل کُند شده است. دو بار هم جزئیاتی از صفحه‌های محصول را با یادداشت‌های کمپین قاطی می‌کند.

جواب فقط ۱۱ نام فایل بود. چرا پیدا کردنش همه‌ی کارهای بعدی را خراب کرد؟


لیلا دقیقاً همان کاری را کرد که خواستم. فقط بعدش انگار خسته است.

امید فکر کن آن ۲۰۰ صفحه بعد از اینکه عامل خواندشان کجا رفتند.

لیلا به زمینه‌اش. هر صفحه‌ای که خواند یک نتیجه‌ی ابزار در گفت‌وگو شد. پس همه هنوز آنجا هستند.

امید هر ۲۰۰ تا، در همه‌ی درخواست‌های بعدی. از این‌ها چقدرش را واقعاً برای کمپین لازم داری؟

لیلا یک خط. فهرست آن ۱۱ صفحه.

امید پس خواندن لازم بود، ولی نگه داشتنش لازم نبود. اگر یک همکار داشتی، چه می‌کردی؟

لیلا از او می‌خواستم صفحه‌ها را بگردد و فهرست را برایم بفرستد. من هیچ‌وقت آن ۲۰۰ صفحه را نمی‌دیدم، فقط پیامش را.

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

لیلا یک عامل دوم با پنجره‌ی زمینه‌ی خودش؟

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


زیرعامل چطور کار می‌کند

زیرعامل (subagent) عاملی است که عامل دیگری آن را برای یک کار فرعی راه می‌اندازد. عامل اصلی برای آن یک شرح کار (brief) می‌نویسد: پیامی که می‌گوید چه کند، کجا را بگردد و چه چیزی را پس بفرستد. بعد برنامه‌ی دور مدل یک عامل تازه راه می‌اندازد که:

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

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

زمینه‌ی عامل اصلی کوچک می‌ماند: یک شرح کارِ کوتاه برای زیرعامل می‌فرستد، زمینه‌ی خودِ زیرعامل با ۲۰۰ فایل پر می‌شود، و فقط یک گزارشِ کوتاه با فهرستِ ۱۱ صفحه برمی‌گردد.

در مورد لیلا، یعنی حدود ۱۵۰٬۰۰۰ توکن صفحه‌ی محصول در زمینه‌ی زیرعامل خوانده می‌شود و گزارشی چندصدتوکنی به زمینه‌ی او می‌رسد. گفت‌وگوی اصلی‌اش به همان تمیزیِ قبل از پرسیدن می‌ماند.

به سپردنِ کار به یک کمک‌کار به این شکل واگذاری (delegation) می‌گویند.

چند زیرعامل با هم

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

عامل اصلی هم‌زمان سه شرح کار می‌فرستد؛ سه زیرعامل کنار هم، هر کدام در زمینه‌ی خودش، کار می‌کنند و هر کدام یک گزارشِ کوتاه برمی‌گرداند.

این کار سریع‌تر است و زمینه‌ی اصلی را برای خودِ کمپین آزاد نگه می‌دارد.

هزینه‌اش چیست

واگذاری همیشه به‌صرفه نیست.

  • روی هم توکن بیشتری خرج می‌شود. هر زیرعامل پرامپت سیستمیِ خودش را دارد و خواندن‌های خودش را انجام می‌دهد. سه کمک‌کار ممکن است روی هم بیشتر از یک عامل که همان کار را می‌کند توکن مصرف کنند، هرچند زمینه‌ی اصلی کوچک می‌ماند.
  • کمک‌کار فقط شرح کار را می‌داند. گفت‌وگوی شما را ندیده است. اگر ده دقیقه توضیح داده‌اید که منظور از «قیمت»، قیمتِ بدون مالیات است و شرح کار این را نگوید، کمک‌کار آن را نمی‌داند.
  • گزارش ممکن است جزئیاتی را جا بیندازد. شما خلاصه را می‌گیرید، نه خواندن را. چیزی که کمک‌کار مهم ندانسته ممکن است دقیقاً همان چیزی باشد که لازم داشتید.
  • کار کردنش را نمی‌بینید. فقط گزارشش را می‌بینید، که چه درست باشد چه غلط، با همان لحن مطمئن نوشته شده است.

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

زیرعامل‌ها در Claude Code

Claude Code هر وقت کاری مناسب باشد خودش زیرعامل راه می‌اندازد، و شما هم می‌توانید یکی بخواهید («با یک زیرعامل ... را انجام بده»). چند زیرعامل آماده هم دارد، مثل Explore، کمک‌کاری فقط‌خواندنی برای گشتن در پروژه، و یک کمک‌کار همه‌کاره با همه‌ی ابزارهای معمول.

می‌توانید زیرعامل‌های خودتان را هم تعریف کنید، به شکل یک فایل Markdown در .claude/agents/ (برای یک پروژه) یا ~/.claude/agents/ (برای همه‌ی پروژه‌هایتان). بالای فایل نام کمک‌کار را می‌گوید، اینکه کی به کار برود، و می‌تواند ابزارهایش را محدود کند و مدلش را انتخاب کند. بقیه‌ی فایل پرامپت سیستمیِ خودِ اوست:

---
name: price-checker
description: Checks product pages for prices and reports only the pages and prices found.
tools: Read, Grep, Glob
model: haiku
---
You check product pages for prices. Never edit files.
Report one line per page: the file name and the price you found.
markdown

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

امتحان کنید

در Claude Code دستور /context را اجرا کنید و ببینید زمینه چقدر پر است. بعد بخواهید: «با یک زیرعامل همه‌ی فایل‌های این پوشه را که کلمه‌ی price در آن‌ها هست پیدا کن و فقط نام فایل‌ها را گزارش بده.» دوباره /context را اجرا کنید: زمینه به اندازه‌ی گزارش بزرگ شده، نه به اندازه‌ی فایل‌ها. اگر عامل ندارید، می‌توانید همین را با دست انجام دهید: یک سند طولانی را در یک گفت‌وگوی جدا خلاصه کنید و فقط خلاصه را در گفت‌وگوی اصلی بچسبانید.

درست به کار بردن

  1. خواندن را واگذار کنید، نه تصمیم گرفتن را. گشتن و بررسی کردن، که بیشترِ خوانده‌هایش دور ریخته می‌شود، را بسپارید. تصمیم‌ها را در گفت‌وگوی اصلی نگه دارید، جایی که همه‌ی تصویر هست.
  2. شرح کار را طوری بنویسید که انگار برای یک همکار تازه‌وارد است. هدف، جای گشتن، آنچه از قبل می‌دانید یا کنار گذاشته‌اید، و هر چیزی را که به‌راحتی اشتباه می‌شود بگویید. کمک‌کار هیچ‌چیز از گفت‌وگوی شما ندیده است.
  3. شکل ثابتی برای گزارش بخواهید. «برای هر صفحه یک خط: نام فایل و قیمت» از «بگو چه پیدا کردی» راحت‌تر به کار می‌آید و سخت‌تر می‌شود آن را با حدس پر کرد.
  4. آنچه را مهم است بررسی کنید. گزارش کمک‌کار خلاصه‌ی کاری است که ندیده‌اید. پیش از اینکه روی جواب چیزی بسازید، یکی دو فایلی را که نام برده باز کنید.

واژه‌های این درس

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

ایده‌ی اصلی

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

دانش خود را بسنجید

ورود برای سنجش دانش خود از این درس و پیگیری پیشرفتتان.