Zum Inhalt springen
cd /languages
  • Windows-Automatisierung
  • Shell
  • AST- und Symbol-Support

PowerShell in Maguyva: Code-Graphen für Skripte und Module

Maguyva unterstützt PowerShell mit AST, Symbolen und Graph, damit KI-Agenten Funktionen, Klassen und Cmdlet-Aufrufe über Skripte und Module hinweg verfolgen.

Wo PowerShell oberflächliche KI-Tools ins Stolpern bringt

Deine Funktionen und die eingebauten Cmdlets folgen demselben Namensschema. Get-Invoice und Get-ChildItem sehen gleich aus, also wirft ein Tool, das „eingebaute“ Befehle nach Verb aussortiert, deine eigenen Funktionen gleich mit weg. Skripte mischen außerdem Code auf Modulebene, Funktionen, Klassen und Skriptblöcke in einer Datei, sodass schwer zu erkennen ist, zu welcher Funktion eine Zeile gehört.

Maguyva behält beide Arten von Aufrufen und ordnet jeden der Funktion zu, in der er steht.

Was Maguyva in PowerShell extrahiert

Maguyva deckt .ps1-, .psm1- und .psd1-Dateien ab. Funktionen und Klassenmethoden werden als Callables extrahiert, Klassen und Enums als Typen. Skript- und Methodenparameter werden verfolgt, und Lese- und Schreibzugriffe innerhalb einer Funktion werden dieser Funktion zugeordnet statt dem Modul.

Cmdlet-Aufrufe bleiben im Graphen. PowerShell nutzt den Standardbibliotheks-Filter nicht, den die meisten Sprachen verwenden, daher erscheinen Write-Host, Get-ChildItem und Restart-Service als Aufrufkanten neben deinen eigenen Get-*- und Set-*-Funktionen. Ein Agent kann fragen, welche Skripte einen Dienst neu starten oder welche Funktionen in die Konsole schreiben, und erhält eine strukturelle Antwort.

Für PowerShell ist kein Beziehungstyp als nicht anwendbar markiert, daher erfasst der Graph außerdem Klassenvererbung und Interface-Implementierung, Instanziierung, Kontrollfluss sowie Lese- und Schreibzugriffe.

Beispiel-Prompts für Agenten

  • „Wer ruft Invoke-Backup auf, und aus welchen geplanten Skripten?“ (find_symbol, dann dependency_search incoming)
  • „Welche Funktionen rufen Restart-Service auf?“ (dependency_search)
  • „Verfolge, was Deploy-Site von Anfang bis Ende tut.“ (get_task_context)

Bekannte Grenzen

  • Weil Cmdlet-Aufrufe erhalten bleiben, haben sehr häufige wie Write-Host und Select-Object eine große Zahl eingehender Kanten. Beginne bei deiner eigenen Funktion, wenn du einen fokussierten Aufrufgraphen willst.
  • Import-Module und Dot-Sourcing sind gewöhnliche Befehle, daher wählt das Preset imports in structural_search nichts aus. Verwende text_pattern_search, um sie aufzulisten.

Nächste Schritte

Verbinde ein Repository über den Schnellstart und prüfe dann die Unterstützungsmatrix auf der Kompatibilitätsseite. Für .NET-Code, den deine Skripte aufrufen, lies den C#-Leitfaden.

Am besten geeignet

  • > Infrastruktur- und Betriebsteams mit großen `.ps1`- und `.psm1`-Beständen, deren Skripte gegenseitig Funktionen aufrufen.
  • > PowerShell-Module aus Advanced Functions, Klassen und Enums.
  • > Automatisierungs-Runbooks, bei denen Agenten vor einer Änderung sehen müssen, welche Skripte einen Dienst, eine Dateifreigabe oder einen Registry-Schlüssel berühren.

Agentenabläufe

  • > Alle Aufrufer einer Advanced Function finden, bevor sich ihre Parameter ändern.
  • > Auflisten, welche Skripte ein Cmdlet wie `Restart-Service` aufrufen, bevor sich ein Runbook ändert.
  • > Vor dem Refactoring eines Moduls abbilden, welche Funktionen in eine gemeinsame Variable schreiben.

Engine-Einordnung

  • > Die PowerShell-Unterstützung umfasst `.ps1`, `.psm1` und `.psd1`. Funktionen und Klassenmethoden sind Callables, Klassen und Enums sind Typen.
  • > Für PowerShell ist der Standardbibliotheks-Filter ausgeschaltet, daher bleiben Cmdlet-Aufrufe wie `Get-ChildItem` neben deinen eigenen Funktionen im Graphen.
  • > Lese- und Schreibzugriffe innerhalb einer Funktion werden dieser Funktion zugeordnet statt dem Modul.

Nützliche MCP-Einstiegspunkte

  • find_symbol

    Nutz es für eine Advanced Function oder Klasse, wenn du Definition und Aufrufer brauchst.

  • dependency_search

    Nutz die eingehende Traversierung auf einem Cmdlet wie `Restart-Service`, um zu sehen, welche Skripte es aufrufen.

  • get_task_context

    Nutz es für Prompts wie „verfolge, was `Deploy-Site` von Anfang bis Ende tut“.