2026 年,AI 编程的重心已经从“写好 Prompt”转向“设计好 Loop”。Claude Code 的创造者 Boris Cherny 有一句广为流传的话:“我已经不再自己 Prompt Claude 了。我写的是 Loop,Loop 在 Prompt Claude,并决定下一步该做什么。我的工作就是写 Loop。”
这句话道出了当前 Agent 工程的核心转变。真正的 Agent 不是一次回答就结束的对话,而是一个不断重复工作周期,直到满足停止条件的循环系统。Claude Code 把这种循环做得非常干净:它本身就是一个 Agent Loop 的精致实现,再加上工具、Skills、Hooks、Subagent 等原语,让开发者能轻松搭出从简单到高度自主的循环。
一、什么是 Agent Loop?
Claude Code 团队给出的官方定义非常工程化:
Loop 是 Agent 重复执行工作周期,直到满足某个预设停止条件的过程。
它和传统的“一次 Prompt 一次回答”有本质区别。一次 Prompt 里,模型会自己进入内部的 agentic loop(收集上下文 → 调用工具 → 观察结果 → 再决策),直到它认为任务完成。而更高层的 Loop,则是把这个过程本身自动化、可调度、可验证、可停止。
核心循环永远是这四步:
-
感知当前状态(读文件、跑测试、查 CI)
-
决策下一步行动
-
执行行动(编辑代码、运行命令)
-
验证结果,决定继续还是停止
关键在于停止条件必须可被程序判定,而不是模糊的“做得更好”。
二、Claude Code 里的四种 Loop 类型
利用Claude Code 搭 Agent Loop,你需要先弄懂Claude Code 团队把 Loop 按“你把什么交给 Agent”分成四类,形成清晰的自主性阶梯。
1. Turn-based Loop(回合制循环)
触发:用户输入 Prompt
停止条件:Claude 自己判断任务完成,或需要更多上下文
适用:探索性、一次性、还需要人类判断的任务
这是我们最常用的日常模式。你说一句“帮我做一个点赞按钮”,Claude 就会自己读代码、改文件、跑测试、再改,直到它认为可以交卷。你仍然掌握检查权。提升效率的关键是写好 Skills 和验证逻辑,减少无效回合。
2. Goal-based Loop(目标循环)
触发:你设定一个可验证的目标
停止条件:目标达成,或达到最大轮次
适用:有明确验收标准的复杂任务
最典型的命令是 /goal。例如:
/goal 让所有单元测试通过,且 Lighthouse 分数达到 90 以上,最多尝试 5 次
Claude 会持续工作,每轮结束后由另一个更轻量的评估模型检查条件是否真正满足。不满足就把失败原因喂回去继续迭代。这是“把停止条件交给系统”的关键一步。
3. Time-based Loop(时间循环)
触发:固定时间间隔或自定节奏
停止条件:你手动取消,或外部工作完成(PR 合并、队列清空等)
适用:周期性维护、监控、等待外部变化的工作
命令是 /loop 和 /schedule。例如:
/loop 5m 检查我的 PR,处理 review 意见,并修复失败的 CI
/loop 跑在你的本地会话里,电脑关机就停;/schedule 可以把任务放到云端,真正无人值守。
4. Proactive Loop(主动循环)
触发:事件或日程,全程无人实时参与
停止条件:每个子任务的目标达成,整体例程一直运行直到你关闭
适用:高度重复、定义清晰的流水线工作(bug 修复、issue 分拣、依赖升级、文档同步等)
这是最高自主度,通常把前面几种手段组合起来,再配合动态工作流、Subagent 和 Hooks。
三、搭一个真正能跑的 Agent Loop 需要什么?
无论用哪种类型,一个靠谱的 Loop 都离不开这几个核心零件:
-
可判定的 Goal:必须是程序能验证的。“代码更优雅”不行,“npm test 全绿 + tsc 无报错 + 覆盖率 > 80%”才行。
-
验证闭环:这是质量的关键。没有自动验证,Loop 只会越跑越偏。测试、linter、自定义检查命令都要写进 CLAUDE.md 或 Skills。
-
状态持久化:用 markdown 文件、progress 记录、AGENTS.md 等记录进度,让循环在重启后还能接着干。
-
工具与权限边界:Bash、读写文件、Git、浏览器、MCP 等。权限给得太松会危险,太紧又跑不动。
-
停止与熔断机制:最大轮次、Token 预算、Hooks 里的强制中断,防止无限烧钱。
-
Skills 与 Hooks:把重复验证逻辑固化成 Skill,用 PostToolUse、Stop 等钩子注入评估和停止逻辑。