Claude Code /loop 实战:从人工复制粘贴到 agent 自循环 Claude Code 出了个叫/loop的新功能如果你平时主要靠终端写代码、跑任务应该已经注意到了。这个功能简单说就是让 Claude 在终端里自己循环跑任务不用你一遍遍复制粘贴报错信息再丢回对话里。很多人在聊loop engineer、harness这词看着玄乎其实就是一个核心转变我们终于可以把人在环里改成人在环上了。先说说我为什么对这个功能格外上心。用过 Claude Code 的人都知道它的主界面启动时会画一团有点像小龙虾的 ASCII 图案那其实是 Anthropic 的星辰标志但确实怎么看怎么像只龙虾。以前每跑完一轮任务你都得盯着终端里的这团小龙虾手动判断下一步怎么走哦报错了复制错误回对话框让 Claude 改再跑再看再复制……你要是同时维护几个项目这一天下来就是纯纯的人工循环根本谈不上智能体工作流。/loop就是为了终结这种状态来的。这篇东西我不会只念一遍官方文档而是用实际跑过的场景把/loop到底是什么、能解决什么问题、怎么配合终端工具链用起来、以及踩过的坑全部讲明白。如果你是刚把 Claude Code 装好、想在终端里认真跑 agent 任务的人这篇文章应该能帮你少走不少弯路。1. 先搞清楚 /loop 到底是什么1.1 从复制粘贴循环到agent 自循环我见过大量 Claude Code 用户包括我自己早期操作方式其实是这样的让 Claude 写一段代码跑一下出错了把错误贴回去让它修再跑再贴直到过了为止。这个过程看似在用 AI 编程本质上还是把 AI 当对话工具用人力成本一点没少只不过从写代码变成了搬运错误信息。/loop改变的是这个闭环的受力点。你在 Claude Code 里输入/loop加一个任务描述它会自动进入一个迭代循环每一步Claude 自己执行命令、查看输出、判断是否完成没完成就继续修改、继续执行直到满足你设定的完成条件或者到了你规定的轮数上限。整个过程里你不需要每步都切回对话框重新输入。我在本地一个 Python 小项目里试过让我写一个从 CSV 读数据、清洗、生成统计报告的脚本并要求跑通。过去我大概要来回三轮以上因为 CSV 里有些字段是空值、有些是非法日期第一次跑必炸。用/loop跑它自己就会看到ValueError自己去查是哪一行数据的问题然后决定是清洗还是跳过最后生成报告全程我只在开头写了一句任务描述最后看到了结果。这就是agent 自循环和人工复制粘贴循环的本质区别。1.2 /loop 不是简单的 for 循环它带脑子你可能会说循环嘛写个for i in range(10)不也能循环执行命令但/loop不是这种机械循环它每一轮迭代都带着完整的上下文之前的报错、修改过的文件、执行结果、以及 Claude 自己对下一步该干什么的判断。官方文档里/loop的核心参数不多我实际用下来最关键的是这几个参数作用备注--max-iterations N限制最大循环轮数防止 agent 陷入死循环我习惯设 10~20--timeout单轮命令超时时间防止某条命令卡住整个循环--completion-check自定义完成条件这个很有用见下面说明--on-error出错后的处理策略可选继续、停止、或重试有个容易理解错的点/loop本身不是为了反复执行同一个动作而是为了让 agent 自我纠错直到任务完成。它和 shell 里的for循环最大的区别就是每一轮迭代之间不是独立的Claude 会带着上一轮的所有新信息重新决策。我用一个生活类比帮助理解传统循环像个只管转的滚筒洗衣机你设多少分钟它就转多少分钟时间到就停洗没洗干净不管。/loop更像一个会打开盖子检查衣服的洗衣工看一眼觉得还有泡沫就再洗一轮直到衣服上没有泡沫为止。这个检查动作就是循环里最关键的一环。2. 为什么 loop engineer 和 harness 突然火起来2.1 loop engineering 到底在研究什么/loop一上线loop engineer这个词在技术社区里就热了起来。有些人以为这是个新岗位其实更像一种能力描述设计 agent 迭代闭环的能力。什么叫设计迭代闭环拿刚才洗衣工的比喻继续说你得回答三个问题任务怎么拆也就是把一个大目标拆成 agent 能逐步执行的步骤。怎么验证完成没有也就是定义衣服干净了的标准。跑偏了怎么办也就是出错时的降级策略。这三个问题就是loop engineering的核心。以前这些逻辑都是人在脑子里完成的现在你要把它明确地写进 agent 的提示词、工具配置和完成条件里。我在/loop里跑任务时凡是任务描述里写清了完成标志是pytest全部通过的基本都不会跑偏凡是只说帮我修好这个项目的大概率它会修到你不想让它修的东西上去。这不能怪 agent只能怪我没把完成标准定义清楚。2.2 我理解的 optimal harness 长什么样harness是另一个高频词中文可以理解为控制框架或缰绳。Loop engineer 设计闭环harness 就是承载这些闭环的外层框架。它通常包含一套系统提示词告诉 agent 总目标和行为边界一组可用的工具比如终端命令、文件读写、代码搜索预定义的验证脚本和终止条件出错回退策略。Claude Code 本身就是一个比较完整的 harness。/loop在它上面的意义是让你可以在不脱离终端的情况下快速启动一个受控的 agent 循环而不是另外写一套复杂框架。我个人的建议是如果你刚开始接触别急着去搭一个 fancy 的 harness。先在 Claude Code 里把/loop用熟摸清楚任务拆解、验证标准、终止条件这三件事的配比再考虑写自己的框架。你自己设计的 harness 一定要包含一个可自动执行的验证命令不管是pytest、npm test还是自定义脚本没有自动验证的循环只是在瞎跑。3. 从安装到跑通第一个 /loop 循环3.1 装好 Claude Code把终端环境理清楚在聊/loop的具体用法之前先把基础环境过一遍。Claude Code 的安装很简单前提是你已经装好了 Node.js 18 以上版本然后在终端里执行npm install -g anthropic-ai/claude-code装完以后在项目目录下运行claude就能启动。首次启动会让你登录账号按提示操作即可。我自己习惯用桌面版同时也装了 CLI因为有些脚本化操作和tmux配合的时候 CLI 更干净利落。需要提醒的是装完先确认一下claude --version能正常输出。如果你发现某个claude code命令提示模型版本不被识别大概率是 CLI 版本太老、模型名对不上直接升级到最新版即可npm update -g anthropic-ai/claude-code在开始跑/loop之前我强烈建议先去终端设置里把自动换行、滚轮缓冲区这些配置调好。Linux/macOS 的终端默认配置其实够用但如果你用的是 Windows 上的终端工具有时候会遇到 ANSI 转义序列显示乱掉的问题这时候检查一下终端是否开启了 ANSI 颜色支持。终端不好用/loop的输出会看得你头皮发麻。3.2 跑一个真正能落地的 /loop 实战下面我用一个非常具体的例子带你走一遍/loop的完整流程。假设场景是这样的你有一个 Node.js 项目别人报了一个 bug说某个接口在传入空数组时会异常退出。你希望 Claude 自己定位问题、修复、补测试并且跑通测试。在 Claude Code 里输入/loop 修复 src/api/index.js 中传入空数组时崩溃的问题完成标准npm test 全部通过且新增了针对空数组的单元测试/loop会启动迭代。每一轮里Claude 会查看相关文件分析可能出问题的地方修改代码运行npm test根据测试输出决定是继续修复还是收工。我第一次跑类似任务时实际经过是这样第一轮它改了代码跑测试挂了有个TypeError: Cannot read properties of undefined。第二轮它去查了导致 undefined 的代码路径加了一个空数组判断第三轮测试通过并且它自己补了一个空数组的测试用例。整个过程大概三四轮我在旁边只做了一件事看着。有个很重要的点如果你的任务描述里没有明确完成标准/loop会自己猜一个。猜的结果就可能不是你要的。所以任务描述里记得把怎么算完成说清楚这是整个 loop 的命根子。3.3 参数调优和终止策略别让循环失控/loop默认的循环行为对于小任务完全够用但跑大任务时你得学会控制它否则可能一觉醒来它还在转。我常用的做法/loop --max-iterations 12 --timeout 5m 完成数据库迁移脚本的编写与执行验证其中--max-iterations 12是硬性保险防止 agent 钻进某个死胡同无限修改--timeout 5m是单轮命令的超时时间防止某条命令比如安装依赖长时间卡住。而--on-error参数我个人习惯设为continue让它在大多数错误下继续尝试但如果你在做一个需要严格保证安全的操作比如生产环境迁移那就设成stop出错立刻停。还有一个隐藏技巧/loop内部其实还可以配合 Claude Code 自带的--permission-mode来控制工具调用权限。如果你不想让它未经确认就执行删除命令就把权限模式调成plan或限制工具范围。安全性永远比效率优先这是我在终端里跑 agent 的第一原则。4. 实测中遇到的坑与排查技巧4.1 529 错误、模型识别问题一步一个脚印排查/loop上线后社区里反馈最多的不是功能问题而是接入相关的问题。我自己遇到过的几个典型报错整理成了一张速查表报错 / 现象可能原因处理方法529状态码Claude 服务端暂时过载等几分钟重试或降低轮次并发model is not a model this version of Claude Code recognizesCLI 版本和模型名不匹配升级 CLI 到最新版再看模型配置Your organization has disabled Claude subscription access账号权限受限换个有权限的账号或检查订阅终端进程退出退出代码 -1终端本身崩溃或资源不足查看系统日志换一个终端复用工具再跑529 错误尤其典型。有次我连续跑了三个/loop中途服务端开始频繁返回 529。我的处理方式是把任务拆成两段第一段跑完确认结果后再启动第二段。少开几个并发循环既省额度也减少报错概率。4.2 终端复用tmux 和 zellij 是 /loop 的好搭档/loop是长任务tmux几乎是标配。为啥因为一旦 SSH 断开或者终端误关了没有复用机制的话任务就白跑了。我用tmux起一个会话专门跑/loop就算本地网络断了重新连上之后还能继续看输出。这个习惯帮我省了很多重复工作。简单操作示例tmux new -s claude-loop claude然后在 Claude Code 里启动/loop干别的事去。回来之后tmux attach -t claude-loop就能重新看到运行现场。类似的终端复用工具还有zellij如果你更喜欢带界面分割的体验可以试试。我个人的感受是terminal multiplexer 和 agent loop 是一对天然搭档一个负责后台长跑一个负责跑起来不被打断两次配合下来流畅度直接提升一个档次。4.3 /loop 卡死或跑飞了怎么办/loop虽然智能但我也遇到过它陷入死循环或者跑偏的情况。一次我让它优化所有页面的加载性能它开始一页一页改改了十几个页面还没有停下来的意思。这明显是任务范围没有界定清楚而且没有给一个总体的完成标准。遇到这种情况我会立刻中断循环。Claude Code 里可以用CtrlC中断当前执行然后重新表述任务把范围缩小到首屏加载时间超过 2 秒的页面并且说明改完三个就停。另外一个有效的做法在启动/loop前自己先写一个快速验证脚本作为完成条件。比如你有 100 个测试用例全跑完要十分钟那你可以先写一个只跑最近改动的 10 个用例的轻量验证。这样每一轮迭代的验证成本低agent 修正速度也快。验证成本越高agent 越不愿意频繁跑最后修出来的代码质量就越可疑。4.4 接第三方模型以 DeepSeek 为例的注意事项还有一批朋友不是用官方模型跑 Claude Code而是通过改环境变量把ANTHROPIC_BASE_URL指向第三方模型的兼容接口比如 DeepSeek 的 Anthropic 兼容端点。我也试过步骤大概是先安装claude-code-router再去改模型路由配置让 Claude Code 把请求转发给 DeepSeek 模型。/loop本身在这个模式下是可以用的因为循环逻辑发生在客户端不依赖具体模型。但有几个注意点第三方模型对工具调用的支持不一定和官方模型完全一致。/loop依赖模型能够自主决定调用哪些工具、看哪些输出如果你的模型工具调用能力弱循环会显得很笨。模型响应速度慢的话整个循环会被拖得很长。--timeout参数要适当放宽否则很容易因为单轮命令超时导致循环中断。不同模型的终止判断能力不一样。官方模型能比较准确地判断任务已经完成有些第三方模型可能会反复尝试同一个失败方案。如果你是非官方模型用户我建议在跑/loop之前先跑几个单轮对话确认模型的基础调用没问题再上循环。不然问题会被循环放大。5. 更适合终端党的完整工作流建议5.1 个人推荐的日常组合拳结合最近的实操经验我现在的 Claude Code 工作流大概是这样终端复用工具用tmux常驻一个claude会话日常小任务直接在会话里敲普通指令快速解决需要多步迭代的任务启动/loop任务描述里写清目标和完成标准大批量/后台任务用tmux开新窗口跑/loop日志输出到文件方便回查需要长期运行的自动化任务我会先写一个小的 shell 脚本把验证命令、超时参数封装好再在 Claude Code 里调用。这套组合拳的核心思路就是把人工盯梢降到最低。终端党的优势就在于环境可控、工具链清晰/loop正好放大了这个优势。5.2 用一个轻量 harness 脚本控制 /loop如果你想更进一步可以写一个简单的外层框架把/loop包起来。不用很复杂一个 shell 脚本就够了核心是梳理清楚任务、验证、终止、日志。#!/bin/bash # 一个极简的 loop harness 示例 TASK修复登录模块的空指针异常并保证 npm test 通过 LOG_FILEloop_$(date %Y%m%d_%H%M%S).log echo [harness] 任务: $TASK echo [harness] 日志: $LOG_FILE claude --print /loop --max-iterations 15 --timeout 3m $TASK 21 | tee $LOG_FILE if grep -q 任务完成 $LOG_FILE; then echo [harness] 循环完成 else echo [harness] 循环未正常结束检查日志 fi这段代码没什么高深的地方但能帮你解决一个实际问题/loop跑完之后你不知道它到底经历了什么。加一个日志输出整个过程一目了然。这也是 harness 的意义——不是控制 agent 的每一个动作而是让它的行为可观测、可终止、可复现。5.3 什么情况下别用 /loop聊了这么多优点也要说说什么情况不适合用/loop。任务本身非常模糊连你自己都不知道完成长什么样。这时候让 agent 循环它只会自己编一个完成标准结果大概率不靠谱。每一步都需要人类主观判断的任务比如 UI 设计调整、文案风格把控。这种任务人的审美在其中作用很大loop 跑得再欢也替代不了人。代价极高的操作比如直接操作生产数据库、删除大量文件。除非你有非常可靠的自动回滚机制否则别放心交给循环。第三方模型能力不足的时候。一个连简单工具调用都磕磕绊绊的模型循环只会放大它的混乱。我自己见过不少人把/loop当作万能自动化什么任务都想往里塞结果就是循环一晚上、改出一堆自己也看不懂的代码。工具是用来放大你的能力的不是用来代替你思考的尤其是什么算完成这件事永远值得你花时间想清楚。我个人在实际操作中最深的体会是/loop上线之后Claude Code 从一个很聪明的对话式编程助手变成了一个能自主推进任务执行的 agent 运行时。它最大的价值不是省去你敲那几行字而是逼着你去想清楚任务的边界和验证标准。这整个思维方式就是 loop engineer 的核心素养。最后再分享一个小技巧如果你和我一样喜欢把 Claude Code 长时间挂在终端里记得给终端配一个自动休眠的机制或者至少把 Claude Code 的输出日志定期滚动清理。/loop跑长任务时输出量可以很大我之前就吃过磁盘被日志撑爆的亏。留好日志、设好上限、定义好完成标准然后你就可以放心地看着那只小龙虾在终端里替你跑活了。