用途:为 Elixir 项目构建调用树,展示函数如何从入口点被逐层调用,适用于调试数据流、规划函数签名变更、理解 bug 如何到达某段代码。
主要能力:以 mix xref callers 为权威来源(grep 仅作后备),从入口点向上追踪调用者;识别入口点类型(Controller、LiveView 回调、Oban Worker、GenServer 回调);记录已访问的 MFA 以防循环调用导致死循环;提取参数模式,了解调用方式而非仅知道调用者;最大深度限制为 10。
使用方式:先运行调用者查询,再按需检查链中其他函数,例如: mix xref callers MyApp.Accounts.update_user/2 mix xref callers MyApp.Accounts.get_user/1 读取报告位置以查看参数模式。需要完整递归树、参数提取和并行分类追踪时,可委派给 call-tracer 代理: Agent(subagent_type: "phx:call-tracer", prompt: "Build call tree for MyApp.Accounts.update_user/2") 该代理按入口点类别使用并行子代理(Controllers、LiveView、Workers、Internal),各自获得 200k 上下文。委派前需确定有效最大嵌套深度:优先使用显式正整数 CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH;未设置时检查 claude --version(2.1.217–2.1.218 默认 1,2.1.219+ 默认 3);版本不可用则保守取 1。深度 2+ 委派给编排器,深度 1 则在主会话中直接生成相应追踪提示并合并结果,不要生成无法委派的编排器。
输出位置:.claude/plans/{slug}/research/call-tree-{function}.md
限制:最大深度 10,更深的树通常反映架构问题而非有用追踪;入口点处停止;参考资料包括 mix-xref-usage.md、entry-points.md、argument-extraction.md。