Kotlin в Maguyva: графы кода для Android и JVM
Kotlin прячет много связей в получателях и лямбдах. Граф снова делает их видимыми.
Расширения
.kt, .kts
Maguyva поддерживает Dart с AST, символами и графом, чтобы ИИ-агенты могли прослеживать классы, миксины, расширения и конструкторы в коде на Flutter и Dart.
Dart распределяет один тип по нескольким конструкциям. Класс может наследовать от одного базового класса, реализовывать несколько интерфейсов и подмешивать поведение из миксинов через with. Методы расширения добавляют члены к типам, объявленным в другом месте, а именованные конструкторы и конструкторы factory скрывают, какой класс на самом деле создаётся. Текстовый поиск находит имена, но не структуру за ними.
Maguyva передаёт эту структуру агенту, и он может проследить изменение от виджета до сервиса, от которого тот зависит.
Maguyva охватывает файлы .dart. Классы, миксины и расширения извлекаются как типы. Пресет functions в structural_search охватывает функции, методы, локальные функции, лямбды, а также порождающие конструкторы, конструкторы const и factory. Сигнатуры фиксируют группы необязательных позиционных и именованных параметров и члены static; суффиксы ? и ! удаляются из имён определений.
Импорты нормализуют директивы import, part и library и отбрасывают предложения show, hide и as. Вызов через префикс импорта, например http.get после import 'package:http/http.dart' as http, остаётся в графе.
Типизация получателя отслеживает параметры, переменные с объявленным типом и с инициализатором, геттеры и циклы for-in по спискам, множествам и итерируемым объектам; var и dynamic считаются выведенными типами. При разрешении унаследованных членов учитываются предложения extends, implements и with. Граф также фиксирует создание экземпляров, ссылки на типы, чтение и запись, а также рёбра исключений.
CartRepository.addItem и из каких виджетов?» (find_symbol, затем dependency_search по входящим связям)PaymentGateway?» (dependency_search)get_task_context)map, where и forEach, методы Future и Stream вроде then и listen, а также библиотеки dart:. Для них используйте text_pattern_search.structural_search локальная функция или лямбда может накладываться на содержащий её вызываемый объект, а геттеры и сеттеры отображаются как сигнатуры методов.Подключите репозиторий по быстрому старту, затем изучите матрицу поддержки на странице совместимости. Для других мобильных кодовых баз прочитайте руководство по Kotlin и руководство по Swift.
Лучше всего подходит
Сценарии работы агента
Детали движка
Полезные точки входа MCP
Используйте для класса виджета, репозитория или сервиса, когда нужны определение и ссылки.
Используйте обход входящих связей для метода репозитория или интерфейса, чтобы увидеть вызовы и реализации перед изменением API.
Используйте для промптов вроде «проследи, как кнопка оформления заказа доходит до платёжного API».
Похожие гайды
Kotlin прячет много связей в получателях и лямбдах. Граф снова делает их видимыми.
Расширения
.kt, .kts
В Swift поведение живёт в протоколах и расширениях. Агенту нужно видеть и то и другое.
Расширения
.swift