Hoppa till innehåll
cd /languages
  • Dagens JVM
  • Programmering
  • Stöd för AST och symboler

Kotlin i Maguyva: kodgrafer för Android och JVM

Maguyva stöder Kotlin med AST, symboler och graf, så att AI-agenter kan följa klasser, extension functions och coroutines i Android- och JVM-kod.

Där Kotlin får ytliga AI-verktyg att snubbla

Kotlin är kortfattat eftersom det döljer kopplingar. apply, let, also, run och with ändrar vad this och it betyder. Extension functions lägger till beteende på typer som definieras någon annanstans. Coroutines flyttar arbete mellan launch, async och withContext. En agent som läser en fil i taget ser anropen men inte mottagarna bakom dem.

Maguyva löser mer av den strukturen redan vid indexeringen, så att en agent kan fråga vem som anropar en funktion och få det verkliga svaret.

Vad Maguyva extraherar i Kotlin

Maguyva täcker .kt och .kts. Funktioner, klasser, objekt och companion objects extraheras, och funktionssignaturer registrerar extension receivers, parameternamn, standardvärden och vararg-parametrar.

Anropsrelationer behåller klasskvalificerade namn, så OrderRepository.save hålls isär från en annan save. Mottagartypningen följer this inuti apply och run, it inuti let och also samt argumentet till with, så att anrop i scope functions löses till rätt typ. Coroutine-byggare och Flow-operatorer (launch, async, withContext, coroutineScope, supervisorScope, flow, emit, delay, Channel) behålls avsiktligt i grafen.

Grafen registrerar också arv, gränssnittsimplementation, överskrivningar, instansiering, annoteringar, typreferenser, läsningar och skrivningar samt kanter för att kasta och fånga undantag.

Exempel på prompter för agenter

  • “Vem anropar CheckoutUseCase.invoke, och från vilka ViewModels?” (find_symbol, sedan dependency_search incoming)
  • “Spåra synkflödet från SyncWorker till nätverksklienten.” (get_task_context)
  • “Vilka klasser implementerar PaymentGateway?” (dependency_search)

Kända begränsningar

  • Omkring 250 anrop i Kotlins standardbibliotek och plattform filtreras bort ur relationerna, så hjälpfunktioner som listOf, map, filter och println är inte kanter i grafen. Använd text_pattern_search för dem.

Nästa steg

Anslut ett repo med snabbstarten och kontrollera sedan stödmatrisen på kompatibilitetssidan. För blandade kodbaser, läs även guiden för Java.

Bäst lämpad för

  • > Android-team med stora flermodulsappar där ViewModels, repositories och use cases anropar varandra över moduler.
  • > Kotlin på serversidan och Kotlin/JVM-tjänster som blandar Kotlin med äldre Java-kod.
  • > Gradle-byggen skrivna i Kotlin script (`.kts`) som agenter behöver läsa tillsammans med applikationskoden.

Agentarbetsflöden

  • > Hitta alla som anropar en repository- eller use case-klass innan dess API ändras.
  • > Spåra ett coroutine-flöde från en ViewModels `launch` via `withContext` in i datalagret.
  • > Kartlägga vilka klasser som implementerar ett gränssnitt eller skriver över en basmetod före en refaktorering.

Motordetaljer

  • > Kotlin-stödet täcker `.kt` och `.kts`. Signaturer registrerar extension receivers, parameternamn, standardvärden och `vararg`-parametrar.
  • > Mottagartypningen följer `this` i `apply` och `run`, `it` i `let` och `also` samt argumentet till `with`, och anrop behåller klasskvalificerade namn.
  • > Coroutine-byggare och Flow-operatorer som `launch`, `withContext` och `flow` stannar i grafen, medan omkring 250 anrop i standardbiblioteket filtreras bort.

Användbara MCP-ingångar

  • find_symbol

    Använd det för en klass, ett use case eller en extension function när du behöver definitionen och referenserna.

  • dependency_search

    Använd incoming-traversering på ett repository eller gränssnitt före en API-ändring för att se anropare och implementationer.

  • get_task_context

    Använd det för prompter som "spåra synkflödet från `SyncWorker` till nätverksklienten".