Update avaliable. Click RELOAD to update.
📱 安装应用到主屏幕,获得更好体验
目录

让 Claude Code 自主运行的两种方式,实测只有一种靠谱

1. 两种方式,截然相反的哲学

你给 AI 一个大任务,走开去冲杯咖啡,回来发现它在某个错误循环里转了 45 分钟。或者它说”全部完成”——但一半代码没写。

作者尝试了两种让 Claude Code 自主运行的方式。表面上看它们像双胞胎——都是让 Claude 自己跑不用管。但底层工作方式完全相反。

/goal 记住一切。 它保持一个对话,让 Claude 从每次尝试中学习。第 3 步失败了?Claude 在第 7 步时知道这一点。

Ralph Loop 忘记一切。 它杀死会话,重新开始,一遍又一遍。Claude 完全不知道五分钟前自己做了什么。

这不是一个微小差异。它决定了什么任务能工作、哪里会出问题、以及你会烧掉多少钱。

2. /goal:有裁判的自主运行

/goal 是 Claude Code 内置的命令。你设定一个终点线,它一直跑到冲线。

/goal `npm test` exits 0 and `npm run lint` exits 0

关键设计:一个独立的小模型——Judge(裁判)——观察聊天,每轮判断是否完成了目标。

Claude 不决定什么时候完成。Judge 决定。Judge 说完成了,结束。Judge 说还没完成,它告诉 Claude 缺什么,Claude 再来一轮。

这个看似平淡的设计其实是整个系统最聪明的部分——Claude 不能再对自己撒谎了。 它不能说”我觉得可以了”而测试还在报错。裁判看到了真实情况。

Judge 的局限

裁判不能跑命令、不能读文件。它只看 Claude 已经在聊天里输入了什么。

所以如果你写的目标是”让测试通过”但 Claude 从来不输出测试结果,裁判永远不知道有没有通过。它会不断判定”未完成”,循环永远进行下去。

修复方法: 把能证明目标完成的内容写进 chat 可见的输出。"npm test 返回 exit code 0 出现在输出中" 比”测试通过”好得多。要显而易见,裁判不是在读你的心思。

3. Ralph Loop:忘记一切的暴力循环

Ralph Loop 不是 Anthropic 官方功能——是开发者 Geoffrey Huntley 发明的。名字来自一个卡通角色,以永远说同样的话著称。

只有三行 shell:

while :; do
  cat prompt.md | claude -p
done

Shell 启动 Claude → Claude 做事 → Claude 退出 → Shell 用同样的 prompt 再次启动 Claude。永远循环。

惊人之处:Claude 在回合之间零记忆。 每次启动都像第一次见面。同样的 prompt,同样的项目,同样的空白石板。

这听起来很糟糕。但忘记有时是功能。

长对话让 Claude 变得奇怪——陷入早期形成的错误想法、记住并不真实的东西、上下文窗口用到一半就不够了。重新开始跳过所有这些。

但代价很明确:Claude 忘记,所以你的项目必须替它记住。这意味着真实的文件——spec.mdtodo.mdstate.json——来保存当前工作状态。状态文件不是可选项,它们是全部意义。

4. 四个容易混淆的概念

人们把 /goal 和其他三个 Claude Code 功能混为一谈,选错工具浪费大量时间:

模式触发条件核心特性
/goal完成触发消除”回合之间”的确认
/loop时间触发按间隔启动,不管是否完成
Stop hook每回合结束永久生效的全局脚本
Auto mode回合内部消除”回合内部”的工具调用确认

一句话记忆法:

不同层次,不同任务。

5. 什么时候用哪个

大多数日常任务应该用 /goal。 当任务能在一个会话内完成、需要真正的完成证明、想让 Claude 从错误中学习时。例子:修 Bug 直到测试全绿、迁移一个数据库、重构一个模块。

Ralph Loop 用于罕见的大任务。 当任务太大一个会话装不下、能把状态写在文件里、能接受远程监护时。例子:实现 50 页的规格文档、重构大型代码库、跨多文件的批量任务。

作者诚实地说:开发者太容易过早选 Ralph,因为它听起来很酷。其实大部分工作 /goal 就够了。

6. 两个组合技

/goal + Auto mode(日常最强)

Auto mode 消除回合内的审批提示(”我能跑这个吗?”)。/goal 消除回合间的审批提示。两者叠加后,Claude 持续行动从不被阻断。

对 90% 的工作来说,这是最强配置。比单独用 /goal 更快,比 Ralph Loop 更可靠。适合所有能在一次会话内完成的任务。

Ralph Loop 套 /goal(过夜模式)

外层: Ralph Loop (死循环)
内层: /goal (需完成才退出)

外层 shell 循环跑一整夜。每一轮循环启动一个全新的 /goal 会话,必须完成才能进入下一轮。

你得到了 Ralph 的无限运行时间,得到了 /goal 的客观检查。两者兼得。这是作者唯一信任能在他睡觉时跑 8 小时的模式。设置更多,但值得。

7. 两个都会坑你

/goal 的坑: 如果 Claude 默默工作不输出命令结果,裁判看不到任何东西,判”未完成”然后继续循环。解决方案:告诉 Claude 展示工作输出。另外加回合预算上限防无限循环。

Ralph Loop 的坑: 没有停止条件,真的会永远跑下去。意味着真实的 API 账单。状态文件写得不好,Claude 在每一轮重做同样的步骤。而且没有裁判——如果你想信任输出,必须自己写检查脚本(make verify 或类似)。

8. 真正的问题

大多数开发者问:”哪个更好?”这是错的问题。

正确的问题是:你能相信这个 AI 说它完成了吗?

/goal 把信任建在结构里。一个独立的裁判检查每一轮。Claude 不能作弊。系统天生诚实。

Ralph Loop 信任你自己建立信任。你写验证脚本、读输出、决定何时停止。诚实是手动的。

两者都没错。它们把工作放在不同的地方。

9. 核心建议

作者用一句话总结了他的全部经验:

下次你要走开让 AI 跑长任务之前,问自己一个问题:我需要 AI 记住,还是需要它忘记?

答案决定一切。

/goal 是聪明、短、有监督的。适合完成你已经理解的任务。

Ralph Loop 是笨、长、原始的。适合大到装不进一个会话的任务。

/loop 用于观察。Stop hook 是全局规则。Auto mode 是去除每次操作的摩擦。

大多数开发者不需要花哨的自主性。他们需要知道哪个工具适合哪个工作,别再搞混了。单单这个清醒的认识就能节省几小时的浪费运行和数不清的浪费 token。

相关资源:

版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2026/05/claude-code-autonomous-goal-vs-ralph-loop/