Claude Code 访谈 Loop Engineering 介绍

9 阅读6分钟

这是一篇关于 AI 编程范式演进的深度解析文章,根据 Addy Osmani 的原文翻译并整理而成。文章探讨了从“提示工程”到“循环工程”的转变,以及开发者如何通过设计自动化系统来替代手动指挥 AI。


🚀 一、告别提示词:迎接“循环工程”的到来

过去两年里,我们习惯了像手持工具一样使用 AI 编码助手:输入提示词、查看结果、再输入下一步。但这种模式正在迅速过时。随着 Claude Code 和 Codex 等工具的成熟,一种新的范式——循环工程正在成为主流。

🔑 什么是循环工程?

简单来说,循环工程就是用系统替代你自己

不再是那个手动提示 AI 的人,而是设计一套系统,让这个系统自动去调度 AI。你可以将“循环”理解为一种递归的目标:你定义好目的,AI 就会不断迭代,直到任务完成。

正如 @steipete 所言:“你不应该再手动提示编码 Agent 了,你应该设计提示 Agent 的循环。”Anthropic 的 Claude Code 负责人 @bcherny 也表示:“我不再手动提示 Claude 了,我运行着一些循环,这些循环会提示 Claude 并决定下一步做什么。我的工作就是编写这些循环。” 这听起来很像我之前写过的“Agent 套件工程”,但循环工程站得更高一层。如果说套件是 Agent 运行的环境,那么循环就是在这个环境上增加了定时器、子助手和自我供给的能力。

🏗️ 构建一个循环的五大基石

令人惊讶的是,这些组件现在已经不再是需要自己用 Bash 脚本拼凑的东西,而是直接内置于产品中。无论是 Codex 还是 Claude Code,都包含了以下五个核心模块。一旦你掌握了这五点,你就不必再纠结于工具之争,因为循环的设计逻辑是通用的。

  1. 自动化(Automations) 这是循环的“心跳”。它让循环真正转起来,而不是只运行一次。

    • 功能:按计划自动触发,进行任务发现和分类。
    • 应用:比如每天自动检查 CI/CD 构建失败、汇总问题、编写提交摘要。在 Codex 中通过“自动化”标签页设置;在 Claude Code 中则通过 /loop 命令或 Hook 钩子实现。
    • 关键点/goal 是一个更高级的原语,它会持续运行,直到你设定的条件(如“所有测试通过”)被满足。有趣的是,判断是否“完成”的任务通常交给一个不同的、更小的模型,而不是写代码的那个模型,这避免了“自己夸自己”的问题。
  2. 工作树(Worktrees ) 解决并行任务的文件冲突问题。

    • 痛点:当多个 Agent 同时工作时,如果修改了同一文件的相同行,就会像工程师修改代码一样产生冲突。
    • 方案:利用 Git Worktree 技术,为每个 Agent 提供独立的分支和工作目录。Codex 和 Claude Code 都内置了这种隔离机制(如 --worktree 标志),确保一个 Agent 的编辑不会干扰另一个。
  3. 技能(Skills ) 让 Agent 停止“金鱼记忆”,不再每次对话都重新学习项目。

    • 痛点:每次开启新对话,Agent 都像失忆一样,需要重新解释项目背景、规范和坑,这叫“意图债”。
    • 方案:技能是一个文件夹,里面包含 SKILL.md(指令和元数据)以及可选的脚本。它将项目意图“外化”存储。Agent 每次运行都能读取这些规范(如“我们不这样做是因为那个事故”),从而避免凭空猜测。技能可以打包成插件进行分发。
  4. 插件与连接器(Plugins and connectors) 让循环触达真实世界。

    • 痛点:只能看到文件系统的循环是微不足道的。
    • 方案:基于 MCP 协议的连接器,让 Agent 能读取问题追踪器、查询数据库、调用 API 或发 Slack 消息。插件则将技能和连接器打包,让团队成员能一键复用你的设置。这是区分“嘴炮 Agent”和“实干循环”的关键——后者能自动开 PR、关联工单。
  5. Sub Agent 将“创作者”与“检查者”分离。

    • 核心理念:写代码的模型给自己的作业打分通常太仁慈。你需要一个独立的检查者。
    • 方案:一个 Agent 负责探索和实现,另一个拥有不同指令(甚至不同模型)的 Agent 负责审查。Codex 和 Claude Code 都支持定义 Agent 团队。这种“对抗性审查”在无人值守的循环中至关重要,因为只有你信任的验证者,才能让你放心离开。

🧠 其他要素:记忆

除了上述五大块,循环还需要一个外部记忆体(如 Markdown 文件或 Linear 看板)。 因为模型在两次运行之间会忘记一切,记忆必须存在于磁盘上,而不是上下文窗口里。Agent 会遗忘,但仓库不会。

⚠️ 循环工程无法解决的三大难题

虽然循环改变了工作方式,但它并没有消除工程师的责任。相反,以下三个问题变得更加尖锐:

  1. 验证责任仍在你身上: 无人值守的循环如果出错,也会无人值守地制造灾难。虽然我们分离了验证者,但“完成”终究是一个声明而非数学证明。你的工作依然是确认代码能工作。
  2. 理解力负债: 循环跑得越快,你对自己项目的理解衰退得越快。如果你不阅读循环生成的代码,你和代码之间的知识鸿沟会越来越大。
  3. 认知投降: 最舒适的姿势往往是最危险的。当循环自动运行时,很容易陷入“不再思考、全盘接受”的状态。这叫认知投降。设计循环是良药,但如果是为了逃避思考而设计,它就是加速剂。

💡 结语

构建循环吧,但要像一个打算继续当工程师的人那样去构建,而不是仅仅做一个按“开始”按钮的人。

我相信这是未来工作方式的预演。但请记住,如果我不亲自审查代码,或者完全依赖自动化循环来修复一切,我的产品质量肯定会下降,最终陷入不断挖坑的恶性循环。

设置你的循环,但不要忘记,直接提示 Agent 依然有效。一切的关键在于找到平衡。循环本身没有价值观,它不知道你是想用它来加速你深刻理解的工作,还是用它来逃避理解工作。是你的设计意图,决定了结果的优劣。