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

روش استخراج تاریخچهٔ عامل‌های کدنویس برای جلوگیری از اتلاف بودجه

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

معرفی مفهوم «دفتر کل باقی‌مانده» (Leftover Ledger) به عنوان یک لایه واسط برای انتقال زمینه (Context) بین مدل‌های مختلف کدنویسی، به جای تکیه صرف بر کد نهایی در گیت.

اگر اشتراک پولی خود را بدون تخلیهٔ تاریخچهٔ گفتگوها لغو کنید، حلقهٔ بعدی کدنویسی شما کورکورانه آغاز می‌شود و اشتباهات گران‌قیمت قبلی را تکرار می‌کند. در حالی که گیت (Git) کد نهایی ادغام‌شده را حفظ می‌کند، اما مسیرهای ردشده، محدودیت‌های نام‌گذاری‌شده و تعمیرات نیمه‌تمام را که فقط در رشته‌های گفتگو با عامل‌ها زنده هستند، نادیده می‌گیرد. این تکه‌ها در لحظه‌ای که نشست (Session) فروشنده بسته می‌شود، برای همیشه ناپدید می‌شوند. در نتیجه، شما بودجه‌ای اندک را صرف بازکشف محدودیت‌هایی می‌کنید که یک عامل (Agent) پولی پیش‌تر آن‌ها را حل کرده بود.

آنچه صندلی پولی در واقع حفظ می‌کرد

باید بدانید که صندلی‌های پولی کدنویسی، بسیار بیشتر از وصله‌هایی (Patches) را ذخیره می‌کنند که شما بعداً در شاخه اصلی مخزن ادغام می‌کنید. این ابزارها مانند مخزنی برای لیست فایل‌هایی هستند که هرگز کامیت نکردید، نتایج دستوراتی که ثبت نکردید و وتوهای طراحی که هرگز مکتوب نشدند. وقتی هیچ‌چیز را صادر نمی‌کنید، حلقهٔ بعدی روی زیرساخت‌های ارزان‌تر از صفر شروع می‌شود.

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

به نقل از یک راهنمای کاربردی که در ۲۰ سپتامبر ۲۰۲۶ در dev.to منتشر شد، راهکار این است که تخلیه تاریخچه را به جای یک اقدام اختیاری یا نوستالژی، به عنوان یک گام ضروری در فرآیند انتقال در نظر بگیرید. هدف، ایجاد یک «دفتر کل باقی‌مانده» است؛ سندی فشرده و تقطیر شده از مسیرها، تصمیمات، نقص‌های باز و دستورات شکست‌خورده. این دفتر کل به اولین بستهٔ زمینه برای هر حلقه‌ای تبدیل می‌شود که پس از روز لغو اشتراک اجرا می‌کنید. بدون آن، زیرساخت‌های رایگان تنها به این دلیل ارزان‌تر به نظر می‌رسند که در سکوت، کارهای قبلاً پرداخت‌شده را تکرار می‌کنند. این رویکرد برای جلوگیری از دست رفتن روایت‌های فنی ضروری است، چرا که استفاده از هش‌های blob می‌تواند مانع از بازنویسی ناخواستهٔ روایت‌های انسانی توسط AI شود و استمرار تصمیمات را تضمین کند.

گردش‌کار انتقال

برای جلوگیری از دست رفتن زمینه، این راهنما توالی دقیقی از مراحل را پیش از پایان چرخه پرداخت توصیه می‌کند. شما باید صندلی پولی را تا زمانی که دفتر کل باقی‌مانده در یک اجرای آزمایشی روی درخت کد شما دوام بیاورد، فعال نگه دارید:

  • صادر کردن (Export): هر رشته گفتگویی که در آخرین چرخه پرداخت با مخزن هدف در تماس بوده را استخراج کنید. منتظر API رسمی و کامل آرشیو نباشید؛ رشته‌های قابل مشاهده را به صورت فایل‌های .md یا .jsonl در پوشه transcripts/raw/ کپی کنید. تاریخ صادرات را در نام فایل ذکر کنید. اگر فروشنده یک فایل zip از چت‌ها ارائه می‌دهد، آن را در همان پوشه قرار داده و سپس از حالت فشرده خارج کنید. فایل‌ها را بر اساس نام مخزن و عنوان رشته نام‌گذاری کنید، نه نام مستعار مدل.
  • نرمال‌سازی (Normalize): خروجی‌ها را به فرمت UTF-8 markdown یا JSONL تبدیل کنید تا یک تجزیه‌کننده (Parser) محلی بتواند آن‌ها را بخواند.
  • استخراج (Extract): مسیرهای ذکر شده، تصمیمات، دستورات شکست‌خورده و TODOهای حل‌نشده را در یک فایل markdown واحد جمع کنید.
  • پاک‌سازی (Redact): پیش از ورود فایل به گیت یا چت‌های مشترک، توکن‌ها، نام میزبان‌ها و URLهای خصوصی را حذف کنید. این مرحله یک بررسی غیرقابل مذاکره است.
  • بازپخش (Replay): فایل باقی‌مانده را در یک حلقه ارزان‌تر آزمایش کنید تا موارد را به عنوان «انجام شده»، «نادیده گرفته شده» یا «مسدود» علامت‌گذاری کنید.

خودکارسازی تخلیه

به دلیل تفاوت در فرمت‌های صادراتی فروشندگان، نویسنده یک کمکی پایتونی به نام drain_transcripts.py را پیشنهاد می‌دهد. این اسکریپت یک ابزار محلی پیشنهادی است و ادعایی درباره طرح خصوصی صادرات هیچ فروشنده‌ای نیست. این کد پوشه‌ای از فایل‌های متنی UTF-8 را پیمایش کرده و با استفاده از عبارت‌های منظم (Regular Expressions) به دنبال الگوهای خاص می‌گردد:

  • تشخیص مسیر: شناسایی پسوندهایی مانند .py ،.ts ،.tsx ،.js ،.go ،.rs ،.java ،.rb ،.md ،.toml ،.yml ،.yaml ،.json و .sql برای نقشه‌برداری از اینکه کدام فایل‌ها مورد بحث بوده‌اند.
  • منطق تصمیم‌گیری: جست‌وجو برای عباراتی مانند «ما خواهیم» (we'll/we will)، «تصمیم گرفتیم»، «انجام ندهید»، «نکنید»، «به جای [X] از [Y] استفاده کنید»، «اجتناب کنید» یا «نباید» برای ثبت وتوهای طراحی.
  • لاگ‌های شکست: علامت‌گذاری شکست‌های خط فرمان در ابزارهایی مثل npm ،pnpm ،yarn ،pip ،pytest ،cargo ،go ،make یا git که به خطاها، شکست‌ها، exit 1 یا عدم دسترسی (denied access) ختم شده‌اند. این ثبت دقیق خطاها برای جلوگیری از تکرار توهمات مدل است، زیرا گاهی عامل‌های کدنویسی با تغییر در تست‌ها، خطاهای کد را پنهان می‌کنند و موفقیت کاذب ایجاد می‌کنند.
  • ردیابی وظایف: استخراج نشانگرهای TODO ،FIXME ،BLOCKED و follow-up.

مدیریت دفتر کل باقی‌مانده

پس از تولید دفتر کل، باید آن را فیلتر کنید. استخراج با عبارت‌های منظم تشنه است و نویز زیادی می‌گیرد؛ باید متن را بخوانید و نام مشتریان، نام میزبان‌ها یا توکن‌های دسترسی را که پاک‌ساز حذف نکرده، دستی پاک کنید. راهنما یک جدول تصمیم‌گیری برای تعیین موارد ماندنی در گیت پیشنهاد می‌دهد:

نوع باقی‌مانده حفظ در گیت؟ بازپخش در حلقه بعدی؟ زمان حذف
وصله ادغام شده در main خیر خیر وقتی هش در شاخه اصلی باشد
رویکرد رد شده با دلیل مشخص بله (به عنوان یادداشت وتو) فقط در صورت باز شدن مجدد وقتی محدودیت جای دیگر مستند شود
دستور شکست‌خورده (خطای غیربدیهی) بله (در لیست شکست‌ها) بله (بعد از بازسازی) وقتی اجرای موفق را بازتولید کنید
TODO باز مطابق با درخت کد بله بله وقتی فایل دیگر وجود نداشته باشد
اسرار، کوکی‌ها، URLهای خصوصی هرگز هرگز بلافاصله بعد از پاک‌سازی
گپ‌های دوستانه و تکرارهای توکن خیر خیر بعد از اجرای اسکریپت تخلیه

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

بازپخش روی زیرساخت‌های ارزان

با داشتن یک دفتر کل پاک‌سازی شده، توسعه‌دهندگان می‌توانند به گزینه‌های رایگان یا کم‌هزینه‌تر مانند MonkeyCode مهاجرت کنند که دسترسی رایگان به مدل‌ها و گزینه‌های سرور ارائه می‌دهد. (افشا: این مقاله به عنوان بخشی از معرفی محصول MonkeyCode تهیه شده است). حتی با سرور رایگان، ابتدا باید پاک‌سازی را انجام دهید، زیرا سرور رایگان، نشت یک رمز عبور را ارزان‌تر نمی‌کند.

کلید کار این است که کل آرشیو خام را در حلقه جدید نریزید. در عوض، از یک پرامپت بازپخش «خسته‌کننده» استفاده کنید تا مدل دچار سردرگمی نشود و به مسیرهای نامربوط نرود. فقط یک مورد حل‌نشده از دفتر کل، محتوای فایل مربوطه و درخواستی برای وصله‌ای که وتوهای موجود را رعایت کند، ارسال کنید. این متد بازپخش کنترل‌شده مشابه الگوی Cassette است که نشت‌های مهندسی را در دموهای عامل‌های هوش مصنوعی می‌بندد و از رفتارهای پیش‌بینی‌ناپذیر جلوگیری می‌کند.

یک پرامپت کاربردی باید چنین باشد:

«شما در حال ادامه یک فرآیند انتقال هستید، نه شروع یک پروژه جدید (greenfield). تمام وتوهای موجود در باقی‌مانده‌ها را رعایت کنید. کتابخانه‌های ردشده را دوباره باز نکنید. فقط روی مسیرهای لیست‌شده کار کنید. یک diff یکپارچه و یک دستور تست برگردانید. باقی‌مانده‌ها: <جایگذاری یک مورد حل‌نشده>»

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

این فرآیند یک پشتیبان کامل نیست. این روش نمی‌تواند ردپای ابزارها، پرامپت‌های سیستمی پنهان یا وضعیت‌های نمایه‌ای (Index states) سمت فروشنده را بازسازی کند. استخراج مبتنی بر عبارت‌های منظم ممکن است مسیرهای محصور (fenced paths)، اسکرین‌شات‌ها و پیوست‌های باینری را از دست بدهد. علاوه بر این، راهنما هشدار می‌دهد که در موارد زیر از این روش استفاده نکنید:

  • اگر تاریخچه‌ها حاوی داده‌های تحت نظارت (regulated data) هستند که اجازه کپی روی لپ‌تاپ را ندارید.
  • اگر کارفرمای شما صادرات چت‌های فروشنده را، حتی برای مهاجرت، ممنوع کرده است.
  • اگر مخزن یک پروژه کوتاه و موقت (spike) است و رویکرد ردشده‌ای برای حفظ کردن ندارد.

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

روز لغو اشتراک باید چگونه باشد

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

یک نسخه پشتیبان از تاریخچه‌های خام را در یک درایو رمزنگاری‌شده نگه دارید تا اولین هفته از کار با حلقه ارزان روی شاخه main بنشیند. سپس خروجی خام را نابود کنید، زیرا ارزش آن در گیت تقطیر شده است. اگر دفتر کل باقی‌مانده در گیت است، ابتدا ردیف‌های مسدود را در یک حلقه رایگان بازپخش کنید. صندلی پولی را فقط برای ردیف‌هایی نگه دارید که پس از بازپخش رایگان همچنان شکست می‌خورند. کار لغو اشتراک را بر اساس وضعیت باقی‌مانده‌ها تقسیم کنید، نه بر اساس فشار تقویم یا تاریخ فاکتور.

گام بعدی شما

  • تمام رشته‌های گفتگوی فعال خود را در ابزارهای کدنویسی AI به صورت Markdown ذخیره کنید.
  • یک فایل vetoes.md بسازید و تمام رویکردهایی که مدل‌های گران‌قیمت رد کرده‌اند را در آن بنویسید.
  • پیش از لغو اشتراک، یک مورد از دفتر کل را در یک مدل رایگان بازپخش کنید تا از صحت فرآیند استخراج مطمئن شوید.

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

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

این متدولوژی از نظر تجربه عملی، مانع از اتلاف هزاران دلار هزینه استنتاج در سازمان‌هایی می‌شود که بین مدل‌های Frontier و مدل‌های محلی جابه‌جا می‌شوند. اعتماد به این فرآیند بر اساس قابلیت بازتولید نتایج در زیرساخت‌های مختلف بنا شده است.

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

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

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

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

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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