ByteNoteByteNote
最小 Loop:让 Claude 自己跑测试、修 Bug
字

字节笔记本

2026年10月24日 · 约 7 分钟读完

最小 Loop:让 Claude 自己跑测试、修 Bug

API中转
¥120

老金(@freeman1266)写了一篇 X Article,讲他怎么用"最小 Loop"让 Claude 自己跑测试、修 bug。174 赞、36 转。

他的痛点太真实了,每个用 AI 编程的人都经历过。

配图


一、痛点:人肉循环

让 Claude 写代码 → 跑测试 → 3 个失败 → 把报错粘贴给 Claude → 它修了一个、又破了另一个 → 再粘贴 → 再修 → 再破……一个晚上就这么过去了。

这是人肉循环,人变成了 AI 和测试之间的"搬运工"。你做的事只有:复制报错 → 粘贴给 AI → AI 改 → 再跑测试 → 再复制报错……循环往复。

问题在于,这个循环的人是瓶颈。 你每次手动粘贴报错,花 5 秒,但一天重复 100 次就是 500 秒。更重要的是,你成了"路由器",AI 和测试之间必须经过你。


配图

二、解法:让 Claude 自己跑测试

老金的解法,去掉人这个中间环节,让 Claude Code 自己跑测试、自己看报错、自己修。

这就是最小 Loop:

text
Claude 写代码
  │
  ├── Claude 自己执行 run_command 跑测试
  │     ↓
  │   测试失败(3 个)
  │     ↓
  ├── Claude 自己读 stderr 报错
  │     ↓
  ├── Claude 自己改代码
  │     ↓
  ├── Claude 自己再跑测试
  │     ↓
  │   2 个通过,1 个还失败
  │     ↓
  ├── Claude 自己再改
  │     ↓
  └── 全部通过 → 完成

整个循环 Claude 自己闭合,不用人粘贴报错。


三、和 Loop Engineering 的关系

老金这个"最小 Loop",就是 Loop Engineering 论文里讲的循环的最简形态:

论文的五个动作老金的最小 Loop
发现人给一个任务("修这个 bug")
交接Claude Code 接手
验证Claude 自己跑测试 ← 核心
持久化改完提交 git
调度单次循环,人触发

五个动作只保留了"验证"这个最关键的,让 Agent 自己验证自己的产出。


四、怎么实现

在 Claude Code 里,你只需要给它一个包含"自己跑测试"指令的 prompt:

text
请修复 src/auth/ 目录下的测试失败。

要求:
1. 先读代码理解现有逻辑
2. 跑 npm test 看哪些失败了
3. 逐个修复
4. 每修一个就跑一次测试确认
5. 全部通过后再交付
6. 不要让我手动跑测试,你自己用 run_command 跑

关键在最后一句,"你自己用 run_command 跑"。 这把人从循环里移除了。

或者更简洁的方式,用 /goal 命令:

/goal 所有测试通过且 lint 无报错

Claude Code 的 /goal 会让 Agent 自己跑循环,写代码→跑测试→读报错→改→再跑,直到条件满足。


五、和 mini Claude Code 的呼应

我们自己做的 mini Claude Code 已经实现了这个能力,run_command 工具把命令输出回喂给 Agent:

go
// mini Claude Code 的 agent.go 核心
for turn := 1; turn <= maxTurns; turn++ {
    resp := model.GetResponse(history)
    if len(resp.ToolCalls) == 0 {
        return resp.Content // 最终答案
    }
    for _, call := range resp.ToolCalls {
        result := executeTool(call) // 执行命令
        history = append(history, NewToolMsg(call.ID, result))
        // ↑ 命令输出自动回喂给模型,不需要人粘贴
    }
}

Agent 循环天然实现了"自己跑测试 + 自己看报错 + 自己修",只要工具的输出回喂给模型,Loop 就自动闭合了。


六、进阶:加评估器防止"点头循环"

老金的最小 Loop 有个风险,Claude 自己跑测试自己改,可能改到死循环(改 A 破 B,改 B 破 A)。

Loop Engineering 论文的解法,加一个独立的评估器:

text
Claude A(生成器):写代码 + 跑测试
  ↓
Claude B(评估器):审查 A 的改动
  "这个修复对吗?有没有引入新问题?"
  ↓
通过 → 交付
不通过 → 打回给 A 重改

两个 Claude 互相检查,比一个 Claude 自己点头靠谱。 这就是前面 Loop Engineering 论文讲的"生成器/评估器分离"。


七、小结

最小 Loop = 让 Agent 自己跑测试、自己看报错、自己修。去掉人这个"搬运工"中间环节。

老金的痛点是所有人的痛点,"一个晚上就在粘贴报错中度过了"。解法极其简单,告诉 Agent"你自己跑测试",它就能自己闭合循环。

这是 Loop Engineering 的最小起点。先让单个 Agent 自己跑测试通过,再考虑加评估器、加调度、加持久化,一步步扩展。

先从最小 Loop 开始,别一上来就搭大循环。


本文基于老金(@freeman1266)的 X Article 整理。原文 https://x.com/freeman1266/status/2066677040238227843 。174 赞、36 转。

推荐配合:Loop Engineering 论文解析(前面写的)、写作 Loop 六步法、mini Claude Code(已实现最小 Loop)、Karpathy 十条军规第五条(验证)。

相关文章

分享: