当一个 AI 编程智能体写出的代码看起来没问题,却悄悄弄坏了某些东西时,问题通常不在模型,而在于这个智能体从未看到那次失败。它写下改动、宣告胜利,然后继续前进,因为没有任何东西告诉它测试套件现在已经变红了。解决办法就是闭合这个回路:让智能体自己的工具自动把结果反馈给它。
本指南将展示如何构建这样一个反馈闭环,让你的智能体在你发现之前先抓出自己的错误。
核心理念:错误应当回流进上下文
一个可靠的智能体工作流有四个节拍——探索、规划、构建、验证。大多数人止步于“构建”。验证这一步,正是区分“产出可运行代码的智能体”与“产出看似合理代码的智能体”的关键。
验证意味着在每次改动后运行真实的检查——你的测试运行器、linter 和类型检查器——并把输出反馈给智能体。当某项检查失败时,错误信息会进入智能体的上下文,模型会像对待任何其他指令一样对待它:读取失败信息并加以修复。那些枯燥的来回往返,无需人工介入。
你可以用两种方式做到这一点:在项目说明里要求它这么做,或者把它自动化,让它无法被跳过。
方案一:直接在项目配置里要求
最省事的版本,是在你的 CLAUDE.md 或 AGENTS.md(大多数智能体在启动时会读取的纯文本说明文件)里加上一行:
## Verification
After any code change, run `npm run typecheck && npm test`.
If either fails, fix the cause and re-run before reporting done.
这种做法出奇地有效——但它只是建议性的。一个忙碌的智能体可能会忘记,或者认定某个改动“太小”而不必验证。对于任何你真正在意的东西,请让验证变得确定无疑。
方案二:用 hook 把它自动化
Claude Code hooks 让你能够响应生命周期事件来运行一条 shell 命令,而不依赖于模型是否记得这么做。这里相关的是 PostToolUse,它会在智能体编辑文件之后触发。正如一篇 实用的 hooks 指南 所说,PostToolUse 就是为响应而生的——格式化、记录日志、运行测试——而它的输出会被注入回智能体的上下文,从而影响它的下一步动作。
下面是一个最小化的 hook,它会在任何文件编辑后运行你的类型检查器,并把失败结果交还给智能体。写在 .claude/settings.json 中:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "npm run typecheck"
}
]
}
]
}
}
现在这个循环就自动化了:智能体写代码 → hook 运行 tsc → 如果出现类型错误,消息便作为上下文回流 → 智能体修复它 → hook 再次运行。hooks 参考文档 记录了非零退出码和输出是如何呈现给模型的。这个循环会在每一次写入时运行,无需任何提示。
让循环保持快速且有针对性
反馈循环只有在足够快的时候才有用。几条经验法则:
- 在每次编辑时运行廉价的检查,让昂贵的检查不那么频繁地运行。 对改动过的文件做类型检查或 lint 很快。而一整套集成测试就不快了——把它放在
Stophook(智能体结束一轮时)或一条手动命令后面,而不是每敲一下键就跑。 - 将范围限定在改动之处。 在改了一行 CSS 之后跑整个测试套件既浪费时间,又会淹没上下文。在你的工具链允许的情况下,只针对受影响的文件。
- 让失败信息清晰可读。 智能体只能修复它读得懂的东西。带有清晰、定位明确的错误信息(
file:line: message)的 linter 和类型检查器,恰好能给模型它所需要的;而笼统的“build failed”则做不到。
一个具体的前后对比
没有循环时:你让智能体重命名一个函数。它更新了三处调用点,漏掉了它没打开过的某个文件里的第四处,然后报告完成。一小时后,你在运行时才发现那处坏掉的 import。
有循环时:同样的重命名会在保存时触发 typecheck。tsc 在那处被漏掉的调用点报告 Cannot find name 'oldFn'。该错误进入上下文,智能体打开第四个文件,修复引用,下一次检查随即通过——这一切都发生在它告诉你“完成了”之前。
要点
AI 智能体擅长产出代码,却不擅长察觉代码什么时候出了错。你弥合这道缝隙的方法,就是把你所依赖的同一种信号交给它们:一个变红的测试、一个类型错误、一条失败的 lint 规则——在改动之后立刻自动送达。先从项目说明里的一行开始,然后把你最重要的那项检查提升为一个 hook,这样无论模型记不记得,它都会运行。那些让人觉得“聪明”的智能体,通常不过是被接入了一个紧凑反馈闭环的那些罢了。
SOURCES
Auto-generated by Vibe Coding Academy on June 19, 2026, grounded in the real sources linked above. We review for accuracy, but please verify time-sensitive details against the primary sources.
Build Blueprint · Creator
有想法?获取你的 AI 智能体可直接据此构建的规格说明。
描述任意产品,即可获得完整的构建蓝图——技术栈、数据模型、界面、API,以及可直接粘贴到 Claude Code 或 Cursor 的提示词。可导出为 PDF。
打开 Blueprint ▸