Haskell в Maguyva: графы кода для классов типов и модулей
Типы Haskell говорят о многом. Граф показывает, кто от них зависит.
Расширения
.hs, .lhs
Maguyva поддерживает Elixir с AST, символами и графом, чтобы ИИ-агенты могли прослеживать модули, behaviour, протоколы и структуры в коде на Phoenix и OTP.
Почти всё в Elixir является вызовом макроса. defmodule, def, use, alias и @impl разбираются как вызовы, а use GenServer привносит поведение, которого в файле никогда не видно. Инструмент, который видит только синтаксис вызовов, не может отличить определение от зависимости или колбэк GenServer от вспомогательной функции.
Maguyva превращает эти макросы в связи, и агент видит, какие модули реализуют behaviour и кто вызывает функцию контекста.
Maguyva охватывает файлы .ex и .exs. Макросы Elixir становятся связями так:
alias, import и require фиксируют импорты.use фиксирует импорт. Для behaviour OTP и фреймворков, таких как GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView и Ecto.Schema, он также фиксирует, что модуль реализует этот behaviour.@behaviour и блоки defimpl фиксируют реализацию behaviour или протокола.@doc, @spec, @impl и @callback, фиксируются как аннотации следующей за ними функции. Атрибуты, хранящие значения, например @timeout 5_000, не фиксируются.%User{} считаются созданием экземпляра, raise фиксирует выброс исключения, а rescue и catch фиксируют его перехват.Макросы языка, такие как def, defp, defmodule, case и with, отфильтрованы из вызовов, поэтому граф вызовов показывает ваши собственные функции.
Accounts.register_user и из каких контроллеров?» (find_symbol, затем dependency_search по входящим связям)GenServer?» (dependency_search)get_task_context)def, defmodule, alias и import в грамматике являются узлами вызовов, поэтому результаты в structural_search возвращает только пресет functions, и то лишь для анонимных функций fn. Для именованных функций и модулей используйте find_symbol.IO.puts, String.*, Enum.take и Process.*, отфильтрованы из связей. Для них используйте text_pattern_search.Подключите репозиторий по быстрому старту, затем изучите матрицу поддержки на странице совместимости. Для других функциональных кодовых баз прочитайте руководство по Haskell.
Лучше всего подходит
Сценарии работы агента
Детали движка
Полезные точки входа MCP
Используйте для функции контекста или модуля, когда нужны определение и вызовы; структурные пресеты не выбирают именованные формы `def`.
Используйте обход входящих связей, чтобы увидеть, какие модули реализуют behaviour или протокол.
Используйте для промптов вроде «проследи платёжный запрос от контроллера до базы данных».
Похожие гайды
Типы Haskell говорят о многом. Граф показывает, кто от них зависит.
Расширения
.hs, .lhs
Ruby читается как проза. Но зависимостям за ней всё равно нужна карта.
Расширения
.gemfile, .gemspec, .rake, .rakefile, +ещё 2