Hopp til innhold
cd /languages
Dynamiske systemerProgrammeringFull grafstøtte

Python-støtte i Maguyva: AI-kodesøk og refaktorering

Maguyva støtter Python med AST-parsing og symbolutvinning, og hjelper AI-agenter med å følge dekoratorer, self/cls-metoder, importer og avhengigheter på tvers av moduler i ekte Python-repositorier.

Hvor Python-repositorier vanligvis avslører overfladiske AI-verktøy

Python er der mye AI-kodeverktøy ser bra ut i starten og deretter begynner å gjette i produksjon. De vanskelige delene er kjente: dekorerte inngangspunkter, tjenesteklasser, typestubber, små hjelpemoduler overalt, og metoder som bare gir mening når du kobler self eller cls tilbake til klassen de tilhører.

For Python er det egentlige spørsmålet ikke «kan den lese .py-filer?» Spørsmålet er om agenten kan holde seg forankret mens den beveger seg fra et endepunkt til en tjeneste, fra en bakgrunnsoppgave til en hjelpefunksjon, eller fra et klassenavn til metodene som faktisk implementerer atferden.

Hva Maguyva faktisk trekker ut i Python

Maguyva behandler Python som et fullstendig strukturelt språk. Konfigurasjonen dekker .py, .pyw og .pyi, kobler decorated_definition tilbake til et funksjonssymbol, og kvalifiserer self / cls-metodekall tilbake til den omsluttende klassen. Det betyr noe fordi det er nøyaktig de stedene der Python-repositorier begynner å føles opplagte for et menneske og uklare for en LLM.

Den filtrerer også bort mye standardbibliotek-støy fra relasjonsutvinningen. Det betyr at vanlige kjøretidskall fra moduler som pathlib, typing eller logging har mindre sannsynlighet for å overdøve de repositoriespesifikke relasjonene du faktisk bryr deg om.

Nyttige MCP-arbeidsflyter for Python-repositorier

Den enkleste nyttige arbeidsflyten er:

  • Start med intelligent_search for et atferdsspørsmål som «retry-logikk rundt fakturasynkronisering» eller «tilgangssjekker i faktureringsendepunkter».
  • Bytt til find_symbol når du kjenner navnet på klassen eller funksjonen du bryr deg om.
  • Bruk dependency_search med innkommende traversering før du refaktorerer en delt tjeneste, hjelpefunksjon eller basisklasse.

Det mønsteret er bedre enn å be en agent «oppdatere faktureringsflyten» fra en kald start. Det lar agenten bygge et kart først og endre kode etterpå.

Når denne siden er nyttig

Denne siden er for Python-repositorier som allerede har en viss alder og kompleksitet: tjenestekode, jobber, skript, genererte typer og omkringliggende konfigurasjon. Hvis hovedsammenligningen din er på tvers av flerspråklige web-monorepositorier, les også TypeScript-guiden. Hvis du bare trenger hele støttematrisen, bruk kompatibilitet.

Best egnet

  • >FastAPI-, Django-, dataplattform- eller interne verktøyrepositorier der applikasjonskode og driftsskript lever sammen.
  • >Team som refaktorerer langvarige Python-tjenester som allerede har dekoratorer, bakgrunnsjobber og mye underforstått sammenkobling.
  • >Agentarbeidsflyter som trenger mer enn grep før de endrer en handler, tjeneste, modell eller hjelpefunksjon.

Agent-arbeidsflyter

  • >Spor et endepunkt, en oppgave eller en CLI-kommando gjennom hjelpefunksjoner og delte moduler før du redigerer den.
  • >Finn hvor en tjeneste, klasse eller hjelpefunksjon instansieres og gjenbrukes på tvers av repositoriet.
  • >Sammenlign nærliggende implementasjoner slik at agenten redigerer riktig abstraksjon i stedet for den nærmeste strengtreffen.

Motordetaljer

  • >Dekorerte definisjoner behandles fortsatt som funksjoner, så dekorerte views og tasks forblir søkbare som symboler.
  • >Metodekall med `self` og `cls` kvalifiseres tilbake til den omsluttende klassen, noe som hjelper grafen å forbli nyttig i klassetung tjenestekode.
  • >Normaliserere for import, kall og symboler er aktivert, mens vanlig stdlib-støy som `pathlib.*`, `typing.*` og `logging.*` filtreres bort fra relasjonene.

Nyttige MCP-inngangspunkter

  • intelligent_search

    Start med et konseptuelt søk som «retry-logikk rundt fakturasynkronisering» og sett `language_filter="python"` hvis repoet er flerspråklig.

  • find_symbol

    Bruk det når du kjenner klasse- eller funksjonsnavnet og trenger definisjonen pluss referanser før du redigerer.

  • dependency_search

    Bruk innkommende retning før du refaktorerer en delt tjeneste eller hjelpefunksjon, for å se hva som er avhengig av den.