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 方向走訪,檢視哪些模組實作了它。
用於「追蹤一次結帳請求從控制器到資料庫的過程」這類提示。
相關指南