عنوان اصلی: "درک سورس کد Claude Code آنتروپیک در یک مقاله: چرا واقعاً از بقیه بهتر است؟"
نویسنده اصلی: Yuker، محقق هوش مصنوعی
در ۳۱ مارس ۲۰۲۶، محقق امنیتی Chaofan Shou کشف کرد که در نسخه npm منتشر شده از بسته Claude Code، فایل سورس مپ (source map) حذف نشده است.
این بدان معناست که کل سورس کد TypeScript مربوط به Claude Code، شامل ۵۱۲,۰۰۰ خط و ۱۹۰۳ فایل، در اینترنت عمومی افشا شده است.
البته، من نمیتوانستم در عرض چند ساعت این حجم از کد را بخوانم، بنابراین با سه سوال به سراغ این سورس کد رفتم:
۱. تفاوت بنیادی بین Claude Code و سایر ابزارهای برنامهنویسی هوش مصنوعی چیست؟
۲. چرا "احساس" کدنویسی آن بهتر از بقیه به نظر میرسد؟
۳. دقیقاً چه چیزی در ۵۱۰,۰۰۰ خط کد پنهان شده است؟
پس از خواندن آن، واکنش اولیه من این بود: این فقط یک دستیار برنامهنویسی هوش مصنوعی نیست؛ این یک سیستمعامل است.
تصور کنید یک برنامهنویس از راه دور استخدام کردهاید و به او دسترسی از راه دور به کامپیوتر خود دادهاید.
چگونه آن را مدیریت میکردید؟
اگر شما Cursor بودید: از او میخواستید کنار شما بنشیند و هر بار که نیاز به تایپ دستوری داشت، نگاهی میانداختید و روی "اجازه دادن" کلیک میکردید. این ساده است، اما باید همیشه مراقب او باشید.
اگر شما GitHub Copilot Agent بودید: به او یک ماشین مجازی کاملاً جدید برای کار میدادید. پس از اتمام کار، کد را ارسال میکرد، شما آن را بررسی میکردید و سپس ادغام میکردید. این امن است، اما او نمیتواند محیط محلی شما را ببیند.
اگر شما Claude Code بودید:
به او اجازه میدادید مستقیماً از کامپیوتر شما استفاده کند—اما آن را به یک سیستم امنیتی بسیار پیچیده مجهز کردهاید. چه کاری میتواند انجام دهد، چه کاری نمیتواند، کدام اقدامات نیاز به تایید شما دارند، کدام را میتواند به تنهایی انجام دهد، و حتی اگر بخواهد از rm -rf استفاده کند، باید قبل از اجرا از ۹ سطح بررسی عبور کند.
در اینجا سه فلسفه امنیتی کاملاً متفاوت وجود دارد:

چرا آنتروپیک سختترین مسیر را انتخاب کرد؟
زیرا تنها از این طریق، هوش مصنوعی میتواند با ترمینال، محیط و پیکربندی شما کار کند - این همان چیزی است که "کمک واقعی به کدنویسی" به معنای آن است، نه "نوشتن یک قطعه کد در یک محیط ایزوله و سپس کپی کردن آن".
اما هزینه آن چیست؟ آنها ۵۱۰,۰۰۰ خط کد برای این کار نوشتند.
بیشتر مردم فکر میکنند ابزارهای برنامهنویسی هوش مصنوعی اینگونه کار میکنند:
ورودی کاربر → فراخوانی API مدل زبانی → دریافت نتیجه → نمایش به کاربر
Claude Code واقعی اینگونه کار میکند:
ورودی کاربر
→ اسمبل کردن پویا ۷ لایه از پرامپتهای سیستمی
→ تزریق وضعیت Git، قراردادهای پروژه، حافظه تاریخی
→ ۴۲ ابزار که هر کدام با یک دفترچه راهنما همراه هستند
→ مدل زبانی تصمیم میگیرد از کدام ابزار استفاده کند
→ ۹ لایه بررسی امنیتی (تجزیه AST، طبقهبندیکنندههای ML، بررسیهای سندباکس...)
→ حل رقابت مجوزها (کیبورد محلی/IDE/هوک/طبقهبندیکننده هوش مصنوعی همگی همزمان در حال رقابت هستند)
→ ۲۰۰ میلیثانیه تاخیر ضد خستگی
→ اجرای ابزار
→ بازگرداندن نتایج به صورت استریم
→ آیا زمینه به حد مجاز نزدیک میشود؟ → فشردهسازی سه مرحلهای (میکرو-فشردهسازی → خود-فشردهسازی → فشردهسازی کامل)
→ نیاز به موازیسازی دارید؟ → تولید دستهای از زیر-عاملها
→ حلقه تا تکمیل کار
معتقدم همه در مورد موارد بالا بسیار کنجکاو هستند، اما نگران نباشید، بیایید یکی یکی آنها را باز کنیم.
فایل src/constants/prompts.ts را باز کنید، این تابع را خواهید دید:

آیا متوجه SYSTEM_PROMPT_DYNAMIC_BOUNDARY شدید؟
این یک جداکننده کش است. محتوای بالای جداکننده ثابت است و میتواند توسط Claude API برای صرفهجویی در هزینههای توکن کش شود. محتوای زیر جداکننده پویا است — شاخه Git فعلی شما، پیکربندی پروژه CLAUDE.md، خاطرات ترجیحات شما که قبلاً ارائه شده است... هر تعامل منحصر به فرد است.
این به چه معناست؟
آنتروپیک با کلمات کلیدی به عنوان خروجی کامپایلر برای بهینهسازی برخورد میکند. بخش ثابت "باینری کامپایل شده" و بخش پویا "پارامترهای زمان اجرا" است. مزایای این رویکرد عبارتند از:
۱. صرفهجویی در هزینه: بخش ثابت کش میشود و از هزینههای اضافی جلوگیری میکند
۲. سرعت: کش هیتها مستقیماً از پردازش آن توکنها صرفنظر میکنند
۳. انعطافپذیری: بخش پویا به هر تعامل اجازه میدهد از محیط فعلی آگاه باشد
هر ابزار "دفترچه راهنمای کاربر" خود را دارد
آنچه حتی حیرتانگیزتر است این است که هر دایرکتوری ابزار شامل یک فایل prompt.ts است — این یک دفترچه راهنمای کاربر است که مخصوص مدلهای زبانی طراحی شده است.
به BashTool نگاه کنید (src/tools/BashTool/prompt.ts، حدود ۳۷۰ خط):

این سندی برای انسانها نیست، این یک منشور اخلاقی برای رفتار هوش مصنوعی است. هر بار که Claude Code شروع به کار میکند، این قوانین در پرامپتهای سیستمی تزریق میشوند.
به همین دلیل است که Claude Code هرگز به تنهایی به زور git push --force نمیکند، در حالی که برخی ابزارها ممکن است این کار را انجام دهند — اینطور نیست که مدل باهوشتر باشد، بلکه به این دلیل است که کلمات کلیدی قبلاً قوانین را دیکته کردهاند.
به علاوه، نسخه داخلی آنتروپیک با آنچه شما استفاده میکنید متفاوت است
کد دارای شاخههای متعددی مانند این است:

ant به کارکنان داخلی آنتروپیک اشاره دارد. نسخه آنها دارای دستورالعملهای سبک کد دقیقتر ("کامنت ننویسید مگر اینکه دلیل آن واضح نباشد")، استراتژی خروجی تهاجمیتر ("نوشتن هرم معکوس") و برخی ویژگیهای آزمایشی است که هنوز در تست A/B هستند (عامل تایید، عامل کاوش و برنامهریزی).
این نشان میدهد که آنتروپیک بزرگترین کاربر Claude Code است. آنها از محصول خود برای توسعه محصول خود استفاده میکنند.
فایل src/tools.ts را باز کنید، ثبت ابزار را خواهید دید:

۴۲ ابزار، اما اکثر آنها را هرگز مستقیماً ندیدهاید. دلیل آن این است که بسیاری از ابزارها به صورت تنبل (lazy) بارگذاری میشوند—فقط زمانی که مدل زبانی به آنها نیاز دارد، از طریق ToolSearchTool در صورت تقاضا تزریق میشوند.
چرا این کار انجام میشود؟
زیرا برای هر ابزار اضافی، پرامپت سیستمی نیاز به یک توضیح اضافی دارد و توکن باید پول بیشتری خرج کند. اگر فقط میخواهید Claude Code به شما در تغییر یک خط کد کمک کند، نیازی به بارگذاری 'زمانبندی وظایف کرون' و 'مدیر همکاری تیمی' ندارد.
یک طراحی هوشمندانهتر هم وجود دارد:

CLAUDE_CODE_SIMPLE=true را تنظیم کنید، و Claude Code فقط با سه ابزار باقی میماند: Bash، Read File، Modify File. این یک در پشتی برای مینیمالیستها است.

به آن مقادیر پیشفرض توجه کنید: isConcurrencySafe به طور پیشفرض false است، isReadOnly به طور پیشفرض false است.
این طراحی fail-closed نامیده میشود—اگر نویسنده یک ابزار فراموش کند ویژگیهای ایمنی را اعلام کند، سیستم فرض میکند که 'ناامن و قابل نوشتن' است. احتیاط بیش از حد بهتر از از دست دادن حتی یک ریسک است.

FileEditTool بررسی میکند که آیا قبلاً این فایل را با استفاده از FileReadTool خواندهاید یا خیر. اگر نه، مستقیماً خطا میدهد و اجازه تغییر نمیدهد.
به همین دلیل است که Claude Code مثل برخی ابزارها "به طور جادویی یک قطعه کد برای بازنویسی فایل شما نمینویسد"—**لازم است قبل از اصلاح، ابتدا درک کند**.
هر کسی که از Claude Code استفاده کرده است، این احساس را دارد: به نظر میرسد واقعاً شما را میشناسد.
به آن میگویید "پایگاه داده را در تستها mock نکن"، و در تعامل بعدی mock نخواهد کرد. به آن میگویید "من مهندس بکاند هستم، تازهکار React"، و کد فرانتاند را با استفاده از قیاسهای بکاند توضیح میدهد.
پشت این موضوع یک سیستم حافظه کامل قرار دارد.

Claude Code از یک هوش مصنوعی دیگر (Claude Sonnet) استفاده میکند تا تعیین کند "کدام خاطرات با مکالمه فعلی مرتبط هستند"
نه تطبیق کلمات کلیدی، نه جستجوی برداری—به یک مدل کوچک اجازه میدهد تا به سرعت تمام عناوین و توضیحات فایلهای حافظه را اسکن کند، تا ۵ مورد مرتبطترین را انتخاب کند، سپس محتوای کامل آنها را در زمینه مکالمه فعلی تزریق کند.
استراتژی "دقت بر فراخوانی" است—ترجیح میدهد یک حافظه بالقوه مفید را از دست بدهد تا اینکه یک حافظه نامرتبط را تزریق کند که زمینه را آلوده کند.
حالت KAIROS: "رویاپردازی" شبانه
این علمی-تخیلیترین بخش برای من است.
یک پرچم ویژگی در کد به نام KAIROS وجود دارد. در این حالت، خاطرات مکالمات طولانی در فایلهای ساختاریافته ذخیره نمیشوند، بلکه در ورودیهای شبیه به گزارش با تاریخ ضمیمه میشوند. سپس، یک مهارت /dream وجود دارد که در طول "شب" (فعالیت کم) این گزارشهای خام را به فایلهای موضوعی ساختاریافته تبدیل میکند.

هوش مصنوعی در حالی که "میخوابد" خاطرات را سازماندهی میکند. این دیگر مهندسی نیست؛ این بیونیک است.
وقتی از Claude Code میخواهید یک کار پیچیده انجام دهد، ممکن است بیسروصدا این کار را انجام دهد:

یک زیر-عامل تولید میکند.
و زیر-عامل یک تزریق "خودآگاهی" سختگیرانه دارد تا از تولید بازگشتی زیر-عاملهای بیشتر جلوگیری کند:

این قطعه کد میگوید: "تو یک کارگر هستی، نه یک مدیر. به استخدام افراد بیشتر فکر نکن، خودت کار را انجام بده."
الگوی هماهنگکننده: الگوی مدیر
در الگوی هماهنگکننده، Claude Code به یک ارکستراتور وظیفه خالص تبدیل میشود، نه اینکه خودش کار را انجام دهد، فقط تفویض میکند:

اصول اصلی نوشته شده در کامنتهای کد:
"موازیسازی ابرقدرت شماست" برای وظایف تحقیق فقط خواندنی: به صورت موازی اجرا کنید. برای وظایف نوشتن فایل: به صورت سریالی در هر گروه فایل اجرا کنید (اجتناب از تداخل).
بهینهسازی کش پرامپت تا حد افراط
برای به حداکثر رساندن نرخ کش هیت زیر-عاملها، همه نتایج ابزار زیر-عاملهای فورک شده از همان متن جایگیر استفاده میکنند:
"Fork شروع شد—در حال پردازش در پسزمینه"
چرا؟ زیرا کش پرامپت Claude API بر اساس تطبیق پیشوند در سطح بایت است. اگر بایتهای پیشوند ۱۰ زیر-عامل یکسان باشند، فقط اولین مورد نیاز به "شروع سرد" دارد، ۹ مورد باقیمانده مستقیماً به کش میخورند.
این بهینهسازی است که چند سنت در هر تماس صرفهجویی میکند، اما در مقیاس بزرگ، میتواند مقدار قابل توجهی هزینه صرفهجویی کند.
همه مدلهای زبانی دارای محدودیت پنجره زمینه هستند. هرچه مکالمه طولانیتر باشد، پیامهای تاریخی بیشتر میشود، در نهایت از حد مجاز فراتر میرود.
Claude Code برای این کار فشردهسازی سه لایه طراحی کرده است:

میکرو-فشردهسازی فقط نتایج تماس ابزار قدیمی را لمس میکند — جایگزینی "محتوای فایل ۵۰۰ خطی خوانده شده ۱۰ دقیقه پیش" با [محتوای نتیجه ابزار قدیمی پاک شد].
کلمات پرامپت و رشته گفتگو کاملاً حفظ میشوند.
هنگامی که مصرف توکن به ۸۷٪ پنجره زمینه نزدیک میشود (اندازه پنجره - ۱۳,۰۰۰ بافر)، به طور خودکار فعال میشود. یک مدارشکن وجود دارد: پس از ۳ شکست متوالی فشردهسازی، تلاشها را متوقف کنید تا از حلقه جلوگیری شود.
از هوش مصنوعی بخواهید خلاصهای از کل مکالمه ایجاد کند و سپس تمام پیامهای تاریخی را با خلاصه جایگزین کند. در طول تولید خلاصه، یک دستورالعمل سختگیرانه وجود دارد:

چرا اینقدر سختگیرانه؟ زیرا اگر هوش مصنوعی در طول فرآیند خلاصهسازی تماسهای ابزار اضافی انجام دهد، باعث مصرف توکن بیشتر میشود که نتیجه معکوس دارد. این پرامپت اساساً میگوید: "وظیفه شما خلاصهسازی است، کار دیگری انجام ندهید."
بودجه توکن فشرده:
· بازیابی فایل: ۵۰,۰۰۰ توکن
· سقف هر فایل: ۵,۰۰۰ توکن
· محتوای مهارت: ۲۵,۰۰۰ توکن
این اعداد تصادفی نیستند — آنها نشاندهنده نقطه تعادل بین "حفظ زمینه کافی برای ادامه کار" و "آزاد کردن فضای کافی برای دریافت پیامهای جدید" هستند.
در ۵۱۰,۰۰۰ خط کد، بخشی که واقعاً API مدل زبانی را فراخوانی میکند احتمالاً کمتر از ۵٪ است. ۹۵٪ باقیمانده چطور؟
· بررسیهای امنیتی (۱۸ فایل فقط برای یک BashTool)
· سیستم مجوز (اجازه/رد/پرسش/عبور تصمیمگیری درجه دوم)
· مدیریت زمینه (فشردهسازی سه لایه + بازیابی حافظه هوش مصنوعی)
· بازیابی خطا (مدارشکن، Exponential Backoff، پایداری رونوشت)
· هماهنگی چند-عاملی (ارکستراسیون دستهای + ارتباط صندوق پستی)
· تعامل رابط کاربری (۱۴۰ کامپوننت React + پل IDE)
· بهینهسازی عملکرد (پایداری کش پرامپت + پیشواکشی موازی در هنگام شروع)
اگر در حال ساخت یک محصول عامل هوش مصنوعی هستید، اینها مشکلات واقعی هستند که باید حل کنید. مسئله این نیست که مدل شما چقدر باهوش است؛ مسئله این است که داربست شما چقدر قوی است.
فقط ساختن یک پرامپت خوب نیست. پرامپتهای Claude Code شامل موارد زیر هستند:
· اسمبل پویا ۷ لایه
· هر ابزار با یک دفترچه راهنمای کاربر مستقل همراه است
· مرزهای کش دقیقاً مشخص شدهاند
· نسخههای داخلی و خارجی مجموعههای دستورالعمل متفاوتی دارند
· ترتیب ابزار برای حفظ پایداری کش ثابت است
این مدیریت پرامپت مهندسی شده است، نه کار دستی.
هر وابستگی خارجی یک سیاست شکست مربوطه دارد:

۴۲ ابزار = سیستمعامل سیستم مجوز = مدیریت مجوز کاربر سیستم مهارت = پروتکل MCP اپ استور Protocol = درایور دستگاه دسته عامل = مدیریت فرآیند فشردهسازی زمینه = مدیریت حافظه پایداری رونوشت = سیستم فایل
این یک "چتبات به علاوه چند ابزار" نیست؛ این یک سیستمعامل با مدل زبانی در هسته آن است.
۵۱۰,۰۰۰ خط کد. ۱۹۰۳ فایل. ۱۸ فایل امن فقط برای یک ابزار Bash.
۹ لایه بررسی فقط برای اینکه هوش مصنوعی با خیال راحت به شما در تایپ یک دستور کمک کند.
این پاسخ آنتروپیک است: برای اینکه هوش مصنوعی واقعاً مفید باشد، نمیتوانید آن را در قفس حبس کنید یا اجازه دهید آزادانه بدود. شما باید یک چارچوب اعتماد کامل در اطراف آن بسازید.
و هزینه این سیستم اعتماد ۵۱۰,۰۰۰ خط کد است.
این محتوا صرفاً برای اطلاعرسانی عمومی ارائه شده است و بهمنزله مشاوره مالی، سرمایهگذاری، حقوقی یا مالیاتی تلقی نمیشود. هرگونه رویداد، جایزه، کمپین آنلاین یا اطلاعات مرتبط که در اینجا ذکر شده است، نباید بهعنوان توصیه، ترغیب یا دعوت به خرید، فروش، معامله یا هرگونه دادوستد دیگر داراییهای رمزارزی تلقی شود. داراییهای رمزارزی از نوسان بالایی برخوردار هستند و ممکن است منجر به زیان شوند. دسترسی به خدمات، محصولات و رویدادهای مرتبط با WEEX ممکن است بسته به منطقه جغرافیایی متفاوت باشد. اطمینان از اینکه استفاده شما از این خدمات با قوانین و مقررات محلی مطابقت دارد، بر عهده خود شماست.





























