今天,一个人可以对 Coding Agent 说:
给这个网站增加用户登录。使用现有组件,不要改变首页样式;补上测试,运行通过后再告诉我改了什么。
接下来,AI 会读取代码仓库,寻找现有规范,选择实现路径,修改多个文件,运行测试,根据报错继续调整,最后交付一组可以审查的代码变更。
如果把这段话拿给二十年前的程序员看,他可能不会把它称为“编程”:里面没有变量、函数、类型、算法,也没有规定计算机每一步应该怎样执行,更像一份写给人的任务说明。
但这恰恰是 AI Coding 最重要的变化:人类第一次开始大规模地用接近表达意图的方式控制程序,不必亲自完成从意图到形式化指令的全部翻译。回头看,计算机科学七十多年的大部分历史,都可以理解为同一个问题的不同答案:怎样才能更低成本、更可靠地控制一台只接受精确指令的机器?
AI Coding 不是编程的终点,而是控制层级的一次上移
机器码、汇编语言、高级语言、面向对象、函数式编程、领域专用语言、操作系统、数据库、API、开源软件、IDE、版本控制和持续集成,看起来属于不同领域,实际上都在缩短“人的意图”与“机器的行为”之间的距离。
LLM Coding 不是这段历史之外突然掉下来的答案,而是这些路径在今天的汇流点。它把控制从逐步描述过程,进一步推向目标、约束、环境、反馈和责任。
传统编程的昂贵翻译层
传统编程有一个很少被重新审视的前提:人必须先把目的翻译成计算机能够执行的过程,机器才开始工作。
假设一个人想做一套订单退款系统。他真正关心的是:什么情况下可以退款,谁有权限批准,钱退到哪里,失败时如何恢复,用户会看到什么。但为了让这件事发生,他或他雇用的程序员还要处理一大批中间工作:
- 选择语言、框架和数据库。
- 查找库和 API 的用法。
- 把业务规则拆成类、函数和数据结构。
- 处理类型、参数、依赖和配置。
- 编写不同模块之间的胶水代码。
- 根据编译错误、运行错误和测试结果反复修正。
- 让代码符合仓库原有的风格和工程约束。
这些工作当然有价值,但其中很大一部分并不是在创造新的业务判断,而是在做翻译:把人已经大致知道的东西,改写成机器可以接受的形式。
这就是传统编程的低效之处。它不是指程序员不努力,也不是说编程语言设计失败了。恰恰因为计算机极其严格、缺乏常识,人类才必须承担这笔昂贵的“形式化税”:机器不会替你补齐上下文,不知道“差不多”是什么意思,也不会主动猜测异常情况下应该遵守哪条规则。
过去,我们把这种限制当成计算本身不可改变的条件。今天才发现,它更多是人机接口的限制。
七十年计算机史:不断抬高人类的控制层
最早的程序员直接操作机器指令和内存地址。汇编语言把数字地址变成符号,高级语言让人描述循环、函数和数据,而不是逐条安排寄存器。随后,操作系统隐藏硬件差异,数据库隐藏磁盘读写,网络协议隐藏通信细节,库和框架把常见能力封装成可复用组件,云平台又把服务器、存储和部署变成可以调用的服务。
每一次抽象,都在让人少控制一些细节,多表达一层意图。
抽象层 | 替人隐藏的细节 | 为 AI Coding 留下的条件 |
汇编语言与高级语言 | 机器码、地址和寄存器操作 | 结构清晰、可学习的代码表示 |
编译器与类型系统 | 手工翻译和大量底层约束检查 | 确定性的语法检查与反馈信号 |
操作系统与数据库 | 硬件、文件、进程和存储管理 | 稳定、可组合的系统接口 |
库、框架与 API | 通用能力的重复实现 | 可以被模型调用和拼装的能力模块 |
IDE、LSP 与调试器 | 手工寻找符号、错误和依赖 | 机器可读取的代码导航与诊断信息 |
Git、测试与 CI | 难以追踪、验证和撤销修改 | 可比较、可回滚、可自动验收的反馈闭环 |
开源协作与互联网 | 每个团队重复发明解决方案 | 海量代码、文档、Issue、Diff 与评审记录 |
机器学习、Transformer 与强化学习 | 为每种表达方式手工编写解析规则 | 从自然语言意图生成并修正程序的能力 |
这些探索并不是为了 LLM 预先准备的,也没有一条写好的路线图。很多分支失败了,很多技术只解决局部问题,彼此之间也曾长期竞争。但它们最终共同创造了两个关键条件。
- 软件世界变得高度结构化。现代代码仓库不只有源代码,还有文档、类型、依赖、测试、日志、提交记录、Issue、代码评审和自动化流水线。程序不再只是一堆文本,而是一套能够被阅读、修改、执行、比较和验证的工程环境。
- 人类几十年的编程活动被外化成了数据。我们不只留下了正确答案,还留下了问题如何被讨论、错误如何被修复、一个版本如何变成下一个版本的痕迹。
AI Coding 不是 AI 偶然学会了写代码,而是软件世界终于积累到足以被模型阅读、模仿、执行和自我校验的程度。计算机科学既为 AI 准备了教材,也为它准备了实验室。
LLM 补上了过去所有抽象层都没能补上的一段
高级语言已经比机器码自然得多,但它仍然是形式语言:你必须遵守语法,明确数据类型,补全控制流程,并在所有重要分支上给出确定行为。低代码、可视化编程和领域专用语言继续降低了一部分门槛,但代价通常是缩小表达范围;只要问题超出设计者预设的组件,使用者仍然要回到代码。
LLM 的不同之处,是它能够处理开放的、模糊的、依赖上下文的人类语言,再把这种语言映射到已有的软件抽象层上。它不是严格意义上的编译器,因为同一条指令可能产生不同结果,也不能保证语义正确。更准确地说,LLM 像一个概率性的意图编译器:先猜测人真正想要什么,再调用几十年软件工程留下的语言、库、工具和接口,把猜测变成可执行结果。
仅有代码生成还不够。真正改变编程方式的是 Agent 把模型接入了一个反馈循环:
过去,人负责循环中的绝大多数步骤,计算机只负责执行。现在,AI 可以在循环里连续工作,人开始从每一步的操作者,变成目标、边界和停止条件的制定者。
这意味着编程正在从过程控制转向目标治理。传统编程问:“机器下一步应该做什么?”AI 编程越来越多地问:“最后要达到什么状态?什么不能发生?用什么证据证明已经完成?发生异常时,谁来决定?”
现实已经开始接近这个判断
这种变化已经不只是代码补全率提高了多少,而是工作单位发生了变化:从生成一段代码,转向接管一段包含观察、行动和验证的工作循环。
2026 年,OpenAI 公布过一项内部实验:一个小团队在五个月里用 Codex 构建了一套约百万行代码的产品,人工没有直接编写任何代码,OpenAI 估计项目耗时约为传统手写方式的十分之一。真正值得注意的不是“零行人工代码”这个标题,而是工程师把精力放到了设计环境、明确意图、构造反馈循环,以及让架构约束能够被 Agent 读取和执行。引用来源:OpenAI:Harness engineering。
Anthropic 在 2026 年 6 月的 Economic Index 报告中也观察到,Claude Code 会话比普通聊天或 Cowork 会话表现出更高的自动化程度。换句话说,用户在编程环境中越来越少向 AI 索取一段建议,越来越多地把一段完整工作交给它执行。引用来源:Anthropic Economic Index:Cadences。
这两类证据都指向同一个方向:AI Coding 的单位不再只是“生成一段代码”,而是“接管一段包含观察、行动和验证的工作循环”。当工作单位改变,人的核心产物也随之改变:过去是代码,现在越来越重要的是规格、测试、仓库规则、权限边界、工具接口和可观测性。它们共同构成 Agent 能否可靠工作的控制系统。
控制成本没有消失,只是向上移动了
如果因此得出“以后人只要随口说一句话,软件就会自动完成”的结论,就又走得太远了。自然语言降低了表达门槛,却没有自动消除需求中的冲突。代码生成变得便宜,也没有让安全、可靠性、维护成本和真实世界责任变得便宜。
一个 Agent 可以很快写出登录系统,但它不会天然知道:
- 公司到底允许哪几种身份验证方式。
- 哪些数据属于隐私信息。
- 登录失败多少次应该锁定账户。
- 旧用户如何迁移。
- 哪些风险可以接受。
- 出现误判时由谁承担后果。
这些都不是语法问题,而是组织判断和现实约束。LLM 可以帮助发现遗漏、提出方案,却不能替利益相关者决定什么是值得接受的结果。
而且,AI 并不在所有任务上自动提高效率。METR 在 2025 年初进行的一项随机对照研究中,让 16 名熟悉各自开源项目的开发者完成 246 个真实任务;使用当时 AI 工具的任务平均反而多花了 19% 的时间。研究范围有明确限制:样本是高度熟悉大型代码库的资深贡献者,使用的也是 2025 年初的模型。但它至少证明了一点:能力存在,不等于生产率会自动兑现。任务熟悉度、模型能力、工具延迟、验证成本和工作流设计都会改变结果。引用来源:METR:Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity。
同样值得警惕的是,生成速度越快,系统熵也可能积累得越快。AI 能在一天内生产过去几周的代码,也能在一天内生产过去几周的重复、耦合、错误假设和安全风险。如果没有测试、架构约束、代码评审和定期清理,更高吞吐量只会让失控来得更快。
前一种控制更细、更慢、更确定;后一种控制杠杆更大,但要求人更清楚自己要什么,也更懂得怎样验证。
Agent 时代真正值得掌握的五层控制栈
如果代码越来越多地由 AI 生成,人类需要建立的就不只是 Prompt 技巧,而是一套新的控制栈。
1. 意图层:说清楚为什么做
先定义要改变的现实,而不是直接指定一个功能:谁会使用它,当前问题是什么,成功后什么指标或行为会发生变化?如果目的不清楚,Agent 只会更快地生产偏离目标的实现。
2. 规格层:把“好”变成可检查的条件
列出范围、非目标、约束、边界情况和验收标准。“做一个好用的搜索”无法验证;“输入中文关键词后,一秒内返回有权限查看的前 20 条结果,空结果给出建议”才接近可执行规格。
3. 环境层:让正确路径比错误路径更容易
把必要知识放进仓库,把命令、依赖和工具配置好,用类型、静态检查、权限和架构规则缩小 Agent 的自由空间。强模型进入一个混乱、不可观测的环境,依然会得到不稳定的结果。
4. 反馈层:让错误尽快暴露
编译、测试、日志、截图、监控、代码评审、用户反馈和版本回滚,都是控制系统的一部分。Agent 是否聪明很重要,但它犯错后能否被及时发现并纠正,往往更重要。
5. 责任层:明确哪些决定不能外包
涉及资金、隐私、安全、法律责任和不可逆操作时,必须设置人工审批与权限边界。AI 可以执行任务,却不能自动获得替人承担后果的资格。
这五层并不是 AI 时代才出现的新概念,几乎全部来自传统软件工程。变化只在于:过去这些东西围绕人类程序员设计,今天它们也要成为 Agent 能够读取、调用和遵守的基础设施。
计算机科学没有被绕过,而是完成了一次自我递归
人类为了控制计算机,发明了编程语言;为了管理程序复杂度,发明了抽象、模块、类型、测试和版本控制;为了共享这些成果,建立了互联网和开源协作;这些代码与协作记录又成为训练大模型的重要材料;大模型学会生成代码之后,再通过编译器、测试、终端和 Git 获得行动与反馈。最终,计算机开始帮助人类完成控制计算机本身的工作。
这像一次跨越七十年的递归:LLM Coding 既是对传统编程低效的一次突破,也是传统计算机科学最集中、最壮观的一次成果兑现。
它没有证明过去几十年的探索走了弯路。没有编程语言,模型就没有稳定的输出介质;没有开源代码,模型就没有足够的工程样本;没有编译器和测试,Agent 就没有可靠反馈;没有操作系统、API 和云服务,生成的代码也没有可以调用的现实能力。AI 看似绕过了编程,实际上站在整部编程史之上。
结语:人类终于可以少写过程,多定义结果
过去,人类必须把大量时间花在告诉计算机“每一步怎样做”。这是一种必要却昂贵的控制方式,也把软件创造限制在少数接受过长期专业训练的人手中。
AI Coding 正在放松这个限制。代码不会立刻消失,甚至可能比过去更多;但它会越来越像一种由机器生成、供机器执行、由工具验证的中间产物。人类的稀缺投入将向上游移动:选择问题、定义目标、表达约束、设计反馈、判断结果,并承担责任。
这并不比写代码更轻松,只是更接近创造软件真正有价值的部分。计算机科学花了七十多年,把人类控制机器的成本一层层压低。今天,LLM 第一次把“理解模糊意图”也接进了这条抽象链。我们还远没有解决可靠性、长期维护和责任归属等问题,但方向已经清楚:未来编程的核心,不再是人能写出多少机器指令,而是人能否建立一个系统,让机器在正确的边界内,持续把意图变成可信的结果。
引用来源
- OpenAI:Harness engineering。原文将其作为 OpenAI 内部 Codex 项目的证据;相关数据是团队自述,不能直接外推到所有软件团队。
- Anthropic Economic Index:Cadences。原文用它支持“编程环境中的会话自动化程度更高”这一判断。
- METR:Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity。研究结果只描述特定样本、任务与当时工具,不代表 2026 年所有 AI Coding 工作流。
- 作者:yaney
- 链接:https://yaney.top/article/example-44
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。






