پرامپت زنده برای ایجنتهای طولانیمدت
خلاصهٔ کاملتر
به گفتهٔ نویسنده، شکلدهی تدریجی کانتکست (progressive context shaping) روشیه برای هدایت یه ایجنت توی اجراهای چندساعته یا چندروزه: بهجای اینکه همهچی رو اولش بنویسی و امیدوار باشی تا آخر معتبر بمونه، یه سند کوچیک نگه میداری که بگه الان چی درسته — هدف فعال، تصمیمهای گرفتهشده، بنبستهایی که پیدا شده و قدم بعدی. ایجنت قبل از هر اقدام همین رو میخونه.
این موضوع حالا مهم شده چون ایجنتهای کدنویسی گاهی شش تا ده ساعت و حتی چند نشست پشتسرهم روی یه پروژه کار میکنن. حالت خرابیش هم همهجا شبیهه: ایجنت قوی شروع میکنه و بعد منحرف میشه. تو یه نمونهٔ مستند، ایجنتی که قرار بود چند تا trace رو خلاصه کنه، تقریباً همهٔ فراخوانیهای مدلش صرف مرتب کردن to-do list خودش شد، چون درخواست اصلی زیر خروجی ابزارها دفن شده بود.
نویسنده تأکید میکنه پررنگتر کردن دستور بالای پرامپت این رو حل نکرد؛ مشکل واژهها نبود، این بود که «برنامهٔ فعلی» جای مشخصی جدا از همهٔ سروصدای گذشته نداشت. الگویی که تکرار میشه اینه: یه فایل بزرگ ثابت رو با چند سند کوچیک که همیشه بهروزن عوض کن. تو یه پروژهٔ داخلی بزرگ (کدبیسی بالای یک میلیون خط، کاملاً از طریق pull requestهای تولیدشده توسط ایجنت) یه فایل نقشهٔ کوتاه ایجنت رو به برنامههای اجرایی فعال، لاگ تصمیمها و نقشهٔ معماری وصل میکرد.
همین ایده تو کارهای علمی طولانیمدت به شکل یه فایل پیشرفت درمیاد که نقش حافظهٔ قابلحمل بین نشستها رو داره: وضعیت فعلی، کارهای انجامشده، محدودیتهای شناختهشده و روشهای شکستخورده بههمراه دلیل شکست. تو سیستمهای چندایجنتی هم برنامهٔ جاری از خود مکالمه بیرون کشیده و روی دیسک ذخیره میشه، و قبل از هر فراخوانی مدل، یه پیام کوتاه از آخرین وضعیت ساخته و جلوتر از تاریخچهٔ شلوغ گذاشته میشه.
بخش اصلی ارزش این روش، جدا کردن چهار نوع کانتکسته که معمولاً قاطی میشن: دستورهای پایدار (کجا فایلها هستن، چه کاری تأیید لازم داره، استانداردهای کیفیت) که جاش فایل قوانین پروژهست مثل claude.md یا agents.md؛ وضعیت فعلی پروژه (تصمیمهای فعال، چیزهای بلاتکلیف، قدم بعدی، نقطهٔ توقف)؛ نقشه که فقط میگه چه منابعی هست و کجاست، نه اینکه همهشون رو لود کنه؛ و تاریخچه که چرایی تصمیمها و چیزهای رهاشده رو نگه میداره.
نویسنده میگه لازم نیست همهچی رو لاگ کنی؛ فقط تصمیمهایی که هدف یا تعریف «تمامشده» رو عوض میکنن باید تو فایل وضعیت بشینن. تو یه پروژهٔ ساخت بنچمارک، ایجنت بعد از تولید بیش از هزار سؤال گیر یه حلقه افتاد چون دستور اولیه «تست پیوسته» رو تشویق میکرد. راهحل، پرامپت جدید از صفر نبود؛ چکپوینت گرفتن و بهروزرسانی وضعیت بود تا مسیر بعدی محدود و قابلاتمام بشه. پرامپت اولیه هنوز مهمه، ولی فقط چیزی رو منعکس میکنه که موقع شروع میدونستی.
نکات کلیدی:
- بهجای یه پرامپت ثابت، یه فایل کوچیک «وضعیت الان» رو مدام بهروز نگه دار
- فایل قوانین بزرگ و قدیمی به «قبرستان قانونهای منسوخ» تبدیل میشه و جای کار اصلی رو میگیره
- دستورهای پایدار (نحوهٔ کار) رو از وضعیت جاری (کارِ الان) جدا کن
- روشهای شکستخورده رو بهصورت «نتیجه» ثبت کن، نه بازپخش کل تلاش ناموفق
- فقط تصمیمهایی که هدف یا تعریف اتمام رو عوض میکنن ارزش ثبت دارن
- کانتکست بزرگتر جایگزین این کار نمیشه؛ مسئله تازه بودن اطلاعاته نه حجمش




