IRCNF

۵ میلیون توسعه‌دهنده از Cursor استفاده می‌کنند؛ اینجا قابلیت‌های فنی آن است

اشتراک‌گذاری:
۵ میلیون توسعه‌دهنده از Cursor استفاده می‌کنند؛ اینجا قابلیت‌های فنی آن است

Cursor در اوایل ۲۰۲۵ از ۵ میلیون توسعه‌دهنده فعال ماهانه عبور کرد، در حالی که در ابتدای ۲۰۲۴ حدود ۵۰۰ هزار نفر بود. اکنون سریع‌ترین ابزار توسعه‌دهنده از زمان npm است. داستان رشد آن به طور گسترده پوشش داده شده — سری B به ارزش ۴۰۰ میلیون دلار با ارزش‌گذاری ۹.۹ میلیارد دلار در ژانویه ۲۰۲۵، پذیرش گسترده در شرکت‌هایی مانند Stripe، Shopify و Samsung. چیزی که کمتر شفاف توضیح داده شده، معماری فنی واقعی است که Cursor را از GitHub Copilot (با حدود ۱.۸ میلیون کاربر پولی)، JetBrains AI Assistant و Amazon Q متمایز می‌کند. این پست درباره کار فنی Cursor است، نه تجاری آن.

Codebase Indexing: پایه و اساس

معماری اصلی GitHub Copilot مبتنی بر context سند بود: مدل فایل فعلی، موقعیتカーソル و پنجره کوچکی از کد اطراف را می‌بیند. هیچ دانش ساختاری از پایگاه کد بزرگ‌تر ندارد. اولین ویژگی متمایز Cursor، codebase indexing بود — فرآیندی که هنگام باز کردن پروژه اجرا می‌شود و یک index برداری معنایی از هر فایل در مخزن تولید می‌کند.

فرآیند indexing از ترکیبی از AST parsing و تولید embedding استفاده می‌کند. کد در سطح تابع و کلاس chunk می‌شود (نه پنجره‌های بایتی دلخواه)، و هر chunk با استفاده از یک مدل embedding تخصصی کد، embedding می‌شود. Cursor از یک مدل embedding اختصاصی fine-tune شده روی کد استفاده می‌کند، نه یک مدل embedding متن عمومی. این embeddingها به صورت محلی در یک نمونه LevelDB درون دایرکتوری .cursor ذخیره می‌شوند و با استفاده از FAISS برای جستجوی نزدیک‌ترین همسایه index شده‌اند.

وقتی از Cursor سوالی می‌پرسید یا یک completion را فعال می‌کنید، query نیز embedding می‌شود و یک جستجوی معنایی ۲۰ تا ۴۰ chunk کد مرتبط از کل پایگاه کد را بازیابی می‌کند. این chunkها قبل از اینکه مدل درخواست شما را ببیند، به context window تزریق می‌شوند. این retrieval-augmented generation (RAG) است که مخصوص کد اعمال شده — و این چیزی است که به Cursor اجازه می‌دهد به سوالاتی مانند «سیستم احراز هویت در این کدبیس چگونه کار می‌کند؟» درست پاسخ دهد، در حالی که Copilot بر اساس داده‌های آموزشی توهم می‌زند.

Shadow Workspace

جالب‌ترین ویژگی معماری Cursor چیزی است که shadow workspace می‌نامد. وقتی از Cursor می‌خواهید تغییری اعمال کند، فقط tokens را به editor شما استریم نمی‌کند. یک نسخه مخفی درون حافظه از فایل شما باز می‌کند، تغییر پیشنهادی را اعمال می‌کند و قبل از دیدن نتیجه توسط شما، یک سری validation passes اجرا می‌کند.

validation passes شامل type checking تایپ‌اسکریپت (با استفاده از tsserver LSP)، حل وابستگی import (تأیید اینکه هر import جدیدی که مدل اضافه کرده واقعاً در گراف وابستگی شما وجود دارد) و بررسی syntax از طریق tree-sitter است. اگر هرکدام از این‌ها ناموفق باشد، control loop Cursor مدل را مجبور به بازبینی خروجی خود می‌کند — معمولاً ۱–۲ inference pass اضافی — قبل از نمایش نتیجه به شما.

این مکانیزم پشت نرخ توهم کمتر Cursor در تکمیل کد نسبت به خروجی خام مدل‌ها است. مدل همچنان توهم می‌زند؛ shadow workspace بخش قابل توجهی از توهم‌ها را قبل از رسیدن به صفحه شما می‌گیرد. در معیارهای داخلی Cursor (که در پست وبلاگ اکتبر ۲۰۲۴ افشا شد)، validation shadow workspace خروجی‌های کد از نظر syntax نامعتبر را ۶۷٪ و خروجی‌های حاوی type-error را ۴۴٪ نسبت به همان مدل بدون validation کاهش داد.

Speculative Edits و Apply Mode

ویژگی «Apply» در Cursor — جایی که یک تغییر را به زبان طبیعی توصیف می‌کنید و در چندین فایل اعمال می‌شود — از یک pipeline چندمرحله‌ای استفاده می‌کند. اول، مدل یک diff plan تولید می‌کند: یک لیست ساختاریافته از اینکه کدام فایل‌ها باید تغییر کنند و تغییر چیست، به صورت شبه کد. دوم، یک مدل جداگانه (کوچک‌تر و سریع‌تر) هر آیتم plan شبه کد را به یک diff کد واقعی تبدیل می‌کند. سوم، shadow workspace هر diff را قبل از مرحله stagging اعتبارسنجی می‌کند.

رویکرد دو مدلی مهم است چون diff generation و نوشتن کد وظایف شناختی متفاوتی هستند. یک مدل context بزرگ (Claude 3.5 Sonnet یا GPT-4o در سیستم routing Cursor) مرحله برنامه‌ریزی را انجام می‌دهد، جایی که درک کل context پایگاه کد حیاتی است. یک مدل کوچک‌تر و سریع‌تر (معمولاً یک نسخه fine-tune شده از DeepSeek Coder یا Code Llama) ترجمه مکانیکی از plan به کد را انجام می‌دهد، جایی که سرعت از درک عمیق context مهم‌تر است. تأخیر Cursor در عملیات Apply چندفایلی معمولاً ۳–۸ ثانیه است — رقابتی با تایپ دستی تغییرات برای هر چیزی طولانی‌تر از یک تابع واحد.

Model Routing و رابطه Cursor با آزمایشگاه‌های AI

Cursor مدل‌های بنیادی خود را آموزش نمی‌دهد. بسته به نوع task، درخواست‌ها را به Anthropic، OpenAI و واریانت‌های fine-tune شده خود هدایت می‌کند. منطق routing عمومی نیست، اما بر اساس تحلیل ترافیک شبکه منتشر شده توسط محققان مستقل در اواخر ۲۰۲۴، Cursor از Claude 3.5 Sonnet به عنوان مدل اصلی برای queries مکالمه‌ای و استدلال چندفایلی، GPT-4o برای تکمیل تب (جایی که آموزش روی کد مناسب‌تر است) و یک مدل کوچک اختصاصی fine-tune شده برای حلقه validation shadow workspace استفاده می‌کند.

مدل کسب‌وکار Cursor به این معناست که به این ارائه‌دهندگان per token پول می‌دهد. با ۵ میلیون کاربر فعال که روزانه چند صد completion انجام می‌دهند، هزینه محاسباتی قابل توجه است — که دلیل سرمایه‌گذاری ۴۰۰ میلیون دلاری را توضیح می‌دهد. این شرکت اشاره کرده که روی زیرساخت آموزشی خود کار می‌کند، اما این کار چند ساله است. فعلاً تمایز Cursor معماری است (indexing، shadow workspace، لایه routing) و نه کیفیت مدل.

Privacy Mode و استقرار سازمانی

Cursor یک Privacy Mode ارائه می‌دهد که جمع‌آوری داده‌های آموزشی از کدبیس را غیرفعال می‌کند. در این حالت، کد همچنان برای inference به APIهای ارائه‌دهنده AI ارسال می‌شود، اما Cursor ادعا می‌کند که جفت‌های request/response را ذخیره نمی‌کند. برای مشتریان سازمانی، یک گزینه self-hosted تمام inference را از طریق کلیدهای API خود مشتری و اختیاری از طریق یک مسیر شبکه خصوصی هدایت می‌کند.

رتبه سازمانی (۴۰ دلار/کاربر/ماه) شامل انطباق SOC 2 Type II، SSO از طریق Okta و Microsoft Entra، و لاگینگ حسابرسی است. این رتبه‌ای است که Stripe و Shopify استفاده می‌کنند. گواهی انطباق در Q3 ۲۰۲۴ تکمیل شد — قبل از آن، Cursor در سازمان‌هایی با الزامات حاکمیت داده سختگیرانه قابل استقرار گسترده نبود.

Cursor چه کارهایی را (هنوز) خوب انجام نمی‌دهد

Codebase indexing کرسور یک محدودیت سخت در حدود ۱۰۰٬۰۰۰ token از context indexed در هر query دارد — تقریباً ۷۵٬۰۰۰–۱۰۰٬۰۰۰ خط کد indexed در هر درخواست. برای monorepoهای بزرگ با میلیون‌ها خط، کد مرتبط ممکن است در chunkهای بازیابی شده نباشد و همان مشکلات توهم را ایجاد کند که ابزارهای ساده‌تر دارند. تیم مهندسی در چندین انجمن توسعه‌دهندگان از این به عنوان یک محدودیت شناخته شده صحبت کرده است.

همکاری بلادرنگ وجود ندارد. Cursor یک ویرایشگر تک‌کاربره است. تیم‌هایی که از آن استفاده می‌کنند به صورت موازی در نمونه‌های جداگانه کار می‌کنند که مشکلات هماهنگی روی فایل‌های مشترک ایجاد می‌کند — چیزی که یک setup سنتی Language Server Protocol به طور طبیعی حل می‌کند. JetBrains و VS Code هر دو پاسخ بهتری دارند. نقشه راه محصول Cursor به «ویژگی‌های مشارکتی» برای ۲۰۲۵-۲۰۲۶ بدون جزئیات اشاره کرده است.

نکات عملی

  • اگر codebase indexing را تنظیم نکرده‌اید: تنظیمات Cursor را باز کنید و مطمئن شوید «کدبیس ایندکسینگ» فعال است (به طور پیش‌فرض فعال است). وضعیت index را در Cursor > Settings > Features > Codebase Indexing بررسی کنید. مخازن بزرگ ممکن است در اولین بار ۵–۱۰ دقیقه برای ایندکس کامل نیاز داشته باشند.
  • برای تغییرات چندفایلی از حالت Composer استفاده کنید (نه Chat): حالت Composer pipeline کامل speculative edits را با validation shadow workspace فعال می‌کند. حالت Chat از یک رویکرد ساده تک‌پاس استفاده می‌کند. تفاوت کیفیت برای کارهای refactoring قابل توجه است.
  • در Privacy Mode، کد شما همچنان از دستگاه شما خارج می‌شود: به APIهای Anthropic و OpenAI می‌رود. اگر به inference واقعاً محلی نیاز دارید، مسیر self-hosted سازمانی Cursor از routing به نمونه‌های محلی Ollama پشتیبانی می‌کند — اما نیاز به رتبه سازمانی دارد.
  • برای monorepoهای بزرگ: با استفاده از @ mentions فایل‌های مرتبط را به صورت دستی به context اضافه کنید و فقط به جستجوی معنایی تکیه نکنید. RAG retrieval کامل نیست و نمایش صریح فایل‌های مناسب کیفیت خروجی را به طور قابل اندازه‌گیری بهبود می‌بخشد.
اشتراک‌گذاری:
۵ میلیون توسعه‌دهنده از Cursor استفاده می‌کنند؛ اینجا قابلیت‌های فنی آن است | IRCNF - Intelligent Reliable Custom Next-gen Frameworks