Přeskočit na obsah
cd /languages
  • Typovaná JVM
  • Programování
  • Podpora AST a symbolů

Scala v Maguyva: grafy kódu pro služby JVM a Spark

Maguyva podporuje Scalu s AST, symboly a grafem, takže AI agenti sledují traity, objekty, case třídy a typovaná volání v kódu JVM a Spark.

Kde Scala podráží povrchní AI nástroje

Ve Scale nese jedno jméno hodně. Trait, jeho doprovodný objekt a case třída mohou sdílet jeden pojem. Pattern matching váže nová jména uvnitř klauzulí case a metoda volaná bez příjemce uvnitř třídy je voláním na this. Agent, který čte jeden soubor po druhém, vidí jména, ale ne to, na co se rozlišují.

Maguyva z toho rozliší víc už při indexaci, takže se agent může zeptat, kdo volá metodu, a dostane odpověď, podle které může jednat.

Co Maguyva ve Scale extrahuje

Maguyva pokrývá soubory .scala a .sc. Třídy, objekty a traity se extrahují jako typy a preset functions v structural_search pokrývá deklarace a definice def i lambdy. Signatury zaznamenávají opakované (*) parametry a importy ztrácejí prefix _root_.

Relace volání zachovávají jména kvalifikovaná třídou a volání bez příjemce uvnitř třídy se rozliší na vlastní metodu této třídy. Typování příjemců sleduje parametry, parametry třídy, definice val a var, typované vzory a vzory case tříd v klauzulích case, návratové typy metod tříd, objektů a traitů, typové aliasy a klauzule extends. new na typu s velkým počátečním písmenem se počítá jako vytvoření instance.

Pro Scalu není žádný typ relace označen jako nepoužitelný, takže graf zaznamenává také dědičnost, přepisy, odkazy na typy, čtení a zápisy, tok řízení a hrany výjimek.

Ukázkové prompty pro agenty

  • „Kdo volá PaymentService.capture a z kterých rout?“ (find_symbol, pak dependency_search incoming)
  • „Které třídy a objekty rozšiřují EventHandler?“ (dependency_search)
  • „Vysleduj, jak se událost objednávky dostane k zápisu do hlavní knihy.“ (get_task_context)

Známá omezení

  • Asi 320 názvů ze standardní knihovny se z relací odfiltruje: operace nad kolekcemi jako map, flatMap a foldLeft a pomocné funkce z Option, Either, Try, Future a Predef. Volání na this nebo na hodnotě, jejíž typ se rozliší na některou z vašich tříd, se zachová, i když je jeho jméno na tomto seznamu. Pokud stále chybí nějaké volání, použijte text_pattern_search.
  • Krátké typové parametry jako A, F a CC a kořenové typy jako Any, Unit a Nothing se z odkazů na typy odfiltrují.

Další kroky

Připojte repozitář podle rychlého startu a pak si prohlédněte matici podpory na stránce kompatibility. U smíšených kódových základen JVM si přečtěte i průvodce jazykem Java a průvodce jazykem Kotlin.

Nejlépe se hodí pro

  • > Služby JVM psané ve Scale, kde traity, doprovodné objekty a case třídy rozkládají jeden pojem do mnoha souborů.
  • > Úlohy Spark a datového inženýrství, které musí agenti číst spolu se sdílenými knihovnami, které volají.
  • > Smíšené repozitáře Scaly a Javy, které musí agenti prohledávat jako jednu kódovou základnu.

Workflow agentů

  • > Najít všechna volání metody služby před změnou její signatury.
  • > Vypsat třídy a objekty, které rozšiřují trait, než do něj přibude abstraktní člen.
  • > Vysledovat, jak požadavek prochází od HTTP routy přes služby do datové vrstvy.

Podrobnosti enginu

  • > Podpora Scaly pokrývá `.scala` a `.sc`. Třídy, objekty a traity jsou typy a volání bez příjemce uvnitř třídy se rozliší na její vlastní metody.
  • > Typování příjemců sleduje parametry, parametry třídy, definice `val` a `var`, vzory `case`, návratové typy metod a klauzule `extends`.
  • > Volání zachovávají jména kvalifikovaná třídou, `new` se počítá jako vytvoření instance a asi 320 názvů ze standardní knihovny se z relací odfiltruje.

Užitečné vstupní body MCP

  • find_symbol

    Použijte ho pro trait, objekt nebo metodu služby, když potřebujete definici a odkazy.

  • dependency_search

    Použijte incoming procházení na traitu nebo metodě, abyste před změnou signatury viděli implementace a volající.

  • get_task_context

    Použijte ho pro prompty jako „vysleduj, jak se událost objednávky dostane k zápisu do hlavní knihy“.