Spring til indhold
cd /languages
Dynamiske systemerProgrammeringFuld grafunderstøttelse

Python-understøttelse i Maguyva: AI-kodesøgning og refaktorering

Maguyva understøtter Python med AST-parsing og symboludtræk, hvilket hjælper AI-agenter med at følge decorators, self/cls-metoder, imports og afhængigheder på tværs af moduler i reelle Python-repositorier.

Hvor Python-repositorier som regel afslører overfladiske AI-værktøjer

Python er der, hvor mange AI-kodeværktøjer ser gode ud i starten og derefter begynder at gætte i produktion. De svære dele er velkendte: dekorerede entry points, serviceklasser, type stubs, små hjælpemoduler overalt og metoder, der først giver mening, når man genforbinder self eller cls til den klasse, de hører til.

For Python er det reelle spørgsmål ikke “kan den læse .py-filer?” Spørgsmålet er, om agenten kan forblive forankret, mens den bevæger sig fra et endpoint til en service, fra en baggrundstask til en hjælpefunktion, eller fra et klassenavn til de metoder, der rent faktisk implementerer adfærden.

Hvad Maguyva rent faktisk udtrækker i Python

Maguyva behandler Python som et fuldt struktureret sprog. Konfigurationen dækker .py, .pyw og .pyi; kortlægger decorated_definition tilbage til et funktionssymbol; og kvalificerer self / cls metodekald tilbage til den omsluttende klasse. Det betyder noget, fordi det er præcis de steder, hvor Python-repositorier begynder at føles indlysende for et menneske og uklare for en LLM.

Den filtrerer også en stor mængde standardbiblioteks-støj fra relationsudtrækket. Det betyder, at almindelige runtime-kald fra moduler som pathlib, typing eller logging er mindre tilbøjelige til at overdøve de repository-specifikke relationer, du rent faktisk interesserer dig for.

Nyttige MCP-arbejdsgange til Python-repositorier

Den simpleste nyttige arbejdsgang er:

  • Start med intelligent_search til et adfærdsspørgsmål som f.eks. “retry-logik omkring faktura-synkronisering” eller “rettighedstjek i billing-endpoints”.
  • Skift til find_symbol, når du kender navnet på den klasse eller funktion, du interesserer dig for.
  • Brug dependency_search med indgående traversering, før du refaktorerer en delt service, hjælpefunktion eller basisklasse.

Det mønster er bedre end at bede en agent om at “opdatere billing-flowet” fra en kold start. Det lader agenten bygge et kort først og ændre kode bagefter.

Hvornår denne side er nyttig

Denne side er til Python-repositorier, der allerede har en vis alder og kompleksitet: servicekode, jobs, scripts, genererede typer og omgivende config. Hvis din primære sammenligning går på tværs af polyglotte web-monorepoer, så læs også TypeScript-guiden. Hvis du blot har brug for den fulde understøttelsesmatrix, så brug compatibility.

Bedst egnet til

  • >FastAPI-, Django-, data-platform- eller interne værktøjsrepositorier, hvor applikationskode og driftsscripts lever side om side.
  • >Teams, der refaktorerer langlivede Python-services, som allerede har decorators, baggrundsjobs og en masse underforstået sammenkobling.
  • >Agent-arbejdsgange, der har brug for mere end grep, før de ændrer en handler, service, model eller hjælpefunktion.

Agent-arbejdsgange

  • >Spor et endpoint, en task eller en CLI-kommando gennem hjælpefunktioner og delte moduler, før det redigeres.
  • >Find hvor en service, klasse eller hjælpefunktion instantieres og genbruges på tværs af repositoriet.
  • >Sammenlign nærliggende implementeringer, så agenten redigerer den rigtige abstraktion i stedet for det nærmeste strengmatch.

Motordetaljer

  • >Dekorerede definitioner behandles stadig som funktioner, så dekorerede views og tasks forbliver søgbare som symboler.
  • >Metodekald med `self` og `cls` kvalificeres tilbage til den omsluttende klasse, hvilket hjælper grafen med at forblive brugbar i klassetung servicekode.
  • >Import-, kald- og symbolnormaliserere er slået til, mens almindelig stdlib-støj som `pathlib.*`, `typing.*` og `logging.*` filtreres fra relationerne.

Nyttige MCP-indgange

  • intelligent_search

    Start med en konceptuel forespørgsel som "retry logic around invoice sync", og sæt `language_filter="python"`, hvis repoet er polyglot.

  • find_symbol

    Brug det, når du kender klasse- eller funktionsnavnet og har brug for definitionen plus referencer, før du retter.

  • dependency_search

    Brug indgående retning, før du refaktorerer en delt service eller hjælpefunktion, for at se, hvad der afhænger af den.