Pular para o conteúdo
cd /languages
  • Automação no Windows
  • Shell
  • Suporte a AST e símbolos

PowerShell no Maguyva: grafos de código para scripts e módulos

O Maguyva oferece suporte a PowerShell com AST, símbolos e grafo, para que agentes de IA sigam funções, classes e chamadas de cmdlets em scripts e módulos.

Onde PowerShell derruba ferramentas de IA superficiais

Suas funções e os cmdlets embutidos seguem o mesmo estilo de nomes. Get-Invoice e Get-ChildItem parecem iguais, então uma ferramenta que descarta comandos “embutidos” pelo verbo joga fora as suas funções também. Os scripts ainda misturam código no nível do módulo, funções, classes e blocos de script em um só arquivo, o que dificulta saber a qual função uma linha pertence.

O Maguyva mantém os dois tipos de chamada e atribui cada uma à função em que ela está.

O que o Maguyva extrai em PowerShell

O Maguyva cobre arquivos .ps1, .psm1 e .psd1. Funções e métodos de classe são extraídos como invocáveis, e classes e enums como tipos. Parâmetros de script e de método são rastreados, e leituras e escritas dentro de uma função são atribuídas a essa função, não ao módulo.

As chamadas de cmdlets ficam no grafo. O PowerShell não aplica o filtro de biblioteca padrão que a maioria das linguagens usa, então Write-Host, Get-ChildItem e Restart-Service aparecem como arestas de chamada ao lado das suas funções Get-* e Set-*. Um agente pode perguntar quais scripts reiniciam um serviço, ou quais funções escrevem no console, e receber uma resposta estrutural.

Nenhum tipo de relação está marcado como não aplicável para PowerShell, então o grafo também registra herança de classes e implementação de interfaces, instanciação, fluxo de controle e leituras e escritas.

Exemplos de prompts para agentes

  • “Quem chama Invoke-Backup, e de quais scripts agendados?” (find_symbol, depois dependency_search incoming)
  • “Quais funções chamam Restart-Service?” (dependency_search)
  • “Rastreie o que Deploy-Site faz do começo ao fim.” (get_task_context)

Limitações conhecidas

  • Como as chamadas de cmdlets são mantidas, as muito comuns, como Write-Host e Select-Object, têm um número enorme de arestas de entrada. Comece pela sua própria função quando quiser um grafo de chamadas focado.
  • Import-Module e o dot-sourcing são comandos comuns, então o preset imports do structural_search não seleciona nada. Use text_pattern_search para listá-los.

Próximos passos

Conecte um repositório pelo início rápido e depois confira a matriz de suporte na página de compatibilidade. Para o código .NET que seus scripts chamam, leia o guia de C#.

Uso ideal

  • > Times de infraestrutura e operações com grandes acervos de `.ps1` e `.psm1` cujos scripts chamam funções uns dos outros.
  • > Módulos PowerShell construídos com funções avançadas, classes e enums.
  • > Runbooks de automação em que os agentes precisam ver quais scripts tocam um serviço, um compartilhamento de arquivos ou uma chave de registro antes de uma mudança.

Fluxos de trabalho de agente

  • > Encontrar todos os chamadores de uma função avançada antes de mudar seus parâmetros.
  • > Listar quais scripts chamam um cmdlet como `Restart-Service` antes de mudar um runbook.
  • > Mapear quais funções escrevem em uma variável compartilhada antes de refatorar um módulo.

Detalhes do motor

  • > O suporte a PowerShell cobre `.ps1`, `.psm1` e `.psd1`. Funções e métodos de classe são invocáveis, e classes e enums são tipos.
  • > O filtro de biblioteca padrão está desligado para PowerShell, então chamadas de cmdlets como `Get-ChildItem` ficam no grafo ao lado das suas funções.
  • > Leituras e escritas dentro de uma função são atribuídas a essa função, não ao módulo.

Pontos de entrada MCP úteis

  • find_symbol

    Use para uma função avançada ou classe quando precisar da definição e dos chamadores.

  • dependency_search

    Use a travessia incoming em um cmdlet como `Restart-Service` para ver quais scripts o chamam.

  • get_task_context

    Use para prompts como "rastreie o que `Deploy-Site` faz do começo ao fim".