Passer au contenu
cd /languages
  • Automatisation Windows
  • Shell
  • Prise en charge de l’AST et des symboles

PowerShell dans Maguyva : des graphes de code pour scripts et modules

Maguyva prend en charge PowerShell avec AST, symboles et graphe, pour que les agents IA suivent fonctions, classes et appels de cmdlets dans les scripts et modules.

Là où PowerShell fait trébucher les outils d’IA superficiels

Vos fonctions et les cmdlets intégrées suivent le même style de nommage. Get-Invoice et Get-ChildItem se ressemblent : un outil qui écarte les commandes « intégrées » d’après leur verbe jette aussi vos propres fonctions. Les scripts mélangent en outre du code de niveau module, des fonctions, des classes et des blocs de script dans un même fichier, ce qui rend difficile de savoir à quelle fonction appartient une ligne.

Maguyva conserve les deux types d’appels et rattache chacun à la fonction qui le contient.

Ce que Maguyva extrait en PowerShell

Maguyva couvre les fichiers .ps1, .psm1 et .psd1. Les fonctions et les méthodes de classe sont extraites comme appelables, les classes et les enums comme types. Les paramètres de script et de méthode sont suivis, et les lectures et écritures dans une fonction sont rattachées à cette fonction plutôt qu’au module.

Les appels de cmdlets restent dans le graphe. PowerShell n’applique pas le filtre de bibliothèque standard utilisé par la plupart des langages : Write-Host, Get-ChildItem et Restart-Service apparaissent donc comme des arêtes d’appel à côté de vos propres fonctions Get-* et Set-*. Un agent peut demander quels scripts redémarrent un service, ou quelles fonctions écrivent dans la console, et obtenir une réponse structurelle.

Aucun type de relation n’est marqué comme non applicable pour PowerShell : le graphe enregistre donc aussi l’héritage de classes et l’implémentation d’interfaces, l’instanciation, le flux de contrôle et les lectures et écritures.

Exemples de prompts pour agents

  • « Qui appelle Invoke-Backup, et depuis quels scripts planifiés ? » (find_symbol, puis dependency_search en incoming)
  • « Quelles fonctions appellent Restart-Service ? » (dependency_search)
  • « Retrace ce que fait Deploy-Site du début à la fin. » (get_task_context)

Limites connues

  • Comme les appels de cmdlets sont conservés, les plus courants comme Write-Host et Select-Object ont un très grand nombre d’arêtes entrantes. Partez de votre propre fonction si vous voulez un graphe d’appels ciblé.
  • Import-Module et le dot-sourcing sont des commandes ordinaires : le preset imports de structural_search ne sélectionne donc rien. Utilisez text_pattern_search pour les lister.

Étapes suivantes

Connectez un dépôt avec le démarrage rapide, puis consultez la matrice de prise en charge sur la page de compatibilité. Pour le code .NET appelé par vos scripts, lisez le guide C#.

Idéal pour

  • > Les équipes infrastructure et exploitation qui gèrent de grands parcs de fichiers `.ps1` et `.psm1` dont les scripts s'appellent les uns les autres.
  • > Les modules PowerShell construits avec des fonctions avancées, des classes et des enums.
  • > Les runbooks d'automatisation où les agents doivent voir quels scripts touchent un service, un partage de fichiers ou une clé de registre avant un changement.

Workflows d'agent

  • > Trouver tous les appelants d'une fonction avancée avant de modifier ses paramètres.
  • > Lister les scripts qui appellent une cmdlet comme `Restart-Service` avant de modifier un runbook.
  • > Cartographier les fonctions qui écrivent dans une variable partagée avant de refactoriser un module.

Détails du moteur

  • > La prise en charge de PowerShell couvre `.ps1`, `.psm1` et `.psd1`. Les fonctions et méthodes de classe sont des appelables, les classes et enums des types.
  • > Le filtre de bibliothèque standard est désactivé pour PowerShell : les appels de cmdlets comme `Get-ChildItem` restent dans le graphe à côté de vos propres fonctions.
  • > Les lectures et écritures dans une fonction sont rattachées à cette fonction plutôt qu'au module.

Points d'entrée MCP utiles

  • find_symbol

    Utilisez-le pour une fonction avancée ou une classe quand vous avez besoin de la définition et des appelants.

  • dependency_search

    Utilisez la traversée incoming sur une cmdlet comme `Restart-Service` pour voir quels scripts l'appellent.

  • get_task_context

    Utilisez-le pour des prompts comme « retrace ce que fait `Deploy-Site` du début à la fin ».