随笔·阅读约 2 分钟·
「The Coming Loop」—— Armin Ronacher 谈 AI 编程的循环时代

「The Coming Loop」—— Armin Ronacher 谈 AI 编程的循环时代

Flask 作者 Armin Ronacher 发表了一篇令人深思的博文,探讨 AI 编程从「交互式提示」向「循环化自动运行」的转变。当你的工作不再是写代码,而是写一个不断调用 AI 的循环时,软件开发的核心逻辑正在被重写。

原文来源:lucumr.pocoo.org - The Coming Loop — Flask、Jinja2、Click 作者 Armin Ronacher 对 AI 编程循环化趋势的深度反思,探讨 Harness、Agent Loop 和软件开发未来的本质变化。

Armin Ronacher(Flask、Jinja2、Click 等多个知名 Python 项目的作者)在 2026 年 6 月 23 日发表了一篇题为《The Coming Loop》的博文,迅速在 Hacker News 上引发热议(316 分,222 条评论)。这篇文章不仅在技术上富有洞察力,更在哲学层面质疑了 AI 编程正在把软件开发带向何方。

一、核心叙事:从「提示词」到「循环」

文章以 Boris Cherny 的一句话开篇:

"我不再提示 Claude 了。我有循环在运行 Claude,由这些循环来决定该做什么。我的工作变成了写循环。"

这句话精准地捕捉了当前 AI 编程的最大趋势转变——从人类直接与 AI 对话的单次交互,转向由外部 Harness(控制框架)自动调度和编排的循环化模式

Ronacher 将这种循环分为两个层次:

  • Agent Loop(内层循环):模型调用工具、读取文件、运行测试、产生答案。这是大多数人熟悉的 Claude Code、Codex CLI 等工具的工作方式。
  • Harness Loop(外层循环):任务被放入队列,机器取走任务、执行、停止;Harness 决定是否已完成——如果未完成,则继续(同一会话、新消息、新会话,或发送到另一台机器)。任务的生命周期超越了模型「我做完了」的信号。

这个外层循环并非全新事物——早在早期的 Claude Code 时代就有了——但最近它开始主导整个技术讨论。

—— 广告 ——

二、作者的自我定位:「我还不擅长这个」

Ronacher 坦诚地承认,对于他真正在意的代码,他还没有成功用上循环。原因有两个:品味(taste)和控制(control)。

他想要理解并能够解释自己写下的每一行代码,而不需要通过一个「叮当响的机器」(LLM)来理解。他观察到模型生成的代码存在一系列共性问题:

  • 过度防御:对每个边界情况都加保护,代码变得臃肿
  • 过于复杂:局部推理能力强,但缺乏整体架构感
  • 回避强不变量:倾向加降级策略(fallback),而不是让错误状态在设计中不可能出现
  • 重复代码:创造糟糕的抽象,用补丁掩盖不清晰的设计
  • 逐轮恶化:每个循环迭代都增加一层防御,系统变得更难理解,同时表面看起来更健壮

Karpathy 曾说过,模型「对异常感到极度恐惧」(mortally terrified of exceptions)。正确的做法是让异常状态在架构层面不可表达,但 LLM 即使在不变量已经强制实施的情况下,仍然会继续添加错误处理。

更糟糕的是,Ronacher 观察到,如今全程无干扰运行 30 分钟以上的循环生成的代码质量,反而不如去年秋天(2025 年)更短的交互式会话。因为人类反馈越少,代码偏离期望越远。

三、循环真正擅长的场景

尽管有上述批评,Ronacher 明确表示他确实喜欢循环——在特定场景下。

场景特点为什么适合
代码移植(如 Bun Zig→Rust, MiniJinja→Go)机械性转换,二进制测试可验证LLM 如同编译器,输入输出明确
性能探索尝试实验、基准测试、抛弃失败方案无长期代码维护负担
安全扫描持续自动化探测自然适合机器持续运行
研究 / 概念验证探索问题空间,产生想法和发现,无需长期维护代码本身就是一次性的
不需要长久存在的代码临时性脚本、一次性分析代码质量退化不产生长期影响

这些场景中,很多成功案例使用了另一个 LLM 作为评判者/编排者。机械性翻译可以用二进制测试或 LLM 评判来验证。Claude Code 已经可以创建完整的实验性工作流。

"它们要么不产生新代码,而是转换已有的代码;要么产生的代码本就不打算长期存在。"

四、软件:从确定性机器到有机体

这是一个哲学层面的转变。

传统理想:软件是确定性机器。你能理解它的每一层,推动系统走向确定性和可理解性,知道不变量在哪里,记录关键部位。这是 Ronacher 始终追求的理想。

现实(即使没有 LLM):分布式系统早已不是完全确定的——诊断分布式系统就像医生看病(观察症状、提出假设、做检查、尝试治疗)。架构师也早已无法理解每一行代码。

有了 LLM 循环之后:代码由机器编写和诊断,补丁可能在无人监督的情况下落地。后果是——接受循环意味着接受我们可能不再理解整个系统。我们治疗、监控、稳定,但不一定理解。

"问题在于,我们是否希望所有软件都以这种方式创造?"

五、你无法选择退出

即便你不喜欢循环,也无法逃避它的影响。

安全压力:攻击者在循环,安全研究员在循环。维护者被 AI 生成的报告淹没。例子:cURL 的维护者 Daniel Stenberg 描述了一个「幸福的夏天」——大多数报告都是 AI 生成的。

竞争压力:拥有有效循环的团队碾压没有的。5 个人的小团队完成了以前需要 50 人的工作量。创业公司用循环做到「make it like the other one」。

领域依赖:某些领域(信任、责任、安全关键系统)对质量要求极高,马虎的代价很大。但在很多其他领域,速度和覆盖度才是王道。

六、新的依赖性(危险的部分)

这是 Ronacher 认为最令人不安的部分。

认知依赖:代码由循环编写、审查、修补、维护。不借助机器辅助,人类越来越难理解代码库。甚至写 Issue 报告、在聊天中讨论代码都需要 LLM 的辅助。

财务依赖:持续的模型调用费用(不是一次性的编译器购买)。如果贸易限制导致无法访问某些模型,或者成本上升,怎么办?

代码库的半衰期

"我们可能创造出代码库,它们不仅难以由人类维护,而且假定机器参与是其维护模式的一部分。"

七、未来的 Harness

仅仅编排更多的循环是不够的。更好的可视化也不会恢复理解。

我们需要什么?

  • 要么把人类拉回循环——让每次变更长期可理解
  • 要么寻找更好的方式来组合复杂系统

Ronacher 提到 Pi(他的 Harness 平台)对此持谨慎态度——他赞同这种谨慎:"我不希望未来每次交互都变成不受控制的群涌。"但 Pi 正是这些实验的中心 Harness,很多人会基于它构建。

关键在于,即使是怀疑者也必须亲自实验,才能理解如何让这个未来变得有边界、可生存。

八、结论与核心问题

循环化的未来是不可避免的。Ronacher 没有给出答案,但提出了几个核心问题:

  1. 如何不放弃判断力? 当模型说「完成了」,Harness 说「再试一次」,人类的角色在何处?
  2. 如何保留好的工程原则? 强不变量、可理解的架构、清晰的抽象——在循环时代如何存活?
  3. 如何确保负责任的人类能够持续监督?
  4. 如何重新思考架构以保持理性?

"在 Agent Loop 中,模型说「做完了」→ 人类审查和引导。在 Harness Loop 中,「做完了」只是另一个评判机器的信号。人的角色被降级为信使。"

这篇文章的价值不在于给出答案,而在于精准地定义了问题。对于每个正在使用 AI 编程工具的开发者,Ronacher 的反思都值得一读——因为我们正站在这个转变的早期阶段,而塑造未来的方式,是理解它、讨论它、然后对它施加人类应有的约束。

分享到
微博Twitter

© 2026 四月 · CC BY-NC-SA 4.0

原文链接:https://www.aprilzz.com/ramble/the-coming-loop