← 返回博客
AI测试

让 AI 自己 debug:缺陷调查的三次架构重写

2025-03-22

好的架构不是设计出来的,是被问题逼出来的。

起点:一个看似简单的需求

代码变更分析会标记三类发现:

  • [BUG]:置信度 >= 90%,可以直接提交
  • [SUSPECT]:置信度 50-90%,需要进一步调查
  • [RISK]:设计层面的风险,生成测试建议即可

[SUSPECT] 是最棘手的——"可能有问题,但证据不够"。让 AI 自己完成调查过程。

V1.0:天真的大循环

一个简单的大循环,把所有发现一起调查。

崩溃症状:

  • AI 开始重复分析之前已经看过的代码
  • 上下文窗口在第 3 个发现时被填满
  • 系统进入无限循环

V1.0 存活了 6 天就被废弃了。

V1.1:Per-Finding 隔离

核心改进:

  • 上下文隔离:每个发现在独立上下文窗口中调查
  • 增量交付:每个发现完成后立即写回主文档
  • 三重收敛检测:确认/排除/饱和
  • 状态持久化:每个发现的状态持久化到磁盘
指标 V1.0 V1.1
10 个发现完成率 ~30%(崩溃) 100%
单发现平均耗时 N/A 3-5 分钟
误判率 < 10%

V1.2:自动化 + 调查策略矩阵

V1.1 需要手动触发每个发现的调查。V1.2 实现了全自动:

人类: /deep_investigation auto_mode=true
AI: F1 → 完成 → F2 → 完成 → ... → 生成总结报告

调查策略矩阵:

假设类型 应该看什么 去哪里找
条件逻辑可疑 调用方代码 GitHub 搜索所有 caller
空值处理缺失 数据库 schema + 上下文 表定义 + Service 层
配置依赖 配置文件 + 环境差异 各环境 config
前后端契约不一致 API 定义 + 实际响应 API 文档 + 代码
共享写入方法字段覆盖 所有调用方 + SQL 语句 Mapper XML + Service

三次重写的规律

V1.0 → V1.1:解决"能不能跑通"的问题
V1.1 → V1.2(auto):解决"好不好用"的问题
V1.2 → V1.2(策略矩阵):解决"能不能变聪明"的问题

你只能在实战中发现问题,然后演化架构来适应。

给同样在做 AI 调查系统的人

  1. 永远按子任务隔离上下文——共享上下文只会互相污染
  2. 给 AI 一个"我不确定"的合法出口——REMAINS_SUSPECT 状态
  3. 把领域经验编码为策略表——效率高且一致
  4. 增量交付而非批量交付——崩溃是常态
  5. 状态持久化到磁盘——LLM 上下文是易失的

这是"当 AI 接管测试流水线"系列的第三篇。下一篇将讲述整个系统从 1 个 Command 长到 15 个 Command 的迭代故事。