🙋‍
我是 Luhui Dev,一个长期拆解 Agent 工程、探索 AI 教育落地的开发者。关注 Agent Harness、LLM 应用工程、AI for Math 与教育 SaaS 产品化实践。


前言

最近硅谷的 Agent 圈又冒出了一个新概念:Loopcraft

第一次看到这个词,我想这不就是给 Agent 套一个 while true 吗?前几年叫 Agent Loop,后来叫 Workflow、Harness Engineering,现在又发明了一个 Loopcraft,硅谷 AI 圈总是在不断造词……

不过顺着最近 Peter Steinberger、Claude Code 负责人 Boris Cherny,以及 Andrej Karpathy 关于 Agent Loop 的讨论看下去,我发现这次的变化还是有点不一样的,所以来系统梳理一下。

Peter Steinberger 的说法是:

You shouldn’t be prompting coding agents anymore. You should be designing loops that prompt your agents.

你不应该继续亲自 Prompt Coding Agent,而应该设计一个负责 Prompt Agent 的循环。

Boris Cherny 的说法是:

I don’t prompt Claude anymore. I write loops. The loops do the work.

我不再亲自 Prompt Claude。我负责写循环,循环负责干活。

Karpathy 在介绍 Autoresearch 时也表达了类似的观点:如果人还需要不断查看结果、判断下一步、再给 Agent 新指令,那么人本身就成了整个系统的吞吐量瓶颈。

这几句话放在一起,背后其实是一次抽象层上移:

以前:
人 → Prompt → Agent → 结果

现在:
人 → 设计 Loop
         ↓
任务发现 → Agent 执行 → 自动验证 → 失败重试 → 保存状态 → 继续运行

我目前对 Loopcraft 最简洁的理解是:Prompt Engineering 优化一次交互,Loopcraft 优化整个反复运行的系统。

它关注的不是这一个任务怎么做好,而是:

  • 下一次任务由谁发起;
  • Agent 如何知道自己该做什么;
  • 输出由谁检查;
  • 失败后如何获得反馈;
  • 是否需要重试、换策略或者交给人;
  • 状态如何跨越不同会话保存;
  • 多次运行积累下来的经验,如何反过来改进系统。

这篇文章,我想具体拆三个问题:

  1. Loopcraft 到底是什么,为什么最近突然火了;
  2. 它与之前很火的 Agent Harness 有什么区别;
  3. 普通开发者现在能不能搭一个简单的 Loop 跑起来。


一、为什么大家突然不谈 Prompt,开始谈 Loop 了

过去两年,我们使用 Coding Agent 的典型方式,大致是这样的:

告诉 Agent 要做什么
→ 等它修改代码
→ 人检查结果
→ 告诉它哪里不对
→ Agent 继续修改
→ 人再次检查

模型已经在写代码、搜索文件和运行测试,但整个过程仍然由人一步一步驱动。

Agent 每完成一轮,就停下来等下一条指令。

从表面上看,这是人在使用 Agent;换一个角度看,其实也是人充当了 Agent 系统的调度器、状态机和验证器。

所以模型虽然很快,人却依然无法离开。各种 Agent 产品推出移动端异步监管功能,也是为了缓解这个问题。

这正是最近 “Loop discourse” 提出的问题:不要只让 Agent 自动执行其中一步,而是把任务发现、分配、验证和继续推进也设计成一个系统。

比如,以前修复一个 CI 问题可能是:

我看到 CI 失败 → 打开 Codex → 复制错误日志 → 让它分析 → 看修改结果 → 让它运行测试 → 检查通过 → 手动创建 PR

放进 Loop 之后可以变成:

CI 失败事件 → 自动读取错误日志 → 判断是否属于可自动处理的问题 → 在独立 worktree 中启动 Agent → 修改代码 → 运行测试和 lint → 第二个 Verifier 检查 diff → 通过后创建 PR → 无法处理时通知人

这里真正被自动化掉的,是修改代码周围的整个闭环。

因此 Loopcraft 不是某个新的模型能力,也不是某个特定框架。

它更像是一种 Agent 系统设计方法:将任务执行、结果验证、事件触发、状态保存和系统改进,组织成多个可以嵌套的循环。



二、Loopcraft 是新概念吗?

Loopcraft 作为名字,确实非常新。但它背后的技术元素并不新。

我们早就有:

  • Agent 的 Reason–Act–Observe 循环;
  • Workflow 和状态机;
  • 自动测试和 CI/CD;
  • 定时任务与事件驱动;
  • 多 Agent 协作;
  • LLM as a Judge;
  • Reflexion 和 Self-Refine;
  • 长期记忆;
  • 自动实验与爬山优化。

甚至最简单的 Ralph Loop,本质上就是不断重新调用 Coding Agent:

while true; do
  claude "读取任务和当前进度,继续完成工作"
done


三、Agent Harness 和 Loopcraft 到底有什么区别?

这是我觉得最容易混淆的地方。

过去一年,Agent Harness 已经是一个很热门的概念。

Anthropic 对 Harness 的定义很清楚:它是让模型能够作为 Agent 工作的系统,包括上下文处理、工具调用、权限、环境、状态管理和结果返回。

简单说,Harness 解决的是:这个 Agent 在什么样的环境里工作?

而 Loopcraft 解决的是另一个问题:这个 Agent 什么时候被启动,为什么继续运行,结果由谁检查,下一轮做什么?

用一组不完全严谨,但容易理解的比喻:

Model:工人的大脑
Tools:工人手中的工具
Harness:工人的工位和工作环境
Loop:工厂的生产节拍、质检和任务调度
Loopcraft:如何设计并叠加整套生产循环

当然,我在真实实践里发现两者边界并不能完全绝对。

一个成熟的长任务 Harness,本身就包含重试、验证和状态交接;一个 Loop 也必然依赖 Harness 提供工具和环境。

我更愿意把它们理解为关注点不同:

概念 主要关注的问题
Prompt Engineering 这一轮模型应该看到什么指令
Context Engineering 模型此刻应该看到哪些信息
Tool Engineering Agent 可以执行哪些动作
Harness Engineering 一次 Agent 运行如何可靠发生
Loopcraft 多次运行如何被触发、验证、连接和持续改进

所以 Loopcraft 并没有取代 Harness。

恰恰相反,没有稳定的 Harness,Loop 只是在自动、持续地制造错误。



四、Loopcraft 不是一个循环,而是多个循环的叠加

LangChain 后来把 Loopcraft 拆成了四个比较容易落地的层级。我觉得这个拆法很实用。

第一层:Agent Loop

最内层就是我们熟悉的 Agent:

模型思考
→ 调用工具
→ 读取工具结果
→ 继续思考
→ 直到认为任务完成

例如一个文档 Agent 可以:

读取 Issue → 搜索仓库 → 修改 Markdown → 检查链接 → 创建 PR

第二层:Verification Loop

Agent 说完成了,不代表任务真的完成了。因此,需要在 Agent 外面包一层验证:

Agent 执行
→ Verifier 检查
→ 不通过则返回具体反馈
→ Agent 再次执行
→ 直到通过或超过预算

Verifier 可以是单元测试、类型检查、lint、Schema 校验等等。

但这里有一个很重要的原则:尽量不要让做题的人,同时负责给自己判卷。

第三层:Event-driven Loop

有了执行和验证,接下来是不再由人手动启动。

任务可以由真实事件触发,此时 Agent 不再只是一个聊天工具,而是业务系统中的后台组件。

事件
→ 确定性规则判断是否需要处理
→ 启动 Agent
→ 验证结果
→ 更新真实系统

第四层:Hill-climbing Loop

前三层自动化的是工作。

第四层开始自动化如何把工作做得更好。

每次 Agent 运行都会留下 Trace:

  • 收到了什么任务;
  • 调用了哪些工具;
  • 在哪里失败;
  • Verifier 为什么拒绝;
  • 消耗了多少 Token;
  • 是否需要人工接管。

外层系统可以定期分析这些轨迹:

收集多次运行记录
→ 找出高频失败模式
→ 调整 Prompt、Tool、Skill 或 Verifier
→ 在 Eval 集上重新测试
→ 通过后更新 Harness

这一层才是我认为 Loopcraft 最有价值的部分。

因为普通的循环只是重复工作,而 Hill-climbing Loop 会改变产生结果的系统。

普通 Loop:
失败 → 再试一次

改进 Loop:
失败 → 分析为什么失败
     → 修改 Prompt、工具或验证规则
     → 让未来的运行更可靠

外层循环的返回箭头,不只是回到任务开头,而是伸进了 Agent 内部,开始改造内层循环。

这时候,系统才真正出现了复利。



五、Karpathy 的 Autoresearch,是目前最标准的 Loopcraft 案例

要理解 Loopcraft,Karpathy 的 Autoresearch 是一个很好的实践样本。

这个项目做的事情并不复杂:

Agent 提出一个训练改进
→ 修改 train.py
→ 运行固定五分钟的训练
→ 读取 val_bpb 指标
→ 指标更好则保留
→ 指标变差则回滚
→ 开始下一次实验

它能够在无人干预时,每小时执行大约 12 次实验,睡一觉可以完成接近 100 次实验。

这里真正聪明的不是 Agent Prompt 写得多么复杂,而是 Karpathy 把问题改造成了一个非常适合循环优化的环境:

  • Agent 只能修改一个文件;
  • 评价指标固定;
  • 每次实验时间固定;
  • 结果可以自动比较;
  • 失败可以回滚;
  • Git 记录完整实验历史;
  • 验证代码不能被 Agent 修改。

这就是 Loopcraft 的核心变化:人从直接完成任务,转向设计一个能够反复完成、验证和改进任务的系统。



六、自己怎么搭一个最小 Loop?

Autoresearch 的环境比较特殊。普通开发者可以先从更简单的场景入手:

自动接收一个小型 Issue,尝试修复,通过测试后创建 PR,失败则带着反馈重试。

先别急着上多 Agent。一个最小 Loop 只需要六个部分:

  1. Trigger:什么事件启动任务,例如 CI 失败、定时任务或带有特定标签的 Issue。
  2. Goal:明确什么叫完成,最好能转化为测试、lint、类型检查等机器可验证条件。
  3. State:把尝试次数、失败原因和当前进度写进文件或数据库,不要只依赖聊天上下文。
  4. Worker:让 Coding Agent 在独立的 worktree 或容器中执行,避免污染主分支和其他任务。
  5. Verifier:优先使用测试、规则和静态检查,只有难以形式化的部分才交给 LLM Reviewer。
  6. Budget:限制尝试次数、运行时间和成本,涉及高风险操作时及时交给人。

整个流程可以简化成:

for attempt in range(3):
    result = run_agent(goal, load_state())
    verdict = verify(result)
    save_state(result, verdict)

    if verdict == "passed":
        create_pull_request()
        break

    if verdict != "retryable":
        notify_human()
        break

具体使用 Claude Code、Codex、GitHub Actions,还是自己写 Bash 或 Python 都不重要。

真正需要设计清楚的是这条链路:

触发 → 执行 → 验证 → 反馈 → 重试或退出

只要任务有明确目标、可靠反馈、可恢复状态和停止条件,就已经具备了一个最小 Loop。



七、Loopcraft 最容易踩的几个坑

第一个坑:把无限重试当作自主性

不断运行不等于不断进步。

如果 Agent 缺少新的反馈,重复十次通常只是用十倍 Token 犯相似的错误。

第二个坑:让 Agent 修改自己的考试规则

执行 Agent 不应该随意修改测试、评价指标、时间预算、权限边界、Verifier Prompt。

否则它很可能不是把任务做得更好,而是把“通过”变得更容易。

第三个坑:一开始就上多 Agent

多个 Agent 不会自动产生智能,只会先产生更多 Token 消耗、文件冲突、重复工作、状态同步问题等。

先把一个 Worker、一个 Verifier、一个持久状态跑通,再考虑并行。

第四个坑:只衡量 Agent 有多忙

Agent 数量、运行时长、Token 消耗和工具调用次数,都不是最终价值。

真正应该关注的是:单位成本下,经验证的有效进展。

例如自动解决 Issue 的成功率、每个合格 PR 的平均成本、人工接管比例等。

第五个坑:Loop 越顺,人越容易放弃理解

这是我觉得最值得警惕的一点。

当 Agent 可以自动写代码、测试、修复并创建 PR,人很容易只看最终的绿色勾选。

但系统产出代码的速度越快,人对系统的理解可能下降得越快。

Loopcraft 不应该成为不再思考的借口,而这需要人对自身有更高的要求。



写在最后

我最近隐约感觉,Agent 工程正在经历一次抽象层迁移。

最早我们在讨论 Prompt,后来开始讨论 Context、Tool、Memory 和 Harness。

现在,大家开始将关注点继续向外移动,研究如何把一次 Agent 运行放进更大的任务、验证和改进循环中。

我对“完全把人移出循环”仍然保留怀疑。

但有一点我基本认同:

不要只修复 Agent 当前产生的结果,也要开始修复那个不断产生结果的系统。







Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐