عمق ۱ · ۱۶۹ ثانیه
دور میزند تا تمام شود
چه چیزی یک فراخوانیِ ابزار را به بیست تا تبدیل میکند. حلقهی عامل، یعنی فرستادن، اجرای ابزارها، افزودنِ نتیجهها و تکرار تا وقتی پاسخی دیگر ابزاری نخواهد، و اینکه چرا هر نوبت شاهدی تازه میآورد و یک درخواستِ کامل خرج دارد.
دربارهی این ویدیو
از عامل میخواهید تستی را که رد میشود درست کند. بیست دقیقه بعد کار تمام است: تستها را اجرا کرده، سه فایل خوانده، یکی را تغییر داده، دوباره تستها را اجرا کرده، خطای تازهای دیده، فایلِ دیگری را تغییر داده و بارِ سوم اجرا کرده. هیچکس هیچکدام از این قدمها را به او نگفته بود. چیزی که یک فراخوانیِ ابزار را به بیست تا تبدیل میکند بهطرزِ عجیبی کوچک است.
برنامهی دورِ مدل یک چرخه را تکرار میکند. درخواست را برای مدل میفرستد. اگر پاسخ ابزاری بخواهد، آن را اجرا میکند، نتیجهها را به گفتوگو اضافه میکند و از اول شروع میکند. اگر پاسخ هیچ ابزاری نخواهد، همان جوابِ نهایی است: نشانش بده و بایست. این حلقهی عامل است، و در پایتون چند خط بیشتر نیست: یک حلقهی while که پیامها را میفرستد، پاسخ را اضافه میکند، اگر فراخوانیِ ابزاری نبود بیرون میآید، وگرنه هر ابزار را اجرا و نتیجهها را اضافه میکند. به هر دور یک نوبت یا یک قدم میگویند. دقت کنید چه کسی تصمیم میگیرد کی بایستد: نه برنامه، بلکه مدل، با نوشتنِ پاسخی بیفراخوانیِ ابزار.
حلقه چیزی به مدل میدهد که یک جوابِ تنها نمیدهد: فرصتِ دیدنِ اینکه چه شد. چیزی را امتحان میکند، نتیجه را میبیند و راهش را عوض میکند، همانطور که آدمها کار میکنند. خطای تازه در نوبتِ پنجم بود که آن را سراغِ فایلِ دوم فرستاد؛ هیچکس از پیش این را برنامه نریخته بود. ولی هر نوبت یک درخواستِ کامل است و کلِ گفتوگو را دوباره میفرستد، هر بار کمی بلندتر از قبل. یک نوبت میتواند چند ابزار را با هم بخواهد، و این نوبتها را کم میکند.
حلقه وقتی تمام میشود که مدل بگوید کارش تمام است، به حدی برسد که برنامه گذاشته (تعدادِ نوبت، زمان یا بودجه)، یا شما متوقفش کنید؛ در Claude Code کلیدِ Escape آن را قطع میکند. حلقه نمیفهمد کی دارد دورِ خودش میچرخد؛ فقط مدل میتواند متوجه شود. راهی برای بررسیِ کار به عامل بدهید، وقتی یک تلاش را دو بار دیدید وارد شوید، و کارها را در اندازهی معقول نگه دارید.
این ویدیو عمق ۱ از «حلقهی عامل» را نشان میدهد.
یادگیری حلقهی عاملمتن گفتار
- ۰:۰۰از عامل میخواهید تستی را که رد میشود درست کند. تستها را اجرا میکند، سه فایل میخواند، یکی را تغییر میدهد، دوباره اجرا میکند، خطای تازهای میبیند، فایلِ دیگری را تغییر میدهد، و بارِ سوم اجرا میکند. هیچکس این قدمها را به او نگفته بود.
- ۰:۲۰برنامهی دورِ مدل یک چرخه را تکرار میکند. درخواست را برای مدل بفرست. اگر پاسخ ابزار خواست، اجرایش کن، نتیجهها را اضافه کن، و دوباره بچرخ. اگر ابزاری نخواست، همان جوابِ نهایی است. این حلقهی عامل است. هر دور یک نوبت است، و مدل تصمیم میگیرد کی بایستد.
- ۰:۵۰در کد، چند خط بیشتر نیست. بارها و بارها، همهچیز را برای مدل بفرست. پاسخش را اضافه کن. اگر فراخوانیِ ابزاری نبود، بایست. وگرنه هر ابزار را اجرا کن، نتیجهها را اضافه کن، و دوباره بچرخ.
- ۱:۱۵حلقه به مدل چه میدهد؟ فرصتِ دیدنِ اینکه چه شد. امتحان میکند، نتیجه را میبیند، و دوباره امتحان میکند، مثلِ آدمها. خطای تازه در نوبتِ پنجم بود که آن را سراغِ فایلِ دوم فرستاد. هیچکس این را از پیش نریخته بود.
- ۱:۴۰ولی هر نوبت یک درخواستِ کامل است. کلِ گفتوگو دوباره میرود، هر بار کمی بلندتر. بیست نوبت، بیست درخواستِ کامل. یک نوبت میتواند چند ابزار را با هم بخواهد، و این نوبتها را کم میکند.
- ۲:۰۲حلقه وقتی تمام میشود که مدل بگوید تمام شد، به حدی برای نوبت یا زمان یا بودجه برسد، یا شما اسکیپ را بزنید. و حلقه نمیفهمد کی دارد دورِ خودش میچرخد. فقط مدل میتواند بفهمد، و گاهی نمیفهمد.
- ۲:۲۵پس راهی برای بررسیِ کار به آن بدهید. اگر یک تلاش را دو بار دیدید، متوقفش کنید و آنچه کم دارد را بگویید. و هر کار را در اندازهی معقول نگه دارید.
- ۲:۴۲مدلی در یک حلقه. انجام بده، نگاه کن، تکرار کن.