Chuyển tới nội dung
cd /languages
  • Desktop bền bỉ
  • Lập trình
  • Hỗ trợ AST và symbol

Pascal và Delphi trên Maguyva: đồ thị unit và lớp

Maguyva hỗ trợ unit Pascal và Delphi với AST, ký hiệu và đồ thị, để agent AI có thể lập bản đồ mệnh đề uses, lớp và thủ tục trước khi thay đổi chúng.

Vì sao codebase Pascal cần bản đồ trước tiên

Ứng dụng Delphi và Free Pascal thường phát triển quanh vài unit lớn mà mọi phần khác đều dùng. Form kế thừa từ form cơ sở, component từ component cơ sở, và quy tắc nghiệp vụ nằm trong các thủ tục mà hàng chục màn hình gọi tới. Mã đọc từng tệp thì dễ, nhưng thay đổi lại vấp ở phụ thuộc.

Maguyva đưa cho agent cấu trúc unit và lớp trước, để nó có thể nói một thay đổi chạm vào đâu trước khi viết bất cứ điều gì.

Maguyva trích xuất gì từ Pascal

Maguyva bao phủ các unit nguồn .pas và .pp. Định nghĩa thủ tục và hàm được trích xuất thành ký hiệu có thể gọi, và các từ khóa procedure, function, var và const được bỏ khỏi tên định nghĩa. Lớp và interface có thể được chọn làm định nghĩa kiểu trong tìm kiếm cấu trúc.

Quan hệ nhập đến từ mệnh đề uses; từ khóa được bỏ đi để đồ thị lưu tên unit. Lời gọi được chuẩn hóa bằng cách bỏ tiền tố thành viên, đối số và dấu ngoặc ngoài, nên lời gọi viết là Self.Save(x) được lưu thành Save.

Đồ thị ghi lại lời gọi, kế thừa, triển khai interface, ghi đè, khởi tạo, tham chiếu kiểu, đọc và ghi, cùng các cạnh raise và xử lý ngoại lệ. Khoảng 107 routine thư viện runtime (WriteLn, ReadLn, Inc, Dec, Ord và tương tự) bị lọc khỏi các quan hệ.

Ví dụ prompt cho agent

  • “Những unit nào dùng DataModuleMain, và chúng gọi gì từ unit đó?” (dependency_search theo chiều vào)
  • “Những form nào kế thừa từ TBaseEditForm, và chúng ghi đè phương thức nào?” (find_symbol, sau đó dependency_search)
  • “Giải thích cách một hóa đơn được ghi sổ, từ trình xử lý nút bấm tới unit cơ sở dữ liệu.” (get_task_context)

Giới hạn đã biết

  • Chỉ .pas và .pp được ánh xạ sang Pascal. Các tệp dự án và form của Delphi như .dpr và .dfm không có trong danh sách phần mở rộng, nên bố cục form và liên kết dự án nằm ngoài đồ thị.
  • Phương thức dùng cùng cú pháp với thủ tục tự do, nên preset methods trong structural_search không chọn gì. Hãy dùng preset functions.
  • Lời gọi tới các routine thư viện runtime đã bị lọc không xuất hiện dưới dạng cạnh đồ thị. Dùng text_pattern_search cho 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. Nếu ứng dụng liên kết với thư viện C, hãy đọc thêm hướng dẫn C.

Phù hợp nhất

  • > Các nhóm duy trì ứng dụng Delphi hoặc Lazarus/Free Pascal mà tác giả ban đầu đã rời đi từ lâu.
  • > Codebase Object Pascal có hệ phân cấp lớp sâu, interface và các unit dùng chung lớn.
  • > Dự án hiện đại hóa hoặc chuyển đổi nền tảng, nơi sản phẩm bàn giao đầu tiên là bản đồ các unit và phụ thuộc của chúng.

Workflow agent

  • > Liệt kê mọi unit có một unit dùng chung trong mệnh đề `uses` trước khi unit đó thay đổi.
  • > Tìm các lớp kế thừa từ một form hoặc component cơ sở và các phương thức chúng ghi đè.
  • > Lần theo các thủ tục gọi một routine trước khi tham số của nó thay đổi.

Chi tiết engine

  • > Hỗ trợ Pascal bao phủ unit `.pas` và `.pp`. Các tệp dự án và form của Delphi như `.dpr` và `.dfm` không có trong danh sách phần mở rộng.
  • > Mệnh đề `uses` trở thành quan hệ nhập, và lời gọi được chuẩn hóa bằng cách bỏ tiền tố thành viên, đối số và dấu ngoặc ngoài.
  • > Khoảng 107 routine thư viện runtime, như `WriteLn`, `Inc` và `Ord`, bị lọc khỏi quan hệ để mã ứng dụng nổi bật lên.

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

  • find_symbol

    Dùng với tên lớp, form hoặc thủ tục khi bạn cần định nghĩa và các tham chiếu.

  • dependency_search

    Dùng duyệt theo chiều vào trên một unit dùng chung hoặc lớp cơ sở để thấy unit và lớp con nào phụ thuộc vào nó.

  • get_task_context

    Dùng cho các prompt như “giải thích cách một hóa đơn được ghi sổ, từ trình xử lý nút bấm tới unit cơ sở dữ liệu”.