تصور کنید برنامهنویسی هستید که باید کدهایی را تغییر دهد که پیش از تولدش نوشته شدهاند و هیچ مستنداتی ندارند. در چنین شرایطی، حتی پیشرفتهترین ابزارهای هوش مصنوعی فعلی هم شکست میخورند چون نمیدانند «چرا» یک قطعه کد عجیب در سال ۲۰۱۱ نوشته شده است.
در محیطهای عظیم مخابراتی مثل اریکسون (Ericsson)، توسعهدهندگان با پشتههای کد Java و C++ مواجه هستند که دهها سال است اجرا میشوند. این سیستمها پر از ترفندهای مستندنشده برای رفع مشکل سختافزارهای قدیمی هستند؛ مثلاً متغیرهایی مثل tmpBuf2 که نامشان هیچ معنایی ندارد اما ترافیک واقعی شبکه را مدیریت میکنند. طبق گزارش توسعهکننده این پروژه، در دنیای تلکام نمیتوان کدها را صرفاً چون «زشت» هستند بازنویسی کرد، بلکه باید آنها را شناخت و حفظ کرد.
دستیارهای استاندارد مثل Amazon Q در اینجا ناکام میمانند چون پاسخهای کلی و کتابی میدهند. برای مثال، وقتی از این ابزار پرسیده شد چرا یک حلقه تکرار (Retry Loop) در شرایط خاص متفاوت عمل میکند، Amazon Q پاسخی کلی درباره الگوهای تکرار از یک وبلاگ سال ۲۰۱۹ داد. این ابزار نمیدانست که آن حلقه به دلیل یک نقص فنی در سفتافزار (Firmware) یک سازنده در سال ۲۰۱۱ ایجاد شده است و نمیتوانست آن را به یک «کامیت» (Commit) خاص یا مهندسی که ساعت ۲ صبح آن را دیباگ کرده بود، وصل کند.
همانطور که در تحلیلهای پیشین ما دربارهی محدودیتهای پنجره متنی اشاره کردیم، مدلها بدون حافظهٔ بلندمدت، در برابر ابعاد عظیم کدهای قدیمی میبازند. این مشکل در لایههای رابط C++ که طی ۱۵ سال توسط ۵ نفر مختلف ویرایش شده بود، به شدت حس میشد؛ نتیجه همیشه پاسخهایی محتمل اما با بستر (Context) اشتباه بود.
معماری حافظه
برای حل این چالش، Code Archaeologist از Cognee استفاده میکند؛ یک لایه حافظه ترکیبی از گراف و بردار. این ابزار بر خلاف روشهای رایج تولید بازیابیافزا (RAG) — که شبیه دانشآموزی است که قبل از جواب دادن، فقط تکههایی از کتاب درسی را باز میکند — به مدل اجازه میدهد تا در یک گراف دانش حرکت کند و زنجیرهای از شواهد را پیدا کند.
در این ساختار، Cognee مانند یک حافظه دائمی برای عاملهای (Agents) هوش مصنوعی عمل میکند. این لایه، یک مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه خوانده اما هر جلسه همه چیز را فراموش میکند — را به سیستمی تبدیل میکند که اطلاعات را در جلسات مختلف به یاد میآورد.
جزئیات پیادهسازی
این ابزار برای تضمین بازیابی کامل و ارجاعات قابلاثبات، چرخه کامل Cognee را پیاده کرده است:
- remember(): اطلاعات موجود در گیت (Git Blame)، لینکهای PR و متن تیکتها را جذب میکند. مثلاً ثبت میکند که «حلقه تکرار در عدد ۳ متوقف میشود چون سفتافزار نسخه ۲.۱ در تلاش چهارم هنگ میکند».
- recall(): برای پاسخ به پرسشهای «چرا»، زنجیرهای از شواهد را برمیگرداند. به جای سخنرانی درباره همزمانی (Concurrency)، مسیری را نشان میدهد:
SessionManager.initPool()$
ightarrow$commit a3f8c21$
ightarrow$PR #847$
ightarrow$Issue #1204. - improve(): اجازه میدهد گراف دانش پس از دریافت بازخورد متخصصان غنیتر شود.
- forget(): امکان حذف دادههای مربوط به یک مخزن (Repo) خاص را فراهم میکند تا حافظه مدلها در پروژههای مختلف تداخل نکند.
پل زدن بر شکاف دانش انسانی
یکی از حیاتیترین بخشهای این ابزار، پنل «دانش متخصص» (Expert Knowledge) است. در بسیاری از تیمها، حیاتیترین اطلاعات در پیامهای خصوصی اسلک (Slack) یا ذهن یک مهندس ارشد است. Code Archaeologist اجازه میدهد مهندس ارشد بهصورت دستی دانش خود را تزریق کند؛ مثلاً توضیح دهد که یک بافر JNI باید دقیقاً ۴۰۹۶ بایت باشد چون سفتافزارهای قدیمی DSP فقط بستههای با اندازه ثابت را میپذیرند.
به نقل از مستندات پروژه، این قابلیت باعث میشود یک مهندس تازهکار به جای دریافت یک توهم (Hallucination) — شبیه دوستی که خاطرهای را اشتباه تعریف میکند — پاسخی مستند دریافت کند که به نام فرد متخصص (مثلاً «راج») ارجاع میدهد. این ابزار از ۱۶۰ زبان جمله از جمله Java، C++ و حتی COBOL پشتیبانی میکند.
مسیر فنی توسعه
این پروژه در یک دوی سرعت چهار هفتهای در جریان هکاتون WeMakeDevs $ imes$ Cognee ساخته شد:
- هفته اول: تمرکز بر حلقه حافظه و تبدیل پاسخهای خام JSON به رابط کاربری خواندنی.
- هفته دوم: تثبیت Cognee Cloud با استفاده از فراخوانیهای مسدودکننده (Blocking) برای افزایش قابلیت اطمینان.
- هفته سوم: اضافه کردن پنل دانش متخصص و رابط گراف دانش.
- هفته چهارم: استقرار نهایی با ۱۰ تست واحد و CI در GitHub Actions.
پشته فنی این ابزار شامل فرانتاند Next.js، بکاند FastAPI و سرویس Cognee Cloud است و برای استخراج دادهها از GitHub API و GitPython استفاده میکند.
تحلیل تحریریه
این پروژه نشاندهنده یک چرخش بنیادین است: انتقال از «تکمیل کد» به «باستانشناسی کد». در صنایع سنگین، ارزش AI نه در نوشتن کدهای جدید، بلکه در توانایی فهرستبندی حافظه سازمانی افرادی است که ۲۰ سال پیش این سیستمها را ساختهاند. با ترکیب تاریخچه گیت و حافظه گرافی، مدل زبانی از یک مشاور عمومی به یک مورخ متخصص تبدیل میشود و گلوگاه انسانی (مهندسان ارشد) را میشکند.
چهار درس کلیدی از این ابزار میگیریم: اول، حافظه بدون منبع فقط یک توهم کندتر است؛ دوم، قابلیت بهبود (improve) واقعاً دقت پرسوجوهای بعدی را بالا میبرد؛ سوم، حذف دادههای هر مخزن برای مدیریت ناوگان مدلها ضروری است؛ و چهارم، شکست ابزارهایی مثل Amazon Q یک نقص معماری است، چون حافظه دائمی از یک کدبیس خاص ندارند.
برای زیرساختهای حیاتی که یک دستور if اشتباه میتواند باعث قطعی منطقهای شود، تنها راه جلب اعتماد مهندسان، ارائه زنجیره شواهد قابلتأیید است.
گام بعدی شما
- اگر با کدهای قدیمی سر و کار دارید، دمو زنده ابزار را در
https://frontend-six-alpha-67.vercel.appبررسی کنید. - برای درک نحوه بهبود بازیابی بستر (Context) با پیمایش گراف، کد منبع را در گیتهاب مطالعه کنید.
- بررسی کنید که آیا ابزارهای AI فعلی شما دسترسی به تاریخچه کامیتها دارند یا صرفاً متن کد را میخوانند.
اما داستان سختافزاری این تحولات حتی شگفتانگیزتر است — برای درک هزینه استنتاج در مقیاس بزرگ، به تحلیل ما درباره تراشههای Blackwell مراجعه کنید.




گفتگو