Hopp til innhold
cd /languages
  • Typet JVM
  • Programmering
  • AST- og symbolstøtte

Scala i Maguyva: kodegrafer for JVM-tjenester og Spark

Maguyva støtter Scala med AST, symboler og graf, slik at AI-agenter kan følge traits, objects, case classes og typede kall i JVM- og Spark-kode.

Der Scala får overfladiske AI-verktøy til å snuble

I Scala bærer ett navn mye. En trait, dens companion object og en case class kan dele ett begrep. Mønstergjenkjenning binder nye navn inne i case-ledd, og en metode som kalles uten mottaker inne i en klasse, er et kall på this. En agent som leser én fil om gangen, ser navnene, men ikke hva de peker på.

Maguyva løser opp mer av dette allerede ved indeksering, slik at en agent kan spørre hvem som kaller en metode og få et svar den kan handle på.

Hva Maguyva henter ut i Scala

Maguyva dekker .scala- og .sc-filer. Klasser, objects og traits hentes ut som typer, og presetet functions i structural_search dekker def-deklarasjoner, -definisjoner og lambdaer. Signaturer registrerer gjentatte (*) parametere, og importer mister prefikset _root_.

Kallrelasjoner beholder klassekvalifiserte navn, og et kall uten mottaker inne i en klasse slås opp til klassens egen metode. Mottakertypingen følger parametere, klasseparametere, val- og var-definisjoner, typede mønstre og case class-mønstre i case-ledd, returtyper for metoder på klasser, objects og traits, typealiaser og extends-ledd. new på en type med stor forbokstav teller som instansiering.

For Scala er ingen relasjonstype merket som ikke relevant, så grafen registrerer også arv, overrides, typereferanser, lesinger og skrivinger, kontrollflyt og unntakskanter.

Eksempler på prompter for agenter

  • «Hvem kaller PaymentService.capture, og fra hvilke ruter?» (find_symbol, deretter dependency_search incoming)
  • «Hvilke klasser og objects utvider EventHandler?» (dependency_search)
  • «Spor hvordan en ordrehendelse når hovedbokskriveren.» (get_task_context)

Kjente begrensninger

  • Rundt 320 navn fra standardbiblioteket filtreres bort fra relasjonene: samlingsoperasjoner som map, flatMap og foldLeft, pluss hjelpere fra Option, Either, Try, Future og Predef. Et kall på this, eller på en verdi med en type som slås opp til en av dine klasser, beholdes selv om navnet står på listen. Bruk text_pattern_search hvis en kaller fortsatt ser ut til å mangle.
  • Korte typeparametere som A, F og CC, og rottyper som Any, Unit og Nothing, filtreres bort fra typereferansene.

Neste steg

Koble til et repositorium med hurtigstarten, og se deretter støttematrisen på kompatibilitetssiden. For blandede JVM-kodebaser bør du også lese veiledningen for Java og veiledningen for Kotlin.

Best egnet

  • > JVM-tjenester skrevet i Scala, der traits, companion objects og case classes sprer ett begrep over mange filer.
  • > Spark- og data engineering-jobber som agenter må lese sammen med de delte bibliotekene de kaller.
  • > Blandede Scala- og Java-repositorier som agenter må søke i som én kodebase.

Agent-arbeidsflyter

  • > Finne alle kallere av en tjenestemetode før signaturen endres.
  • > Liste hvilke klasser og objects som utvider en trait før et abstrakt medlem legges til.
  • > Spore hvordan en forespørsel går fra en HTTP-rute via tjenester til datalaget.

Motordetaljer

  • > Scala-støtten dekker `.scala` og `.sc`. Klasser, objects og traits er typer, og kall uten mottaker inne i en klasse slås opp til klassens egne metoder.
  • > Mottakertypingen følger parametere, klasseparametere, `val`- og `var`-definisjoner, `case`-mønstre, metoders returtyper og `extends`-ledd.
  • > Kall beholder klassekvalifiserte navn, `new` teller som instansiering, og rundt 320 navn fra standardbiblioteket filtreres bort fra relasjonene.

Nyttige MCP-inngangspunkter

  • find_symbol

    Bruk det for en trait, et object eller en tjenestemetode når du trenger definisjonen og referansene.

  • dependency_search

    Bruk incoming-traversering på en trait eller metode for å se implementasjoner og kallere før en signaturendring.

  • get_task_context

    Bruk det for prompter som «spor hvordan en ordrehendelse når hovedbokskriveren».