故事:小白的“无限循环”噩梦与大师的 /loop 魔法

小白:"我又要手动运行测试 → 看报错 → 改代码 → 再测试......已经重复 20 遍了!救命!"

大师:"你需要的不是更快的键盘,而是 时间循环魔法 ------ /loop。"


1. /loop 是什么?------ 一个会自己"转圈"直到成功的 AI 助手

/loop 是 Claude Code CLI 里的一个超级命令。它的作用很简单:让 Claude 重复执行某个任务序列,直到你喊停或满足某个条件。

想象你有一个任劳任怨的小精灵,你对它说:

"你给这段代码写单元测试,运行它,如果失败就修改代码,再运行测试......直到全部通过为止。"

没有 /loop 时,你得一遍遍手动输入 "修复测试"、"再运行"、"再修复"......

有了 /loop,你只需要说:

text 复制代码
/loop "修复所有失败的测试,直到全部通过"

Claude 就会进入一个自动循环:写代码 → 运行测试 → 判断结果 → 修复 → 再运行 → 直到绿灯 🟢。


2. 实现原理 ------ 小精灵脑子里的"死循环"流程图

/loop 本质上是一个 带终止条件的递归/循环。Claude 不会真的无限转圈,它会:

  1. 记住你给的目标(例如"让所有测试通过")

  2. 执行一步(生成代码、运行命令、检查结果)

  3. 判断目标是否达成?

    • ✅ 达成 → 结束循环,输出"搞定!"
    • ❌ 没达成 → 根据反馈调整计划,再执行一步(回到第2步)

为了防止小精灵累死,循环还有安全限制:

  • 最多循环 N 次(默认 10 次)
  • 每次循环会把上下文(之前的尝试、报错信息)一起发给 LLM,让它越修越聪明。

核心伪代码(TypeScript 风格)

typescript 复制代码
async function runLoop(
  userGoal: string,           // "让所有测试通过"
  initialContext: Context,    // 当前代码、文件树等
  maxIterations = 10
): Promise<FinalResult> {
  let context = initialContext;
  let iteration = 0;
  
  while (iteration < maxIterations) {
    iteration++;
    console.log(`🔄 第 ${iteration} 次尝试...`);
    
    // 1. 让 LLM 根据当前上下文和目标,决定下一步动作
    const action = await llm.decideNextAction({
      goal: userGoal,
      history: context.history,
      lastOutput: context.lastOutput,
    });
    
    // 2. 执行动作(写文件、运行命令、读取日志)
    const toolResult = await executeTool(action);
    
    // 3. 更新上下文
    context = updateContext(context, action, toolResult);
    
    // 4. 检查是否达成目标(可以LLM判断或规则判断)
    const isGoalMet = await checkGoalMet(userGoal, context);
    if (isGoalMet) {
      console.log("🎉 目标达成!退出循环。");
      return { success: true, finalContext: context };
    }
    
    // 5. 如果上次动作失败或没有进展,LLM 会自动调整策略
  }
  
  console.log("⚠️ 达到最大循环次数,请检查问题。");
  return { success: false, finalContext: context };
}

关键点 :每一次循环,Claude 都能看到之前所有失败和成功,就像你有一个不会遗忘的记忆。它会学习"上次那样改不行,这次换一种方式"。


3. 最佳用法 ------ 四个让小白变大神的神级场景

① 测试驱动开发(TDD)循环

bash 复制代码
# 写一个加法函数,但还没写测试
/loop "为 add.py 中的 add(a,b) 编写 pytest 单元测试,运行测试,如果失败就修复 add 函数,直到所有测试通过"

Claude 会自己:

  • 创建 test_add.py
  • 运行 pytest test_add.py
  • 发现失败 → 修改 add.py
  • 再运行 → 直到绿色

② 批量修复 Lint 错误

bash 复制代码
/loop "运行 `npm run lint`,修复所有报错(自动或手动),然后重新 lint,直到没有错误"

③ 代码重构 + 回归测试

bash 复制代码
/loop "把 `utils.js` 里所有 var 改成 const/let,每次改动后运行 `npm test`,如果测试失败就撤销那一步并换一种方式"

④ 渐进式性能优化

bash 复制代码
/loop "运行基准测试 `benchmark.py`,如果运行时间 > 2 秒,就优化代码(但不要改变输出结果),重复直到 < 2 秒"

4. 时序图 ------ 一次 /loop 魔法的完整演出


5. 小白的"避坑指南" ------ 别让循环吃掉你的周末

问题 解决方案
循环永远停不下来(比如目标模糊) 在目标里加明确终止条件 :"直到 tests/ 下没有 FAILED" 而不是 "尽量让测试通过"
一次循环改太多,搞乱代码 用 /loop 搭配 原子操作 :"每次只修复一个函数,然后运行测试"
浪费 token,循环太多次 设置 --max-iterations 5 或通过 /config 修改默认值
想手动介入但循环还在跑 按 Ctrl+C 中断,然后输入 /clear 重置状态

6. 总结 ------ /loop 就是你的"自动进取机"

  • 本质:带记忆和终止判断的 while 循环,每次迭代 LLM 都能看到历史。
  • 威力:把重复劳动(改错→测试→改错)变成一键自动化。
  • 灵魂 :清晰的目标 + 可验证的终止条件 + 合理的最大迭代数。

现在,小白对着那个卡了 20 遍的测试文件,深吸一口气,输入:

text 复制代码
/loop "修复所有测试失败,每轮只改一处,直到 pytest 全部通过,最多 10 次"

然后去泡了杯咖啡。回来时,终端上闪耀着绿色的 🎉 All tests passed! ------ 他第一次体验到,什么叫 让 AI 替你转圈。🌀

相关推荐
小和尚同志1 小时前
54.6k star 的 Multica: 集多 Agent 和看板于一体的 AI 平台
人工智能·aigc·three.js
一枕槐安4872 小时前
少样本提示(Few-shot)在业务场景的落地实践
大数据·人工智能·意图分类·mmr多样性·knn检索·动态示例选择
王中阳Go2 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
海宇AI2 小时前
零信任架构实战:基于海宇个人风险报告构建自动化分期商城信用额度初审网关
运维·人工智能·架构·自动化
tellmewhoisi3 小时前
深度学习32:卷积神经网络:卷积层(卷积运算,填充,步幅)
人工智能·深度学习·cnn
weixin_307779133 小时前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
Sinokap3 小时前
OpenAI 披露 AI 安全实验:智能体如何突破隔离边界?
人工智能·安全
云和数据.ChenGuang4 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
重生之我在番茄自学网安拯救世界4 小时前
AI 开发者日报 第1期(本周精选)| 插件市场投毒、智能体搞出“官僚饥荒村”,十年前的 CNN 打赢大模型
人工智能·网络安全·大模型·ai编程·智能体
涛声依旧-底层原理研究所4 小时前
拆解 Cordis 底座:Agent 是如何被「组合」出来的
人工智能·架构