浏览 AI使用教程

报错时该给 AI 哪些材料,才能得到可验证的修复

只给 AI 一张截断报错图,它只能猜。补齐复现命令、完整堆栈、输入、版本和最近改动,才能把修复从建议变成可验证结论。

沿完整工作流推进

前一阶段的可检查结果,是下一阶段的输入;中间证据不足时停在当前阶段。

  1. 01同一句 undefined 报错,缺少现场信息就可能有五种答案
  2. 02先确认这次任务的起点、边界和交付
  3. 03从“记录最小复现”走到“修复后跑三类验证”
  4. 04同一复现包的全部文件
  5. 05完成后的复现包:命令、版本、完整错误和最近改动
沿同一任务走到交付

同一句 undefined 报错,缺少现场信息就可能有五种答案

报错提问只有一张截断截图:“Cannot read properties of undefined”。AI 给了五种猜测,没人知道运行命令、输入、版本和最近改动。

  • 另一环境可以复现
  • 完整错误和最近 diff 可用
  • 修复用原复现步骤验证
本例材料

先确认这次任务的起点、边界和交付

需要确认本例内容
现有材料Node.js 20+;order.mjs与order.test.mjs。请求契约允许省略items,但旧计算函数未处理。
不能越过的边界复现包只放解决问题所需内容,秘密脱敏;保留完整错误文本和最小复现;预期与实际分开。
要交付的结果复现包:命令、版本、完整错误和最近改动
处理记录

从“记录最小复现”走到“修复后跑三类验证”

当前阶段实际处理
记录最小复现从干净起点写命令或点击步骤、输入、实际结果和期望结果,确认是否每次发生。
保存完整错误不要只截最后一行;保留时间、退出码、堆栈、请求 ID、相关日志和首次异常。
补环境与变化写系统、运行时、依赖、分支、配置来源和最后一次可用版本,列最近实际 diff。
形成单一根因假设说明证据为何指向某层,以及怎样用最小实验证伪;不要同时改依赖、配置和代码。
修复后跑三类验证重跑原复现、目标测试和相邻回归,记录前后输出与回滚方式。

同一复现包的全部文件

order.mjs

有缺陷的旧代码

export function total(order) {
  return order.items.reduce((sum, item) => sum + item.cents, 0);
}
order.test.mjs

缺失与正常输入

import test from 'node:test';
import assert from 'node:assert/strict';
import { total } from './order.mjs';
test('缺失items视为空订单',()=>assert.equal(total({}),0));
test('正常订单',()=>assert.equal(total({items:[{cents:125},{cents:75}]}),200));
命令

保留真实完整堆栈

node --version
node --test order.test.mjs > repro.log 2>&1
契约变化与候选diff

只验证一个假设

旧契约:必须传items数组。
新契约:可省略items,省略代表空订单。

- return order.items.reduce((sum, item) => sum + item.cents, 0);
+ return (order.items ?? []).reduce((sum, item) => sum + item.cents, 0);

修复后用同一命令复测。items为字符串或金额缺失是否拒绝是另一个契约问题,不在此处猜。复现包附实际repro.log、Node版本、两份文件及diff,不截掉堆栈。

AI 介入点

把完整报错现场交给 AI,而不是只发一句‘运行失败’

适合已经能够稳定复现、并保留完整错误和环境信息时。

可复制使用

把完整报错现场交给 AI,而不是只发一句‘运行失败’

我们有一个可复现故障。请做分步诊断,不要一上来列十种猜测、重装依赖或清空缓存。

期望行为/实际行为【】;精确复现步骤【】;完整错误和前后日志【】;系统、版本、运行目录【】;最近一次正常状态【】;已尝试操作【】。

先把事实和未知分开,给最多三个能被证伪的原因,每个原因对应一项低风险检查。每轮只给一个最小命令或操作,并说明预期观察;等我贴结果后再更新判断。修复前不得改变环境;任何命令可能删除文件、改配置、联网或影响共享服务时先停下来说明。

使用范围:适合已经能够稳定复现、并保留完整错误和环境信息时。不要根据错误关键词直接下结论,不虚构命令输出,不先重装或删除环境。

最终输出

完成后的复现包:命令、版本、完整错误和最近改动

旧实现对{}应抛读取reduce的TypeError;修复为缺失时使用[]后,两条测试应通过。实际堆栈和路径由终端产生,不声称另一台机器已复现。

常见失败

为什么“材料很全,AI 仍给出多个不相关修复”还不能交付

材料很全,AI 仍给出多个不相关修复

原因
没有说明哪个假设已被排除
怎么改
把每次实验、唯一改动和结果写入时间线,要求下一建议能被单独证伪
验收方式

复现包:命令、版本、完整错误和最近改动通过哪些检查才算完成

依据与范围

本页实际使用的资料