“无需提示词”的工作流:Boris 提出的循环驱动理论,助力开发者提升生产力

@nobel_824
日语4周前 · 2026年6月17日
220K
145
6
0
427

TL;DR

本文探讨了由 Claude Code 负责人 Boris Cherny 提出的 Loop Engineering 方法,旨在实现开发自动化。文章详细介绍了如何通过 /loop 命令和状态文件,构建能够自动编写代码并修复 Bug 的 AI 系统,从而实现无需人工干预的开发流程。

“我不再往 Claude 里敲提示词了。跑的是那个循环,是由循环决定下一步该做什么,它自己去提示 Claude。我的工作变成了写这些循环。”

这话是 Boris Cherny 公开说的,他是 Claude Code 的负责人(相关内容出现在 The New Stack 和 Addy Osmani 的文章里)。

当大多数人还在打磨提示词来提高准确率的时候,这个造工具的人,自己已经不再当那个“下指令的人”了。

仔细想想,只要“人的回合”——坐在屏幕前,等 AI 回复,检查,再下达指令——还在流程里,速度的上限就被你双手的速度锁死了。

循环工程 就是把人的那个回合从结构里拿掉的想法。Boris 是彻底这么干的;他说自己在 2024 年 11 月就把 IDE 删了,之后再也没打开过。他声称过去一个月里他对 Claude Code 的几乎所有贡献,都是 Claude Code 自己写的(据说超过了 200 个 PR)。

这个工具的创造者自己不写代码,而是退到了“观察循环是否正常运转”的位子上。今天,我会从技术规格层面来拆解这件事,不只是谈感觉。我自己也在往循环那边靠,而且我越靠过去,越觉得自己的双手变自由了。

相关文章:Vibe Coding 入门:不会编程的人也能用 Claude 制作应用的 6 个步骤。周末自造的时代来了

tatsuki | Claude Code活用支援 on X — cover

https://note.com/nobel/n/n8192ec07d689

循环工程意味着角色的转变

换句话说,你的位置变了。以前,人坐在一个来回交互的中间:人下达指令,AI 回答,人检查并纠正。在循环设计里,人负责设计这个循环运转的机制,而结果的试错和验证则交给了 AI 这边。你只需要等它完成时收到一条通知。

Google 的 Addy Osmani 在题为 Loop Engineering 的文章里也写了同样的观点,将其描述为“用自动打出提示词的机制,来替代那个手动打提示词的人”。关键的着力点已经从“能写出好提示词的能力”,转向了“如何设计一个让 AI 为你写提示词的系统”。这就是核心。

不过,Addy 本人也警告说:“这还在早期阶段,我多少有点怀疑。你真的要小心 token 成本。”我们会在后半部分回到这个陷阱。

/loop 的技术规格

Claude Code 内置了一个叫 /loop 的技能(从 v2.1.72 版本开始)。这是进入循环工程最简单的入口。因为网上的解释经常有错,我会根据官方的定时执行文档来聚焦关键点。

它的行为取决于你传给它的内容:

  • 同时指定间隔和提示词:/loop 5m check if the deployment is finished and let me know 会按固定间隔运行。
  • 只指定提示词:/loop check if the CI passed and respond to review comments。Claude 会在 1 分钟到 1 小时之间自己决定间隔(自定节奏)。
  • 什么都不传:/loop。会执行内置的维护提示词(继续未完成的工作、处理 PR、简单清理)或者你自己放的 loop.md 文件。

间隔可以放在开头,比如 30m,也可以放在结尾,比如 every 2 hours。单位是 s / m / h / d。你也可以传其他命令,比如 /loop 20m /review-pr 1234,这样每次都会运行保存好的技能。要停止的话,在等待时按 Esc 键(通过自然语言请求创建的任务不能用 Esc 停止,必须要求删除)。在自定节奏模式下,如果 Claude 判断任务确实完成了,它就会结束,不会安排下一次运行。

自定节奏模式有一个微妙的好处:它会自动调整,在构建快完成时等短一点,没什么动静时就等长一点。有时会用一种叫“Monitor”的机制来流式传输后台输出,而不是轮询,这通常比按固定间隔发一次提示词更便宜。

我来纠正一下在原始文章中发现的一个常见误解。有时会写成任务在“创建 3 天后自动删除”,但准确的说法是,重复任务在创建 7 天后过期(它会再跑最后一次然后消失)。另外,/loop 是会话级别的,开始一个新对话就会消失。如果把它关掉,只要还没过期,可以用 --resume 恢复。

有三种调度方法,按用例选择:

  • Cloud (Routines):在 Anthropic 那端运行。即使你的电脑合上了也能继续跑。最小间隔是 1 小时。
  • Desktop Scheduled Tasks:在你的电脑上运行,可以触及本地文件。
  • /loop:仅在会话打开期间有效。最小 1 分钟,适合在会话中进行轮询。

分工是这样的:需要无人值守长期运行的就用 Routines 或 GitHub Actions,会话期间的监控就用 /loop

循环适合处理的标准任务

你日常工作中那些“检查一下、修一点”的重复任务,基本上都适合用循环。这里有三种常见模式:

  • Bug 巡逻:定期检测问题或测试失败,读取原因,修复它,运行测试,然后创建一个 PR。
  • 持续审查:监控代码变更,持续指出需要关注的区域。人只决定是否采纳建议。
  • 文档同步:检测源码变更,让 README 或规格说明保持最新。

这三者的共同点是,目标可以清晰判断,比如“测试通过”或“PR 已创建”。反过来说,标准模糊的任务就不适合用循环。如果停下来的点不明确,它就会一直跑下去,不停消耗 token。对于你的第一个任务,选择那种成功或失败一目了然的会更安全。

用“状态文件”防止失控和忘事

对循环有两种担心:重复犯同样的错误,以及无休止地消耗 token。

这时候,在项目里设计一个单一的状态文件就很有效。无论是 STATE.md 还是 todo.md,AI 在每次循环中都会读写当前目标 / 已完成项 / 下一步 / 卡点。即使会话中断了,AI 也不会搞不清“自己在哪里、目标是什么”。

这不只是一个随意实践;Anthropic 自己在长效 Agent 的有效框架(2024 年 11 月)里也得出了几乎相同的结论。他们的配置使用了两个角色:一个初始化 Agent 来设置环境,一个编码 Agent 来在每次会话中推进一个功能。进度通过 git 提交和一个 claude-progress.txt 文件在会话之间传递。对于长时间的任务,单纯的摘要压缩是不够的。策略是,一次性写出到结构化文件,然后重建上下文。

在我自己的操作中,我使用 tasks/state.md 作为共享状态的中心,不管是头脑风暴的一方还是实现的一方,在行动之前都会先读它。这和那篇论文说的是一样的:“别信上下文,信文件。”虽然简单,但没它的话,循环在第二圈就会迷路。

Ralph 方法以及区分创建者与检查者

有一个循环的极端版本叫“Ralph”方法。由 Geoffrey Huntley 推广开来,原始来源只是一个简单的 bash 循环:

通过无休止地喂同一个提示词,并利用一个包含计划的 Markdown 文件作为磁盘上的共享状态,AI 每次都会读它,然后自己决定“下一步做什么”。这看起来有点鲁莽,但因为有了状态文件,每跑一圈它都会往前推进。Claude Code 也有一个官方的 ralph-loop 插件,它会持续重新提交同一个提示词,直到满足完成条件(完成承诺)。有一个约束是,声明完成只能在实际达成时才能发出。

然而,如果所有事情都交给一个 AI,它对自己写的代码会说“没问题”。这时候,把负责创建的 AI(Maker)和负责检查的 AI(Checker)分开就很有效。在我自己的操作中,我把实现和验证分给不同的 Agent,并且不给验证的那一边实现意图——我只展示需求,让它独立评估。我是在吃过亏之后才学到的:在同一个会话里做自我审查,必然会放水。

把一个具有“不同视角的仅审查 Agent”整合进循环——设计这种多层级的检查,是人类应该保留的工作之一。

分三个阶段设计自主权

一次性全盘托付容易出事故。把参与程度分成不同层次会更安全:

  • L1(手动):人类输入提示词并逐一检查。传统方式。
  • L2(半自主循环):遵循状态文件,用 /loop 监视一组特定任务直到完成。
  • L3(常驻):通过 Routines 或 GitHub Actions 持续运行,无需人工干预。

从 L2 开始比较现实。用 /loop 运行一个任务直到完成,观察它的行为。看到可靠性的范围之后,再升到 L3。头几次,我是在副屏上看日志,观察“它在什么地方做出了错误判断”。

陷阱(先了解这些)

因为我只说了好的一面,这里提三个可能会卡住你的地方:

  1. Token 成本:循环跑得越久消耗越多。这就是 Addy 强调的点;间隔设得太短的话,一晚上可能花掉不少钱。自定节奏比固定间隔好,因为它会在该等的时候等着,减少浪费。
  2. 不可逆操作:内置的维护提示词只会在“对话里已经允许的范围内”采取推送或删除等不可逆操作。自己写提示词时,最好为破坏性操作定义好边界。
  3. 7 天后消失:重复的 /loop 任务在创建 7 天后过期。如果想让它跑更久,就转到 Routines 或 Desktop 任务。

给中级用户的提示

  • /loop/goal 不同。/loop 是按间隔运行。如果你想在满足条件之前每个回合都继续,用 /goal。如果你想在事件发生时立即响应,通过 Channels 使用 push。
  • 放置一个 loop.md.claude/loop.md~/.claude/loop.md)可以让你用自己的内容替换裸 /loop 的默认提示词。对于编写日常任务很有用,比如“如果 release 分支的 CI 是红色,就修复它”。
  • 每个会话最多 50 个定时任务。可以用 CronList 查看列表,用 CronDelete 按 ID 删除。

总结

以前,我坐在屏幕前的时间就是进步的上限。现在,一个在我睡觉时读取状态文件的循环,逐个功能地推进进度,而我的早晨从检查那个进度开始。

在改进内容(提示词准确度)之前,先设计它的运作方式(循环分离、状态管理、验证)。着力点已经转移到了那里——这就是 Boris、Addy 和 Anthropic 框架故事的共同点。我觉得这不是什么深奥的理论,而是简单设计的稳步积累,比如在启动循环之前先决定好什么时候停下来。

tatsuki | Claude Code活用支援 - inline image

在 X 上无法分享的有用信息正在 LINE OpenChat 中分享。如果你对使用 Claude Code/Codex 或利用 AI 进行 X 运营感兴趣,欢迎加入。

https://t.co/9LOoUYvCbO

一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章