AI 诊断手册
AI 的首要任务是缩小契约候选空间和组织证据,不是凭截图自由生成图形代码。优先使用结构、数值和时序 oracle;视觉 模型只作为低成本筛查器。契约分类、等价类和验证层次见 21-contract-reconstruction-research.md。
接到一个新症状时
1. 先分类,不猜修复
把症状标为:启动/ABI、服务、内存、线程、文件、输入、shader、纹理、target/composite、present、性能或内容缺失。 同一现象可以有多个候选,但只能选择一个最小下一证据。
2. 写出不变量
例:
- “黑屏”不变量:至少一个有效 draw 写入最终可达的 target,且 present source 在 acquire 后包含该 target 的内容。
- “文字缺失”不变量:VS/FS pair、glyph vertex/UV、atlas view、descriptor、discard 输入和最终颜色都可解释。
- “139”不变量:fault address 属于哪个 guest region,调用者是否检查了分配失败,宿主是否越过了边界。
3. 选不扰动时序的证据
优先:静态反汇编、离线 shader reflection、文件 hash、低频计数、单次 snapshot、同 draw 的结构摘要。 最后才是高频日志、强制 sleep、全量 dump 和改变调度的开关。
4. 只做一个实验
实验必须回答一个二分问题:
实验结束后马上记录结果、清理现场、更新“已排除列表”,不要把未命中误写成“系统正常”。
5. 用参照系收敛
优先选择:Mac 同场景、另一个已知可工作的 title、离线三角形、纯色 shader、golden texture、原始 guest bytes。 参照系必须记录版本和输入;否则“Mac 正常”也可能只是不同存档或不同资源路径。
决策树
AI 输出格式
每次给出:
- 当前已证实事实;
- 已排除事实;
- 最多三个候选,按证据排序;
- 一个最小实验或静态检查;
- 预期的三种结果和下一步;
- 回滚/清理动作;
- 文档条目编号和是否需要 commit。
禁止只输出“可能是竞态”“可能是 patch”而没有可证伪的下一步。