Lazy loaded image
AI Coding:计算机科学七十年“控制成本”实验的汇流点
字数 4938阅读时长 13 分钟
2026-7-19
2026-7-19
今天,一个人可以对 Coding Agent 说:
给这个网站增加用户登录。使用现有组件,不要改变首页样式;补上测试,运行通过后再告诉我改了什么。
接下来,AI 会读取代码仓库,寻找现有规范,选择实现路径,修改多个文件,运行测试,根据报错继续调整,最后交付一组可以审查的代码变更。
如果把这段话拿给二十年前的程序员看,他可能不会把它称为“编程”:里面没有变量、函数、类型、算法,也没有规定计算机每一步应该怎样执行,更像一份写给人的任务说明。
但这恰恰是 AI Coding 最重要的变化:人类第一次开始大规模地用接近表达意图的方式控制程序,不必亲自完成从意图到形式化指令的全部翻译。回头看,计算机科学七十多年的大部分历史,都可以理解为同一个问题的不同答案:怎样才能更低成本、更可靠地控制一台只接受精确指令的机器?

AI Coding 不是编程的终点,而是控制层级的一次上移

机器码、汇编语言、高级语言、面向对象、函数式编程、领域专用语言、操作系统、数据库、API、开源软件、IDE、版本控制和持续集成,看起来属于不同领域,实际上都在缩短“人的意图”与“机器的行为”之间的距离。
LLM Coding 不是这段历史之外突然掉下来的答案,而是这些路径在今天的汇流点。它把控制从逐步描述过程,进一步推向目标、约束、环境、反馈和责任。

传统编程的昂贵翻译层

传统编程有一个很少被重新审视的前提:人必须先把目的翻译成计算机能够执行的过程,机器才开始工作。
假设一个人想做一套订单退款系统。他真正关心的是:什么情况下可以退款,谁有权限批准,钱退到哪里,失败时如何恢复,用户会看到什么。但为了让这件事发生,他或他雇用的程序员还要处理一大批中间工作:
  • 选择语言、框架和数据库。
  • 查找库和 API 的用法。
  • 把业务规则拆成类、函数和数据结构。
  • 处理类型、参数、依赖和配置。
  • 编写不同模块之间的胶水代码。
  • 根据编译错误、运行错误和测试结果反复修正。
  • 让代码符合仓库原有的风格和工程约束。
这些工作当然有价值,但其中很大一部分并不是在创造新的业务判断,而是在做翻译:把人已经大致知道的东西,改写成机器可以接受的形式。
这就是传统编程的低效之处。它不是指程序员不努力,也不是说编程语言设计失败了。恰恰因为计算机极其严格、缺乏常识,人类才必须承担这笔昂贵的“形式化税”:机器不会替你补齐上下文,不知道“差不多”是什么意思,也不会主动猜测异常情况下应该遵守哪条规则。
过去,我们把这种限制当成计算本身不可改变的条件。今天才发现,它更多是人机接口的限制。

七十年计算机史:不断抬高人类的控制层

最早的程序员直接操作机器指令和内存地址。汇编语言把数字地址变成符号,高级语言让人描述循环、函数和数据,而不是逐条安排寄存器。随后,操作系统隐藏硬件差异,数据库隐藏磁盘读写,网络协议隐藏通信细节,库和框架把常见能力封装成可复用组件,云平台又把服务器、存储和部署变成可以调用的服务。
每一次抽象,都在让人少控制一些细节,多表达一层意图。
抽象层
替人隐藏的细节
为 AI Coding 留下的条件
汇编语言与高级语言
机器码、地址和寄存器操作
结构清晰、可学习的代码表示
编译器与类型系统
手工翻译和大量底层约束检查
确定性的语法检查与反馈信号
操作系统与数据库
硬件、文件、进程和存储管理
稳定、可组合的系统接口
库、框架与 API
通用能力的重复实现
可以被模型调用和拼装的能力模块
IDE、LSP 与调试器
手工寻找符号、错误和依赖
机器可读取的代码导航与诊断信息
Git、测试与 CI
难以追踪、验证和撤销修改
可比较、可回滚、可自动验收的反馈闭环
开源协作与互联网
每个团队重复发明解决方案
海量代码、文档、Issue、Diff 与评审记录
机器学习、Transformer 与强化学习
为每种表达方式手工编写解析规则
从自然语言意图生成并修正程序的能力
这些探索并不是为了 LLM 预先准备的,也没有一条写好的路线图。很多分支失败了,很多技术只解决局部问题,彼此之间也曾长期竞争。但它们最终共同创造了两个关键条件。
  1. 软件世界变得高度结构化。现代代码仓库不只有源代码,还有文档、类型、依赖、测试、日志、提交记录、Issue、代码评审和自动化流水线。程序不再只是一堆文本,而是一套能够被阅读、修改、执行、比较和验证的工程环境。
  1. 人类几十年的编程活动被外化成了数据。我们不只留下了正确答案,还留下了问题如何被讨论、错误如何被修复、一个版本如何变成下一个版本的痕迹。
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 项目的证据;相关数据是团队自述,不能直接外推到所有软件团队。
上一篇
图工程实战:让 AI 并行研究、交叉审查,并在关键节点由人把关
下一篇
制作角色说明书

评论
Loading...