
「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 没有给出答案,但提出了几个核心问题:
- 如何不放弃判断力? 当模型说「完成了」,Harness 说「再试一次」,人类的角色在何处?
- 如何保留好的工程原则? 强不变量、可理解的架构、清晰的抽象——在循环时代如何存活?
- 如何确保负责任的人类能够持续监督?
- 如何重新思考架构以保持理性?
"在 Agent Loop 中,模型说「做完了」→ 人类审查和引导。在 Harness Loop 中,「做完了」只是另一个评判机器的信号。人的角色被降级为信使。"
这篇文章的价值不在于给出答案,而在于精准地定义了问题。对于每个正在使用 AI 编程工具的开发者,Ronacher 的反思都值得一读——因为我们正站在这个转变的早期阶段,而塑造未来的方式,是理解它、讨论它、然后对它施加人类应有的约束。
© 2026 四月 · CC BY-NC-SA 4.0
原文链接:https://www.aprilzz.com/ramble/the-coming-loop
相关文章
Vibe Coder 和软件工程师的七条分界线
Vibe Coder 和软件工程师的区别不是用什么工具,而是责任从哪开始、到哪结束。一篇文章帮你判断自己该用什么模式工作。
AI 时代,我们需要的不是更少的工程纪律,而是更多
Charity Majors 在 2026 年的重磅文章中论述:当代码生成变得免费且即时,真正的工程挑战不是写代码,而是确保我们知道自己在做什么。
代码行数找了个更好的公关:AI 效率指标背后的真相
从 Google 的 '75% 新代码由 AI 生成' 到 Anthropic 的 '80% 代码由 Claude 编写',AI 公司正在用代码行数替代真正的效率指标。这篇深度分析揭示了为什么这些数字经不起推敲。