Lompat ke konten
cd /languages
Sistem dinamisProgrammingDukungan graph penuh

Dukungan Python di Maguyva: Pencarian Kode dan Refactoring dengan AI

Maguyva mendukung Python dengan parsing AST dan ekstraksi simbol, membantu agen AI mengikuti decorator, method self/cls, import, dan dependensi lintas-module dalam repositori Python sungguhan.

Di mana repo Python biasanya membuat tool AI dangkal keteteran

Python adalah tempat banyak tool coding AI terlihat bagus pada awalnya, lalu mulai menebak-nebak di produksi. Bagian sulitnya sudah tidak asing: entry point ber-decorator, service class, type stub, module helper kecil di mana-mana, dan method yang baru masuk akal setelah Anda menyambungkan kembali self atau cls ke class tempatnya berada.

Untuk Python, pertanyaan sesungguhnya bukan “bisakah ia membaca file .py?” Pertanyaannya adalah apakah agen bisa tetap grounded saat berpindah dari endpoint ke service, dari background task ke helper, atau dari nama class ke method yang benar-benar mengimplementasikan perilaku tersebut.

Apa yang sebenarnya diekstraksi Maguyva dari Python

Maguyva memperlakukan Python sebagai bahasa struktural yang utuh. Konfigurasinya mencakup .py, .pyw, dan .pyi; memetakan decorated_definition kembali ke simbol fungsi; dan mengualifikasi panggilan method self / cls kembali ke class yang membungkusnya. Ini penting karena justru di titik-titik itulah repositori Python mulai terasa jelas bagi manusia tetapi kabur bagi LLM.

Maguyva juga menyaring banyak noise pustaka standar dari ekstraksi relasi. Artinya, panggilan runtime umum dari module seperti pathlib, typing, atau logging lebih kecil kemungkinannya menenggelamkan relasi spesifik-repositori yang sebenarnya Anda pedulikan.

Alur kerja MCP yang berguna untuk repo Python

Alur kerja paling sederhana dan berguna adalah:

  • Mulai dengan intelligent_search untuk pertanyaan seputar perilaku seperti “logika retry di sekitar sinkronisasi invoice” atau “pemeriksaan izin di endpoint billing”.
  • Beralih ke find_symbol setelah Anda tahu nama class atau fungsi yang Anda pedulikan.
  • Gunakan dependency_search dengan penelusuran incoming sebelum me-refactor service, helper, atau base class bersama.

Pola ini lebih baik daripada meminta agen “perbarui alur billing” dari nol sama sekali. Ini memungkinkan agen membangun peta terlebih dahulu, baru mengubah kode.

Kapan halaman ini berguna

Halaman ini untuk repo Python yang sudah punya usia dan kompleksitas tertentu: kode service, job, script, tipe hasil generate, dan config di sekitarnya. Jika perbandingan utama Anda lintas monorepo web polyglot, baca juga panduan TypeScript. Jika Anda hanya butuh matriks dukungan lengkap, gunakan compatibility.

Paling cocok untuk

  • >Repo FastAPI, Django, data-platform, atau tooling internal tempat kode aplikasi dan script operasional hidup berdampingan.
  • >Tim yang me-refactor service Python berumur panjang yang sudah punya decorator, background job, dan banyak wiring yang tersirat.
  • >Alur kerja agen yang butuh lebih dari sekadar grep sebelum mengubah handler, service, model, atau helper.

Workflow agent

  • >Menelusuri endpoint, task, atau perintah CLI melalui helper dan module bersama sebelum mengeditnya.
  • >Menemukan di mana service, class, atau fungsi utilitas diinstansiasi dan digunakan ulang di seluruh repo.
  • >Membandingkan implementasi yang bertetangga sehingga agen mengedit abstraksi yang tepat, bukan sekadar kecocokan string terdekat.

Detail engine

  • >Definisi yang di-decorate tetap diperlakukan sebagai fungsi, jadi view dan task yang di-decorate tetap bisa dicari sebagai simbol.
  • >Pemanggilan method `self` dan `cls` dikualifikasi kembali ke class yang membungkusnya, yang membantu graph-nya tetap berguna di kode service yang padat class.
  • >Normalizer import, call, dan simbol diaktifkan, sementara noise stdlib umum seperti `pathlib.*`, `typing.*`, dan `logging.*` disaring dari relasi-relasinya.

Titik masuk MCP yang berguna

  • intelligent_search

    Mulai dengan query konseptual seperti “logika retry di sekitar sinkronisasi invoice” dan set `language_filter="python"` kalau repo-nya poliglot.

  • find_symbol

    Gunakan kalau kamu sudah tahu nama class atau fungsinya dan butuh definisi plus referensinya sebelum mengedit.

  • dependency_search

    Gunakan arah incoming sebelum me-refactor service atau helper bersama untuk melihat apa yang bergantung padanya.