وقتی پنجره پر میشود
عاملِ لیلا دو ساعت است روی گزارشِ فصلیاش کار میکند. اولِ کار تیز و دقیق بود. حالا کُندتر شده، دو بار کاری را از نو انجام داده که لیلا قبلاً تأییدش کرده بود، و پیامی روی صفحه میگوید گفتوگو «فشرده شد». دو مشکلِ جدا پیش آمده و هر دو از پنجرهی زمینه میآیند.
مشکلِ اول: پنجره پر میشود
در درس «هر آنچه مدل میبیند» دیدید که پنجرهی زمینه سقف دارد و یک عامل آن را با فایلهایی که میخواند و خروجیِ کارهایی که اجرا میکند زود پر میکند. وقتی پنجره تقریباً پر شد، برنامهی دورِ مدل باید جا باز کند، وگرنه درخواستِ بعدی جا نمیشود.
میتواند بهسادگی قدیمیترین پیامها را دور بریزد. ولی قدیمیترین پیامها اغلب مهمترین چیز را در خود دارند: درخواستِ اصلیِ شما را. برای همین بیشترِ عاملها کارِ زیرکانهتری میکنند که به آن فشردهسازی (compaction) میگویند: از مدل میخواهند خلاصهای از گفتوگو تا آن لحظه بنویسد و بعد تاریخچهی بلند را با همان خلاصه عوض میکنند. جلسه با زمینهای خیلی کوچکتر ادامه پیدا میکند.
در Claude Code فشردهسازی وقتی پنجره به پر شدن نزدیک میشود خودبهخود انجام میشود، و خودتان هم میتوانید با /compact آن را بخواهید. حتی میتوانید بگویید چه چیزی بماند: /compact keep the list of files we changed and the decisions about the chart colours (یعنی: فهرستِ فایلهایی که تغییر دادیم و تصمیمها دربارهی رنگهای نمودار را نگه دار). این را فارسی هم میتوانید بنویسید.
لیلا پس فشردهسازی مشکل را حل میکند. چیزی از دست نمیرود.
امید خلاصهی یک گفتوگوی دوساعته چه شکلی است؟
لیلا شاید یک صفحه. نکتههای اصلی.
امید و آن دو ساعت چه چیزهایی در خودش داشت؟
لیلا هر فایلی که خواند، هر فرمانی، هر حرفِ کوچکی که زدم، مثل «همان آبیِ گزارشِ پارسال را بگذار»... آهان. خلاصه اصلِ مطلب را نگه میدارد و جزئیات را از دست میدهد.
امید درست است. و همیشه هم نمیداند بعداً کدام جزئیات برایت مهم میشود. یکی از دلیلهایی که کاری را که تأیید کرده بودی از نو انجام داد همین است: شاید آن تأیید به خلاصه نرسیده باشد.
لیلا و آن یکی؟ عامل پیش از فشردهسازی هم کُندتر و مبهمتر شده بود.
امید آن مشکلِ دوم است، و موذیانهتر.
مشکلِ دوم: پنجرهی شلوغ بدتر کار میکند
پنجرهی زمینه مثل میزی نیست که همهچیز روی آن به یک اندازه دم دست باشد. پژوهشگران دیدهاند که مدلها در یک زمینهی خیلی بلند، چیزهایی را که نزدیکِ آغاز و پایاناند بهتر به کار میبرند تا چیزهایی که وسطش گم شدهاند. پژوهشی معروف در سال ۲۰۲۳ با نامِ «Lost in the Middle» (گمشده در وسط) این را بهروشنی نشان داد: اگر تنها واقعیتِ بهدردبخور را وسطِ انبوهی سند بگذارید، مدلها کمتر پیدایش میکردند.
مراقب باشید
مدلهای تازه در کار با زمینههای بلند خیلی بهتر از مدلهای آن پژوهشاند، و اینکه زمینهی بلند چقدر آسیب میزند به مدل و نوعِ کار بستگی دارد. ولی کسانی که عامل میسازند و به کار میبرند هنوز همان الگو را میبینند: یک زمینهی بلند و شلوغ معمولاً پاسخها را بدتر میکند. بعضی به آن پوسیدگیِ زمینه (context rot) میگویند.
شلوغی اوضاع را بدتر میکند. یک جلسهی طولانی پر است از محتوای قدیمیِ فایلها، خروجیهای بلند و تلاشهای ناموفق. یادتان باشد که در درس «مدل هیچ چیز را به یاد ندارد» دیدیم بیراههها در تاریخچه میمانند و مدام مدل را به عقب میکشند. مدل باید در هر درخواست چیزهای مهم را از میانِ همهی اینها پیدا کند.
پس زمینه منبعی است که باید از آن مراقبت کرد، مثل توجهِ خودتان: هرچه چیزهای بیربطِ کمتری در آن باشد، مدل بهتر کار میکند و هر درخواست ارزانتر و سریعتر است.
تمیز نگه داشتنِ زمینه
بهترین عادتها همه به یک ایده برمیگردند: در پنجره همان چیزی را نگه دارید که کارِ فعلی لازم دارد، و کمی بیشتر نه.
- هر کار، یک جلسه. وقتی کاری را تمام کردید و کاری بیربط را شروع میکنید، گفتوگویی تازه شروع کنید. در Claude Code این کار را
/clearمیکند: درخواستِ بعدی با گفتوگویی خالی شروع میشود (هر چه در آغاز هر جلسه بارگذاری میشود باز هم بارگذاری میشود). - آگاهانه و با یادداشت فشرده کنید. پیش از آنکه جلسهای طولانی شلوغ شود، خودتان فشردهاش کنید و بگویید چه چیزی باید بماند، بهجای اینکه منتظر بمانید فشردهسازیِ خودکار حدس بزند.
- چیزهای مهم را در یک فایل نگه دارید. از عامل بخواهید برنامه، تصمیمهای تا اینجا یا فهرستی از پیشرفتِ کار را در یک فایل بنویسد. فایل از فشردهسازی و از جلسهی تازه جان سالم به در میبرد و عامل هر وقت لازم باشد میتواند دوباره بخواندش.
- کمتر بخوانید، بیشتر جستوجو کنید. از عامل بخواهید خطهای مهم را جستوجو کند، بهجای اینکه همهی فایلها را کامل بخواند. بیشترِ عاملها اگر بتوانند خودشان این کار را میکنند.
- کارهای جانبی را به یک کمککار بسپارید. یک جستوجوی بزرگ را میتواند عاملِ کمککارِ جداگانهای با پنجرهی خودش انجام دهد و فقط پاسخ را برگرداند. دربارهی این کمککارها بعدها در دوره درسی هست.
امتحان کنید
دفعهی بعد که یک گفتوگو یا جلسهی طولانی با عامل کمکم مبهم یا تکراری شد، این را امتحان کنید: از آن بخواهید «خلاصهای کوتاه بنویس از اینکه چه کار میکنیم، چه چیزهایی تصمیم گرفته شده و چه چیزی مانده». خلاصه را بخوانید، هر اشتباهی را درست کنید، و بعد جلسهای تازه فقط با همان خلاصه شروع کنید. ببینید پاسخها چقدر دقیقتر شدهاند.
درست به کار بردن
- برای هر کارِ تازه، جلسهای تازه شروع کنید. سادهترین راه برای کوچک، مرتبط و ارزان نگه داشتنِ زمینه همین است.
- پیش از آنکه پنجره به جای شما تصمیم بگیرد فشرده کنید، و بگویید چه چیزی بماند. شما میدانید کدام جزئیات مهماند؛ خلاصهی خودکار باید حدس بزند.
- تصمیمها و برنامهها را در یک فایل بنویسید. متنِ درونِ فایل از هر فشردهسازی و هر جلسهای بیشتر عمر میکند و عامل هر وقت بخواهد دوباره میخواندش.
- فراموشیِ عجیب را نشانهی پنجرهی پر بدانید. اگر عاملی چیزی را فراموش کرد که معلوم بود میداند، پیش از آنکه مدل را مقصر بدانید
/contextرا نگاه کنید یا دنبالِ پیامِ «فشرده شد» بگردید.
واژههای این درس
- فشردهسازی (compaction) - عوض کردنِ تاریخچهی بلندِ یک گفتوگو با خلاصهای از آن، برای باز کردنِ جا در پنجرهی زمینه؛ اصلِ مطلب را نگه میدارد و جزئیات را از دست میدهد
- پوسیدگیِ زمینه (context rot) - بدتر شدنِ پاسخها وقتی زمینه بلند و شلوغ میشود، حتی پیش از آنکه پر شود
- پاک کردنِ جلسه - شروعِ دوباره با گفتوگویی خالی (
/clearدر Claude Code)، فقط با چیزهایی که در آغاز بارگذاری میشوند
ایدهی اصلی
پنجرهی پر فشردهسازی را ناگزیر میکند، که اصلِ مطلب را نگه میدارد و جزئیات را از دست میدهد؛ پنجرهی شلوغ هم حتی پیش از پر شدن بدتر کار میکند. زمینه را کوچک و مرتبط نگه دارید: هر کار یک جلسه، و چیزهای مهم در فایل.