Engineering

Tek Soru, Dört Dil: Fantom MCP Server ile Yığın Boyu Kod Zekâsı

Bir Vue bileşenindeki açılır menü, bir Fantom weblet'i, UDP üzerinden bir SOX komutu ve bir Sedona denetleyicisi. Bunlar tek bir özellik ve dört dil — ve şimdiye kadar dört ayrı arama.

Alper Üzmezler· Sep 16, 2026 · 12 dk okuma

İşte bir kontrol mühendisinin gerçekten sorduğu bir soru:

"Web Editor'de tuvale bir bileşen sürükleyip kaydete bastığımda, kabloya çıkan şey tam olarak ne oluyor?"

Tamamen makul bir soru. Aynı zamanda, çoğu kod tabanında iki saatlik bir arkeoloji seansı — çünkü yanıtlamak dört dili, üç çalışma zamanını ve bir ağ protokolünü geçmek anlamına geliyor ve hiçbir arama aracı bunların hepsini birden göremiyor.

Fantom MCP Server tam da bu soru için inşa edildi.

Sorunun geçtiği yığın

Sandstar Web Editor, Sedona Framework için görsel bir programlama ortamıdır. Bileşenleri tuvale sürükler, birbirine bağlar ve canlı denetleyicilere dağıtırsınız. Alt katmanda, tek bir kullanıcı hareketi gerçekten heterojen bir yığının içinden geçer:

Sandstar Web Editor tuvali Rete.js düğüm grafiği · PrimeVue bileşenleri .vue .ts Fantom pod (sweExt) uygulamayı sunar · SkySpark görünümü + weblet .fan Sandstar Web Socket · port 7070 JSON girer · 17 SOX komut tipi çıkar router DASP / UDP üzerinden SOX okumalar · yazmalar · abonelikler · dosya aktarımı Sedona denetleyicisi canlı donanım tek soru

Dört dil, tek bir özellik. grep hepsinde sox dizesini bulabilir. Söyleyemeyeceği şey ise, Fantom weblet'indeki writeComp işleyicisinin Vue store'unun çağırdığı şey olduğu ya da imzasını değiştirmenin üç katman ötedeki bir abonelik yolunu bozacağıdır.

Tek indekste yirmi üç dil

Fantom MCP Server'ın dil kaydı 23 dili kapsıyor:

axon · c · cpp · csharp · css · dart · fantom · go · html · java · javascript · json · kotlin · php · polymer · python · ruby · rust · scala · swift · typescript · vue · xeto

axon fantom xeto vue typescript javascript html css java kotlin scala csharp python ruby php go rust swift dart c cpp polymer json vue typescript fantom xeto Tek indeks. Web Editor sorusu bunlardan dördüne aynı anda dokunuyor. Fantom, Axon ve Xeto için özel olarak yazılmış tree-sitter gramerleri var.

Bu gramerlerin üçü — Fantom, Axon ve Xeto — bu proje için yazıldı, çünkü hiçbiri mevcut değildi. Bu, Axon MCP Server'da önemli olduğu nedenle önemli: blok ortasında biten bir parça, hiçbir anlam taşımayan bir parçadır.

Bir değil, üç indeks

Yapısal bir soruyu yanıtlamak için tek başına anlamsal arama yeterli değil. Fantom MCP Server üç depoyu birlikte kullanır:

  • LanceDB vektörleri bir ANN indeksinin arkasında tutar. Önceki sürümler her sorguda tam tablo taraması yapıyordu; yaklaşık indeksi oluşturmak, geri getirmeyi "fark edilir" düzeyden "anında" düzeye taşıyan şey oldu.
  • LadybugDB (Kuzu) gerçek çağrı grafiğini tutar — düğümler ve kenarlar, kalıcı olarak saklanır. getCallers, getCallees, getCodeImpact ve getCodeNeighbors grafik sorgularıdır; her istekte yeniden çalıştırılan grep geçişleri değil.
  • FlexSearch bir anahtar kelime indeksi tutar, çünkü bazen tanımlayıcıyı gerçekten biliyorsunuzdur.

Vektör ve anahtar kelime taraflarından gelen sonuçlar karşılıklı sıra füzyonu (reciprocal rank fusion) ile birleştirilir, ardından isteğe bağlı olarak bir cross-encoder veya bir OpenRouter yeniden sıralayıcısı tarafından yeniden sıralanır. Bunlardan hangisinin, nerede çalışacağı bir yönlendirme kararıdır — kendi yazısında ele alındı.

Pratikte bu nasıl görünüyor

askCodebase, indeks üzerinde bir geri getirme döngüsü çalıştırır ve kaynak gösteren bir yanıt üretir — asıl mesele de bu kaynak göstermedir. Diller arası bir soru için yanıtın faydalı biçimi, "işte bir paragraf"tan çok "işte dört dilde, çağrı sırasına göre dört fonksiyon"dur.

Örnekleyici — aşağıdaki, yığın boyu bir yanıtın biçimidir; belirli bir çalıştırmanın dökümü değildir:

  • .ts içinde bir JSON mesajı gönderen bir Vue store eylemi
  • onu alan .fan içindeki weblet işleyicisi
  • o mesajı 17 SOX komut tipinden birine eşleyen yönlendirici kaydı
  • DASP/UDP üzerinden kabloya çıkan bileşen yazma yolu

Ardından bunlardan herhangi biri için getCodeImpact sorabilir ve değiştirdiğinizde başka nelerin hareket edeceğini öğrenebilirsiniz. Kalıcı bir grafik olmadan gerçekten zor olan sorgu budur ve öğleden sonranızı kurtaran da odur.

Kodun neden böyle olduğunu sormak

Yapı, "ne neyi çağırıyor" sorusunu yanıtlar. İkinci bir araç ailesi ise "peki neden böyle" sorusunu yanıtlar:

  • whatChangedRecently — bu projede son zamanlarda ne değişti
  • getSymbolHistory — bir fonksiyon nasıl evrildi
  • explainSymbolChange — belirli bir değişiklik ne yaptı
  • diffIndexRuns — indeksin kendisi iki çalıştırma arasında neyi farklı gördü

Yıllar boyunca sürdürülen ve entegratörler arasında el değiştiren bir kod tabanı için bu, çoğu zaman anlamsal aramadan daha değerlidir. Kod okunabilir. Giden son mühendisle birlikte kaybolan şey gerekçelendirmedir.

Ve hâlâ göçü de yapıyor

SkySpark 4.0 eklenti biçimini değiştirdi. migrateSkySpark4x, using ifadelerini yeniden yazar, Axon dizelerini dönüştürür, Xeto dosyalarını (lib.trio, funcs.xeto, lib.xeto) üretir, Fantom derleyicisiyle doğrular ve giriş sırasında bir Git yedeği etiketler. commitMigration bunu tamamlar; rollbackMigration ise tek bir çağrıyla geri alır.

Toplamda 41 MCP aracı: dokümantasyon araması, anlamsal kod araması, çağrı grafiği analizi, geçmiş, üretim ve göç boyunca.

Dürüst özet

Fantom MCP Server kod tabanınızı basitleştirmez. Web Editor yine Fantom ile konuşan Vue, UDP üzerinden SOX ile konuşan Fantom olacak ve yaptığı iş için doğru mimari de budur.

Değişen şey, bu katmanlar arasındaki sınırların bir arama aracı için duvar olmaktan çıkmasıdır. Bir kez sorulan tek bir soru dördünü birden geçer — ve fonksiyonları, sırasıyla, hangi dilde yazılmış olurlarsa olsunlar geri getirir.


Fantom MCP Server kaynağı github.com/Project-SandStar/FantomMcpServer adresinde erişilebilir durumdadır. Ayrıca proje sayfasına ve Sandstar Web Editor sayfasına bakın.