Lompat ke konten
cd /languages
  • JVM masa kini
  • Pemrograman
  • Dukungan AST dan simbol

Kotlin di Maguyva: graf kode untuk Android dan JVM

Maguyva mendukung Kotlin dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri kelas, fungsi ekstensi, dan coroutine dalam kode Android dan JVM.

Di mana Kotlin menjebak alat AI yang dangkal

Kotlin ringkas karena menyembunyikan pengkabelannya. apply, let, also, run, dan with mengubah arti this dan it. Fungsi ekstensi menambahkan perilaku ke tipe yang didefinisikan di tempat lain. Coroutine memindahkan pekerjaan antara launch, async, dan withContext. Agen yang membaca satu berkas setiap kali melihat panggilannya, tetapi tidak melihat receiver di baliknya.

Maguyva menyelesaikan lebih banyak struktur ini saat pengindeksan, sehingga agen dapat bertanya siapa yang memanggil sebuah fungsi dan mendapatkan jawaban yang sebenarnya.

Apa yang diekstrak Maguyva dari Kotlin

Maguyva mencakup .kt dan .kts. Fungsi, kelas, object, dan companion object diekstrak, dan signature fungsi mencatat receiver ekstensi, nama parameter, nilai default, dan parameter vararg.

Relasi panggilan mempertahankan nama yang dikualifikasi kelas, sehingga OrderRepository.save tidak tercampur dengan save lain. Penentuan tipe receiver mengikuti this di dalam apply dan run, it di dalam let dan also, serta argumen with, sehingga panggilan di dalam scope function diselesaikan ke tipe yang benar. Builder coroutine dan operator Flow (launch, async, withContext, coroutineScope, supervisorScope, flow, emit, delay, Channel) sengaja dipertahankan dalam graf.

Graf juga mencatat pewarisan, implementasi interface, override, instansiasi, anotasi, referensi tipe, pembacaan dan penulisan, serta edge throw dan catch eksepsi.

Contoh prompt agen

  • “Siapa yang memanggil CheckoutUseCase.invoke, dan dari ViewModel mana?” (find_symbol, lalu dependency_search arah masuk)
  • “Telusuri alur sinkronisasi dari SyncWorker ke klien jaringan.” (get_task_context)
  • “Kelas mana yang mengimplementasikan PaymentGateway?” (dependency_search)

Batasan yang diketahui

  • Sekitar 250 panggilan pustaka standar dan platform Kotlin difilter dari relasi, sehingga helper seperti listOf, map, filter, dan println bukan edge graf. Gunakan text_pattern_search untuk itu.

Langkah berikutnya

Hubungkan repositori dengan panduan memulai cepat, lalu periksa matriks dukungan di halaman kompatibilitas. Untuk basis kode campuran, baca juga panduan Java.

Paling cocok untuk

  • > Tim Android dengan aplikasi multimodul yang besar, tempat ViewModel, repository, dan use case saling memanggil lintas batas modul.
  • > Kotlin sisi server dan layanan Kotlin/JVM yang memadukan Kotlin dengan kode Java yang lebih lama.
  • > Build Gradle yang ditulis dalam skrip Kotlin (`.kts`), yang perlu dibaca agen bersama kode aplikasi.

Workflow agent

  • > Menemukan setiap pemanggil kelas repository atau use case sebelum API-nya berubah.
  • > Menelusuri alur coroutine dari `launch` di ViewModel, melalui `withContext`, hingga lapisan data.
  • > Memetakan kelas yang mengimplementasikan interface atau meng-override metode dasar sebelum refactor.

Detail engine

  • > Dukungan Kotlin mencakup `.kt` dan `.kts`. Signature mencatat receiver ekstensi, nama parameter, nilai default, dan parameter `vararg`.
  • > Penentuan tipe receiver mengikuti `this` dalam `apply` dan `run`, `it` dalam `let` dan `also`, serta argumen `with`, dan panggilan mempertahankan nama yang dikualifikasi kelas.
  • > Builder coroutine dan operator Flow seperti `launch`, `withContext`, dan `flow` tetap ada di graf, sedangkan sekitar 250 panggilan pustaka standar difilter.

Titik masuk MCP yang berguna

  • find_symbol

    Gunakan untuk kelas, use case, atau fungsi ekstensi saat Anda membutuhkan definisi dan referensi.

  • dependency_search

    Sebelum perubahan API, gunakan penelusuran arah masuk pada repository atau interface untuk melihat pemanggil dan implementasi.

  • get_task_context

    Gunakan untuk prompt seperti “telusuri alur sinkronisasi dari `SyncWorker` ke klien jaringan”.