PhoenixBug调查Skill phx:investigate

这个技能用于帮助开发者调查和修复Elixir/Phoenix代码中的错误。采用Ralph Wiggum方法,先检查明显问题,字面读取错误,提高调试效率,支持并行深度调查模式。关键词:Elixir, Phoenix, bug调查, 错误处理, 调试工具, 代码调试, Ralph Wiggum方法。

测试 0 次安装 0 次浏览 更新于 3/11/2026

name: phx:investigate description: 调查Elixir/Phoenix代码中的错误或bug。使用Ralph Wiggum方法 - 先检查明显的东西,字面读取错误。添加–parallel进行4轨深度调查。 argument-hint: <bug描述> [–parallel] disable-model-invocation: true

调查 Bug

使用Ralph Wiggum方法调查bug:检查明显的东西,字面读取错误。

用法

/phx:investigate 用户在密码重置后无法登录
/phx:investigate UserController.show中的FunctionClauseError
/phx:investigate 复杂身份验证bug --parallel

参数

$ARGUMENTS = Bug描述或错误消息。添加 --parallel 进行深度4轨调查。

模式选择

当bug涉及3个以上模块、跨越多个上下文、是间歇性的或涉及并发,或用户说 --parallel/deep 时,使用并行模式(启动 deep-bug-investigator)。

否则:运行下面的顺序工作流。

调查工作流

步骤 0: 咨询复合文档

grep -rl "KEYWORD" .claude/solutions/ 2>/dev/null

如果存在匹配的解决方案,呈现它并询问:“应用此修复,还是重新调查?”

步骤 0a: 运行时自动捕获(Tidewave – 当可用时为主要方式)

如果检测到Tidewave MCP,从这里开始,而不是让用户粘贴错误。自动捕获运行时上下文:

  1. mcp__tidewave__get_logs level: :error – 捕获最近错误
  2. 解析堆栈跟踪,通过 mcp__tidewave__get_source_location 与源代码关联
  3. 对于数据bug:使用 mcp__tidewave__execute_sql_query 检查状态
  4. 对于逻辑bug:使用 mcp__tidewave__project_eval 测试假设
  5. 对于UI bug:使用组件名称调用 mcp__tidewave__get_source_location

向用户呈现预填充的上下文:

从运行时自动捕获:

  • 错误:{从日志解析的错误}
  • 位置:{从get_source_location获取的文件:行号}

正在调查此问题。如有错误请更正。

这消除了应用和代理之间复制粘贴错误。 如果Tidewave不可用:转到步骤1。

步骤 1: 健全性检查

mix compile --warnings-as-errors 2>&1 | head -50
mix ecto.migrate

步骤 2: 复现

mix test test/path_test.exs --trace
tail -200 log/dev.log | grep -A 5 -i "错误\\|异常"

步骤 3: 字面读取错误

解析错误消息 — 检查 references/error-patterns.md

步骤 4: 检查明显的东西(Ralph Wiggum清单)

文件保存了吗?Atom vs string?数据预加载了吗?模式匹配正确吗?Nil?返回值?服务器重启了吗?

LiveView表单保存静默失败? 首先检查changeset错误 — 不是视口、点击机制或JS。缺少必需嵌入式字段的 hidden_input 会导致 {:error, changeset} 且没有可见UI反馈。

步骤 5: IO.inspect / Tidewave project_eval

步骤 6: 识别根本原因

实际发生的情况 vs 应该发生的情况。

自主迭代

对于自主调试,使用 /ralph-loop:ralph-loop 并指定清晰的完成标准和 --max-iterations

参考文献

  • references/error-patterns.md — 常见错误和清单
  • references/investigation-template.md — 输出格式
  • references/debug-commands.md — 调试命令和常见修复