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

درون سازوکار PreCompact برای ذخیره تصمیمات پیش از فشرده‌سازی متن

·۲۴ شهریور ۱۴۰۵۶ دقیقه مطالعه
هوک PreCompact: جایی که عامل کدنویسی خاطراتش را عمداً فراموش می‌کند
هوک PreCompact: جایی که عامل کدنویسی خاطراتش را عمداً فراموش می‌کند
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی مکانیزم PreCompact برای ذخیره‌سازی داده‌ها دقیقاً پیش از فشرده‌سازی متن؛ برخلاف حافظه‌های سنتی که پس از حادثه بازیابی می‌شوند، این ابزار در لحظه مرگِ زمینه (Context) مداخله می‌کند.

تصور کنید ساعت‌ها وقت صرف رد کردن یک راهکار فنی اشتباه کرده‌اید، اما عامل هوش مصنوعی شما دقیقاً همان پیشنهاد را دوباره می‌دهد. این اتفاق به دلیل محدودیت بودجه حافظه رخ می‌دهد، نه فراموشی ساده؛ وقتی پنجره متنی پر می‌شود، سیستم تاریخچه را فشرده می‌کند و «چرا»ی تصمیمات شما را می‌بلعد. در دنیای مهندسی، «چرا» همه چیز است. اما وقتی یک عامل کدنویس با پر شدن پنجره متنی مواجه می‌شود، میزبان تاریخچه را به خلاصه‌ای تبدیل می‌کند که معمولاً «چه چیزی» اتفاق افتاده را حفظ می‌کند اما استدلال پشت یک انتخاب فنی را حذف می‌کند.

myc — یک لایه حافظه و مدیریت وظایف متن‌باز (تحت لایسنس MIT) که با Bun و TypeScript ساخته شده — دقیقاً در لحظه‌ای که یک تصمیم در حال پاک شدن است، مداخله می‌کند. همان‌طور که در تحلیل‌های قبلی ما درباره‌ی مدیریت حافظه در مدل‌های زبانی اشاره کردیم، مشکل اصلی عامل‌ها نبودِ داده نیست، بلکه نبودِ مکانیزم برای تشخیص «چه چیزی را باید به خاطر سپرد» است. عامل شما در واقع دچار فراموشی نشده است، بلکه با یک بودجه محدود مواجه است.

به گزارش مستندات این پروژه، سازنده آن پس از سه روز مشاهده‌ی تکرار اشتباهات یک عامل، این ابزار را توسعه داد. این مشکل به شکل یک حلقه خسته‌کننده ظاهر می‌شود: شما راهکاری را پیشنهاد می‌دهید و آن را رد می‌کنید، اما چون دلیل رد شدن در طول فشرده‌سازی (Compaction) گم شده است، عامل دوباره با ادب همان مسیر اشتباه را پیشنهاد می‌دهد. چرخه به این صورت است: در ابتدای جلسه تصمیم می‌گیرید «به دلیل Z، مسیر X را می‌رویم نه Y». ساعت‌ها بعد، متن فشرده می‌شود، دلیل Z غرق می‌شود و عامل — بدون هیچ خاطره‌ای از اینکه قبلاً طور دیگری فکر کرده باشد — دوباره Y را پیشنهاد می‌دهد. حالت شکست این نیست که عامل فراموش کرده است، بلکه این است که هیچ راهی نداشته تا بداند چیزی برای به خاطر سپردن وجود دارد.

هوک PreCompact جایی است که حافظه عامل کدنویسی را ذخیره می‌کنید.

مکانیزم PreCompact

myc با اتصال به رویداد PreCompact در Claude Code عمل می‌کند. این قلاب (Hook) — شبیه به یک زنگ هشدار که درست قبل از تخلیه سطل زباله به صدا در می‌آید — اجازه می‌دهد داده‌های حیاتی پیش از ناپدید شدن ذخیره شوند. هر لایه حافظه‌ای که پس از وقوع فشرده‌سازی مورد پرسش قرار گیرد، اگر در لحظه مرگ متن چیزی نوشته نشده باشد، بی‌فایده است.

طبق مستندات فنی، این فرآیند از یک توالی سخت‌گیرانه پیروی می‌کند:

  • نوشتن لایه L0: ابتدا کل اپیزود جلسه به‌صورت خام و خصوصی روی دیسک ذخیره می‌شود. این کار تضمین می‌کند که اگر قلاب از زمان تعیین‌شده (Timeout) فراتر رفت، شما شاید خلاصه را از دست بدهید، اما رکورد اصلی را نه.
  • پوشاندن داده‌های حساس: ابزار به‌طور خودکار رمزها و کلیدهای API (مانند password= یا api_key=) را با استفاده از تطبیق مرز کلمات (word-boundary matching) ماسک می‌کند تا نثر متن دست‌نخورده بماند اما اعتبارنامه‌ها محافظت شوند.
  • بسته‌های نجات: فهرستی کوتاه از موارد ضروری که نباید گم شوند، به متن باقی‌مانده بازگردانده می‌شود. برای مثال، دستوری مانند myc absorb-session --reason manual --transcript … --agent claude باعث ارسال اعلانی می‌شود که اپیزود (مثلاً sess-5jh8je4g050m) با موفقیت ذخیره شده است.
  • تقطیر بهتافت: فرآیند استخراج نکات کلیدی (Distillation) از آنچه ذخیره شده است، در صف قرار می‌گیرد. این کار هرگز در مسیر نوشتن انجام نمی‌شود تا از کند شدن اجرای قلاب جلوگیری شود.

حافظه با نظارت انسانی

برای جلوگیری از توهم (Hallucination) — وضعیتی که مدل با اطمینان چیزی می‌گوید که وجود ندارد، مثل دوستی که خاطره‌ای را اشتباه تعریف می‌کند — myc تصمیمات استخراج‌شده را به جای «واقعیت»، به عنوان «کاندید» می‌بیند. حافظه‌ای که توهم بزند، بدتر از نبودِ حافظه است، زیرا کاربر به آن اعتماد می‌کند.

هر خطی که شامل عبارات «تصمیم گرفتیم» یا «به دلیلِ» باشد، در وضعیت pending_review قرار می‌گیرد. این کاندیدها از جست‌وجو، بازیابی (Recall)، آماده‌سازی (Prime) و ابزارهای MCP پنهان می‌مانند تا زمانی که یک انسان به‌طور دستی آن‌ها را تأیید کند. دستور prime این وضعیت را در پاورقی خود نشان می‌دهد (مثلاً: "N pending review hidden — myc review"). کاربران سپس می‌توانند با اجرای myc review کاندیدهای جلسات فعلی یا قبلی را مشاهده کرده و یا آن‌ها را تأیید کنند تا به «دانش» تبدیل شوند، و یا آن‌ها را رد کنند تا یادداشت از تمام مسیرهای بازیابی حذف شود.

بودجه تأخیر و عملکرد

از آنجا که این ابزار در مسیر اصلی («Hot Path») اجرای عامل قرار دارد و ده‌ها بار در هر جلسه فراخوانی می‌شود، سرعت به عنوان یک محدودیت سخت‌گیرانه در نظر گرفته شده است. اگر ابزار کند باشد، عامل شروع به صرفه‌جویی در استفاده از حافظه می‌کند که در عمل به معنای فراموش کردن است. myc بودجه‌های تأخیر را از طریق تست‌هایی برای هر مسیر سریع اجرا می‌کند.

در بنچمارک‌های ۱۱ سپتامبر ۲۰۲۶ روی ماشین darwin-arm64 (نسخه ۰.۳.۶) در مقیاس ۱۰۰,۰۰۰ گره، تأخیرهای p99 به شرح زیر ثبت شده است:

  • نوشتن (Write): ۰.۳۲۷ میلی‌ثانیه (بودجه: ۵ میلی‌ثانیه)
  • آماده‌سازی (Prime - بسته متنی جلسه): ۰.۶۰۸ میلی‌ثانیه (بودجه: ۳۰ میلی‌ثانیه)
  • جست‌وجوی ترکیبی (Search): ۸.۲۱۵ میلی‌ثانیه (بودجه: ۲۵ میلی‌ثانیه)
  • راه‌اندازی سرد (Cold Start): ۲۱.۳۳۷ میلی‌ثانیه (بودجه: ۶۰ میلی‌ثانیه)

این اعداد روی یک ماشین کالیبره شده‌اند، اما CI ادعاهای ساختاری (طرح‌های پرس‌وجو، پیش‌فیلتر کردن) و عملکرد نسبی را تضمین می‌کند. رتبه‌بندی نیز اندازه‌گیری شده است: تقویت‌ها (Boosts) مقدار MRR@10 را از ۰.۵۲۰ به ۰.۸۶۷ بهبود می‌بخشند و گسترش گراف دو-گامی (two-hop graph expansion) در مجموعه‌های حاوی گروه‌های کنترل، از ۰.۱۹۳ به ۰.۴۲۲ افزایش می‌یابد.

دانش متصل به کد

از نسخه ۰.۳.۱۰، myc اجازه می‌دهد یادداشت‌ها به بخش‌های خاصی از کد (Spans) متصل شوند. این لنگرها حتی با تغییر مکان کد در اثر بازنویسی (Refactor) یا حتی انتقال به فایلی دیگر، کد را دنبال می‌کنند؛ قابلیتی که در زبان‌های TypeScript و Python تأیید شده است.

وقتی کد دیگر در جایی که لنگر قرار داده شده نباشد، دانش پاک نمی‌شود؛ در عوض، رتبه‌اش کاهش یافته و دلیل آن توضیح داده می‌شود. دستور recall ردیف‌ها را با اصلاحاتی مانند [code moved ×0.64]، [code unverified ×0.5] یا [code gone ×0.2] علامت‌گذاری می‌کند. دانشی که تمام لنگرهایش از دست رفته باشند، از متن آماده‌سازی (Prime Context) خارج شده و در پاورقی به عنوان "N with code gone hidden" شمرده می‌شود.

جعبه‌ابزار یکپارچه

علاوه بر حافظه، این ابزار مجموعه‌ای از ابزارهای کاربردی برای توسعه‌دهندگان ارائه می‌دهد:

  • گراف وظایف: گرافی با وابستگی‌ها و موانعی (Blockers) که در زنجیره والد به ارث می‌رسند. این سیستم از ادعاهای اتمیک (Atomic Claims) استفاده می‌کند تا تضمین کند هرگز دو عامل به یک وظیفه یکسان اختصاص نمی‌یابند.
  • جست‌وجوی ترکیبی: ترکیب BM25 و جست‌وجوی برداری (Vector Search) که توسط Reciprocal Rank Fusion (RRF) ادغام شده‌اند. معناشناسی (Semantics) اختیاری است؛ مدل جاسازی (Embedding) ۱۲۹ مگابایتی تنها از طریق myc models fetch دانلود می‌شود. تا آن زمان، جست‌وجو صرفاً لغت‌نامه‌ای (Lexical) است و در هر پاسخ صراحتاً ذکر می‌شود.
  • اندکس‌گذاری کد: استفاده از tree-sitter داخلی برای شناسایی نمادها و فراخوان‌ها در JS/TS و Python. گرامرها یک‌بار دریافت می‌شوند و اندکس‌گذاری هرگز با شبکه ارتباط برقرار نمی‌کند.
  • صف چندعاملی: دستور myc run -- bun test دستورات سنگین را از طریق یک صف در سطح ماشین عبور می‌دهد تا عامل‌های موازی باعث فشار بیش از حد به سیستم نشوند.
  • همگام‌سازی Git: تنها oplog به git ارسال شده و به ازای هر فیلد ادغام می‌شود، که اجازه می‌دهد دو ماشین که یک یادداشت را ویرایش می‌کنند، به یک نتیجه واحد برسند.
  • مهاجرت: ابزار myc import-beads می‌تواند پروژه‌های فعال را منتقل کند. در یک مورد، ۷۹۶ وظیفه، ۹۷۲ وابستگی و ۲۶۵ یادداشت در ۸۸۹ میلی‌ثانیه وارد شدند.

محدودیت‌های فنی

کاربران باید توجه کنند که myc به‌طور سخت‌گیرانه‌ای به محیط اجرای Bun وابسته است تا از bun:sqlite (که شامل SQLite و sqlite-vec در داخل Bun است) بهره ببرد. این ابزار روی Node.js یا Deno اجرا نخواهد شد. این طراحی تضمین می‌کند که تنها یک محیط اجرا، یک باینری و صفر مرحله ساخت بومی (Native Build) وجود داشته باشد.

در حال حاضر، این ابزار از macOS و Linux پشتیبانی می‌کند؛ کاربران ویندوز باید از WSL استفاده کنند زیرا لانچر در cmd یا PowerShell اجرا نمی‌شود. این ابزار برای تک‌کاربران طراحی شده و هنوز حالت تیمی یا ACLها (کنترل دسترسی) در آن پیاده‌سازی نشده است، هرچند نقاط عطف تیمی در حال ردیابی هستند. مسیریابی دسته‌ای (Swarm routing) و تقطیر حافظه هنوز آغاز نشده‌اند.

این چرخش به سمت حافظه «قلاب‌محور» نشان می‌دهد که آینده قابلیت اطمینان عامل‌ها، نه در پنجره‌های متنی بزرگ‌تر، بلکه در محرک‌های هوشمندتر برای ذخیره‌سازی است. با تبدیل حافظه به یک دفتر کل تأیید شده توسط انسان به جای یک حافظه پنهان (Cache) خودکار، myc خطر تکرار با اطمینان اشتباهات گذشته توسط عامل‌ها را کاهش می‌دهد.

گام بعدی شما

  • اگر روزانه با عامل‌های کدنویس کار می‌کنید، ابزار را با دستور bun install -g @aistudio/myc (حدود ۳.۴۲ مگابایت) نصب کنید.
  • با اجرای myc init && myc wire قلاب‌ها را فعال کنید تا ببینید آیا تصمیمات مهندسی شما از چرخه فشرده‌سازی بعدی جان سالم به در می‌برند یا خیر.
  • یادداشت‌های حیاتی پروژه خود را از طریق myc review بازبینی و تثبیت کنید.

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

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

این ابزار با حل مشکل فراموشی ساختاری در عامل‌های هوش مصنوعی، بهره‌وری توسعه‌دهندگان را افزایش داده و از اتلاف زمان در تکرار اشتباهات جلوگیری می‌کند. اعتبار این سیستم از طریق نظارت انسانی (Human-in-the-loop) تضمین شده است.

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

برنامه‌نویسان ایرانی که از Claude Code یا عامل‌های مشابه برای پروژه‌های بزرگ استفاده می‌کنند، می‌توانند با نصب این ابزار متن‌باز، هزینه‌های توکن ناشی از تکرار اشتباهات را کاهش دهند.

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

تغییر پارادایم از «بزرگ کردن پنجره متنی» به «مدیریت فعال حافظه»، پذیرش این واقعیت است که مدل‌ها هرگز نمی‌توانند تمام جزئیات را در حافظه کوتاه‌مدت نگه دارند. myc با تبدیل حافظه به یک دفتر کل تأییدشده توسط انسان، ریسک اعتماد کورکورانه به حافظه خودکار مدل را حذف می‌کند. این رویکرد در واقع لایه استدلال را از لایه ذخیره‌سازی جدا می‌کند.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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