وقتی کسی به شما می‌گوید که ۳۳۵ صفحه زنده را در ۲۶ مخزن (repository) طی ۲۹ روز، آن هم به تنهایی، عرضه کرده است، غریزه شما این است که بپرسید چطور اینقدر سریع پیش رفته‌اند. اما سوال بهتر این است که وقتی این کار را کردند، چه چیزی از کار افتاد.

اعداد واقعی هستند: ۱٬۵۴۹ کامیت، ۲۶ مخزن، ۲۹ روز، و یک توسعه‌دهنده که از Claude Code استفاده می‌کند. اما سرعت به تنهایی چیز زیادی به شما نمی‌آموزد. آنچه اهمیت دارد، ماهیت شکست‌هاست، زیرا آن‌ها از آن نوعی نبودند که در یک stack trace پیدا شوند. آن‌ها شکاف‌های ساختاری بودند. شما تنها زمانی متوجه آن‌ها می‌شوید که از ادیتور فاصله بگیرید و به کل سیستمی که در محیط عملیاتی (production) در حال فعالیت است، نگاه کنید.

آنچه کارآمد بود

سرعت یک توهم نبود. برخی وظایف وقتی آن‌ها را به یک هوش مصنوعی که نمی‌خوابد می‌سپارید، واقعاً زمان اجرای آن‌ها به شدت کاهش می‌یابد.

الگوریتم‌های کتابی، به جای هفته‌ها، در عرض چند روز به ویژگی‌های عرضه شده تبدیل شدند. یک حل‌کننده بازی ۲۰۴۸ و بازی‌های مبتنی بر minimax به سرعت تکمیل شدند، زیرا الگوهای پیاده‌سازی آن‌ها به خوبی مستند شده‌اند. مدل در مقالات آکادمیک گم نمی‌شود؛ بلکه درخت جستجو، ارزیابی هیوریستیک، امتیازدهی حرکت‌ها را می‌نویسد و به سراغ کار بعدی می‌رود. این‌ها مسائل حل‌شده‌ای هستند و یک برنامه‌نویس جفت (pair programmer) مبتنی بر هوش مصنوعی، مسائل حل‌شده را با کارایی محض مدیریت می‌کند.

بازرسی‌های خسته‌کننده قابل تحمل شدند. پیمایش گراف‌های لینک (link graphs)، تأیید زنجیره‌های ریدایرکت، بررسی تگ‌های canonical در صدها صفحه — این کار تمرکز انسان را از بین می‌برد، اما یک مدل زبانی بدون شکایت تکرار می‌کند. مدل همان الگو را سیصد بار بررسی می‌کند و گزارش می‌دهد.

غافلگیری واقعی، ثبات بود. وقتی از یک هوش مصنوعی می‌خواهید ده‌ها صفحه فرود (landing page) ایجاد کند، انحراف از مسیر اجتناب‌ناپذیر است مگر اینکه آن را مهار کنید. من از فایل‌های حافظه کوچک برای تثبیت یک سیستم برند واحد استفاده کردم: قوانین لحن، نام توکن‌های رنگ، محدودیت‌های کامپوننت و الگوهای صفحه. مدل در شروع هر وظیفه مرتبط، آن محدودیت‌ها را می‌خواند و خروجی‌ای تولید می‌کرد که گویی از دست یک نفر خارج شده است، نه از دست بیست و نه نُه حال و هوای مختلف.

آنچه واقعاً از کار افتاد

شکست‌ها معماری بودند. هیچ build ای به دلیل فراموش کردن یک سمی‌کولون (semicolon) با خطا مواجه نشد. در عوض، سیستم به آرامی مرا فریب داد تا فکر کنم همه چیز مرتب است.

اول از همه، خودخواری سئو (SEO cannibalization) رخ داد. هوش مصنوعی یک مرکز ابزار جدید را زیر یک URL تازه ساخت، در حالی که مرکز ابزار قدیمی هنوز در مسیر اصلی خود قرار داشت. هر صفحه به تنهایی بهینه شده بود. عنوان‌ها دقیق بودند. متادیسکریپشن‌ها منحصربه‌فرد بودند. محتوا مفید بود. اما همه آن‌ها یک قصد جستجوی (search intent) یکسان را هدف گرفته بودند. موتورهای جستجو دو مرجع را برای عبارات یکسان دیدند و هیچ‌کدام را رتبه ندادند. صفحات بی‌نقص، اثر یکدیگر را خنثی کردند، زیرا کسی به سایت به عنوان یک پورتفولیو نگاه نمی‌کرد، بلکه آن را مجموعه‌ای از فایل‌ها می‌دید.

در ادامه، عدم تطابق URLها از راه رسیدند. مخازن مختلف، ساختارهای پوشه‌بندی متفاوتی را برای محتوای منطقی یکسان اتخاذ کردند. یک مخزن ابزارها را در مسیر /tools/utility-name قرار داد؛ دیگری آن‌ها را به صورت تخت در /utility-name قرار داد. CDN هر دو را دید، زنجیره‌های ریدایرکت را برای حل آن‌ها ایجاد کرد و شروع به دادن خطا در لبه (edge) کرد. صفحات در نهایت بارگذاری می‌شدند، اما هر ریدایرکت، بودجه خزش (crawl budget) و صبر کاربر را هدر می‌داد. کد درست بود، اما توپولوژی (topology) یک آشفتگی تمام‌عیار بود.

سپس تله همگام‌سازی (sync trap) فرا رسید. من یک سایت آینه (mirror site) — یک نسخه staging یا پشتیبان — را به‌روزرسانی کردم، اما فراموش کردم آن تغییرات را به مخزن اصلی برگردانم. وقتی بعداً از هوش مصنوعی خواستم محیط‌ها را همگام‌سازی کند، او با سایت آینه به عنوان حقیقت مطلق (ground truth) برخورد کرد. یک دستور sync ساده می‌توانست پایگاه داده یا مجموعه فایل‌های production را با داده‌های قدیمی سایت آینه بازنویسی کند. هوش مصنوعی آنچه را که توصیف کردم اجرا کرد، نه آنچه مد نظرم بود. نیت‌ها با diff مقایسه نمی‌شوند؛ فایل‌ها مقایسه می‌شوند.

خود ابزارهای بازرسی هم دروغ می‌گفتند. چون بازرسی را خودکار کرده بودم، فرض را بر این گذاشتم که خروجی بدون نقص است. اما نبود. اسکریپت‌های بازرسی که توسط هوش مصنوعی نوشته شده بودند، حاوی باگ‌های ظریفی بودند: بررسی‌های off-by-one، فرض‌های نادرست درباره کدهای وضعیت ریدایرکت، و خطاهای خیالی که به دلیل زمان‌بندی یا هدرها ایجاد می‌شدند و نه پیکربندی‌های اشتباه واقعی. آن‌ها مشکلاتی را گزارش می‌کردند که وجود نداشتند و باعث شدند به دنبال سراب‌ها بدوم. یاد گرفتم که تا زمانی که سایت زنده را به صورت دستی بررسی نکردم و علامت‌ها را در یک مرورگر یا با یک دستور curl مستقیم تأیید نکردم، به تحلیل استاتیک (static analysis) اعتماد نکنم.

هزینه پنهان

این عددی است که هیچ‌کس درباره آن صحبت نمی‌کند: ۹۳ درصد از هزینه توکن‌های من صرف بازخوانی بافت (context) کش‌شده شد.

In a long Claude Code session, every new request forces the model to revisit the previous conversation history, file buffers, and working memory. The first task in a session might be cheap. By the tenth task, the model is digesting everything that came before just to understand the next sentence. The cost curve bends upward fast. Long sessions turn into expensive rereading exercises, and the context window fills with debris from earlier jobs that have nothing to do with the current one.

This is not a quirk. It is a direct tax on poor session hygiene.

How to Fix It

The fixes were simple once I named the problems.

Treat one session as one task. When the job changes, start fresh. The temptation to keep the context warm is strong — you feel like you are saving setup time — but you are actually renting memory at compounding interest.

Keep knowledge in small, dedicated memory files. Do not let the model carry brand guidelines, component libraries, or SEO rules inside conversational context. Write them to disk in concise files and reference them explicitly. This moves information from expensive volatile context to cheap persistent storage.

Between different jobs, clear the decks. Close the session. Open a new one. The thirty seconds of setup saves dollars and hallucinations later.

Lessons for Scaling

If you are going to work at this volume, you need guardrails that treat the system, not the file, as the unit of review.

Benchmark before you publish. Do not assume a page works because it renders. Check load time, mobile layout, and core metrics on the deployed URL. A beautiful component in local dev can collapse under real network conditions.

Diff before you copy. Never run a bulk sync or copy operation blindly. Look at the delta. Understand which direction the data is flowing. The AI will not warn you that you are about to overwrite live customer data.

Probe live sites before trusting audits. Static analysis is a hypothesis. A live request is evidence. When an audit tool reports a broken link or a redirect loop, verify it with a direct request. Tools have bugs too, especially tools written by an AI operating on inferred patterns.

Write conventions down before you scale. URL structure, folder hierarchy, canonical patterns, and content taxonomy need to be documented in a place the AI can read before it generates a single new page. Memory files are not optional at