برنامهی دورِ مدل
تا اینجا «برنامهی دورِ مدل» در همهی درسها حضور داشته است: گفتوگو را نگه میدارد، پرامپت سیستمی را مینویسد، فهرستِ ابزارها را میفرستد، ابزارها را اجرا میکند و حلقه را ادامه میدهد. وقتش رسیده نامی درست و حسابی داشته باشد، چون بخشی از عامل است که واقعاً میتوانید تغییرش دهید.
لیلا پس وقتی از Claude Code استفاده میکنم، دارم از Claude استفاده میکنم. یعنی از مدل.
امید از Claude استفاده میکنی، بله. ولی آیا Claude Code همان چیزی است که Claude است؟
لیلا فکر میکردم همینطور است. اسمشان یکی است.
امید بیا امتحانش کنیم. Claude در برنامهی Claude روی گوشیات هم پاسخ میدهد. برنامهی گوشی میتواند فایلهای پوشهی پروژهات را ویرایش کند؟
لیلا نه.
امید همان مدلِ Claude، درونِ Claude Code، میتواند ویرایششان کند؟
لیلا بله. پس تفاوت در مدل نیست. در همهی چیزهای دورِ آن است: ابزارهایی که به آن داده شده، پرامپت سیستمی، حلقه.
امید درست است. Claude Code برنامهی دورِ مدل است. به این برنامه هارنس (harness) میگویند.
لیلا هارنس یعنی یراقِ اسب، نه؟ چیزی که کمک میکند نیروی اسب برای کار به کار برود.
امید تصویرش همین است. مدل نیروست؛ هارنس آن نیرو را به سمتِ یک کار میبرد و در اختیار نگهش میدارد.
هارنس چه میکند
هارنس همهچیزِ یک عامل است بهجز خودِ مدل. همهی کارهایی را که تا اینجا دیدید انجام میدهد، و چند کارِ دیگر:
- حلقه را اجرا میکند: درخواستها را میفرستد، پاسخها را میخواند و تصمیم میگیرد جلسه کی تمام شود؛
- ابزارها را نگه میدارد و اجرا میکند: خواندنِ فایلها، ویرایش، اجرای فرمانها، جستوجو در وب؛
- پرامپت سیستمی را مینویسد و شرحِ ابزارها را؛
- زمینه را میسازد: چه چیزی در هر درخواست برود، به چه ترتیبی، و وقتی پنجره پر شد چه چیزی فشرده شود؛
- تعیین میکند چه چیزی مجاز است: کدام کارها اجازهی شما را لازم دارند و کدام مسدودند؛
- با شما حرف میزند: صفحهای که در آن مینویسید، پیشرفتی که نشان میدهد، سؤالهایی که میپرسد؛
- سابقه نگه میدارد: جلسهها را ذخیره میکند تا بتوانید به آنها برگردید.
یک راهِ بهدردبخور برای تقسیمِ کار: مدل تصمیم میگیرد چه کند؛ هارنس تصمیم میگیرد چه چیزی مجاز است، آن را انجام میدهد و به خاطر میسپارد. مدل برای میلیونها نفر یکی است؛ شخصیتِ خاصِ هر عامل از هارنسِ آن میآید.
یک مدل، هارنسهای مختلف
چون اینهمه چیز در هارنس است، یک مدلِ یکسان میتواند در هارنسهای مختلف خیلی متفاوت رفتار کند. Claude در برنامهی Claude یک دستیار گفتوگوست؛ Claude در Claude Code یک عاملِ کدنویسی است؛ Claude در برنامهی خودِ یک شرکت شاید دستیاری محتاط باشد که فقط میتواند یک پایگاهداده را بخواند. در جهتِ دیگر، یک هارنس میتواند مدلهای مختلف را اجرا کند: Claude Code اجازه میدهد وسطِ کار بینِ یک مدلِ سریعتر و ارزانتر و یک مدلِ کُندتر و قویتر جابهجا شوید.
این همچنین به شما میگوید وقتی عاملی ناامیدتان میکند کجا را نگاه کنید. گاهی مدل واقعاً از پسِ کار برنمیآید. ولی اغلب مشکل در هارنس است: ابزاری که نیست، زمینهای شلوغ، اجازهای که نداشته، دستوری که هرگز ندیده است.
عامل کجا اجرا میشود
هارنس این را هم تعیین میکند که ابزارها کجا کار کنند. Claude Code معمولاً روی کامپیوترِ خودتان اجرا میشود، پس ابزارهایش روی فایلهای خودتان و با اجازههای خودتان کار میکنند. عاملهای دیگر در فضای ابری اجرا میشوند، درونِ یک سندباکس (sandbox): کامپیوتری جدا و بسته که به هیچ چیزِ دیگری دسترسی ندارد. اینکه از کدام استفاده میکنید در اینکه عامل چه چیزهایی را میبیند و به چه چیزهایی ممکن است آسیب بزند مهم است.
برنامهنویسهایی که چنین هارنسی را در برنامههای خودشان میخواهند میتوانند از Claude Agent SDK استفاده کنند که همان حلقه، ابزارها و مدیریتِ زمینهی Claude Code را به شکلِ کتابخانهای برای ساختن در اختیار میگذارد.
ادامهی این دوره
هر بخش از اینجا به بعد دربارهی قسمتی از هارنس است که میتوانید شکلش بدهید:
- دانش دادن به عامل: آنچه هارنس برایتان در زمینه بارگذاری میکند: فایلهای دستورها، حافظه، و مهارتهایی که فقط وقتِ نیاز بارگذاری میشوند.
- مهار کردنِ عامل: آنچه هارنس اجازه میدهد اتفاق بیفتد: اجازهها، هوکهایی که هر بار اجرا میشوند، و برنامهریزی پیش از عمل.
- چند عامل، چند ابزار: عاملهای کمککار با زمینهی خودشان، و راهی استاندارد برای وصل کردنِ ابزارهای تازه.
- درست به کار بردنِ عاملها: چه هزینهای دارد، چه چیزهایی ممکن است خراب شود، و چطور کاری را به عامل بسپارید.
امتحان کنید
اگر Claude Code دارید،
/modelرا بنویسید تا ببینید این هارنس چه مدلهایی را میتواند به کار ببرد، و/helpرا تا فرمانهای خودِ هارنس را ببینید: هیچکدامشان مدل نیستند. بعد به ابزارهای هوش مصنوعیای که به کار میبرید فکر کنید: برنامهی گفتوگو، عامل، دستیاری که درونِ یک برنامهی اداری است. فکر میکنید کدامها همان مدل را در هارنسی دیگر به کار میبرند؟
درست به کار بردن
- وقتی عاملی شکست خورد، بپرسید کدام بخش شکست خورد. قضاوتِ مدل بود، یا هارنس: ابزاری که نبود، زمینهای شلوغ، کاری که مسدود شد؟ راهحلِ هر کدام فرق دارد.
- هارنستان را یاد بگیرید، نه فقط مدلتان را. فرمانها، تنظیمات و فایلهایش جاییاند که اختیارِ واقعی دارید، و هر مدلی را که انتخاب کنید همانطور کار میکنند.
- بدانید عاملتان کجا اجرا میشود. روی کامپیوترِ خودتان میتواند به فایلهایتان دست بزند؛ در یک سندباکس فقط به فایلهای خودش. بر اساسِ کار انتخاب کنید.
واژههای این درس
- هارنس (harness) - همهچیزِ یک عامل بهجز مدل: حلقه، ابزارها، پرامپت سیستمی، ساختنِ زمینه، اجازهها، صفحه، جلسههای ذخیرهشده؛ به آن «برنامهی دورِ مدل» هم میگوییم
- سندباکس (sandbox) - فضایی بسته که ابزارهای یک عامل در آن اجرا میشوند، جدا از همهچیزِ دیگر
- Claude Agent SDK - کتابخانهای که همان هارنسِ Claude Code را در اختیارِ برنامهنویسها میگذارد تا عاملهای خودشان را بسازند
ایدهی اصلی
یک عامل یعنی یک مدل بهاضافهی یک هارنس. مدل تصمیم میگیرد چه کند؛ هارنس تصمیم میگیرد چه چیزی مجاز است، آن را انجام میدهد و به خاطر میسپارد. بیشترِ آنچه میتوانید در یک عامل تغییر دهید در هارنس است.