Chuyển tới nội dung
cd /languages
  • JVM có kiểu
  • Lập trình
  • Hỗ trợ AST và symbol

Scala trên Maguyva: đồ thị mã cho dịch vụ JVM và Spark

Maguyva hỗ trợ Scala với AST, ký hiệu và đồ thị, để agent AI có thể lần theo trait, object, case class và lời gọi có kiểu trong mã JVM và Spark.

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

Trong Scala, một cái tên gánh rất nhiều việc. Một trait, companion object của nó và một case class có thể cùng chia sẻ một khái niệm. Khớp mẫu gắn tên mới bên trong các mệnh đề case, và một phương thức được gọi không có receiver trong lớp thực chất là lời gọi trên this. Agent đọc từng tệp một sẽ thấy các tên, nhưng không thấy chúng được phân giải tới đâu.

Maguyva phân giải nhiều hơn ngay khi lập chỉ mục, để khi agent hỏi ai gọi một phương thức, nó nhận được câu trả lời có thể hành động ngay.

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

Maguyva bao quát các tệp .scala và .sc. Lớp, object và trait được trích xuất thành kiểu, còn preset functions trong structural_search bao gồm khai báo và định nghĩa def cùng lambda. Chữ ký ghi lại tham số lặp (*), và tiền tố _root_ bị loại khỏi import.

Quan hệ lời gọi giữ lại tên có kèm lớp, và lời gọi không có receiver bên trong lớp được phân giải tới phương thức của chính lớp đó. Việc gán kiểu cho receiver theo dõi tham số, tham số lớp, định nghĩa val và var, mẫu có kiểu và mẫu case class trong các mệnh đề case, kiểu trả về của phương thức trong lớp, object và trait, bí danh kiểu và các mệnh đề extends. new trên một kiểu viết hoa được tính là khởi tạo.

Không có loại quan hệ nào bị đánh dấu là không áp dụng cho Scala, nên đồ thị còn ghi lại kế thừa, ghi đè, tham chiếu kiểu, thao tác đọc và ghi, luồng điều khiển và các cạnh ngoại lệ.

Ví dụ prompt cho agent

  • “Ai gọi PaymentService.capture, và từ những route nào?” (find_symbol, sau đó dependency_search theo chiều vào)
  • “Những lớp và object nào mở rộng EventHandler?” (dependency_search)
  • “Lần theo cách một sự kiện đơn hàng tới được bộ ghi sổ cái.” (get_task_context)

Giới hạn đã biết

  • Khoảng 320 tên thư viện chuẩn bị lọc khỏi quan hệ: các thao tác tập hợp như map, flatMap và foldLeft, cùng các helper Option, Either, Try, Future và Predef. Lời gọi trên this, hoặc trên một giá trị có kiểu được phân giải tới một lớp của bạn, vẫn được giữ lại dù tên nằm trong danh sách đó. Nếu vẫn thấy thiếu một nơi gọi, hãy dùng text_pattern_search.
  • Tham số kiểu ngắn như A, F và CC cùng các kiểu gốc như Any, Unit và Nothing bị lọc khỏi tham chiếu kiểu.

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 codebase JVM hỗn hợp, hãy đọc thêm hướng dẫn Java và hướng dẫn Kotlin.

Phù hợp nhất

  • > Dịch vụ JVM viết bằng Scala, nơi trait, companion object và case class trải một khái niệm ra nhiều tệp.
  • > Job Spark và kỹ thuật dữ liệu mà agent cần đọc cùng các thư viện dùng chung chúng gọi tới.
  • > Kho mã trộn Scala và Java mà agent cần tìm kiếm như một codebase duy nhất.

Workflow agent

  • > Tìm mọi nơi gọi một phương thức của service trước khi đổi chữ ký của nó.
  • > Liệt kê các lớp và object mở rộng một trait trước khi thêm thành viên trừu tượng.
  • > Lần theo cách một yêu cầu đi từ route HTTP qua các service tới tầng dữ liệu.

Chi tiết engine

  • > Hỗ trợ Scala bao quát các tệp `.scala` và `.sc`. Lớp, object và trait là kiểu; lời gọi không có receiver bên trong lớp được phân giải tới phương thức của chính lớp đó.
  • > Việc gán kiểu cho receiver theo dõi tham số, tham số lớp, định nghĩa `val` và `var`, mẫu `case`, kiểu trả về của phương thức và mệnh đề `extends`.
  • > Lời gọi giữ lại tên có kèm lớp, `new` được tính là khởi tạo, và khoảng 320 tên thư viện chuẩn bị lọc khỏi quan hệ.

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

  • find_symbol

    Dùng cho trait, object hoặc phương thức của service 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 trait hoặc phương thức để thấy nơi triển khai và nơi gọi trước khi đổi chữ ký.

  • get_task_context

    Dùng cho prompt như "lần theo cách một sự kiện đơn hàng tới được bộ ghi sổ cái".