Maguyva 的 Haskell 支持:面向类型类与模块的代码图谱
Haskell 的类型说明了很多。图谱告诉你谁依赖它们。
扩展名
.hs, .lhs
在 Elixir 里,几乎一切都是宏调用。defmodule、def、use、alias 和 @impl 都会被解析为调用,而 use GenServer 引入的行为从未出现在文件里。只看得到调用语法的工具,分不清定义和依赖,也分不清 GenServer 回调和辅助函数。
Maguyva 把这些宏映射为关系,让智能体能看到哪些模块实现了某个 behaviour,以及谁在调用某个上下文函数。
Maguyva 支持 .ex 和 .exs 文件。Elixir 的宏会这样映射为关系:
alias、import 和 require 记录导入。use 记录导入。对于 GenServer、Supervisor、Agent、Task、Phoenix.Controller、Phoenix.LiveView 和 Ecto.Schema 等 OTP 与框架 behaviour,它还会记录该模块实现了这个 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 的 incoming 方向)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 或协议使用 incoming 方向遍历,查看哪些模块实现了它。
用于“追踪一次结账请求从控制器到数据库的过程”这类提示词。
相关指南