路线阶段:AI Vibe Coding 第 7 章。
本章目标:把“想重构但不敢动”变成“可控推进、可随时止损”的工程实践。
学习目标
完成本章后,你应该能做到:
- 将大重构拆成可并行、可回滚的小步迭代。
- 用双轨运行验证新旧实现行为一致性。
- 为每一步重构建立可观测指标与回归门禁。
- 让 AI 在重构任务中稳定输出可审查结果。
为什么重构最容易翻车
常见场景:
- 一次改动跨太多模块。
- 新实现上线后缺少行为对照。
- 没有回滚开关,失败就只能紧急修补。
AI 会放大这个风险:它执行快,但如果边界不清,错误也会快速扩散。
重构四阶段模型
- Observe:先补可观测指标,记录旧行为基线。
- Parallel:新旧实现并行运行,输出对照差异。
- Switch:灰度切换到新实现。
- Clean:稳定后删除旧链路。
任务切片模板
[Slice-01] 抽离接口,不改行为
[Slice-02] 新实现最小可运行
[Slice-03] 双轨对照日志
[Slice-04] 灰度开关接入
[Slice-05] 全量切换与旧代码下线
每个切片都必须独立可回滚。
双轨运行模式
public interface IRewardEngine
{
RewardResult Calc(StageResult input);
}
public sealed class RewardEngineDualRunner
{
private readonly IRewardEngine _legacy;
private readonly IRewardEngine _next;
private readonly EventBus _eventBus;
public RewardEngineDualRunner(IRewardEngine legacy, IRewardEngine next, EventBus eventBus)
{
_legacy = legacy;
_next = next;
_eventBus = eventBus;
}
public RewardResult Calc(StageResult input, bool useNew)
{
var oldResult = _legacy.Calc(input);
var newResult = _next.Calc(input);
if (!RewardResultComparer.Equals(oldResult, newResult))
{
_eventBus.Publish("RefactorDiffDetected", new RefactorDiffPayload(oldResult, newResult));
}
return useNew ? newResult : oldResult;
}
}
差异对照指标
至少比较:
- 关键输出字段一致性
- 计算耗时差异
- 异常率差异
- 上下游副作用差异(事件、日志、写库)
灰度开关接入
public sealed class RefactorSwitch
{
public bool RewardEngineV2Enabled;
public int RewardEngineV2Percent;
public bool Hit(string playerId)
{
if (!RewardEngineV2Enabled) return false;
var h = StableHash(playerId) % 100;
return h < RewardEngineV2Percent;
}
private static int StableHash(string s)
{
unchecked
{
var h = 17;
for (var i = 0; i < s.Length; i++) h = h * 31 + s[i];
return h & 0x7fffffff;
}
}
}
AI 在重构中的职责
Planner
- 产出切片计划
- 标注依赖关系
- 给每个切片配置验收断言
Builder
- 执行单个切片代码改动
- 不越界改动
- 补对应测试与对照日志
Reviewer
- 审查行为一致性
- 审查开关与回滚路径
- 审查旧链路下线时机
验收断言设计
每个切片必须有硬断言:
- 构建通过
- 核心测试通过
- 对照差异率 < 阈值
- 灰度指标无异常
常见坑
坑 1:新旧实现共享可变状态
会污染对照结果,必须隔离状态。
坑 2:差异日志没有采样
高频路径会产生海量日志,影响性能。
坑 3:旧代码长期不删
双维护成本高,最终变成新债务。
本月作业
选择一个高风险模块做“完整重构演练”:
- 拆 5 个切片并完成前 3 个。
- 接入双轨对照和灰度开关。
- 输出差异率和回滚演练报告。
下一章:AI Vibe Coding 08《知识库与规范中心:让AI始终按团队标准输出》。