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 розкидані по сервісах, скриптах, файлах типів (stub) та операційному «клеї».
Розширення
.py, .pyi, .pyw