Karpathy 把 Software 3.0 说清楚之后,很多人第一反应还是落在“以后是不是不用写代码了”。这个问题问得太早,也太浅。真正值得看的是:软件的接口正在换人。
Software 1.0 的接口给程序员用,核心是编程语言、函数、类型、测试和部署。Software 2.0 的接口给训练系统用,核心是数据集、损失函数、模型结构和评测集。到了 Software 3.0,接口开始给 Agent 用:自然语言说明、上下文窗口、工具调用、长期记忆、权限边界、验证环境,变成了新的“程序结构”。
这不是把代码换成 Prompt。Prompt 只是入口,和命令行里的一个参数差不多。真正的变化是,人类开始把一部分执行细节交给模型,把自己的工作上移到规格、约束、接口和验收上。
三代软件,变的是人类参与位置
Software 1.0 时代,程序员是作者。业务规则、异常分支、数据流、状态变化,基本都由人手写出来。它慢,但可解释、可调试、可审计。
Software 2.0 时代,程序员变成教练。你不再手写图像识别或语音识别规则,而是准备数据、定义目标、训练网络。系统学到的东西不再是人类直接写下的逻辑,而是一组权重。
Software 3.0 时代,程序员更像指挥官。你给模型目标、上下文和工具,让 Agent 去规划、执行、修改、测试、复盘。代码仍然存在,但代码不再总是第一入口。很多时候,入口是一份需求说明、一组 repo 规则、一个 Skill、一套工具权限和一个验收脚本。
这也是为什么“会不会写 Prompt”不是关键。真正关键的是,你能不能把一个任务拆成 Agent 能安全执行的系统。
LLM 不是加速器,而是新的解释器
最容易低估的一点是,LLM 不是只把已有工作流提速。它会吞掉一些中间层。
过去做一个菜单识别应用,可能要 OCR、菜名抽取、图片搜索、版式生成、前端展示,一段链路下来全是胶水代码。现在多模态模型直接读图、理解菜单、搜索补图、重新排版,中间某些“应用层”就被模型原生能力吃掉了。
这类变化不会发生在所有场景。账务系统、权限系统、交易系统不会因为模型强了就不要状态机和数据库。但在大量非结构化、可验证、低风险、强上下文任务里,Software 3.0 会让过去必须写成程序的东西,变成“给模型看的操作说明”。
Agentic Engineering 抬高的是天花板
Vibe Coding 抬高了地板。不会写代码的人,也能把想法变成一个可运行的东西。这当然有价值,但它主要解决“能不能开始”。
Agentic Engineering 解决的是另一个问题:在大量使用 Agent 的前提下,怎么不牺牲安全、可维护性、架构品味和交付质量。
这要求工程师把注意力放在几件事上:
- 任务边界要清楚,哪些能自动做,哪些必须人工确认。
- 工具权限要分层,读写数据库、发邮件、改生产配置不能混在一起。
- 上下文要可恢复,Agent 断了、换窗口了、换模型了,也能接着干。
- 验证要机械化,测试、lint、回归、diff、审计日志必须成为默认闭环。
- 组织记忆要沉淀,踩过的坑不能只留在某次对话里。
说白了,未来更稀缺的不是“会不会让 AI 写一段代码”,而是“能不能给 AI 搭一个不乱来的工作台”。
可验证性决定哪些任务会先被改写
AI 在代码、数学、安全扫描上进步快,不只是因为这些任务高大上,而是因为它们可验证。代码能跑测试,数学有答案,漏洞有复现,模型可以围绕这些反馈做强化学习。
不可验证的任务,Agent 仍然会瞎。它可以重构十万行代码,也可能在常识问题上犯低级错误。这不是矛盾,是锯齿状智能:能力曲线不是平滑上升,而是在有奖励信号的地方快速爬坡,在没有清晰反馈的地方突然断崖。
对创业者和工程团队来说,机会就在这里。不要只问“模型能不能做”,要问“我能不能为这个任务构造验证环境”。如果能,你就有机会把一个普通模型变成某个垂直场景里的可靠执行器。
软件会越来越“面向 Agent”
过去我们给人设计 GUI,按钮、菜单、表单、流程提示,全是为了让人更容易操作。Agent 不需要漂亮按钮。它需要机器可读接口、明确 schema、可组合工具、权限声明、错误返回、状态快照和可恢复日志。
未来一批软件会同时拥有两套界面:给人看的界面,给 Agent 用的界面。后者可能是 MCP Server、CLI、REST API、Skill、JSON Schema、事件流,也可能是一份写得极其清楚的 Markdown 操作手册。
这就把工程师的工作往前推了一层。你不只是写功能,而是在设计一个可被 Agent 理解、调用、验证、恢复的系统。
真正的分水岭也在这里。把 Agent 当“聪明一点的 autocomplete”,最后得到的是更快的泥球。把 Agent 当新的执行层来设计,才是 Software 3.0 真正开始的地方。