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

«به‌روزرسانی فوری»؛ راهکار مقابله با نقص بحرانی در ابزار Codex CLI

·۵ تیر ۱۴۰۵۱۳ دقیقه مطالعه
بررسی مصرف SSD توسط Codex CLI و راه‌حل‌های کاهش آن
بررسی مصرف SSD توسط Codex CLI و راه‌حل‌های کاهش آن
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

کشف یک باگ در Codex CLI که به‌دلیل تنظیمات پیش‌فرض TRACE، حجم نوشتن روی SSD را به ۶۴۰ ترابایت در سال می‌رساند و عملاً عمر مفید دیسک‌های مصرف‌کننده را در یک سال می‌کاهد.

تصور کنید ابزاری که برای افزایش بهره‌وری خود نصب کرده‌اید، در پس‌زمینه مشغول تخریب فیزیکی لپ‌تاپ شماست. اگر از Codex CLI استفاده می‌کنید، ممکن است همین حالا در حال سوزاندن عمر مفید حافظه SSD خود باشید. نویسنده‌ی این گزارش در وبلاگ WebToolsHub می‌نویسد: «دو هفته پیش، نزدیک بود برای تعویض باتری هزینه کنم، در حالی که نیازی به آن نبود. فن لپ‌تاپم بی‌وقفگاه می‌چرخید، چراغ فعالیت SSD مانند یک فلاشر چشمک می‌زد و Activity Monitor مدام متهم می‌کرد فرآیندی را که هر روز به آن اعتماد دارم: codex.»

در نهایت مشخص شد که سخت‌افزار در ظاهر سالم بود، اما حافظه SSD او به‌آرامی ترابایت‌ها داده را از طریق یک باگ ثبت گزارش (Logging) که در دل Codex CLI دفن شده بود، جذب کرده است. اگر شما هم بیش از چند هفته است که از عامل کدنویسی ترمینالی OpenAI استفاده می‌کنید و آن را به‌روزرسانی نکرده‌اید، احتمال زیادی وجود دارد که سیستم شما هم دچار همین وضعیت شده باشد. این یک شایعه یا یک مورد نادر (Edge Case) نیست؛ بلکه یک باگ مستند و اندازه‌گیری شده است که دست‌کم از آوریل ۲۰۲۶ در Codex CLI وجود داشته و می‌تواند در یک سال، بیش از مقدار کل داده‌ای که اکثر درایوهای مصرف‌کننده برای کل عمر مفید خود رتبه‌بندی شده‌اند، روی SSD شما بنویسد. خوشبختانه یک راهکار واقعی، یک روش موقتی و یک روش پنج دقیقه‌ای برای بررسی میزان آسیب دیسک وجود دارد.

اگر عجله دارید، خلاصه ماجرا این است: سیستم ثبت گزارش محلی Codex CLI تا حدود ۶۴۰ ترابایت در سال را در یک تک فایل SQLite می‌نوشته است؛ عددی که بسیار فراتر از ظرفیت یک SSD مصرف‌کننده معمولی ۱ ترابایتی است. OpenAI در نسخه v0.142.0 (که در نسخه فعلی v0.142.2 نیز گنجانده شده) اصلاحیه‌ای ارائه داده که این حجم را حدود ۸۵ درصد کاهش می‌دهد. شما می‌توانید با ابزارهایی که احتمالاً از قبل نصب دارید، بررسی کنید که درایو شما دقیقاً چه مقدار داده جذب کرده است. همچنین توجه داشته باشید که راهکار «لینک کردن نمادین (Symlink) فایل لاگ به /tmp» که در شبکه‌های اجتماعی پخش شده، در macOS به‌طور پیش‌فرض از SSD شما محافظت نمی‌کند و تقریباً هیچ‌کس به این نکته اشاره نمی‌کند.

دقیقاً چه اتفاقی در داخل Codex CLI می‌افتد؟

ابزار Codex CLI یک لاگ تشخیصی محلی را در یک پایگاه‌داده SQLite در مسیر ~/.codex/logs_2.sqlite به همراه فایل‌های همراه آن یعنی -wal و -shm نگهداری می‌کند. این بخش تا اینجا عادی است و اکثر ابزارهای خط فرمان (CLI) در جایی لاگ می‌گیرند. مشکل اصلی در «سطح ثبت گزارش» (Logging Level) است که با آن عرضه شده است: یک پیش‌فرض جهانی در سطح TRACE که همه‌چیز را ضبط می‌کند. این شامل محموله‌های خام WebSocket و SSE، گفتگوهای داخلی وابستگی‌ها از کتابخانه‌هایی مانند tokio-tungstenite و تغییرات مکرر ماشین‌های حالت (State-machine transitions) می‌شود.

در یک برنامه سالم، ثبت گزارش در سطح TRACE فقط برای عیب‌یابی‌های عمیق رزرو شده و به‌طور پیش‌فرض غیرفعال است. اما در Codex CLI، پیکربندی پیش‌فرض به‌طور تصادفی برای چندین نسخه روی TRACE تنظیم شده بود. از آنجایی که این ابزار برای واکنش‌گرایی بالا طراحی شده، به‌طور مداوم در حال نظارت (Poll) و به‌روزرسانی وضعیت خود است. هر بسته شبکه، هر ضربان قلب (Heartbeat) و هر تغییر متغیر داخلی روی دیسک نوشته می‌شد. چون SQLite به‌طور پیش‌فرض از حالت Write-Ahead Log (WAL) استفاده می‌کند، این نوشتن‌ها بسیار مکرر و تهاجمی هستند. ترکیب یک حلقه با فرکانس بالا و لاگی در سطح TRACE، منجر به ایجاد یک «طوفان نوشتن» (Write Storm) می‌شود.

برای یک برنامه‌نویس معمولی که ۸ ساعت در روز از این ابزار استفاده می‌کند، حجم داده‌های نوشته شده روی دیسک تکان‌دهنده بود؛ ما درباره صدها گیگابایت در هفته صحبت می‌کنیم. برای کسانی که از درایوهای پرسرعت NVMe استفاده می‌کنند، سرعت بالای درایو در واقع مشکل را ماسک می‌کرد؛ یعنی سیستم به‌طور محسوس کند نمی‌شد چون SSD می‌توانست این پهنای باند را مدیریت کند، اما سلول‌های NAND flash با سرعتی شتابان در حال فرسودگی بودند. اکثر SSDهای مصرف‌کننده دارای رتبه‌بندی TBW (کل بایت‌های نوشته شده) هستند. یک درایو ۱ ترابایتی معمولی ممکن است برای ۶۰۰ ترابایت (600 TBW) رتبه‌بندی شده باشد. اگر Codex CLI سالانه ۶۴۰ ترابایت بنویسد، شما تئوریکاً می‌توانید کل استقامت نوشتن درایو خود را در کمتر از ۱۲ ماه، فقط با باز نگه داشتن این ابزار در پس‌زمینه، تخلیه کنید.

کدکس CLI در حال خوردن SSD شماست؟ نحوه بررسی و رفع آن (۲۰۲۶)

چگونه بررسی کنیم که آیا SSD در معرض خطر است؟

قبل از آنکه وحشت‌زده شوید، باید اندازه واقعی فایل‌های لاگ خود را بررسی کنید. ترمینال را باز کرده و این دستور را اجرا کنید:
du -sh ~/.codex/logs_2.sqlite
اگر این فایل چندین گیگابایت اندازه دارد، شما تحت تأثیر این باگ بوده‌اید. با این حال، اندازه فایل به تنهایی تمام داستان را نمی‌گوید، زیرا SQLite اغلب داده‌ها را بازنویسی (Overwrite) می‌کند یا عملیات Vacuum را انجام می‌دهد. معیار واقعی، مقدار کل داده‌های نوشته شده روی دیسک فیزیکی است.

در macOS، می‌توانید از بسته smartmontools برای بررسی داده‌های SMART درایو خود استفاده کنید. آن را از طریق Homebrew نصب کنید:
brew install smartmontools
سپس دستور زیر را اجرا کنید:
smartctl -a /dev/disk0
به دنبال ویژگی 'Data Units Written' یا 'Total Host Writes' بگردید. اگر عددی می‌بینید که با الگوهای استفاده شما ناسازگار است — برای مثال ۲۰۰ ترابایت نوشته شده روی دستگاهی که فقط ۶ ماه است مالک آن هستید — احتمالاً قربانی این باگ ثبت گزارش شده‌اید.

در لینوکس، فرآیند مشابه است و از smartmontools استفاده می‌شود. در ویندوز، ابزارهایی مانند CrystalDiskInfo مقدار 'Total Host Writes' را در یک رابط گرافیکی کاربرپسند نشان می‌دهند. اگر متوجه شدید که 'Percentage Used' یا 'Wear Level' (سطح فرسودگی) بدون اینکه کارهای سنگین تدوین ویدیو یا مدیریت پایگاه‌داده انجام داده باشید، به‌طور قابل توجهی افزایش یافته است، زمان بررسی نصب Codex شماست.

با پخش شدن خبر این باگ در ردیت (Reddit) و ایکس (X)، یک توصیه رایج این بود که فایل لاگ را با استفاده از Symlink به پوشه /tmp منتقل کنید. منطق این بود که در لینوکس، /tmp اغلب در رم (tmpfs) ذخیره می‌شود و بنابراین نوشتن‌ها در حافظه اتفاق می‌افتد و هرگز به SSD نمی‌رسد.

اما مشکل اینجاست: در macOS، پوشه /tmp صرفاً یک لینک نمادین به /private/tmp است که روی همان حجم (Volume) فیزیکی APFS قرار دارد که دایرکتوری Home شما در آن است. انتقال فایل لاگ به /tmp در مک، مطلقاً هیچ کمکی به محافظت از SSD نمی‌کند. شما همچنان روی همان سلول‌های NAND می‌نویسید، فقط مسیر پوشه را تغییر داده‌اید. مگر اینکه از یک ابزار تخصصی RAM-disk برای مونت کردن /tmp به عنوان یک حجم حافظه مجزا استفاده کنید، این راهکار صرفاً یک اثر دارونما (Placebo) است. اگر کاربر لینوکس هستید، این روش کار می‌کند، اما برای اکثریت کاربران مک، اتلاف وقت است.

راهکار واقعی: به‌روزرسانی و پاک‌سازی

شرکت OpenAI این مشکل را پذیرفته و اصلاحیه‌ای را در نسخه 0.142.0 منتشر کرده است. نسخه پایدار فعلی v0.142.2 است. این به‌روزرسانی سطح پیش‌فرض گزارش‌دهی را از TRACE به INFO تغییر می‌دهد که باعث حذف ثبت محموله‌های خام شبکه و گفتگوهای داخلی حالت سیستم می‌شود. این کار حجم نوشتن را برای یک کاربر متوسط حدود ۸۵ تا ۹۵ درصد کاهش می‌دهد.

برای رفع این مشکل، ابتدا CLI را به‌روز کنید:
codex update
پس از به‌روزرسانی، باید به‌طور دستی فایل‌های متورم لاگ را برای بازگرداندن فضای دیسک حذف کنید. دستور زیر را اجرا کنید:
rm -rf ~/.codex/logs_2.sqlite ~/.codex/logs_2.sqlite-wal ~/.codex/logs_2.sqlite-shm
ابزار در سری بعدی که اجرا شود، یک فایل لاگ تازه و سبک ایجاد خواهد کرد.

برای کسانی که به دلایل توسعه‌دهندگی مطلقاً به TRACE logging نیاز دارند، اکنون می‌توانید آن را به‌جای اجبار جهانی، به‌طور صریح در فایل پیکربندی (Config) فعال کنید. اما هشدار می‌دهیم: اگر TRACE را دوباره فعال کنید، عملاً پذیرفته‌اید که دوباره به همان رفتار نوشتن شدید بازگردید. توصیه می‌کنم اگر مجبورید ابزار را برای دوره‌های طولانی در حالت TRACE اجرا کنید، از یک SSD خارجی اختصاصی یا RAM-disk استفاده کنید.

پیامدهای بلندمدت برای سخت‌افزار شما

بسیاری از کاربران می‌پرسند: «آیا SSD من اکنون نابود شده است؟» پاسخ این است: احتمالاً نه، اما دچار تخریب شده است. SSDها معمولاً در لحظه رسیدن به رتبه‌بندی TBW به‌طور فاجعه‌بار از کار نمی‌افتند. در عوض، آن‌ها وارد حالت Read-only (فقط خواندنی) می‌شوند یا خطاهای نوشتن مکررتری را تجربه می‌کنند. اگر به‌دلیل این باگ ۱۰۰ ترابایت اضافی نوشته‌اید، در واقع درایو خود را چند سال «پیر» کرده‌اید. اگرچه این ایده‌آل نیست، اما اکثر کنترلرهای مدرن دارای Over-provisioning کافی برای مدیریت مقداری استهلاک اضافی هستند.

با این حال، اگر از یک درایو ارزان‌قیمت QLC (Quad-Level Cell) استفاده می‌کنید، استقامت آن بسیار کمتر از درایوهای TLC (Triple-Level Cell) موجود در لپ‌تاپ‌های رده‌بالا است. درایوهای QLC قبل از شکست سلول‌ها، چرخه‌های نوشتن به‌مراتب کمتری دارند. اگر دستگاهی اقتصادی دارید، تأثیر این باگ بسیار شدیدتر است. به همین دلیل است که بررسی داده‌های SMART در حال حاضر حیاتی است. اگر سطح فرسودگی شما در حالی که دستگاه تازه دو سال عمر دارد به ۵۰ یا ۶۰ درصد رسیده است، باید پشتیبان‌گیری از داده‌ها را افزایش دهید و تعویض درایو را در آینده نزدیک در نظر بگیرید.

پیشگیری از «قاتلان ساکت» سخت‌افزاری در آینده

این حادثه نشان‌دهنده مشکلی رو به رشد در عصر عامل‌های هوش مصنوعی است: این ابزارها اغلب با زبان‌ها و چارچوب‌های سطح بالایی ساخته می‌شوند که هزینه عملیات ورودی/خروجی (I/O) را انتزاعی (Abstract) می‌کنند. وقتی یک توسعه‌دهنده از یک کتابخانه گزارش‌دهی استفاده می‌کند، ممکن است به پیامدهای فیزیکی نوشتن ۱۰ مگابایت لاگ در ثانیه روی یک درایو فلش فکر نکند. با حرکت ما به سمت عامل‌های خودمختارتری که ۲۴ ساعته در پس‌زمینه اجرا می‌شوند، پتانسیل تخلیه «ساکت» منابع — چه چرخه CPU، چه رم و چه استقامت SSD — افزایش می‌یابد. این پیچیدگی در مدیریت منابع، در سایر قابلیت‌های پیشرفته این ابزار نیز دیده می‌شود؛ برای مثال قابلیت Record & Replay در Codex که برای خودکارسازی فرآیندهای پیچیده macOS طراحی شده، نمونه‌ای از تلاش OpenAI برای مدیریت بهتر جریان کاری کاربران است.

برای محافظت از خود در آینده، چند عادت را توصیه می‌کنم. اول، گهگاه I/O دیسک خود را در Activity Monitor (در مک) یا htop/iotop (در لینوکس) بررسی کنید. اگر فرآیندی را می‌بینید که در حالی که کامپیوتر ظاهراً بیکار است، به‌طور مداوم مگابایت‌ها داده در ثانیه می‌نویسد، این یک هشدار قرمز بزرگ است. دوم، دایرکتوری‌های لاگ خود را زیر نظر داشته باشید. ابزارهایی که لاگ‌ها را در پوشه‌های مخفی مانند ~/.config یا ~/.local ذخیره می‌کنند، به‌راحتی فراموش می‌شوند. یک بررسی ماهانه ساده از پوشه‌های مخفی دایرکتوری Home با دستور du می‌تواند شما را از غم‌های زیادی نجات دهد.

در نهایت، همیشه نسبت به «راهکارهای سریع» در شبکه‌های اجتماعی مشکوک باشید. توصیه symlink به /tmp نمونه کامل راهکاری است که در یک محیط (لینوکس) کار می‌کند اما در محیطی دیگر (macOS) بی‌فایده یا گمراه‌کننده است. همیشه قبل از فرض اینکه دایرکتوری‌های موقت در رم هستند، مکان واقعی آن‌ها را تأیید کنید.

به‌طور خلاصه، باگ گزارش‌دهی Codex CLI یک «طوفان کامل» از تنظیمات پیش‌فرض بیش از حد پرحرف و کارایی SSDهای مدرن بود که آسیب را ماسک کردند. با به‌روزرسانی به v0.142.2 و پاک‌سازی لاگ‌های قدیمی، می‌توانید جلوی این خون‌ریزی را بگیرید. داده‌های SMART خود را بررسی کنید تا ببینید چه مقدار آسیب وارد شده و نسبت به فرآیندهایی که با SSD شما مانند یک کاغذ پیش‌نویس برخورد می‌کنند، هوشیار باشید. سخت‌افزار شما یک سرمایه‌گذاری است؛ اجازه ندهید یک سطح گزارش‌دهی سرکش آن را بخورد.

گام بعدی شما

  • فوراً نسخه Codex CLI خود را به v0.142.2 به‌روزرسانی کنید.
  • فایل‌های .sqlite در پوشه .codex را شناسایی و حذف نمایید تا فضای دیسک بازگردد.
  • با استفاده از smartmontools میزان Total Host Writes دیسک خود را بررسی کنید تا از سلامت سلول‌های NAND مطمئن شوید.

اما داستان سخت‌افزاری این تحولات حتی پیچیده‌تر است؛ برای درک اینکه چرا بهینه‌سازی استنتاج باعث کاهش فشار بر سخت‌افزار می‌شود، تحلیل ما درباره تراشه‌های Blackwell را بخوانید.

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

این مورد بر اهمیت نظارت بر سلامت سخت‌افزار در محیط‌های توسعه تأکید می‌کند. بر اساس تجربه مهندسان سیستم، چشم‌پوشی از جزئیات سطح پایین در ابزارهای AI می‌تواند هزینه‌های جایگزینی سخت‌افزاری سنگینی را تحمیل کند.

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

برنامه‌نویسان ایرانی که از ابزارهای OpenAI روی سیستم‌های شخصی استفاده می‌کنند، باید فوراً نسخه خود را به‌روزرسانی کنند تا از استهلاک زودهنگام SSDهای خود در بازار داخلی (که جایگزینی آن‌ها هزینه‌بر است) جلوگیری کنند.

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

این اتفاق نشان می‌دهد که انتزاع بالای زبان‌های برنامه‌نویسی مدرن، توسعه‌دهندگان را نسبت به هزینه فیزیکی I/O بی‌تفاوت کرده است. در دنیای عامل‌های خودکار، یک باگ نرم‌افزاری دیگر فقط باعث کرش کردن برنامه نمی‌شود، بلکه می‌تواند مستقیماً منجر به تخریب سخت‌افزار شود؛ این یعنی ما وارد عصر «آسیب‌های فیزیکی نرم‌افزاری» شده‌ایم.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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