用途
git-bisect 是一个帮助定位引入测试失败或测试不稳定(flakiness)提交的提示词技能。它让 AI 扮演资深软件工程师,通过 git bisect 系统性地二分查找 git 历史,找出导致问题的确切提交。
主要能力
- 解析用户提供的参数,提取坏提交/分支(BAD_REF)、好提交/分支(GOOD_REF)和测试命令(TEST_COMMAND)。
- 验证问题是否存在于坏提交上,并检查测试文件是否存在。
- 启动 git bisect,并通过自动化脚本(git bisect run)执行二分查找。
- 在自动化失败时支持手动二分,逐提交运行测试并标记 good/bad/skip。
- 识别罪魁提交后,输出包含作者、日期、提交信息、变更文件及后续步骤的结果报告。
- 处理构建错误、测试文件缺失、意外失败等特殊情况,支持跳过提交。
- 提供处理 flaky 测试、多测试文件组合、超时包装等常见模式。
使用方式
用户通过命令参数提供信息,格式可以是:
bad=<ref> good=<ref> test="<command>"完整指定<bad-ref> <good-ref> "<test-command>"位置参数"<test-command>"仅提供测试命令,再提示输入坏/好引用
示例:
/git/bisect bad=HEAD good=origin/b12.3.0 test="yarn nx test package-name --testPathPattern='test.test.ts'"
/git/bisect HEAD origin/b12.3.0 "yarn nx test package-name --testPathPattern='test.test.ts'"
/git/bisect "yarn nx test package-name --testPathPattern='test.test.ts'"
工作流程分为多个阶段:解析参数、验证问题、启动 bisect、自动化二分、手动二分(如需要)、识别罪魁提交、报告结果。
适用场景
- 需要快速定位引入测试失败或 flakiness 的提交。
- 仓库使用 Nx 测试命令(如
yarn nx test),并希望避免 Nx 守护进程异步问题。 - 支持 git worktree,并处理 node_modules 共享情况。
- 需要自动化或手动二分查找的软件开发与调试场景。
限制
- 必须满足工具要求:Git CLI 可用、仓库干净或仅有预期变更、测试命令可执行。
- 建议使用
NX_DAEMON=false以避免异步 Nx 守护进程项目图重算影响执行稳定性。 - 测试命令必须成功时退出码为 0,失败时非零。
- 长时间运行的测试可能需要超时包装(如
timeout 60)。 - 对于 flaky 测试,可能需要多次运行或更宽松的脚本,并在报告中记录。
- 构建错误、合并冲突、意外失败或已知无关损坏的提交应跳过。
- 使用 worktree 时,如果 node_modules 共享,构建可能较慢。
- 对于非常大的二分范围,建议先缩小范围。
- 其他具体功能、收费、价格、平台、效果或使用步骤暂未提供。