// editör
Devin Desktop
Sizin ve Devin Local’in gerçekten çalıştığınız yer.
Devin Desktop kullanıcıları için
Devin Desktop (Windsurf IDE'si), editördür ve Devin Local 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, graf 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 dizinlenmiş repo satırı, kart gerektirmez.
Devin Desktop işaret ettiğiniz yeri düzenler. Maguyva Devin Local’e hangi dosyayı işaret edeceğini söyler. Dört parça. Her birinin bir işi var.
// editör
Sizin ve Devin Local’in gerçekten çalıştığınız yer.
// manuel bağlam
Repo büyüyene kadar manuel bağlam kazanır.
// kod tabanı
MCP üzerinden otomatik kod tabanı bilgileri.
// kim ödüyor
Ajanlar koltuk için ödemez. Fiyatlandırmayı görün
Sorun IDE değil. Devin Local, tab tamamlama, çoklu dosya düzenlemeleri ve .devin/rules/ mükemmel ve bunları zaten şunlar için kullanıyorsunuz:
.devin/rules/.@-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 Devin Local’in radarında değilken ajan bağlamı bozulur.
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
Önemli olduğunu düşündüğünüz üç dosyayı @ ile anıyorsunuz. Devin Local bunların içinde temiz bir şekilde düzenleme yapıyor.
// where it breaks
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
Devin Local’e yeterli bağlam vermek için başka bir paketten 200 satırı yapıştırıyorsunuz.
// where it breaks
Sabah 9’da yapıştırdığınız kod parçası, ekip arkadaşınızın saat 11’de yaptığı rebase’i yansıtmaz. Devin Local, paketin hayalet bir sürümüne karşı düzenleme yapıyordur.
// the fix
Bir .devin/rules/ dosyası ya da bir mimari markdown’u yazıyorsunuz. Bugün doğru.
// where it breaks
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
Adlandırma, lint ve derleme komutları için .devin/rules/ ekliyorsunuz. Davranış için harika.
// where it breaks
.devin/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.
Devin Desktop’ün yerini almaz. Devin Local’in MCP desteğine takılan repo bağlamı katmanıdır.
.devin/rules/ işini yapmaya devam eder. @-anmaları kendi işlerini yapmaya devam eder. Maguyva, onların doldurmadığı boşluğu doldurur. Devin Local işaret ettiğiniz dosyayı düzenler.
Maguyva ajana hangi dosyayı işaret edeceğini söyler.
Paketler arası, diller arası. Devin Local’in grep’ine değil, gerçek çağrı grafına temellendirilmiş.
// workflow 01
devin> Bu monorepo'da kimlik doğrulama nerede yapılıyor? 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 pakette 4 giriş noktası, çağrı noktası yoğunluğuna göre sıralandı. [exit 0]
Bir dosyadan bahsetmediniz. Bir kod parçası yapıştırmadınız. Devin Local, önemli olan dört dosyaya doğru sıralamayla sahip ve temellendirilmiş bir düzenleme yapabilir.
// workflow 02
devin> normalizePhoneNumber, E.164 biçimini nasıl işliyor? 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
devin> Monorepo genelinde QueueDispatcher.publish metodunu ne çağırıyor? 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, Devin Local’in grep’ine değil, gerçek import edenlere temellendirilir.
Üç adım. Free katmanı: 3 repo, 50K'ya kadar dizinlenmiş repo satırı, kart gerektirmez.
// step 01
Bağlam sıkıntısını en çok hissettiğiniz monorepo’yu seçin.
// step 02
~/.config/devin/mcp_config.json
{
"mcpServers": {
"maguyva": {
"url": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer ${env:MAGUYVA_API_KEY}"
}
}
}
} // step 03
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.