一、Loop 到底解决什么问题?
使用 Claude Code 编写代码时,下面这个场景你大概率不会感到陌生:

把需求提交给它 → 它忙碌一阵 → 输出一堆代码 → 然后停下了。
测试没有通过?它直接把报错信息贴给你,等待你给出下一步指令。逻辑还没写完?它可能声称“已完成”就直接交差了。
这并非 Claude 不够智能,而是它默认采用单轮执行机制——完成一轮推理后就认为任务终结,不会主动回头运行测试、发现问题、再修正一遍。
Loop(循环模式)正是用来填补这一空白的:它让 Claude 自动执行“写代码 → 验证 → 发现缺陷 → 再次修改”的流程,反复迭代,直到达成你预先定义的“完成标准”才会停止。
入门阶段你只需要记住三个要点:
- loop 并不神秘,它会放大你的提示词效果——要求写得清晰,成果令人惊艳;写得模糊,它会不断猜测“什么才叫完成”。
- 完成标准必须可量化(测试通过、构建成功、接口调通),不能笼统地说“做得好一点”。
- 永远设定上限(最大迭代次数),这是控制成本的安全阀,省略它相当于让 AI 无节制地消耗你的额度。
二、三种用法,从最简单到最实用
入门阶段不必贪多。先掌握这三种方式,根据场景挑选一种使用即可。
用法 A:bash 循环(零安装,最简便)
适合批量处理可以列举出来的文件或任务,例如批量迁移、批量审查。本质上是利用普通的 shell 循环反复调用 claude -p(headless 模式,传入提示词、执行完毕即退出)。
# 第一步:先让 Claude 生成任务清单
claude -p "列出所有需要从 React 迁移到 Vue 的文件" > migration-list.txt
# 第二步:循环处理每个文件
for file in $(cat migration-list.txt); do
claude -p "把 $file 从 React 迁移到 Vue"
--allowedTools "Edit,Bash(git commit:*)"
--max-turns 40
--max-budget-usd 2
done
注意事项:--allowedTools 限制它能使用的工具范围,防止越界操作。--max-turns 和 --max-budget-usd 是成本控制的关键参数,务必全部带上。
用法 B:Ralph Loop 插件(安装后即可使用,适合长时间任务)
适合从零开始搭建新项目、可以挂后台运行的长任务(睡前启动、醒来查看结果)。它通过“停止钩子”在 Claude 每次尝试退出时将其拦住,把任务重新注入,直到 Claude 输出你事先约定的完成关键词为止。
安装条件(需要 Claude Code 2.0.76 及以上版本):
# 添加插件市场 /plugin marketplace add anthropics/claude-code # 安装 Ralph Wiggum 插件 /plugin install ralph-wiggum@claude-code-plugins # 重载插件 /reload-plugins
运行命令:
/ralph-wiggum:ralph-loop "<任务描述>" --completion-promise "DONE" --max-iterations 10
三个关键参数:任务描述越具体越理想;--completion-promise 是完成后必须输出的关键词,循环依赖它判断是否终结;--max-iterations 是最大迭代次数,请勿省略。
中途想终止:/ralph-wiggum:cancel-ralph
用法 C:自定义 /loop 命令(验证最可靠,适合严肃工程)
适合在已有项目中修复 bug 或重构代码,且项目已经具备能输出“绿灯/红灯”的检查命令(test、lint、类型检查等)。
它的核心思路是把“编写”和“验证”拆成两个独立 Agent:一个只负责写代码,另一个只负责跑检查并且在工具层面就没有修改文件的权限,因此它无法自欺欺人地说“做完了”。这种方式更加稳定可靠,但需要编写几个配置文件,属于进阶用法。入门可以先跳过,熟练使用 A 和 B 之后再回来看。
三、入门实战:三个由浅入深的案例
下面三个案例,照着操作就能感受到 loop 的强大之处。建议从案例一开始,逐步深入。
案例一:5 分钟快速体验——编写一个带测试的小函数
这是最适合初次尝试的任务:规模小、可验证、能直观看到“每轮都在进步”。
/ralph-wiggum:ralph-loop "写一个校验邮箱地址的 Python 函数。 要求:处理边界情况,并写 3 个测试用例。 全部完成后输出 DONE。" --completion-promise "DONE" --max-iterations 5
你会观察到:第一轮可能只是基础实现,后面几轮逐渐补充边界处理、优化错误提示、完善测试覆盖。输出质量一轮比一轮高——这就是 loop 带来的核心价值。
如果你还没有装插件,用 bash 版本也能体验类似效果:
claude -p "写一个校验邮箱的 Python 函数,含边界处理和 3 个测试,并运行测试确认全过" --allowedTools "Write,Edit,Bash" --max-turns 10
案例二:优质提示词 vs 劣质提示词(这一节决定你的成败)
同样的任务,提示词的质量差一点,结果就会天差地别。这是 loop 入门最重要的一课。
劣质提示词——Claude 不清楚什么才算“好”,容易陷入无限循环:
做一个 todo API,做好一点。
优质提示词——给出明确的完成清单:
/ralph-wiggum:ralph-loop "做一个 todo 的 REST API。 完成标准: - 所有增删改查接口都能用 - 有输入校验 - 测试通过,覆盖率 80% 以上 - 有 README 写明 API 文档 全部满足后输出 COMPLETE。" --completion-promise "COMPLETE" --max-iterations 15
记住这个公式:任务 + 可勾选的完成清单 + 完成关键词。清单上的每一条都要是“能够客观判断对错”的,这样 loop 才有明确的前进方向,不会陷入“猜测你想要什么”的无效内耗。
案例三:内嵌“自我纠错”逻辑——TDD 循环
把迭代规则直接写进提示词,让测试结果成为循环的“推动力”——每次失败都让下一轮更加精准。
/ralph-wiggum:ralph-loop "用 TDD 方式实现购物车的'添加商品'功能: 1. 先写会失败的测试 2. 实现功能 3. 运行测试 4. 如果有测试失败,调试并修复 5. 需要的话重构 6. 重复直到所有测试通过 全部变绿后输出 DONE。" --completion-promise "DONE" --max-iterations 20
进阶小技巧——为“卡住”的情况预留出口,在提示词末尾加上:
如果 10 轮后仍无法完成: - 记录是什么卡住了进度 - 列出你试过的方法 - 给出替代方案建议 完成时输出 DONE,被卡住时输出 STUCK。
这样即使任务未能完成,你也能获得一份诊断报告,而不是白白消耗 token。
四、什么时候用、什么时候别用
适合 loop 的场景:
- 成功标准可量化(测试通过、构建成功、接口调通)
- 需要反复执行“写代码 → 跑测试 → 修 bug”的迭代任务
- 全新项目从零开始增量搭建
- 可以挂后台、睡前启动、醒来查看结果的长任务
不适合 loop 的场景:
- 需要主观判断的决策(UI 设计、架构取舍)
- 简单的一次性任务(没必要套用循环)
- 成功标准本身说不清楚(没有关键词能触发结束)
- 生产环境定向排查 bug(这种情况更需要人来主导)
五、新手最该记住的 5 条成本与避坑原则
--max-iterations/--max-turns必须填写。大多数任务 10–20 次足够,复杂项目 30–50 次。没有上限的循环 = 没有终点的马拉松。- 先用小上限试跑,验证提示词逻辑没有问题,再逐步加大次数。
- 完成标准越具体越节省成本。模糊的要求会让 AI 反复猜测,猜测本质上就是在烧钱。
- 简单任务使用便宜的模型配置即可,不必每轮都拉满资源。
- 任务过大就拆分成阶段。与其让它一口气完成整个电商系统,不如拆成“阶段 1:登录鉴权 → 阶段 2:商品目录 → 阶段 3:购物车”,每个阶段验证通过后再进入下一个。
总结
Loop 改变的不是 Claude 的智能水平,而是它的工作方式——从“给你一个答案”转变为“直到做对为止”。
而你的角色也随之升级:以前你是质检员,需要肉眼盯着每一行 AI 生成的代码;现在你是需求方,输入任务、设定完成标准、审阅一遍最终结果即可。
技术本身并不复杂,唯一的门槛在于:你得能够把“什么才算完成”表达清楚。
从案例一开始,今天就动手跑一次试试吧。
