İçeriğe atla

Cursor kullanıcıları için

Cursor dosyayı düzenler.
Maguyva reponun tamamını görür.

Cursor, editördür. Bir monorepo'da ajanın yine de hangi dosyanın önemli olduğuna dair bir haritaya ihtiyacı vardır. Maguyva kod tabanınızı dizinler ve MCP üzerinden (anlamsal, AST, grafik ve metin) geri sunar; böylece “kimlik doğrulama nerede yapılıyor” sorusu yedi test taslağı değil, gerçek kimlik doğrulama akışını döndürür.

Free katmanı: 3 repo, 50K'ya kadar indekslenmiş repo satırı, kart gerektirmez.

Cursor işaret ettiğiniz yeri düzenler. Maguyva ajana hangi dosyayı işaret edeceğini söyler.

Her katman ne yapar

Dört parça. Her birinin bir işi var.

// editör

Cursor

Gerçekten kod yazdığınız yer.

// manuel bağlam

@ ile anma + sabitleme

Repo büyüyene kadar manuel bağlam kazanır.

// kod tabanı

Maguyva

MCP üzerinden otomatik kod tabanı bilgileri.

Cursor editördür. Onu kullanın.

Sorun IDE değil. Cursor’un tab tamamlama, AI ile düzenleme, çoklu dosya düzenlemeleri ve .cursor/rules özellikleri mükemmel ve bunları zaten şunlar için kullanıyorsunuz:

  • Açık dosyada satır içi öneriler ve AI ile düzenleme.
  • Değişiklik yerel olduğunda çoklu dosya düzenlemeleri.
  • Repo kuralları ve stil sınırları için .cursor/rules.
  • Belirli bir dosyayı bağlama çekmek için @-anmaları.

Bunu yapmaya devam edin. Hiçbiri ortadan kalkmıyor.

Ancak gerçek bir monorepo’da (çalışma alanı bağımlılıklarıyla TypeScript, Python servisleri, karışık paketler) ilgili dosya henüz radarınızda değilken ajan bağlamı bozulur.

Zaten denediğiniz manuel çözümler ve nerede bozuldukları

Dört manuel çözüm, başarısızlık modlarıyla eşleştirilmiş. Sol = bugün yaptığınız. Sağ = nerede bozulduğu.

// the fix

// dosyaları sabitleyin

Önemli olduğunu düşündüğünüz üç dosyayı @ ile anıyorsunuz. Cursor bunların içinde temiz bir şekilde düzenleme yapıyor.

// where it breaks

// sabitleme bir tahmindir

Sabitleme, hangi dosyaların dahil olduğunu zaten biliyorsanız işe yarar. Bağlam araçlarının bütün amacı, sabitlemeyi bilmediğiniz dosyaları ortaya çıkarmaktır.

// the fix

// kod parçalarını yapıştırın

Ajana yeterli bağlam vermek için başka bir paketten 200 satırı sohbete yapıştırıyorsunuz.

// where it breaks

// yapıştırılan kod eskir

Sabah 9’da yapıştırdığınız kod parçası, ekip arkadaşınızın saat 11’de yaptığı rebase’i yansıtmaz. Ajan, paketin hayalet bir sürümüne karşı düzenleme yapıyordur.

// the fix

// bir bağlam dokümanı yazın

Bir .cursor/rules dosyası ya da bir mimari markdown’u yazıyorsunuz. Bugün doğru.

// where it breaks

// dokümanlar koddan daha hızlı savrulur

Elle yazdığınız her şey savrulur. Kod, gerçeğin kaynağıdır. Kuyruk katmanını açıklayan bir doküman bir hafta doğrudur, sonra sonsuza dek yanlış kalır.

// the fix

// kural dosyalarını koruyun

Adlandırma, lint ve derleme komutları için .cursor/rules ekliyorsunuz. Davranış için harika.

// where it breaks

// kurallar ≠ dizin

.cursor/rules, “commit’lerden önce her zaman pnpm tsc -b çalıştır” gibi bir kural için doğru yerdir. Monorepo’nuzdaki her sembolün, dosyanın ve çağrı noktasının sorgulanabilir bir dizini değildir.

Maguyva altındaki katmandır

Cursor’un yerini almaz. Cursor’un MCP desteğine takılan repo bağlamı katmanıdır.

  • Anlamsal + AST + grafik + metin anlama, yapıya, bağımlılığa veya harfi harfine göre arayın. Her sonuç bir dosya yolu ve satır numarası döndürür.
  • Varsayılan olarak paketler arası yalnızca şu anda açık olan pakette değil, monorepo’daki her pakette çağrı noktaları ve import edenler.
  • Dal farkında Maguyva, Cursor’un düzenlediği kod sürümünü görür.
  • Rakip değil, tamamlayıcı .cursor/rules işini yapmaya devam eder. @-anmaları işlerini yapmaya devam eder. Maguyva, onların doldurmadığı boşluğu doldurur.

Cursor işaret ettiğiniz dosyayı düzenler.

Maguyva ajana hangi dosyayı işaret edeceğini söyler.

Üç monorepo iş akışı

Paketler arası, diller arası. Cursor’un grep’ine değil, gerçek çağrı grafiğine temellendirilmiş.

// workflow 01

Hiçbir şey sabitlemeden paketler arasında kimlik doğrulama akışını bulun

cursor> where does authentication happen in this monorepo?

graph::query("authentication flow")
  packages/web/src/auth/session.ts:42       middleware
  packages/api/src/auth/jwt.ts:88           token verify
  packages/shared/src/auth/types.ts:12      AuthContext
  packages/admin/src/auth/admin-only.ts:31  rbac gate

 4 entry points across 4 packages, ranked by call-site density.
[exit 0]

Bir dosya sabitlemediniz. Bir kod parçası yapıştırmadınız. Ajan, önemli olan dört dosyaya doğru sıralamayla sahip ve temellendirilmiş bir düzenleme yapabilir.

// workflow 02

Test taslağını değil, gerçek uygulamayı bulun

cursor> how does normalizePhoneNumber handle E.164?

semantic::query("normalize phone E.164")
  packages/shared/util/phone.ts:88     normalizePhoneNumber()  ← real impl
  packages/api/test/phone.spec.ts:14   jest.mock(...)          ← stub
[exit 0]

İsimler yalan söyler. Mock’lar gerçek kodu gölgeler. Maguyva, her pakette gerçek uygulamayı test mock’unun üzerinde sıralar.

// workflow 03

Refactor yapmadan önce etki yarıçapını kontrol edin

cursor> what calls QueueDispatcher.publish across the monorepo?

graph::callers(QueueDispatcher.publish)
  3 in packages/billing/*
  1 in packages/audit/*
  1 in packages/notifications/*
  1 in services/python-worker/*  ← cross-language via gRPC stub
[exit 0]

Paketler arası, ve çoklu dilli bir reponuz varsa diller arası olarak, çağrı noktaları satır içinde ortaya çıkar. Diff, Cursor’un grep’ine değil, gerçek import edenlere temellendirilir.

Cursor ile kurulum

Üç adım. Free katmanı: 3 repo, 50K'ya kadar indekslenmiş repo satırı, kart gerektirmez.

  1. // step 01

    maguyva.ai’de bir repo dizinleyin

    Bağlam sıkıntısını en çok hissettiğiniz monorepo’yu seçin.

  2. // step 02

    Cursor ayarlarında Maguyva’yı bir MCP sunucusu olarak ekleyin

    // ~/.cursor/mcp.json
    {
      "mcpServers": {
        "maguyva": {
          "url": "https://maguyva.tools/mcp",
          "headers": {
            "Authorization": "Bearer <your-key>"
          }
        }
      }
    }
  3. // step 03

    Yanıtını zaten bildiğiniz bir soru sorun

    Tüm şirketinizle başlamayın. Bir repo ve doğrulanabilir bir soruyla başlayın, örneğin “paketler arasında formatInvoice’u ne çağırıyor?” gibi.