Spring til indhold
cd /languages
  • Moderne JVM
  • Programmering
  • AST- og symbolunderstøttelse

Kotlin i Maguyva: kodegrafer til Android og JVM

Maguyva understøtter Kotlin med AST, symboler og graf, så AI-agenter kan følge klasser, extension functions og coroutines i Android- og JVM-kode.

Hvor Kotlin får overfladiske AI-værktøjer til at snuble

Kotlin er kortfattet, fordi det skjuler forbindelser. apply, let, also, run og with ændrer, hvad this og it betyder. Extension functions tilføjer adfærd til typer, der er defineret et andet sted. Coroutines flytter arbejde mellem launch, async og withContext. En agent, der læser én fil ad gangen, ser kaldene, men ikke modtagerne bag dem.

Maguyva løser mere af den struktur allerede ved indekseringen, så en agent kan spørge, hvem der kalder en funktion, og få det rigtige svar.

Hvad Maguyva udtrækker i Kotlin

Maguyva dækker .kt og .kts. Funktioner, klasser, objekter og companion objects udtrækkes, og funktionssignaturer registrerer extension receivers, parameternavne, standardværdier og vararg-parametre.

Kaldrelationer bevarer klassekvalificerede navne, så OrderRepository.save holdes adskilt fra en anden save. Modtagertypningen følger this inde i apply og run, it inde i let og also samt argumentet til with, så kald i scope functions opløses til den rigtige type. Coroutine-buildere og Flow-operatorer (launch, async, withContext, coroutineScope, supervisorScope, flow, emit, delay, Channel) bevares med vilje i grafen.

Grafen registrerer også nedarvning, interfaceimplementering, overskrivninger, instansiering, annotationer, typereferencer, læsninger og skrivninger samt kanter for at kaste og fange undtagelser.

Eksempler på prompts til agenter

  • “Hvem kalder CheckoutUseCase.invoke, og fra hvilke ViewModels?” (find_symbol, derefter dependency_search incoming)
  • “Spor synkroniseringsflowet fra SyncWorker til netværksklienten.” (get_task_context)
  • “Hvilke klasser implementerer PaymentGateway?” (dependency_search)

Kendte begrænsninger

  • Omkring 250 kald i Kotlins standardbibliotek og platform filtreres fra relationerne, så hjælpefunktioner som listOf, map, filter og println er ikke kanter i grafen. Brug text_pattern_search til dem.

Næste skridt

Tilslut et repository med hurtigstarten, og se derefter understøttelsesmatricen på kompatibilitetssiden. Ved blandede kodebaser kan du også læse guiden til Java.

Bedst egnet til

  • > Android-teams med store multimodul-apps, hvor ViewModels, repositories og use cases kalder hinanden på tværs af moduler.
  • > Kotlin på serversiden og Kotlin/JVM-tjenester, der blander Kotlin med ældre Java-kode.
  • > Gradle-builds skrevet i Kotlin script (`.kts`), som agenter skal læse sammen med applikationskoden.

Agent-arbejdsgange

  • > Finde alle, der kalder en repository- eller use case-klasse, før dens API ændres.
  • > Spore et coroutine-flow fra en ViewModels `launch` via `withContext` ind i datalaget.
  • > Kortlægge, hvilke klasser der implementerer et interface eller overskriver en basismetode, før en refaktorering.

Motordetaljer

  • > Kotlin-understøttelsen dækker `.kt` og `.kts`. Signaturer registrerer extension receivers, parameternavne, standardværdier og `vararg`-parametre.
  • > Modtagertypningen følger `this` i `apply` og `run`, `it` i `let` og `also` samt argumentet til `with`, og kald bevarer klassekvalificerede navne.
  • > Coroutine-buildere og Flow-operatorer som `launch`, `withContext` og `flow` bliver i grafen, mens omkring 250 kald i standardbiblioteket filtreres fra.

Nyttige MCP-indgange

  • find_symbol

    Brug det til en klasse, en use case eller en extension function, når du har brug for definitionen og referencerne.

  • dependency_search

    Brug incoming-gennemløb på et repository eller interface før en API-ændring for at se kaldere og implementeringer.

  • get_task_context

    Brug det til prompts som "spor synkroniseringsflowet fra `SyncWorker` til netværksklienten".