C в Maguyva: графы вызовов для системного и встраиваемого кода
В C граф вызовов и есть архитектура. Агенту стоит прочитать его до того, как что-то править.
Расширения
.c, .h
Maguyva поддерживает C++ с AST, символами и графом, чтобы ИИ-агенты отслеживали классы, пространства имён, виртуальные переопределения и вызывающих в больших кодовых базах.
В C++ имена не уникальны. send может быть свободной функцией, членом трёх классов и переопределением в четвёртом. Пространства имён, шаблоны и определения вне класса, например Socket::send в файле .cpp, распределяют один тип по многим файлам. Текстовый поиск возвращает все совпадения, но не говорит агенту, до какого из них доходит вызов.
Maguyva индексирует классы, члены и вызовы вместе с их владельцами, чтобы агент шёл по реальной структуре, прежде чем вносить правки.
Maguyva охватывает распространённые расширения исходных и заголовочных файлов C++, включая .cpp, .cc, .cxx, .hpp, .hh и .hxx. Извлекаются классы, структуры и функции, а определение вне класса, например void Socket::send(), относится к классу-владельцу и пространству имён. Виртуальные члены фиксируются, а параметры шаблонов входят в сигнатуры.
Типизация получателей отслеживает параметры, локальные объявления, поля, циклы for по диапазону и auto, а также заглядывает внутрь unique_ptr, shared_ptr и optional, поэтому вызов вроде conn->send() можно разрешить в нужный класс. Списки базовых классов питают наследование, а выражения new считаются созданием экземпляров.
Действует то же маскирование макросов экспорта и аннотаций, что и в C. Около 273 имён стандартной библиотеки (std::cout, std::endl, printf и подобные) отфильтровываются из связей. Граф фиксирует вызовы, include, наследование, переопределения, создание экземпляров, ссылки на типы, чтения и записи, а также рёбра throw.
Renderer::draw и кто его вызывает?» (dependency_search)OrderBook::match и всех вызывающих.» (find_symbol)get_task_context).h входит в списки расширений C, C++ и Objective-C, поэтому в деревьях, где смешаны C и C++, заголовки общие для этих профилей.std:: применяйте text_pattern_search.Подключите репозиторий по быстрому старту, затем изучите матрицу поддержки на странице совместимости. Если часть дерева написана на чистом C, прочитайте и руководство по C.
Лучше всего подходит
Сценарии работы агента
Детали движка
Полезные точки входа MCP
Используйте с квалифицированным именем вроде `OrderBook::match`, когда нужны определение и вызывающие.
Перед изменением сигнатуры используйте для базового класса или виртуального метода, чтобы найти переопределения и вызывающих.
Используйте для промптов вроде «объясни, как сообщение с рыночными данными доходит до движка стратегий».
Похожие гайды
В C граф вызовов и есть архитектура. Агенту стоит прочитать его до того, как что-то править.
Расширения
.c, .h
Актуально, когда вам нужна ИИ-помощь в Rust без потери структурных гарантий безопасности, ради которых Rust вообще стоит использовать.
Расширения
.rs