تصور کنید یک برنامهنویس پایتون بتواند کل پروژه خود را در چند ثانیه برای یک ممیزی امنیتی جامع به Claude 5 بسپارد، اما با یک درخواست ساده مثل «کد را بررسی کن»، پاسخی دریافت کند که هیچ کاربرد عملی ندارد. شواهد منتشر شده در ۱۳ اکتبر ۲۰۲۶ نشان میدهد که در پنجرهٔ متنی یک میلیون توکنی، چالش اصلی از «جا دادن دادهها» به «کنترل خروجی» تغییر کرده است.
برای سالها، بررسی کد با مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — مستلزم تکهتکه کردن پروژهها بود. توسعهدهندگان باید فایلها را دستی انتخاب میکردند و امیدوار بودند مدل بتواند وابستگیهای بین یک مسیر FastAPI و یک تابع کمکی دیتابیس را حدس بزند. این گردش کار تکهتکه، اغلب باگهایی را که در تعامل بین فایلها رخ میدادند، نادیده میگرفت. برای مثال، اگر یک باگ شامل یک مسیر FastAPI بود که تابعی کمکی دیتابیس را فراخوانی میکرد و آن تابع نیز به تنظیماتی وابسته بود که در فایل سومی بارگذاری شده بود، توسعهدهنده یا باید هر سه فایل را دستی کپی میکرد یا امیدوار میبود مدل بتواند زمینه را از روی یک فایل حدس بزند.
همانطور که در تحلیل قبلی ما دربارهی تلاشهای Anthropic برای ایمنسازی توکنهای استدلالی اشاره کردیم، اکنون تمرکز بر نحوه مدیریت حجم عظیمی از دادههای فعال است. این رویکرد در راستای بهینهسازی تعادل میان هوش و هزینه در مکانیزمهای تفکر آنتروپیک قرار دارد تا خروجیهای سریعتر و دقیقتری حاصل شود. در یک محیط توسعه عملی، پنجرهٔ متنی (Context Window) — میزان متنی که مدل همزمان «در ذهن» نگه میدارد، شبیه میز کاری که جا برای چند ورق دارد — تفاوت بین تحلیل یک تابع ساده و تحلیل یک کدبیس ۱۵۰ هزار توکنی در یک مرحله است. طبق گزارشهای فنی، شکست مدل دیگر در این نیست که «کد شما جا نمیشود»، بلکه در این است که ۲۰۰ هزار توکن میگیرد و در پاسخ، یک خلاصه سه پاراگرافی میدهد که هیچ کمک عملیی نمیکند.
چرخش به سمت تحلیل در مقیاس پروژه
با Claude 5، گردش کار از خواندن یک فایل تک به استفاده از اسکریپتهایی تغییر میکند که تمام فایلهای .py یک دایرکتوری را جمعآوری میکنند. پیش از این، گردش کار شبیه به استفاده از دستور open("api/routes/users.py") برای خواندن یک فایل و سپس درخواست از مدل برای بررسی آن کد خاص بود. اکنون، گردش کار شامل استفاده از subprocess.run همراه با دستور find برای مکانیابی تمام فایلهای .py (به استثنای پوشه .venv) و متصل کردن آنها به یک رشته متنی واحد است که با سرتیترهای مسیر فایل از هم جدا شدهاند.
به نقل از مستندات فنی، این قابلیت سه نوع تحلیل را ممکن میکند که پیش از این بدون ابزارهای تحلیل استاتیک غیرممکن بود:
- تحلیل وابستگیهای بینفایلی: مدل میتواند جریان داده را از یک درخواست HTTP (شامل پارامترهای کوئری، بدنه درخواست و پارامترهای مسیر) از طریق توابع کمکی و تا داخل یک کوئری دیتابیس دنبال کند تا ورودیهای پاکنشده را بیابد. این قابلیت نیاز به ردیابی دستی یا ابزارهای تحلیل استاتیک را از بین میبرد. برای موفقیت در این کار، توسعهدهنده باید از پرامپتهایی استفاده کند که مدل را مجبور به «شمارش» یافتهها کند؛ به طوری که مسیر فایل، شماره خط، نام تابع، قطعه کد دقیق (با ۵ خط زمینه)، منبع ورودی و یک رتبهبندی امنیتی (قطعاً ناامن، احتمالاً ناامن، یا به نظر امن اما مشکوک) ارائه دهد.
- تحلیل اثرات بازنویسی (Refactoring): توسعهدهندگان میتوانند امضای یک تابع را تغییر دهند — برای مثال تغییر
parse_timestamp(ts: str)بهparse_timestamp(ts: str, tz: timezone = timezone.utc)— و از مدل بخواهند تمام نقاط فراخوانی، هر جایی که به امضای فعلی وابسته است، تمام فایلهای تست با Assertionهایی که خواهند شکست و هر جایی که تابع را Import و Re-export میکند، لیست کند. برای یک کدبیس ۳۰ فایلی، این کار از طریق پرامپت ۱۰ ثانیه زمان میبرد، در حالی که با جستوجوی دستی (grep) حدود ۹۰ ثانیه طول میکشد. - ممیزی سازگاری معماری: تیمها میتوانند مجموعهای از قوانین معماری را ارائه دهند و از مدل بخواهند هر مورد نقض قانون را در دهها فایل فهرست کند. مثالهایی از این قوانین عبارتند از: اطمینان از اینکه تمام عملیات دیتابیس از طریق کلاسهای Repository انجام شود (عدم استفاده از کوئریهای خام ORM در مسیرها)، اطمینان از اینکه پاسخهای API از طریق مدلهای Pydantic سریالایز شوند (عدم استفاده از فراخوانیهای
dict()) و اطمینان از اینکه دسترسی به تنظیمات فقط از طریق کلاسConfigباشد (عدم دسترسی مستقیم بهos.environ). از مدل خواسته میشود نتایج را در دستههای COMPLIANT (مطابق)، VIOLATION (نقض) یا UNCLEAR (نامشخص) طبقهبندی کند.
مشکل «فروپاشی خلاصه»
برخلاف انتظار، پنجرههای متنی بزرگتر باعث میشوند پرامپتهای مبهم عملکرد بدتری داشته باشند. وقتی یک فایل ۲۰۰ خطی به مدل میدهید، مدل چارهای جز جزئینگری ندارد. اما با ۱۵۰ هزار توکن، مدل برای ارائه پاسخی خوانا و کوتاه بهینهسازی میشود و خروجی را در سه پاراگراف خلاصه میکند که فاقد جزئیات عملیاتی است. برای مثال، درخواست «این کدبیس را برای آسیبپذیری SQL Injection بررسی کن» احتمالاً منجر به یک مقاله کلی درباره تعریف SQL Injection میشود، نه لیستی از باگهای واقعی.
برای مقابله با این وضعیت، توسعهدهندگان باید مدل را به «حالت شمارشی» (Enumeration Mode) ببرند. این کار مستلزم چهار محدودیت در مهندسی پرامپت (Prompt Engineering) — هنر سؤال درست پرسیدن، شبیه کسی که میداند چطور از یک مشاور باتجربه بهترین جواب را بگیرد — است. این رویکرد دقیق، در واقع پاسخی به چالشهای کدنویسی مبتنی بر «حس» (Vibe-based) است که چارچوب Four-Leaf Tree سعی در جایگزینی آن با ساختارهای فنیتر دارد:
۱. تعیین دقیق فرمت خروجی: تقاضای مسیر فایل، شماره خط و راهکار اصلاحی ملموس برای هر مورد. برای مثال: «برای هر مشکل، این موارد را خروجی بده: مسیر فایل، شماره خط، مشکل و یک راهکار اصلاحی مشخص».
۲. ممنوعیت خلاصهسازی: استفاده از جملاتی صریح برای جلوگیری از راهنماییهای کلی، مانند: «خلاصه نکن. راهنمایی کلی ارائه نده. فقط موارد خاص را لیست کن».
۳. تعیین حد نصاب: به مدل بگویید اگر تعداد یافتهها خیلی کم باشد، احتمالاً دقت کافی نداشته است. برای مثال: «اگر کمتر از ۵ مورد پیدا کردی، احتمالاً با دقت کافی نگاه نکردی. دوباره بررسی کن».
۴. تأیید موارد منفی: مدل باید صراحتاً بگوید «در این دسته موردی یافت نشد» بهجای اینکه آن دسته را به کلی نادیده بگیرد.
پیادهسازی فنی و هزینهها
با استفاده از SDK پایتون Anthropic، توسعهدهنده میتواند کدبیس را با استفاده از جستوجوی بازگشتی (Recursive Globbing) فایلهای منبع و در عین حال رعایت الگوهای .gitignore بارگذاری کند. یک پیادهسازی عملی از Path(root).rglob("*") استفاده میکند و دایرکتوریهای غیرمنبع رایج مانند .venv ،__pycache__ ،.git ،dist و build را فیلتر مینماید.
برای یک پروژه FastAPI با ۲۰ فایل، این تحلیل معمولاً زیر ۱۵ ثانیه زمان میبرد و هزینه آن با مدل Claude 5 Sonnet حدود ۰.۱۵ دلار است. با رشد پروژه به ۱۰۰ فایل، هزینه به تقریباً ۰.۶۰ دلار میرسد. این یک جهش بهرهوری است؛ زیرا تلاش انسان با اندازه کدبیس بهصورت خطی زیاد میشود، اما تلاش مدل تقریباً ثابت میماند. در این میان، معماری سه لایه MCP با کاهش چشمگیر مصرف توکنها، مدیریت هزینههای عملیاتی در مقیاسهای بزرگتر را تسهیل کرده است.
نقاط شکست پایدار
با وجود اندازه پنجره متنی، Claude 5 همچنان دچار توهم (Hallucination) — وقتی مدل با اطمینان چیزی میگوید که وجود ندارد، شبیه دوستی که خاطرهای را اشتباه تعریف میکند — میشود. رایجترین خطاها، ساختن شماره خطهای جعلی یا اعلام نبودِ آسیبپذیری در جایی است که باگ وجود دارد (False Negatives). مدل ممکن است ادعا کند باگ در خط ۴۷ فایل users.py است، در حالی که در واقع در خط ۸۹ قرار دارد، یا بهجای لیست کردن تمام نقاط فراخوانی، ادعا کند که «در چندین جای دایرکتوری routes» چنین موردی وجود دارد.
برای کاهش این خطا، توصیه میشود بهجای شماره خط، «قطعه کد» (Code Snippet) را درخواست کنید. قطعات کد قابل تأیید هستند، اما شماره خطها خیر. این یعنی مدل سرنخ را میدهد و انسان تأیید نهایی را انجام میدهد. اگرچه پنجره یک میلیون توکنی توهمات مربوط به کدی که مدل در اختیار دارد (در مقابل کدی که حدس میزند) را کاهش میدهد، اما آنها را کاملاً حذف نمیکند.
ادغام در گردش کار
این تحول، نسبت کاربرد هوش مصنوعی را تغییر میدهد. پنجره یک میلیون توکنی مانند یک تقویتکننده برای ممیزی و تحلیل عمل میکند؛ کارهایی که پیش از این برای انسان گران و برای ابزارهای ساده (Linter) پیچیده بود. جدول زیر تغییر در میزان تلاش را نشان میدهد:
- یافتن کاندیداهای SQL Injection: تلاش انسانی با اندازه کدبیس زیاد میشود، اما تلاش Claude 5 تقریباً ثابت است.
- ردیابی جریان داده بین فایلها: تلاش انسانی با تعداد فایلها زیاد میشود، اما تلاش Claude 5 تقریباً ثابت است.
- ممیزی سازگاری معماری: تلاش انسانی با اندازه تیم زیاد میشود، اما تلاش Claude 5 تقریباً ثابت است.
- تحلیل اثرات بازنویسی: تلاش انسانی با تعداد نقاط فراخوانی زیاد میشود، اما تلاش Claude 5 تقریباً ثابت است.
- دیباگ یک تابع / نوشتن کد جدید: تلاش برای هر دو حالت تقریباً یکسان باقی میماند.
توسعهدهندگان باید اکنون بر ساخت کتابخانههایی از پرامپتهای ساختاریافته تمرکز کنند که با LLM نه به عنوان یک شریک گفتگو، بلکه به عنوان یک ایندکسکننده سریع برخورد کنند. هدف، حرکت از «چت کردن با کد» به سمت «کوئری زدن روی کدبیس» است. این همان فلسفه پشت AI Dev Toolkit است که شامل ۲۷۲ پرامپت بهینه برای کارهای بکاند پایتون است تا خروجیهای ساختاریافته در مقیاس بالا تولید کند.
منتظر ظهور ابزارهای یکپارچه IDE باشید که فرآیند بارگذاری کدبیس را خودکار میکنند و احتمالاً نیاز به اسکریپتهای دستی SDK را از بین میبرند.
گام بعدی شما
- اگر از Claude 5 استفاده میکنید، پرامپتهای خود را از حالت «درخواستی» به حالت «دستوری و شمارشی» تغییر دهید.
- اسکریپتی برای تجمیع فایلهای پروژه (با رعایت
.gitignore) بنویسید تا از قابلیت تحلیل کل کدبیس بهره ببرید. - بهجای تکیه بر شماره خطوط مدل، همیشه درخواست قطعات کد (Snippets) را برای تأیید نهایی داشته باشید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو