Chuyển tới nội dung
cd /languages
  • JVM thời nay
  • Lập trình
  • Hỗ trợ AST và symbol

Kotlin trên Maguyva: đồ thị mã cho Android và JVM

Maguyva hỗ trợ Kotlin với AST, ký hiệu và đồ thị, để agent AI có thể lần theo lớp, hàm mở rộng và coroutine trong mã Android và JVM.

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

Kotlin ngắn gọn vì nó giấu đi phần liên kết. apply, let, also, run và with thay đổi ý nghĩa của this và it. Hàm mở rộng thêm hành vi cho các kiểu được định nghĩa ở nơi khác. Coroutine chuyển công việc qua lại giữa launch, async và withContext. Một agent đọc từng tệp một sẽ thấy lời gọi, nhưng không thấy receiver phía sau.

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

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

Maguyva bao phủ .kt và .kts. Hàm, lớp, object và companion object được trích xuất, và chữ ký hàm ghi lại receiver mở rộng, tên tham số, giá trị mặc định và tham số vararg.

Quan hệ lời gọi giữ tên có định danh lớp, nên OrderRepository.save không bị lẫn với một save khác. Việc xác định kiểu receiver theo dõi this bên trong apply và run, it bên trong let và also, và đối số của with, nên lời gọi bên trong scope function được phân giải về đúng kiểu. Coroutine builder và toán tử Flow (launch, async, withContext, coroutineScope, supervisorScope, flow, emit, delay, Channel) được giữ lại có chủ đích trong đồ thị.

Đồ thị cũng ghi lại kế thừa, triển khai interface, ghi đè, khởi tạo, annotation, tham chiếu kiểu, đọc và ghi, cùng các cạnh throw và catch ngoại lệ.

Ví dụ prompt cho agent

  • “Ai gọi CheckoutUseCase.invoke, và từ những ViewModel nào?” (find_symbol, sau đó dependency_search theo chiều vào)
  • “Lần theo luồng đồng bộ từ SyncWorker tới network client.” (get_task_context)
  • “Những lớp nào triển khai PaymentGateway?” (dependency_search)

Giới hạn đã biết

  • Khoảng 250 lời gọi thư viện chuẩn và nền tảng của Kotlin bị lọc khỏi quan hệ, nên các helper như listOf, map, filter và println không phải là 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. Với codebase hỗn hợp, hãy đọc thêm hướng dẫn Java.

Phù hợp nhất

  • > Các nhóm Android có ứng dụng lớn nhiều module, nơi ViewModel, repository và use case gọi lẫn nhau xuyên qua ranh giới module.
  • > Kotlin phía máy chủ và các dịch vụ Kotlin/JVM kết hợp Kotlin với mã Java cũ hơn.
  • > Bản build Gradle viết bằng Kotlin script (`.kts`) mà agent cần đọc cùng với mã ứng dụng.

Workflow agent

  • > Tìm mọi nơi gọi một lớp repository hoặc use case trước khi API của nó thay đổi.
  • > Lần theo luồng coroutine từ `launch` trong ViewModel, qua `withContext`, xuống tầng dữ liệu.
  • > Lập bản đồ các lớp triển khai một interface hoặc ghi đè một phương thức cơ sở trước khi refactor.

Chi tiết engine

  • > Hỗ trợ Kotlin bao phủ `.kt` và `.kts`. Chữ ký ghi lại receiver mở rộng, tên tham số, giá trị mặc định và tham số `vararg`.
  • > Việc xác định kiểu receiver theo dõi `this` trong `apply` và `run`, `it` trong `let` và `also`, và đối số của `with`, còn lời gọi giữ tên có định danh lớp.
  • > Coroutine builder và toán tử Flow như `launch`, `withContext` và `flow` vẫn ở trong đồ thị, trong khi khoảng 250 lời gọi thư viện chuẩn bị lọc.

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

  • find_symbol

    Dùng cho một lớp, use case hoặc hàm mở rộng khi bạn cần định nghĩa và các tham chiếu.

  • dependency_search

    Trước khi đổi API, dùng duyệt theo chiều vào trên một repository hoặc interface để thấy nơi gọi và phần triển khai.

  • get_task_context

    Dùng cho các prompt như “lần theo luồng đồng bộ từ `SyncWorker` tới network client”.