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

相关推荐
yichengerp1 小时前
中小电子厂用什么ERP?电子厂ERP管理软件实施要点与易呈方案推荐
大数据·运维·人工智能·云计算·制造
枯木◊靠推文躺平版1 小时前
Claude Code 替代品有哪些?TRAE vs Claude Code 从价格、门槛到中文开发,一篇看懂怎么选
人工智能
不惑_1 小时前
我分析了麦当劳 1024 大赛的 149 个参赛项目,然后做了一个没人做的方向
人工智能·知识图谱
lisw051 小时前
人类认知和语言学习中的控制论!
人工智能·学习·数学建模
residual_fan1 小时前
基于控制感知域对抗网络的变工况故障诊断:从控制系统与运行状态协同的角度建立模型
人工智能·算法·数据挖掘·数据分析
Bode_20021 小时前
数据智能层集成流程挖掘与自主智能体的架构与机制
人工智能·数据智能
企智汇-项目管理软件1 小时前
离散制造管理系统怎么选?一套系统管住从研发到交付的全周期
java·人工智能·制造·项目经理·项目管理软件·项目管理系统·项目管理软件工程
Imagination官方博客1 小时前
PowerVR 上的 LLM 性能与加速
人工智能·架构·llama·gpu算力
知几蜗牛1 小时前
Python 处理 Responses SSE 流:超时、取消和增量渲染
人工智能
2601_968900771 小时前
面向Agent的视频编译链路:从语义标记到分层渲染
人工智能