Chuyển tới nội dung
cd /languages
Hệ thống độngLập trìnhHỗ trợ graph đầy đủ

Hỗ trợ Python trong Maguyva: Tìm kiếm mã và refactor bằng AI

Maguyva hỗ trợ Python với phân tích cú pháp AST và trích xuất symbol, giúp AI agent theo dõi decorator, method self/cls, import, và các phụ thuộc liên module trong các repo Python thực tế.

Repo Python thường làm các công cụ AI hời hợt gãy gánh ở đâu

Python là nơi rất nhiều công cụ lập trình AI trông ổn lúc đầu rồi bắt đầu đoán mò khi vào môi trường sản xuất. Những phần khó thì quen thuộc: các điểm vào có decorator, class service, type stub, vô số module helper nhỏ khắp nơi, và các method chỉ có ý nghĩa khi bạn kết nối lại self hoặc cls với class mà chúng thuộc về.

Với Python, câu hỏi thực sự không phải là “nó có đọc được file .py không?” Câu hỏi là liệu agent có thể giữ được sự bám sát thực tế (grounded) trong khi di chuyển từ một endpoint đến một service, từ một background task đến một helper, hoặc từ tên class đến các method thực sự triển khai hành vi đó hay không.

Maguyva thực sự trích xuất những gì trong Python

Maguyva xem Python như một ngôn ngữ có cấu trúc đầy đủ. Cấu hình bao phủ .py, .pyw, và .pyi; ánh xạ decorated_definition trở lại một symbol hàm; và gán self / cls trong các lệnh gọi method trở lại class bao quanh. Điều đó quan trọng vì đây chính xác là những nơi mà các repo Python bắt đầu trở nên hiển nhiên với con người nhưng mơ hồ với một LLM.

Nó cũng lọc bỏ rất nhiều nhiễu từ thư viện chuẩn khỏi quá trình trích xuất quan hệ. Điều đó có nghĩa là các lệnh gọi runtime phổ biến từ các module như pathlib, typing, hoặc logging ít có khả năng nhấn chìm các quan hệ đặc thù của repo mà bạn thực sự quan tâm.

Các quy trình MCP hữu ích cho repo Python

Quy trình hữu ích đơn giản nhất là:

  • Bắt đầu với intelligent_search cho một câu hỏi ở cấp hành vi như “logic thử lại quanh việc đồng bộ hóa đơn” hoặc “kiểm tra quyền trong các endpoint thanh toán”.
  • Chuyển sang find_symbol khi bạn đã biết tên class hoặc hàm mình quan tâm.
  • Dùng dependency_search với duyệt chiều đến trước khi refactor một service, helper, hoặc base class dùng chung.

Mẫu này tốt hơn việc yêu cầu một agent “cập nhật luồng thanh toán” từ điểm xuất phát không có ngữ cảnh gì. Nó cho phép agent xây dựng bản đồ trước rồi mới thay đổi mã.

Khi nào trang này hữu ích

Trang này dành cho các repo Python đã có tuổi đời và độ phức tạp nhất định: mã service, job, script, các kiểu được sinh tự động, và config xung quanh. Nếu so sánh chính của bạn là qua các monorepo web đa ngôn ngữ, hãy đọc thêm hướng dẫn TypeScript. Nếu bạn chỉ cần bảng ma trận hỗ trợ đầy đủ, hãy dùng compatibility.

Phù hợp nhất

  • >Các repo FastAPI, Django, nền tảng dữ liệu, hoặc công cụ nội bộ, nơi mã ứng dụng và script vận hành sống chung.
  • >Các đội refactor các service Python tồn tại lâu dài đã có decorator, background job, và rất nhiều kết nối ngầm định.
  • >Các quy trình agent cần nhiều hơn grep trước khi thay đổi một handler, service, model, hoặc helper.

Workflow agent

  • >Theo dõi một endpoint, task, hoặc lệnh CLI qua các helper và module dùng chung trước khi chỉnh sửa nó.
  • >Tìm nơi một service, class, hoặc hàm tiện ích được khởi tạo và tái sử dụng trong toàn bộ repo.
  • >So sánh các cách triển khai liền kề để agent chỉnh sửa đúng lớp trừu tượng thay vì chuỗi khớp gần nhất.

Chi tiết engine

  • >Các định nghĩa có decorator vẫn được coi là hàm, nên các view và task có decorator vẫn có thể tìm kiếm được như symbol.
  • >Các lời gọi phương thức `self` và `cls` được quy chiếu ngược về class chứa nó, giúp graph vẫn hữu ích trong code service có nhiều class.
  • >Các bộ chuẩn hóa import, lời gọi, và symbol được bật, trong khi các nhiễu stdlib phổ biến như `pathlib.*`, `typing.*`, và `logging.*` được lọc ra khỏi các mối quan hệ.

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

  • intelligent_search

    Bắt đầu bằng một truy vấn khái niệm như “retry logic quanh việc đồng bộ hóa đơn” và đặt `language_filter="python"` nếu repo là đa ngôn ngữ.

  • find_symbol

    Dùng nó khi bạn biết tên class hay hàm và cần định nghĩa cùng các tham chiếu trước khi chỉnh sửa.

  • dependency_search

    Dùng hướng incoming trước khi refactor một service hay helper dùng chung để xem cái gì đang phụ thuộc vào nó.