用途:当测试失败、构建报错或运行时问题原因不明显时,引导开发者按四阶段流程定位根因,而不是随机修改代码。适用于原因不清的测试失败、依赖或 schema 变更后的构建错误、后端/前端/数据摄取(ingestion)的运行时异常,以及尝试两次以上仍未解决的问题。
主要能力:
- 收集证据:先不改代码,只观察。完整阅读错误与堆栈、构建日志、测试输出;可靠复现问题;用 git log --oneline -20 和 git diff HEAD~5 -- <relevant-directory> 查看近期变更;记录确切错误、出现时间与观察结果。
- 形成假设:基于证据列出 2-3 个可能原因并按可能性排序,每条附证据,先验证最可能的假设,不急于修复。
- 验证根因:用最小实验验证首要假设,阅读可疑代码而非猜测,必要时加日志或调试器,一次只验证一个假设。
- 修复与验证:只修根因,不改动周边代码;运行失败测试确认通过;运行受影响模块的更广测试检查回归;在提交信息或回复中说明修复为何有效。
常用复现命令(保持原样): Java:mvn test -pl <module> -Dtest=FailingTest#failingMethod Python:source env/bin/activate && cd ingestion 后 python -m pytest tests/unit/path/to/test.py::test_name -v TypeScript:cd openmetadata-ui/src/main/resources/ui 后 yarn test path/to/test.spec.ts E2E:yarn playwright:run --grep "test name"
常见根因对照:Python ImportError 多为 schema 变更后模型未重新生成,可 make generate 后重试;TypeScript 生成类型编译错误可 yarn parse-schema 后重试;Java 实体 NullPointerException 检查 bootstrap/sql/migrations/;单独通过、套件失败多为测试间共享状态,可用 --forked(Java)或 -x(pytest);API 404 检查 @Path 注解或路由注册;UI 空白检查 locale/languages/en-us.json 的 i18n 键;集成测试连接被拒检查 docker compose -f docker/development/docker-compose.yml ps。
升级规则:3 次修复失败后停止随机尝试,重新审视假设;5 次失败后质疑架构假设,扩大阅读相邻模块、近期 PR 与依赖变更日志;若修复需改动测试基础设施,先暂停并与用户讨论。
反模式:同时改多处(散弹式调试)、用 try/catch 或空值检查掩盖症状、先归咎框架、跳过复现直接凭感觉修改。
限制:该技能面向 OpenMetadata 仓库,其他项目的命令与根因对照需自行调整;资料未提供安装方式、收费与平台信息。