پرش به محتوای اصلی
پرش به محتوای مقاله

«اجرای مستقل ابزارها»؛ رویکرد آنتروپیک برای حذف تایید کاربر در کدنویسی

·۱۸ شهریور ۱۴۰۵۵ دقیقه مطالعه۱ بازدید
تحلیل
حلقه عامل Claude Code: از پنجره چت تا حلقه اجرایی
حلقه عامل Claude Code: از پنجره چت تا حلقه اجرایی
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

افشای جزئیات لایهٔ Harness و مکانیزم‌های مدیریت وضعیت (State Transition) در Claude Code؛ این خبر نشان می‌دهد که «حافظه» در عامل‌های پیشرو، یک ویژگی مدل نیست بلکه یک لایهٔ مهندسی‌شده در محیط اجراست.

تصور کنید برنامه‌نویسی را استخدام کرده‌اید که هر ثانیه تمام حافظه‌اش پاک می‌شود، اما یک دستیار دقیق کنارش است که هر اتفاقی می‌افتد را یادداشت می‌کند و قبل از هر سوال، تمام تاریخچه را جلوی چشمش می‌گذارد. این دقیقاً همان اتفاقی است که در Claude Code می‌افتد تا یک مدل زبانی ساده به یک عامل (Agent) تبدیل شود.

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

همان‌طور که در تحلیل قبلی ما درباره‌ی مدیریت جلسات موازی در Fleet از طریق Thurbox اشاره کردیم، صنعت به سمت محیط‌های اجرای پیچیده برای عامل‌ها حرکت می‌کند. برای اکثر کاربران، هوش مصنوعی فقط یک پنجرهٔ چت است، اما برای یک عامل کدنویسی، چت تنها لایهٔ بیرونی و مرز ارتباطی است. کار واقعی در لایهٔ Harness رخ می‌دهد؛ یک لایهٔ واسط که تاریخچهٔ گفتگو را نگه می‌دارد و آن را برای هر فراخوانی API بسته‌بندی می‌کند. این رویکرد مشابه استراتژی‌های مشابه در مدل‌های دیگر است، همان‌طور که DeepSeek نیز از لایه‌های Harness برای تبدیل قابلیت‌های LLM به پلاگین‌های عامل‌های خودمختار استفاده می‌کند.

به نقل از مستندات فنی این سیستم، از آنجا که APIهای مدل زبانی بزرگ (LLM) — مثل کتابخانه‌داری که میلیاردها صفحه را خوانده و حالا با همان لحن کتاب‌ها جواب می‌دهد — «بی‌وضعیت» (Stateless) هستند، سرور هیچ‌چیز از درخواست‌های قبلی به یاد نمی‌آورد. برای ایجاد توهم حافظه، لایهٔ Harness باید در هر بار فراخوانی، تمام آرایهٔ پیام‌ها را ارسال کند. در نوبت اول یک پیام ارسال می‌شود، اما در نوبت سوم ممکن است پنج پیام ارسال شود؛ مدل هیچ‌چیز به یاد نمی‌آورد، اما Harness همه چیز را می‌داند.

بر اساس بررسی‌های فنی منتشر شده در ۹ سپتامبر ۲۰۲۶، هستهٔ این سیستم یک حلقهٔ پنج‌مرحله‌ای است که در ظاهر ساده به نظر می‌رسد: فراخوانی مدل، بررسی پاسخ، اجرای ابزارهای درخواستی، افزودن نتایج به تاریخچه و توقف تنها زمانی که دیگر نیازی به ابزاری نباشد.

مکانیسم‌های اجرایی حلقه

در یک سناریوی رفع باگ، لایهٔ Harness توالی اتفاقات را مدیریت می‌کند. برای مثال، اگر کاربر بنویسد «کمکم کن این باگ را پیدا کنم»، پنجرهٔ چت شروع به اسکرول شدن می‌کند زیرا عامل به‌طور خودکار در کدها جست‌وجو می‌کند:

  • فراخوانی الف: مدل تصمیم می‌گیرد که برای شروع نیاز دارد فایل auth.py را بخواند.
  • اجرا: Harness فایل را می‌خواند و محتوای آن را به آرایهٔ پیام‌ها اضافه می‌کند.
  • فراخوانی ب: مدل بر اساس محتوای فایل اول، تصمیم می‌گیرد login.py را بررسی کند.
  • اجرا: Harness یک دستور جست‌وجو یا ویرایش را اجرا می‌کند.
  • استفاده از ابزار: عامل ممکن است یک خط از کد را ویرایش کرده و سپس یک تست را اجرا کند تا از رفع باگ مطمئن شود.
  • فراخوانی نهایی: مدل تشخیص می‌دهد کار تمام شده و پاسخ نهایی را به کاربر برمی‌گرداند (مثلاً: «انجام شد؛ علت باگ X بود»).

این فرآیند توسط یک حلقهٔ حداقلی استفاده از ابزار مدیریت می‌شود: while True: response = call_llm(messages). اگر پاسخ حاوی یک درخواست برای استفاده از ابزار باشد، Harness آن ابزار را اجرا کرده، هم درخواست و هم نتیجه را به تاریخچه می‌چسباند و دوباره به ابتدای حلقه برمی‌گردد. اگر هیچ درخواست ابزاری وجود نداشته باشد، نوبت (Turn) می‌شکند و حلقه متوقف می‌شود.

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

سازوکارهای ایمنی و کنترل

به دلیل ماهیت خودکار این سیستم در میانهٔ انجام وظایف، چندین مکانیسم ایمنی برای جلوگیری از فرآیندهای خارج از کنترل ضروری است:

  • قطع‌کننده‌ها (Interrupts): راهی برای کاربر تا حلقه‌ای را که در غیر این صورت به اجرای خود ادامه می‌داد، متوقف کند.
  • تایید دسترسی (Permission Approval): ایجاد یک توقف در حلقه برای اقدامات خطرناک، مانند دستورات تخریبی در شل (Shell).
  • ساعت قطع‌کن (maxTurns): یک سقف سخت برای کشتن حلقه‌های بی‌نهایت تصادفی.
  • قلاب‌ها (Hooks): منطق‌های سفارشی که از طریق قلاب‌های چرخهٔ عمر تزریق می‌شوند، زیرا کاربر به‌طور دستی مراحل میانی را مدیریت نمی‌کند.

از حلقهٔ ساده تا محیط عملیاتی

در حالی که منطق پایه یک حلقهٔ سادهٔ while True است، نسخهٔ عملیاتی Claude Code باید محیط‌های بسیار سخت‌تری را مدیریت کند. سیستم باید با شکست‌های API به دلیل مشکلات شبکه، محدودیت‌های نرخ درخواست (Rate Limits) یا سربارهای سرور مقابله کند. همچنین باید مواردی را مدیریت کند که مدل از انجام درخواست خودداری می‌کند، یک ابزار کرش می‌کند، یا خروجی به دلیل رسیدن به max_tokens قطع می‌شود.

این سیستم از انتقال‌های وضعیت پیچیده‌ای برای مدیریت این شکست‌ها استفاده می‌کند و مسیرها را بر اساس state.transition.reason انتخاب می‌کند:

  • مدیریت زمینه: استفاده از collapse_drain_retry برای سرریز شدن پنجرهٔ زمینه (Context Window) — میزان متنی که مدل هم‌زمان در ذهن نگه می‌دارد — یا استفاده از reactive_compact_retry برای فشرده‌سازی و تلاش مجدد.
  • بازیابی توکن: استفاده از max_output_tokens_escalate برای افزایش سقف توکن‌ها یا max_output_tokens_recovery برای تزریق یک پیام «ادامه بده» (Continue). برای بهینه‌سازی این هزینه‌ها، استفاده از کشینگ API توانسته است مصرف توکن‌ها را در جلسات طولانی تا ۶۰٪ کاهش دهد.
  • کنترل جریان: مدیریت stop_hook_blocking زمانی که یک قلاب توقف نیاز به تداوم دارد، یا token_budget_continuation برای ادامه کار تحت یک بودجهٔ توکنی مشخص.

سایر ویژگی‌های حیاتی در محیط عملیاتی عبارتند از:

  • کنترل هم‌زمانی: دسته‌بندی ابزارها بر اساس isConcurrencySafe برای تشخیص اینکه آیا می‌توانند به‌طور موازی اجرا شوند یا باید به‌صورت متوالی (Serialized) باشند.
  • فشرده‌سازی واکنشی: کوچک کردن خودکار پرامپت زمانی که از آستانهٔ پنجرهٔ زمینه فراتر می‌رود.
  • قلاب‌های چرخهٔ عمر: منطق‌های سفارشی تعریف شده در .claude/settings.json که در مرزهای جلسه یا ابزارها فعال می‌شوند.
  • مدیریت خطا: تبدیل هر شکست ابزار به یک نتیجهٔ is_error برای اینکه حلقه متوقف نشود و مدل بتواند خطا را تحلیل کند.
  • عامل‌های زیرمجموعه (Subagents): اجازه دادن به یک عامل فرعی برای شروع حلقهٔ مجزا و متمایز خود در حالی که از حلقهٔ اصلی جدا می‌ماند.

این معماری تمرکز را از مهندسی پرامپت (Prompt Engineering) — هنر سؤال درست پرسیدن — به مهندسی محیط اجرا (Runtime Engineering) منتقل می‌کند. ارزش دیگر فقط در هوش مدل نیست، بلکه در قابلیت اطمینان لایهٔ Harness است که آن را احاطه کرده است. با مدیریت بودجه‌های توکن و رسیدگی به رویدادهای context_window_exceeded (سرریز پنجره زمینه)، محیط اجرا تضمین می‌کند که عامل در حین ویرایش‌های پیچیده و چندمرحله‌ای کرش نکند.

برای توسعه‌دهندگان، این یعنی «هوش» عامل، محصول ترکیب LLM و لایهٔ ارکستراسیون است. Harness همان چیزی است که باعث می‌شود مدل به نظر برسد گفتگو را به یاد می‌آورد، در حالی که خود مدل کاملاً بی‌وضعیت باقی مانده است. با این حال، پذیرش این ابزارها توسط کاربران متفاوت بوده است؛ برای مثال، داده‌ها نشان می‌دهند که ۸۷.۵٪ از عامل‌های سفارشی Claude Code در یک ماه هیچ فراخوانی نداشتند.

برای مشاهدهٔ این سازوکار در عمل، می‌توانید فایل .claude/settings.json خود را بررسی کنید تا ببینید قلاب‌ها چگونه رفتار عامل را در طول حلقه‌های خودکارش تحت تأثیر قرار می‌دهند.

گام بعدی شما

  • فایل .claude/settings.json خود را بررسی کنید تا ببینید قلاب‌ها چگونه رفتار عامل را در حلقه‌های خودکار تغییر می‌دهند.
  • در پروژه‌های خود، تفاوت بین یک فراخوانی ساده API و یک حلقهٔ عامل‌محور را با پیاده‌سازی یک while loop ساده تست کنید.
  • محدودیت‌های maxTurns را در تنظیمات بررسی کنید تا از هزینه‌های ناخواسته استنتاج جلوگیری کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این معماری استانداردی را برای تبدیل مدل‌های Stateless به عامل‌های کاربردی تعریف می‌کند که تخصص در ارکستراسیون را به اندازه خودِ مدل اهمیت می‌دهد. اعتبار این رویکرد در توانایی آن برای مدیریت خطاهای محیط عملیاتی است که پیش از این باعث شکست عامل‌های AI در مقیاس واقعی می‌شد.

تأثیر برای ایران

برنامه‌نویسان ایرانی می‌توانند با مطالعهٔ این معماری، عامل‌های محلی خود را بدون نیاز به مدل‌های دارای حافظهٔ داخلی، تنها با پیاده‌سازی یک لایهٔ Harness ساده روی APIهای موجود بسازند.

·نگاه ما
تحریریه دات‌هوش

انتقال مرکز ثقل از هوش مدل به پایداری لایهٔ اجرا (Runtime)، نشان می‌دهد که مدل‌های زبانی به تنهایی برای کاربردهای صنعتی کافی نیستند. در واقع، لایهٔ Harness در Claude Code نقش یک «سیستم‌عامل» برای مدل را ایفا می‌کند که مدیریت حافظه و خطاهای سیستمی را بر عهده می‌گیرد. این یعنی برندهٔ نهایی بازار AI، لزوماً کسی نیست که مدل 똑똑‌تری دارد، بلکه کسی است که محیط اجرای قابل‌اعتمادتری ساخته است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

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

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

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