Lompat ke konten
cd /languages
  • UI lintas platform
  • Pemrograman
  • Dukungan AST dan simbol

Dart di Maguyva: graf kode untuk aplikasi Flutter dan Dart

Maguyva mendukung Dart dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri kelas, mixin, ekstensi, dan konstruktor di seluruh kode Flutter dan Dart.

Di mana Dart menjebak alat AI yang dangkal

Dart menyebarkan satu tipe ke beberapa konstruksi. Sebuah kelas bisa mewarisi dari satu kelas dasar, mengimplementasikan beberapa antarmuka, dan mencampurkan perilaku dari mixin lewat with. Metode ekstensi menambahkan anggota ke tipe yang didefinisikan di tempat lain, sedangkan konstruktor bernama dan konstruktor factory menyembunyikan kelas mana yang sebenarnya dibuat. Pencarian teks menemukan nama, bukan struktur di baliknya.

Maguyva memberikan struktur itu kepada agen, sehingga agen dapat menelusuri perubahan dari widget sampai ke layanan yang menjadi sandarannya.

Apa yang diekstrak Maguyva dari Dart

Maguyva mencakup berkas .dart. Kelas, mixin, dan ekstensi diekstrak sebagai tipe. Preset functions di structural_search mencakup fungsi, metode, fungsi lokal, lambda, serta konstruktor generatif, const, dan factory. Tanda tangan mencatat grup parameter posisional opsional dan bernama serta anggota static; akhiran ? dan ! dihapus dari nama definisi.

Impor menormalkan direktif import, part, dan library, serta membuang klausa show, hide, dan as. Panggilan melalui prefiks impor, seperti http.get setelah import 'package:http/http.dart' as http, tetap ada di graf.

Penentuan tipe penerima melacak parameter, variabel yang bertipe dan yang diinisialisasi, getter, serta perulangan for-in atas list, set, dan iterable; var dan dynamic dianggap sebagai tipe hasil inferensi. Saat anggota warisan diselesaikan, klausa extends, implements, dan with ikut ditelusuri. Graf juga mencatat instansiasi, referensi tipe, pembacaan dan penulisan, serta tepi pengecualian.

Contoh prompt agen

  • “Siapa yang memanggil CartRepository.addItem, dan dari widget mana saja?” (find_symbol, lalu dependency_search incoming)
  • “Kelas mana saja yang mengimplementasikan PaymentGateway?” (dependency_search)
  • “Telusuri bagaimana tombol checkout mencapai API pembayaran.” (get_task_context)

Batasan yang diketahui

  • Sekitar 200 nama dari pustaka inti Dart difilter dari relasi, termasuk pembantu koleksi seperti map, where, dan forEach, metode Future dan Stream seperti then dan listen, serta pustaka dart:. Gunakan text_pattern_search untuk itu.
  • Node tanda tangan Dart menyimpan badan fungsi sebagai node saudara, sehingga hasil structural_search dapat menumpangkan fungsi lokal atau lambda pada callable yang memuatnya, dan getter serta setter muncul sebagai tanda tangan metode.

Langkah berikutnya

Hubungkan repositori dengan panduan memulai cepat, lalu periksa matriks dukungan di halaman kompatibilitas. Untuk basis kode seluler lainnya, baca panduan Kotlin dan panduan Swift.

Paling cocok untuk

  • > Aplikasi Flutter yang widget, kelas state, repositori, dan layanannya saling memanggil di banyak berkas.
  • > Paket Dart yang menambahkan perilaku lewat mixin dan metode ekstensi pada tipe yang didefinisikan di tempat lain.
  • > Kode Dart sisi server dan baris perintah yang berbagi model dengan klien Flutter.

Workflow agent

  • > Menemukan semua pemanggil metode repositori atau layanan sebelum mengubah API-nya.
  • > Mendaftar kelas yang mengimplementasikan sebuah antarmuka sebelum menambahkan anggota baru.
  • > Menelusuri bagaimana ketukan pada widget mencapai lapisan jaringan.

Detail engine

  • > Dukungan Dart mencakup berkas `.dart`. Kelas, mixin, dan ekstensi adalah tipe; konstruktor mencakup bentuk generatif, `const`, dan `factory`.
  • > Impor menormalkan direktif `import`, `part`, dan `library`; panggilan melalui prefiks impor tetap ada di graf.
  • > Penentuan tipe penerima melacak parameter, variabel, getter, dan perulangan `for`-`in`; sekitar 200 nama pustaka inti difilter dari relasi.

Titik masuk MCP yang berguna

  • find_symbol

    Gunakan untuk kelas widget, repositori, atau layanan saat Anda membutuhkan definisi dan referensinya.

  • dependency_search

    Gunakan penelusuran incoming pada metode repositori atau antarmuka untuk melihat pemanggil dan pengimplementasi sebelum mengubah API.

  • get_task_context

    Gunakan untuk prompt seperti "telusuri bagaimana tombol checkout mencapai API pembayaran".