İçeriğe atla

Windsurf kullanıcıları için

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

Windsurf, editördür ve Cascade ajandı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.

Windsurf işaret ettiğiniz yeri düzenler. Maguyva Cascade’e hangi dosyayı işaret edeceğini söyler.

Her katman ne yapar

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

// editör

Windsurf

Sizin ve Cascade’in gerçekten çalıştığınız yer.

// manuel bağlam

@ ile anma + .windsurfrules

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

// kod tabanı

Maguyva

MCP üzerinden otomatik kod tabanı bilgileri.

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

Sorun IDE değil. Cascade, tab tamamlama, çoklu dosya düzenlemeleri ve .windsurfrules mükemmel ve bunları zaten şunlar için kullanıyorsunuz:

  • Açık dosyada satır içi öneriler ve Cascade düzenlemeleri.
  • Değişiklik yerel olduğunda çoklu dosya düzenlemeleri.
  • Repo kuralları ve stil sınırları için .windsurfrules.
  • 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 Cascade’in radarında 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

// dosyalardan bahsedin

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

// where it breaks

// bahsetmek bir tahmindir

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

// the fix

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

Cascade’e yeterli bağlam vermek için başka bir paketten 200 satırı 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. Cascade, paketin hayalet bir sürümüne karşı düzenleme yapıyordur.

// the fix

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

Bir .windsurfrules 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 .windsurfrules ekliyorsunuz. Davranış için harika.

// where it breaks

// kurallar ≠ dizin

.windsurfrules, “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

Windsurf’ün yerini almaz. Cascade’in 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 Cascade’in açık olduğu pakette değil, monorepo’daki her pakette çağrı noktaları ve import edenler.
  • Dal farkında Maguyva, Cascade’in düzenlediği kod sürümünü görür.
  • Rakip değil, tamamlayıcı .windsurfrules işini yapmaya devam eder. @-anmaları kendi işlerini yapmaya devam eder. Maguyva, onların doldurmadığı boşluğu doldurur.

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

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

Üç monorepo iş akışı

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

// workflow 01

Hiçbir şeyden bahsetmeden paketler arasında kimlik doğrulama akışını bulun

cascade> 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 dosyadan bahsetmediniz. Bir kod parçası yapıştırmadınız. Cascade, ö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

cascade> 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

cascade> 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, Cascade’in grep’ine değil, gerçek import edenlere temellendirilir.

Windsurf 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

    Windsurf’te Maguyva’yı bir MCP sunucusu olarak ekleyin

    // ~/.codeium/windsurf/mcp_config.json
    {
      "mcpServers": {
        "maguyva": {
          "serverUrl": "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.