Chuyển tới nội dung
cd /languages
  • Tự động hóa Windows
  • Shell
  • Hỗ trợ AST và symbol

PowerShell trên Maguyva: đồ thị mã cho tập lệnh và module

Maguyva hỗ trợ PowerShell với AST, ký hiệu và đồ thị, để agent AI có thể lần theo hàm, lớp và lời gọi cmdlet qua các tập lệnh và module.

PowerShell làm khó các công cụ AI hời hợt ở đâu

Hàm của bạn và cmdlet có sẵn dùng cùng một kiểu đặt tên. Get-Invoice và Get-ChildItem trông giống nhau, nên một công cụ loại bỏ lệnh “có sẵn” theo động từ cũng loại luôn hàm của bạn. Tập lệnh còn trộn mã cấp module, hàm, lớp và khối script trong cùng một tệp, khiến khó biết một dòng thuộc về hàm nào.

Maguyva giữ lại cả hai loại lời gọi và gán mỗi lời gọi cho hàm chứa nó.

Maguyva trích xuất gì từ mã PowerShell

Maguyva bao quát các tệp .ps1, .psm1 và .psd1. Hàm và phương thức của lớp được trích xuất thành callable, còn lớp và enum thành kiểu. Tham số của tập lệnh và phương thức được theo dõi, và thao tác đọc, ghi bên trong một hàm được gán cho hàm đó thay vì cho module.

Lời gọi cmdlet vẫn nằm trong đồ thị. PowerShell không áp dụng bộ lọc thư viện chuẩn mà phần lớn ngôn ngữ dùng, nên Write-Host, Get-ChildItem và Restart-Service xuất hiện như cạnh lời gọi bên cạnh các hàm Get-* và Set-* của bạn. Agent có thể hỏi tập lệnh nào khởi động lại một dịch vụ hay hàm nào ghi ra console và nhận câu trả lời mang tính cấu trúc.

Không có loại quan hệ nào bị đánh dấu là không áp dụng cho PowerShell, nên đồ thị còn ghi lại kế thừa lớp và triển khai interface, khởi tạo, luồng điều khiển, cùng thao tác đọc và ghi.

Ví dụ prompt cho agent

  • “Ai gọi Invoke-Backup, và từ những tập lệnh định kỳ nào?” (find_symbol, sau đó dependency_search theo chiều vào)
  • “Những hàm nào gọi Restart-Service?” (dependency_search)
  • “Lần theo những gì Deploy-Site làm từ đầu đến cuối.” (get_task_context)

Giới hạn đã biết

  • Vì lời gọi cmdlet được giữ lại, các cmdlet rất phổ biến như Write-Host và Select-Object có rất nhiều cạnh đi vào. Hãy bắt đầu từ hàm của chính bạn khi muốn một đồ thị lời gọi tập trung.
  • Import-Module và dot-sourcing là lệnh thông thường, nên preset imports trong structural_search không chọn được gì. Dùng text_pattern_search để liệt kê chúng.

Bước tiếp theo

Kết nối một kho mã bằng hướng dẫn bắt đầu nhanh, sau đó xem ma trận hỗ trợ trên trang tương thích. Với mã .NET mà tập lệnh của bạn gọi tới, hãy đọc hướng dẫn C#.

Phù hợp nhất

  • > Nhóm hạ tầng và vận hành có kho lớn tệp `.ps1` và `.psm1` mà các tập lệnh gọi hàm của nhau.
  • > Module PowerShell được xây từ hàm nâng cao, lớp và enum.
  • > Runbook tự động hóa nơi agent cần thấy tập lệnh nào động tới một dịch vụ, thư mục chia sẻ hoặc khóa registry trước khi thay đổi.

Workflow agent

  • > Tìm mọi nơi gọi một hàm nâng cao trước khi đổi tham số của nó.
  • > Liệt kê các tập lệnh gọi một cmdlet như `Restart-Service` trước khi sửa runbook.
  • > Lập bản đồ những hàm ghi vào một biến dùng chung trước khi tái cấu trúc module.

Chi tiết engine

  • > Hỗ trợ PowerShell bao quát các tệp `.ps1`, `.psm1` và `.psd1`. Hàm và phương thức của lớp là callable; lớp và enum là kiểu.
  • > Bộ lọc thư viện chuẩn bị tắt với PowerShell, nên lời gọi cmdlet như `Get-ChildItem` vẫn nằm trong đồ thị cạnh các hàm của chính bạn.
  • > Thao tác đọc và ghi bên trong một hàm được gán cho hàm đó, không phải cho module.

Điểm khởi đầu MCP hữu ích

  • find_symbol

    Dùng cho hàm nâng cao hoặc lớp khi bạn cần định nghĩa và nơi gọi.

  • dependency_search

    Dùng duyệt theo chiều vào để thấy tập lệnh nào gọi một cmdlet như `Restart-Service`.

  • get_task_context

    Dùng cho prompt như "lần theo những gì `Deploy-Site` làm từ đầu đến cuối".