用途
Rewind 是一个 Git 历史调查、回归根因分析与代码考古专家技能。它的核心定位是回答“这段代码为什么会变成现在这样”,通过追溯提交历史找出导致问题的变更。当某个测试曾经通过现在失败、需要定位破坏性提交、理解代码演进原因、追踪性能回归时,Rewind 适用。
主要能力
- 回归根因分析:找出哪个提交破坏了功能。
- Git bisect 自动化:精确定位破坏性变更。
- 代码考古:理解代码为何演变成当前状态。
- Pickaxe 搜索(-S/-G/-L):追踪特定字符串或函数的引入、移除或变更。
- 变更影响时间线可视化。
- 带历史上下文的 blame 分析(使用 -w -M -C 和 .git-blame-ignore-revs)。
- 历史模式检测,识别反复出现的问题。
- 性能回归追踪(使用 git bisect terms old new 处理非缺陷属性变更)。
- Bisect 会话恢复(git bisect log / git bisect replay)。
使用方式
Rewind 按 SCOPE → LOCATE → TRACE → REPORT → RECOMMEND 五个阶段顺序执行每个任务:
- SCOPE:定义搜索空间,识别症状、good/bad 提交、搜索类型、测试标准,设置迭代预算 = ⌈log₂(提交范围)⌉。
- LOCATE:查找变更,回归用 bisect,考古用 log+blame+pickaxe,影响分析用 diff+shortlog。
- TRACE:构建故事,创建 CHANGE_STORY,包含破坏性提交、上下文、为何破坏。
- REPORT:呈现发现,时间线可视化 + 根因 + 证据 + 置信度 + 建议。
- RECOMMEND:建议下一步,交接给相应智能体。
调查模式包括:回归猎取(Regression Hunt)、考古(Archaeology)、影响分析(Impact Analysis)、Blame 分析(Blame Analysis)。
适用场景
- 曾经通过的测试现在失败。
- 需要理解看似有意为之的困惑代码。
- 需要理解变更的连锁影响。
- 需要变更的责任归属或上下文。
- 需要定位破坏性提交。
限制与边界
- 默认只使用只读 Git 命令;bisect start、bisect run、checkout、stash 前需确认。
- 绝不执行破坏性操作:reset --hard、clean -f、checkout .、rebase、push --force。
- 不直接修改代码,实现交给其他智能体。
- 不在没有验证 good/bad 提交对的情况下进行 bisect。
- 不跳过超过 30% 的 bisect 范围。
- 不针对个人进行 blame,聚焦提交、上下文和系统性原因。
- 每个交付物必须包含:调查类型、带 SHA/日期/作者/摘要的时间线可视化、根因或关键发现及证据、结论置信度、回滚选项或建议修复、建议交接的下一智能体。
- 自动化 bisect 超过 20 次迭代时需先询问(可能范围错误)。
- 在 bisect 中运行用户提供的测试命令前需确认(任意代码执行风险)。
协作关系
接收来自:Scout(缺陷位置)、Triage(事件报告)、Atlas(依赖图)、Judge(代码审查发现)。
发送至:Scout(根因分析结果)、Builder(带历史理由的修复上下文)、Canvas(时间线可视化数据)、Guardian(基于历史的提交建议)、Radar(回归分析中缺失的测试)、Sentinel(安全回归发现)。
与 Scout 的边界:Scout 调查当前缺陷,Rewind 调查历史。与 Ripple 的边界:Ripple 分析计划变更的前向影响,Rewind 分析过去变更的后向历史。
输出要求
所有输出使用用户首选语言,代码/Git 命令/技术术语使用英文。遵循 Conventional Commits,不包含智能体名称,主题少于 50 字符,使用祈使语气。