Secondary source

Secondary source یعنی یه خلاصه یا توضیح درباره‌ی منبع اصلی که فضای کمتری می‌گیره، ولی ممکنه بخشی از جزئیات رو از دست بده یا با گذشت زمان قدیمی بشه.

این Secondary source یعنی یه چیزی که درباره‌ی Primary source نوشته شده و نه خودِ منبع اصلی.

مثلاً README که کد رو توضیح می‌ده و یا هر داکیومنتی که درباره Primary source یه سری توضیحات می‌ده، همشون Secondary source محسوب میشن.

مزیتشم اینه که خیلی سبک‌تره.

یعنی به جای اینکه کل کد یا کل لاگ یا کل تاریخچه گفتگو رو وارد Context کنی، فقط یه خلاصه کوتاه رو به مدل می‌دی و کلی Token صرفه‌جویی می‌کنی.

ولی یه مشکل بزرگ داره، هر خلاصه‌ای ذاتا ناقصه!

کسی که اون خلاصه رو نوشته تصمیم گرفته چه چیزایی مهمن و چه چیزایی رو حذف کنه. اگه یه جزئیات مهم جا افتاده باشه، کسی که فقط اون خلاصه رو می‌خونه اصلا نمی‌فهمه همچین چیزی وجود داشته.

و خب یه بخش بزرگی از Context Engineering هم دقیقا ساختن همین Secondary source هاست.

مثلا Compaction کل یه Session طولانی رو تبدیل می‌کنه به یه خلاصه برای Session بعدی.

یا یه Subagent میره کلی جستجو انجام می‌ده و به جای اینکه همه اطلاعات رو برگردونه، فقط یه گزارش کوتاه می‌فرسته.

یا یه Handoff artifact تصمیم‌های مهم یه Session رو داخل یه داکیومنت جمع می‌کنه تا Session بعدی ازش استفاده کنه.

حتی Memory system هم در واقع یه نوع Secondary source می‌سازه، یعنی تجربه‌ها و اطلاعات مهم رو به شکل یادداشت نگه می‌داره.

همه اینا دارن یه معامله انجام میدن و یه مقدار از جزئیات رو بیخیال میشن تا فضای بیشتری داخل Context Window آزاد بشه. Secondary source معمولا به دو دلیل خراب میشه.

اول اینکه ناقصه. مثلا توی خلاصه فراموش شده یه تصمیم مهم یا یه Edge case نوشته بشه.

دوم اینکه قدیمی میشه. مثلا کد پروژه تغییر کرده ولی داکیومنت هنوز درباره نسخه چند ماه پیش حرف می‌زنه.

اون وقت Agent با اعتمادبه‌نفس بر اساس اطلاعات اشتباه تصمیم می‌گیره، چون فکر می‌کنه اون خلاصه هنوز درسته.

راه‌حلش اینه که وقتی دقت خیلی مهمه، برگردی سراغ Primary source و داستان رو از همونجا بررسی کنی.

البته این به معنی بد بودن Secondary source نیست.

اگه قرار بود همیشه فقط از Primary source استفاده کنیم، Context Window خیلی زود پر می‌شد و پروژه‌های بزرگ عملا قابل مدیریت نبودن.

برای همین هنر اصلی اینه که بفهمی کِی یه خلاصه کافیه و کِی باید بری سراغ منبع اصلی.

یه Secondary source خوب معمولا یه Context pointer هم داره، یعنی مشخص می‌کنه این خلاصه از کدوم فایل، کدوم لاگ یا کدوم گفتگو ساخته شده. اینطوری اگه یه جایی خلاصه کافی نبود، راحت می‌تونی بری خودِ Primary source رو بررسی کنی.