C в Maguyva: графы вызовов для системного и встраиваемого кода
В C граф вызовов и есть архитектура. Агенту стоит прочитать его до того, как что-то править.
Расширения
.c, .h
Maguyva поддерживает Lua с AST, символами и графом, чтобы ИИ-агенты могли прослеживать модули, методы с двоеточием, классы на метатаблицах и цепочки require в коде на Lua.
В Lua нет ключевого слова для классов. Объекты являются таблицами, методы являются хранящимися в них функциями, а наследование представляет собой вызов setmetatable. Модуль есть то, что возвращает require. Структура реальна, но живёт в соглашениях, которых текстовый поиск не понимает.
Maguyva читает эти соглашения как структуру, и агент может спросить, кто вызывает метод или какие таблицы расширяют базовую, и получить прямой ответ.
Maguyva охватывает файлы .lua. Извлекаются объявления функций, определения local function и функциональные выражения, а методы с двоеточием, такие как function Account:deposit(), приписываются таблице-владельцу Account. Цепочки методов прослеживаются вызов за вызовом, а вызовы через self остаются привязанными к охватывающему объекту.
Соглашения Lua становятся связями так:
require, dofile и loadfile фиксируют импорты.setmetatable на уровне модуля фиксирует наследование.ClassName:new(), ClassName.new() и setmetatable({...}, ClassName) считаются созданием экземпляра.error() фиксирует выброс ошибки, а pcall и xpcall фиксируют её перехват.Граф также фиксирует чтение и запись и поток управления.
Inventory:addItem и из каких скриптов?» (find_symbol, затем dependency_search по входящим связям)util.http через require?» (dependency_search)get_task_context)string, table, math, io, os, coroutine, debug и utf8), а также API vim.* из Neovim и ngx.* из OpenResty. Вызовы этих API не являются рёбрами графа; чтобы найти их, используйте text_pattern_search.classes и imports в structural_search для Lua ничего не выбирают. Используйте вместо них find_symbol или text_pattern_search.Подключите репозиторий по быстрому старту, затем изучите матрицу поддержки на странице совместимости. Для движков, которые встраивают Lua в нативный код, прочитайте и руководство по C.
Лучше всего подходит
Сценарии работы агента
Детали движка
Полезные точки входа MCP
Используйте для функции модуля или метода с двоеточием, когда нужны определение и вызовы.
Используйте обход входящих связей, чтобы увидеть, какие файлы загружают общий модуль через require, прежде чем его переносить.
Используйте для вызовов `vim.*`, `ngx.*` или стандартной библиотеки, отфильтрованных из графа.
Похожие гайды
В C граф вызовов и есть архитектура. Агенту стоит прочитать его до того, как что-то править.
Расширения
.c, .h
Полезно, когда кодовые базы на Python разрастаются по сервисам, скриптам, тайп-стабам и эксплуатационному связующему коду.
Расширения
.py, .pyi, .pyw