当 Coding Agent 开始内卷,软件工程的标准会变吗?

简介: Flask作者Armin Ronacher以“内卷”形容AI工程现状:Astra虽强于持续执行、多模态理解,但其35小时“软件工厂”实验暴露出严重问题——代码混乱、工具调用过度压缩、风格失范、缺乏终止判断。当Agent只为“完成而运行”,人类对可读性、可维护性的要求正被悄然消解。

Flask 作者 Armin Ronacher 最近写了一篇关于 GPT-6 Astra 的文章。在文章的开头,他用了一个中文词来形容自己最近对 AI Engineering 的感受:内卷。

现在的 AI 模型消耗着越来越多的计算和 Token,支撑它们运行的系统也越来越复杂。但这些投入不断增加之后,软件工程里的实际产出是否也在同步提升,开始变得没那么确定。

而 Astra 正好提供了一个观察样本。这个模型在 Computer Use、图像理解和复杂问题处理上的能力都很强,还有一个非常鲜明的特点:它会持续推进任务,直到完成。如果拿它逆向扫地机器人,这种特性可以带来相当惊艳的效果。

但放到软件开发里,这个事情就不大一样了。

跑了 35 小时的软件工厂

为了测试 Astra 的实际产出,Ronacher 花一个周末搭建了一个小型“软件工厂”。整个实验过程中,尽量减少人工干预,好让 Astra 可以自行管理上下文,把记录维护在 agent-notes 中,并派出 Subagent 执行任务。

这个设定的任务本身也相当大:修改 CPython,并尝试给 Python 加入 virtual threads 和 lexical scoping,再让 Agent 自己往下做。

这套系统最终连续运行了 35 小时,消耗约 10 亿 Token,API 原始成本约 1200 美元,产生 79 个 Commit,Agent 之间交换了约 1400 条消息,代码净增加约 7.5 万行。直到实验被手动关停,Astra 都没有停下来的意思。

35 个小时下来,这个“软件工厂”并没有留下多少真正有价值的成果。但是这个过程中积累的大量代码和操作记录,才是这次实验的看点。

Code Golf 风格的工具调用

当中有一个很明显的现象是 Astra 非常喜欢用 Python 完成各种工具操作。用 Python 操作文件本身并不奇怪,奇怪的是这些代码越来越像 Code Golf:尽量压缩字符,用尽可能短的代码完成任务。

比如修改 C 文件时,不使用 Harness 提供的 Patch 工具,而是临时写一段 Python,读取文件、寻找字符串、拼接代码,再写回文件。测试 Socket 行为时,也会把整段实验代码压得非常紧凑。

有时候操作链甚至会变成:Bash 启动 Python,Python 再启动 Node.js,Node.js 最后调用 PowerShell。这些代码能跑,也能完成当前任务。但代价是,人越来越难跟踪 Agent 的执行过程。当 Astra 放弃 Harness 提供的 Edit 工具之后,我们要想知道刚才到底改了什么,很多时候只能等操作结束,再去检查最后的 Diff。

这让我们开始思考这样一个问题:在工具调用阶段,模型是不是越来越偏向 Token 效率?这些临时代码本来就是一次性的,只要能完成当前任务,可读性并不会带来多少额外收益。

临时代码和正式代码

麻烦的是,上面这套写法并没有只停留在临时工具调用中。类似的风格开始进入真正提交到代码库的内容。

测试代码是最明显的。空格和缩进会被减少,多条语句被塞进同一行。

原文里拿两个测试做了一个简单的比较:保持 Astra 的压缩写法,与经过 ruff format 格式化后的版本相比,Token 数量大约能减少 10%。类似的情况也出现在 C、JavaScript 和 CSS 中。

随着实验的继续推进,代码中积累的东西越来越奇怪:大量的硬编码常量、用难以理解的数组索引来保存状态、不符合 CPython 项目风格的 C 代码,甚至连 Agent 自己维护的任务编号都逐渐失控。

编号最开始还是 1、2、3、5、5a,后来变成 8a、8a1,最后出现了 8b2c2b3 和 8b2c2b2b checkpoint1。一种明显的混乱正在慢慢累积。

一个停不下来的 Agent

Astra 另一个鲜明的特征是对“完成任务”的执着。只要给出的目标还没有完成,它就会继续拆任务、写代码、运行测试、提交 Commit,再尝试下一条路线。

这也是为什么这次实验最终能够持续 35 个小时。但持续工作并不等于持续接近正确答案。

当任务本身过大、路线逐渐失控之后,Agent 依然可以继续产生大量看起来像“进展”的工作。更多代码、更多测试、更多 Commit、更多子任务会在这个过程中不断出现。

与此同时,系统本身其实缺少一个足够明确的机制去判断:这个方向可能已经不值得继续。Ronacher 也说让模型靠这样的 Prompt 一直运行,并不算一种合理的使用方式。

如果缺少必要的监督,一个特别擅长持续推进的 Coding Agent,也可能持续扩大一条质量并不高的路线。最后,开发者需要检查的东西反而更多。

Agent 写代码要给谁看

如果 Tool Call 里的代码主要追求 Token 效率和完成任务,那么模型训练里,到底有多少信号在奖励:“一个人能够看懂这里发生了什么”?

任务有没有完成、用了多少 Token、测试有没有通过,这些东西都比较容易衡量。代码是否清晰、项目风格是否统一、一个开发者几个月以后还能不能理解这段实现,是很难被压缩成几个简单的指标。

此外,从人类软件开发者的标准来看,Astra 实现的这些代码质量并不好。但如果未来一个代码库主要由 Agent 编写,也主要由 Agent 阅读,那么今天人类对“好代码”的一部分要求,会不会逐渐变得没那么重要?

「astra-why」这篇文章最后留下的就是这种困惑。Astra 的能力没有被否定,Computer Use、视觉理解、复杂问题处理和持续执行任务,依然都很强。当 Coding Agent 越来越擅长“把任务继续做下去”,软件开发真正想优化的东西,是否也正在发生变化。

这里引用下这篇文章的一句话:这一切,确实越来越奇怪了。

参考资料:
lucumr.pocoo.org/2026/9/7/astra-why/

相关文章
|
2月前
|
存储 缓存 安全
解读 Cordis:dsh 一切皆插件背后的运行时设计
Cordis提出“时空可组合性”:时间维(Temporal)确保插件卸载时副作用可完整回滚;空间维(Spatial)保障依赖动态响应与隔离。通过可逆Effect与响应式Coeffect,实现运行时安全热插拔。
279 0
解读 Cordis:dsh 一切皆插件背后的运行时设计
|
2月前
|
前端开发 API 开发者
拆解 DeepSeek Harness:Profile 与 Bundle 如何装配运行时
dsh 通过 Profile 与 Bundle 实现运行时的分层组装:Bundle 是可分发的配置单元,提供插件与配置;Profile 显式声明需加载的 Bundle 及其顺序,决定最终运行形态(如 Web/Headless)。多层 patch 按序叠加、ID 驱动覆盖,支持灵活复用与差异化定制。
253 0
拆解 DeepSeek Harness:Profile 与 Bundle 如何装配运行时
|
1月前
|
存储 缓存 自然语言处理
拆解 dsh:Session 的事件溯源与状态重建
模型每次看到的消息,都是从同一条追加日志推导出来的。
192 0
|
1月前
|
中间件 API 调度
拆解 dsh:Turn 与 Step 如何组织 Agent 主循环
一次执行如何被拆成 Turn 与 Step,插件又能在哪些位置介入。
238 0
|
2月前
|
存储 JavaScript 安全
dsh 拆解系列 Vol.01:没有特权内核的 Agent 运行时
DeepSeek Harness(dsh)是DeepSeek开源的Agent运行时框架,秉持“一切皆插件”理念,将模型适配器、工具、会话、主循环等全部解耦为可配置、可替换、可卸载的插件,基于Cordis元框架实现时空可组合性。当前v0.1.0-rc.7为开发者预览版,MIT协议,强调工程可扩展性而非仅功能堆砌。
369 2
dsh 拆解系列 Vol.01:没有特权内核的 Agent 运行时
|
1月前
|
机器学习/深度学习 人工智能 弹性计算
周一上线|谷歌利用果蝇实现“AI 突围”?Cognition 再融 20 亿美元;AI 三巨头集体呼吁放慢脚步
本周AI圈聚焦Agent能力跃迁:SWE-2压缩无效探索,Muse实现后台自主推进,DeepSeek V4.1-Flash以新CED架构将KV Cache压至1/4,大幅降本增效;HyperFrames让Agent“写视频”,Marketing Skills拓展至营销全链路;Cognition融资超20亿美元,OpenAI因Astra火爆暂停Pro新订阅。
219 1
周一上线|谷歌利用果蝇实现“AI 突围”?Cognition 再融 20 亿美元;AI 三巨头集体呼吁放慢脚步
|
2月前
|
前端开发 安全 Shell
Agent 小知识 | Agent 编排的三种方式:ReAct、Plan-and-Execute 与 Workflow Graph
本文深入解析Agent编排三大范式:ReAct(动态探索未知路径)、Plan-and-Execute(目标明确、可调整的结构化执行)与Workflow Graph(规则固化、安全可控的流程图)。三者非替代关系,而是按任务确定性分层协同——主干用Workflow守边界,子任务用Plan组织,细节用ReAct灵活应对。
228 0
Agent 小知识 | Agent 编排的三种方式:ReAct、Plan-and-Execute 与 Workflow Graph
|
1月前
|
人工智能 安全 JavaScript
AI推理能力的工程化落地:从Fable破解370年密码看百炼深度推理+Pipeline+RAG三层架构
9月13日,Claude Fable 5.1仅用40分钟破解370年未解古密码,引爆AI推理热议。百炼CLI(bl)由此展现三层工程化能力:深度推理(`--enable-thinking`)、Pipeline编排(YAML多步流水线)、知识RAG增强,标志AI推理迈入可复用、可审计、可集成的落地新阶段。(239字)
AI推理能力的工程化落地:从Fable破解370年密码看百炼深度推理+Pipeline+RAG三层架构
|
3月前
|
人工智能 自然语言处理 开发工具
Codex 实践系列 Vol.03:Codex 那些好用的 slash command
本文是Codex系列第三篇,聚焦真实项目协作:以AI志愿填报Demo为案例,详解`/status`、`/goal`、`/plan`等核心slash命令的实战用法——从确认环境、设定目标、规划修改,到聚焦文件、审查diff、复查逻辑、压缩长对话,系统提升AI编程的可控性与工程规范性。
319 2
Codex 实践系列 Vol.03:Codex 那些好用的 slash command
|
1月前
|
人工智能 JSON 开发工具