拆一个真实的 agent loop 给你看:12 圈干完一件事

2026年6月 | 实操 | 上篇《AI Agent 的 loop 是什么》预告兑现


📌 上篇回顾

上篇讲 loop 是 agent 的心跳——反复「想-做-看-反思」直到任务完成。但光讲理论不过瘾,这篇我真用 Claude Code 跑一个多步任务,把每一圈摊开给你看。

任务很实在:给这个公众号工作流建一个「发布前自检脚本」。我全程没干预,让它自己跑,记录每一圈。结果它跑了 12 圈,中途踩了 2 个坑、自己改了 2 次

正好,完美的 loop 教材。


🎯 任务是什么

先看任务板:

任务看板

一句话给 agent 的指令:

「在项目里建一个发布前自检脚本:①检查最新 .md 有没有对应 .html ②检查 cover.jpg 存在且>50KB ③输出清单。先读目录理解结构再写,写完跑一遍验证,有错就改。」

注意这句指令本身就在要求一个 loop——「先读、再写、跑验证、有错就改」。这就是 loop 的任务特征:中间结果决定下一步


🔍 先把一圈放大看

在展开 12 圈之前,先把一圈 loop 放大,让你看清结构:

单圈结构

四个粉笔框转圈:想(Reason)→ 做(Act)→ 看(Observe)→ 反思(Reflect)→ 回到想。关键在那个「反思」——它是 agent 和普通聊天机器人的分水岭。没有反思,错了就错了;有反思,错了能改。

下面就看它怎么转。


🎬 12 圈全记录(节选关键圈)

整个任务跑了 12 圈,我节选最关键的几圈摊开。先看全景:

完整loop

圈 1-2:先读目录(想→做)

agent 第一反应不是直接写代码,而是先读目录理解结构。这是 loop 的正确起手——不瞎写,先感知环境。

  • :「我先读一下 articles/ 目录理解结构,再写脚本」
  • :调 Bash 工具,ls -la articles/ls -la articles/ai_news/

这一步看似多余,但至关重要。它决定了脚本要不要支持子目录、文件命名规律是什么。跳过感知直接写,就是瞎写。

圈 3-4:看懂了 + 决定写(看→想→做)

  • .md.html 成对存放(如 ai_agent_loop.md + ai_agent_loop.html),ai_news/ 子目录同规律,最新是 ai_agent_loop.mdcover.jpg 61KB
  • :「理解了结构,现在写脚本」
  • :调 Write 工具,写出 pre_publish_check.js

到这里,一个普通程序员可能就交活了。但 loop 才刚热身——真正的戏在后面。

圈 5-6:踩坑一,权限拦截(做→看→反思)

  • :Write 工具提交
  • 被权限拦截了! headless 模式没法弹权限框,脚本没写成
  • 反思:「headless 模式没法弹权限框 → 换手动落地」

这是 loop 最有价值的一刻——遇到障碍,不卡死,调整策略。普通脚本跑到这一步就报错退出,agent 会重新想路径。

圈 9:跑验证,踩坑二(做→看→反思)

脚本落地后,agent 跑了一遍验证:

[PASS] 最新文章:INDEX.md
[FAIL] 对应 HTML 存在:INDEX.html   ← 翻车了!
[PASS] cover.jpg 存在,60.0 KB
  • FAIL! 它把 INDEX.md(索引文件)误判成了"最新文章"
  • 反思:「INDEX.md 是索引不是文章,不该算进最新文章」

这个 bug 太真实了——任何写过类似脚本的人都踩过。agent 之前没料到目录里混着非文章的 .md。loop 的价值就在这:跑了才知道错,知道错才能改。

圈 11:修正,全 PASS(反思→做→看→完成)

  • 反思:在 findMd 函数里加过滤,排除 INDEX.md
  • :调 Edit 工具改脚本
  • :再跑一遍
[PASS] 最新文章:ai_agent_loop.md
[PASS] 对应 HTML 存在:ai_agent_loop.html
[PASS] cover.jpg 存在,60.0 KB
[PASS] cover.jpg > 50KB(实际 60.0 KB)
结果:4 通过,0 失败

全 PASS,任务完成,退出 loop。 12 圈,2 次反思,1 个能用的脚本。


🛠️ 这一路用了哪些工具

agent 的「做」这一步,本质是在调工具。这一路它用了四个:

工具调用

  • Bash:ls 读目录、node 跑脚本
  • Read:读文件内容
  • Write:写 pre_publish_check.js
  • Edit:改脚本(排除 INDEX)

工具就是 agent 的手——手越多,能干的事越多。给 agent 配什么工具,决定了它的能力边界。这也是为什么 Claude Code 这类编程 agent 要接那么多工具(文件、终端、搜索、MCP……)。


⚡ 重点:两次「看→反思→改」

整个 loop 最值钱的是这两次反思。单独拎出来看:

两次反思

踩坑 1(权限拦截)踩坑 2(INDEX 误判) 都遵循同一个模式:

看 → 发现不对 → 反思为什么 → 改 → 再看

这就是 loop 区别于固定流程的核心。如果是写死的管道,遇到权限拦截就崩了,遇到 INDEX 误判就输出了错误结果。而 loop 能自己发现问题、自己改。


📊 数字总结

指标 数据
总圈数 12 圈
工具调用 Bash×2、Write×2、Edit×1、(+跑验证)
踩坑次数 2 次
自主修正 2 次
最终结果 4 项检查全 PASS
人工干预 0 次(除权限落地那步我接手)

一件事、12 圈、2 次自我修正、0 人为干预。 这就是 agent loop 实打实在做的事。


💭 我的观察:loop 的价值不在"快",在"能纠错"

跑完这个任务,我对 loop 有个更深的体会:

很多人以为 agent 的价值是"自动化、跑得快"。不是。 这个自检脚本,一个熟练程序员手写 10 分钟搞定,agent 跑 12 圈反而更慢。

那 loop 的价值到底在哪?在纠错能力。

  • 它没料到目录里有 INDEX.md → 跑出来 FAIL → 自己发现 → 自己改
  • 它没料到 headless 会拦权限 → 换路径 → 继续

这个"试错-发现-修正"的能力,是固定脚本和管道永远给不了的。loop 把"写代码"从"一次写对"变成了"反复逼近正确"。 对复杂、不确定、中间结果决定下一步的任务,这才是真正的生产力。

当然代价也要说清楚:12 圈烧的 token 是单次问答的几十倍,简单任务上 loop 是杀鸡用牛刀。所以上篇那句忠告依然成立:别拿 loop 干一次问答能解决的活。


🎯 一句话带走

agent 不是"一次写对"的工具,是"反复逼近正确"的工具。让它能做到这点的,就是 loop。

下次你设计或使用 agent,盯三件事:

  1. 它的 loop 转几圈就停?(设上限,防烧钱)
  2. 它能反思吗?(不能反思的,是管道不是 agent)
  3. 出错怎么刹车?(人工介入 + 预算上限)

把这三个问题答清楚,你就真正懂了 agent loop。


📅 下篇预告:loop 跑飞了怎么办?拆几个 agent “走火入魔"的真实案例,看反思循环怎么从"帮手"变成"捣乱”,以及怎么设护栏。

👆 关注我,每天 5 分钟看懂 AI

觉得这篇把 loop 摊得够开?转发给想搞 agent 的朋友,点个「在看」。你跑过 agent 吗,转过几圈?评论区聊聊💬


本文任务由 Claude Code(claude-opus-4-8)真实执行,loop 过程取自 stream-json 完整记录。脚本 pre_publish_check.js 已落地可用。


本文首发于:AI架构师之路

👆 关注我,每天 5 分钟看懂 AI —— 前沿模型评测 · AI 日报 · 硬核教程

更多 AI 实操内容,扫码或搜索公众号名关注,第一时间收到更新。


本文为作者原创内容,转载请注明出处。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐