Agent工坊

【Agent工坊】Claude Code 循环编程实战:Boris Cherny 说「我只写循环」——用 /loop 和 /goal 把你的 AI 编程助手变成自动化引擎

Claude Code 作者 Boris Cherny 在最近的访谈中说了一句让开发者圈震动的话:"I don't prompt Claude anymore. I have loops that are running." 这不是技术演示,这是他本人的日常工作方式。本文带你从零到一,掌握 /loop、/goal、动态工作流三大原语,把你的 Claude Code 从"问答工具"升级为"自动化引擎"。

从手动搬运到自动循环:Claude Code /loop 让你告别重复性开发任务▲ 从手动搬运到自动循环:Claude Code /loop 让你告别重复性开发任务

你已经在一个循环里了——只是还没意识到

停下来想一想,你每次让 Claude Code 完成一个任务后做了什么:

让 Claude 写代码

→ 手动跑测试

→ 发现失败,复制错误贴回 Claude

→ Claude 修复

→ 手动再跑测试

→ 通过后 git commit、push

→ 开 PR

→ 等 review 评论

→ 复制评论贴回 Claude

→ Claude 修改

→ 手动 push

→ 等下一次 review

→ 循环往复

你在这个循环里扮演的是控制器角色——每一步都要你手动搬运上下文、判断是否继续、决定何时停止。Claude Code 的新循环原语(/loop/goal)就是让你把这些搬运工作交还给 Agent 自己

不需要编排框架,不需要自定义工具链。原语已经内置在 Claude Code 里。

原语一:`/loop` —— 定时轮询,适合持续监控

它能做什么

/loop 让 Claude 按照固定时间间隔重复执行一个任务。Claude 醒来 → 做事 → 汇报 → 继续等待 → 再次醒来。你按 Esc 它才停。

三种调用方式:

语法行为
/loop 5m 每 5 分钟执行一次
/loop Claude 自己决定间隔
/loop自动读取 .claude/loop.md 里的指令

关键特性:/loop 永远不会自己停止。你必须按 Esc。这意味着它适合"无限期监控"类任务,不适合"有明确终点的任务"(后者用 /goal)。

实战:自动监听 PR 评论

假设你有一个开源项目,同事随时可能提 review 评论。以前你需要:

  1. 手动刷新 GitHub 页面
  2. 看到新评论
  3. 复制到 Claude Code
  4. 让 Claude 修改代码
  5. 手动 push

现在,在项目根目录创建 .claude/loop.md

# PR Watcher Instructions

Check all open PRs for new review comments every 3 minutes.

Command: gh pr list --state open --json number,title

For each open PR:

1. Read new review comments: gh pr view <number> --comments

2. If there are unaddressed comments, fix the code

3. Commit with message "address review: <summary>"

4. Push the change

5. Report what was changed

Only modify src/ directory. Do not modify tests unless the comment

specifically asks for test changes. Do not open new PRs.

然后启动:

cd your-project

/loop

Claude 开始每 3 分钟检查一次 PR。你在 GitHub 上留一条评论:

"The POST /users route should return 201, not 200."

几分钟后,你会看到 Claude 自动:

  1. 读取这条评论
  2. 修改 src/routes/users.js,把返回码从 200 改成 201
  3. Commit: address review: change POST /users to return 201
  4. Push

你再留一条评论测试:

"Add input validation for the email field."

Claude 再次醒来,加上邮箱验证逻辑,commit,push。循环继续。

你在做什么? 写自己的代码、喝咖啡、刷 Twitter。Claude 在后台跑循环。

Worktree 隔离:循环不污染你的工作目录

问题来了:/loop 在修改代码的同时,你自己也在 main 分支上开发。两边往同一个工作目录写文件,冲突是必然的。

Claude Code 的解决方案是 --worktree

claude --worktree pr-watcher

这会创建一个独立的 git worktree,Claude 在里面运行循环。所有修改都在 pr-watcher 分支上,你的 main 分支纹丝不动。

循环结束后:

# 如果改得好就合并

git merge pr-watcher

# 如果改得不好就扔掉

git worktree remove pr-watcher

更强大的用法:多个 worktree 并行。一个 worktree 跑 PR 监听,另一个 worktree 跑 lint 修复,第三个 worktree 跑测试覆盖——三个循环互不干扰,你坐在中间喝茶。

原语二:`/goal` —— 干到完成为止,有明确终点

它与 `/loop` 的区别

特性/loop/goal
触发方式时间间隔每次 turn 完成后
停止条件你按 Esc独立评估器确认条件满足
适合场景PR 监控、CI 轮询修复所有测试、迁移模块
评估器无(你自己判断)独立模型实例

/goal 的关键设计:评估器和执行器是不同实例。Claude 不能给自己的作业打勾——一个独立的模型会检查条件是否真的满足。

/loop、/goal 和动态工作流——Claude Code 三大循环原语一览▲ /loop、/goal 和动态工作流——Claude Code 三大循环原语一览

实战:修到所有测试通过为止

你有一个 Express API 项目,三个路由,三个测试全挂:

/goal all three tests in tests/ pass and npm run lint exits clean

Claude 开始干活:

  1. 读测试文件,理解期望行为
  2. 修改 src/routes/users.js
  3. npm test——还有 2 个失败
  4. 修改 src/routes/posts.js
  5. npm test——还有 1 个失败
  6. 修改 src/routes/comments.js
  7. npm test——全部通过
  8. npm run lint——通过
  9. 评估器确认:条件满足。停止。

你什么都没做。你只是给了它一个终点线。

更多 `/goal` 场景

# 代码库迁移——直到编译通过

/goal npm run build exits with no errors and no TypeScript warnings

# 清理 lint——直到零错误

/goal npm run lint exits with no errors

# 修 bug——直到 CI 全绿

/goal all CI checks pass on the current branch

每个场景的共同点:终点可测量。不是"写得好一点",不是"优化一下"——而是 npm test 退出码为 0、lint 零错误、CI 全绿。这是给机器的指令,不是给人类的愿望。

原语三:让 Claude 自己设计循环

/loop/goal 是积木。当任务更复杂时——比如"每个模块一个 PR,每个 PR 独立 review,每个 review 通过后再做下一个"——你可以让 Claude 自己设计循环结构。

怎么问

描述结果,不要描述实现。先让它设计方案,不要直接让它执行:

I want to fix the three failing tests one at a time, each on its own PR,

with a review pass on each before merging. Run each fix in its own worktree

so the threads don't interfere with each other or with my working directory.

Can you design a workflow that handles that automatically?

What would it look like?

Claude 会输出一个设计方案,比如:

Workflow Design:

1. Open worktree wt-fix-1

2. Fix test 1, open PR #1

3. Open worktree wt-review-1

4. In wt-review-1, review PR #1, address comments

5. Merge PR #1 when clean

6. Remove wt-fix-1 and wt-review-1

7. Repeat for test 2 and test 3

你审阅方案,说 "That looks good. Build it and run it." Claude 就开始建造并执行。

为什么多 worktree 在这里是关键

没有 worktree,并行线程全往同一个工作目录写,互相踩脚。有了 worktree:

  • 每个修复有自己独立的分支和 checkout
  • Review 线程在独立空间里检查修复线程的产物
  • 你的 main 分支全程不受影响
  • 每个 PR merge 后才进入 main

这就是"设计循环"和"写脚本"的本质区别——循环是活的,有分支逻辑、有隔离、有失败重试。

循环编程的三层进阶

Claude Code 的循环能力有一个清晰的进阶路径:

第一层:/loop 第二层:/goal 第三层:让 Claude 设计

│ │ │

│ 重复性检查 │ 有终点的任务 │ 多阶段工作流

│ 你定义节奏 │ 评估器定义终点 │ Claude 定义结构

│ 你按停止 │ 自动停止 │ 你审批方案

│ │ │

│ 例子:PR 评论监听 │ 例子:修到测试全过 │ 例子:多 PR 顺序交付

判断你用哪一层的方法:问 Claude。

"Is it possible to make a workflow that does X? What would it look like?"

Claude 的回答会告诉你——这只是一个简单的 /loop,还是需要 /goal,还是得让它自己设计。

踩坑与排障

三层进阶路径:从定时轮询到让 AI 自己设计工作流▲ 三层进阶路径:从定时轮询到让 AI 自己设计工作流

坑1:`/loop` 在后台跑,忘了关

/loop 不会自己停。你周五下班前启动了 PR 监控循环,周一回来 Claude 还在忠实地每 3 分钟检查一次。好在——你回到终端,按 Esc 就行。如果找不到那个终端了,ps aux | grep claude 找到进程 kill 掉。

坑2:评估器的条件太模糊

# ❌ 不好

/goal the code looks better now

# ✅ 好

/goal npm test exits with code 0

评估器是一个独立模型,它不理解"更好"。它只理解可测量的条件。你的条件里必须有退出码、字符串匹配、文件存在性——机器能验证的东西。

坑3:`/goal` 的评估器不是 Claude 自己

这是设计如此,不是 bug——但你要知道。评估器可能对"条件已满足"的判断和你预期不同。比如你写 "all tests pass",评估器可能只检查 npm test 的退出码,也可能去读测试覆盖率报告。把条件写死

# ✅ 精确

/goal npm test exits 0, npm run lint exits 0, and npm run build exits 0

坑4:worktree 路径冲突

如果你已经有一个叫 pr-watcher 的 worktree,claude --worktree pr-watcher 会失败。每次用不同的名字,或者先清理:

git worktree list # 查看所有 worktree

git worktree remove old-one # 删除不用的

坑5:循环里的 git 操作需要认证

Claude Code 的循环在终端里跑,git push 需要你的 SSH key 或 token。确保:

  • gh auth status 返回已登录
  • Git 的 user.name 和 user.email 已配置
  • 如果用了 worktree,新 worktree 继承父仓库的 git 配置

坑6:不要让多个 `/loop` 同时修改同一个文件

两个循环都盯着 src/routes/users.js——一个在修 bug,一个在加功能。冲突不可避免。规则:每个循环有自己的 worktree,或者明确划分领地——"只修改 src/routes/" vs "只修改 src/middleware/"。

实战 Prompt 模板

把这些直接贴到 .claude/loop.md 或用 /loop 直接执行:

PR 评论自动响应:

/loop 5m

Check all open PRs with gh pr list. For each one, read new review

comments with gh pr view <number> --comments. If there are unaddressed

comments, fix the code in src/, commit, and push. Do not modify tests.

Do not open new PRs.

每日站会摘要:

/loop 24h

Run gh pr list --state merged --limit 10. For each PR merged in the

last 24 hours, summarise what changed in one sentence.

持续修复直到 CI 全绿:

/goal npm test and npm run build both exit clean

多模块渐进式重构:

Add input validation to each file in src/routes/ one at a time.

One PR per file, review pass before merging, each in its own worktree.

Can you design a workflow for that and run it?

总结:从"写 Prompt"到"写循环"

Boris Cherny 那句话是认真的:"I don't prompt Claude anymore. I have loops that are running."

这不是营销话术。这是 Claude Code 从"对话式编程助手"进化到"自动化 Agent 平台"的信号。/loop 把重复性检查自动化,/goal 把有终点的任务自动化,动态工作流把多阶段交付自动化。

对于 AI 创业者来说,这意味着:

  • 你的开发时间从"写代码"变成"设计循环"
  • 一个人 + Claude Code 循环 = 一个开发团队的吞吐量
  • 循环在后台跑,你去做只有人才能做的事——理解用户、设计产品、谈客户

今天的行动建议:在你的项目里挑一个你每天手动做的事情(检查 PR、跑 CI、修 lint),把它写进 .claude/loop.md,启动 /loop。明天早上回来看看 Claude 都做了什么。

你会惊讶的。


#AI创业 #ClaudeCode #AI编程 #Agent自动化 #一人公司

本文由AI辅助创作,经人工审核编辑发布

更多一人公司案例与工具 → 微信公众号搜索「AI创业内参」→ 菜单栏「官方网站」即可访问 xopcx.com