故事:小白的“无限循环”噩梦与大师的 /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 替你转圈。🌀

相关推荐
段小二2 小时前
Token 费用失控、VIP 用户体验一样烂:Context Engineering 才是关键
人工智能·后端
用户2018792831672 小时前
/branch 你点了一份代码,Cli 帮你分成了两碗
人工智能
kishu_iOS&AI2 小时前
机器学习 —— 线性回归
人工智能·机器学习·线性回归
阿里云大数据AI技术2 小时前
OpenClaw 长记忆增强:基于 Hologres + Mem0 的企业级方案
人工智能
北京耐用通信2 小时前
工业自动化领域耐中达讯自动化CC-Link IE转EtherCAT技术解决方案
人工智能·物联网·网络协议·自动化·信息与通信
飞哥数智坊2 小时前
【大纲】TRAE AI 编程入门扩展课:一些可能有用的编程常识
人工智能·ai编程·trae
恋猫de小郭2 小时前
Google 开源大模型 Gemma4 怎么选,本地跑的话需要什么条件?
前端·人工智能·ai编程
用户2018792831672 小时前
Cli开端之 /init命令
人工智能
用户2018792831672 小时前
/rewind 完全指南:时光机原理与终极用法
人工智能