新的纸和笔,新的艺术家

当代码成为中间产物,谁是软件的作者?

11 分钟

在一次持续近半年的工程实践中,我只通过自然语言、产品文档、架构约束、运行结果和验收反馈,与 Coding Agent 一起构建了几款尚未发布的产品,涉及桌面端、浏览器扩展、服务端和数据库。

我一行代码也没有写,也没有读。

但这不等于我把产品交给了 AI。我仍然决定它们要解决什么问题,定义系统怎样工作,判断哪些边界不可突破,验证结果是否可靠,并对最终的软件负责。改变的只是我与实现之间的界面。

这件事迫使我重新思考一个过去看似简单的问题:一个人如果不再亲手写代码,却仍然定义作品、判断它是否成立并为其负责,他还是软件的作者吗?

这段实践不能证明所有软件都可以这样开发。它甚至还不能证明这些尚未发布的产品最终会获得市场认可。但至少在我们所做的这类应用中,以 Coding Agent 为核心的工作方式已经不只是提高编程效率的辅助手段,而开始成为一条可以持续规划、实现、测试、修正和迭代的工程路径。

真正重要的变化并不是“AI 会写代码了”。真正的变化是,实现曾是软件创造中最稀缺的环节之一,如今正在逐渐退到幕后。

当实现不再是最稀缺的部分,人的工作会变成什么?

这才是本文想讨论的问题。

AI 的边界正在移动

AI 从来不是一个固定不变的名词。人们往往把计算机还不能稳定完成的事情称为 AI;一项能力一旦成熟、可靠并进入日常产品,很快就会被视为普通技术,不再显得像 AI。

我的经历也恰好沿着这条边界展开。中学和大学时,我做轮式机器人,依靠传感器和反馈控制实现循迹、避障与协同编队;研究生期间,我研究计算机视觉,同时作为早期创始员工加入刚刚起步的商汤科技,参与把人脸活体检测、工业视觉等技术带进智能手机、高速铁路等大规模应用。今天,通用大模型及其驱动的 Agent 又把边界向前推了一步。这类系统不再只解决单点问题,而开始理解目标、调用工具,并在反馈中持续行动;我的工作也随之转向这类产品。回头看,从控制运动、理解图像到执行完整任务,机器所能承担的任务链越来越长,也越来越完整。

因此,本文所说的 AI,主要指由通用大模型驱动的 Agent,Coding Agent 是其中的典型代表。这类 Agent 的发展方向是自主执行更长程的任务,并逐步实现自我演化,甚至训练出自己的下一代版本。

2025 年,Andrej Karpathy 用“氛围编程”(Vibe Coding)描述一种随性的编程方式:告诉 AI 想要什么,接受生成的代码,遇到错误就把报错信息交还给它,甚至可以忘记代码本身。[1] 但这种放手有一个前提:失败的代价足够低。当时,面对严肃产品,我们仍使用 Cursor,由人主导开发并对代码负责,Agent 只作辅助。

到了 2026 年初,我们观察到这条边界再次向前移动。Karpathy 后来把新的工作方式称为 Agentic Engineering:开发者不再只是用 AI 补全代码,而是组织和监督 Agent 完成工程任务,同时保留审查与质量责任。[2] 名称本身并不重要。重要的是,AI 开始从一次次给出建议,变成能够在约束下持续行动。

眼下已经发生的事情是:对一部分软件创造者而言,自然语言和文档正在成为一种新的意图表达层。

代码正在成为中间产物

计算机的发展史,也是一部不断增加抽象层的历史。

人们先用开关和插线操作机器,后来有了机器码、汇编语言和高级语言。每增加一层抽象,下面一层的复杂性就被封装起来,人也离自己的意图更近一点。

Coding Agent 为软件开发增加了一个新的抽象层。它有些像一台不那么确定的超级编译器:传统编译器把形式明确的程序转化为机器指令,Coding Agent 则尝试把人的意图展开为界面、数据、服务和代码。

两者的差别很重要。人类语言天然含混,需求经常残缺,约束也可能彼此冲突。Agent 不能把一句话机械地翻译成唯一结果,只能在理解、规划、实现、运行和验证之间反复循环。

所以,自然语言没有取代编程语言。更准确地说,自然语言和文档正在成为人维护的意图层,代码则越来越像由 Agent 生成和维护的实现载体。

代码因此更像中间产物,但“中间”并不意味着不重要。它仍然必须正确、安全、可维护,只是不一定再由人逐行写出和阅读。就像大多数程序员不需要查看编译器生成的机器码,但仍然要为程序的行为负责。

这改变了我们应该把什么写清楚。

过去,文档经常只是代码的说明。在我们的实践中,这层关系开始倒过来:代码越来越多地依据文档被生成和验证。产品为什么存在,系统怎样工作,哪些边界不可突破,什么证据可以证明它满足要求——这些过去常被视为代码附属物的内容,正在成为真正的源头。

过去是:“Talk is cheap. Show me the code.”

现在是:“Code is cheap. Show me the doc.”

不再亲手写代码,并没有降低表达的要求,反而要求我们表达得更加准确。过去,一个含混的想法还会在漫长的实现过程中逐渐暴露、逐渐澄清;现在,Agent 会迅速把它变成一个能够运行、看似完整的系统。含混并没有消失,只是被埋进了实现,直到日后以故障和损失的形式显现。

AI 没有让人免于思考。它只是让人更难以用实现的忙碌掩盖想法的含混。

“纸和笔”的下半句

2025 年,王坚把 AI 比作人类“新的纸和笔”:它不是思想本身,而是人类思想的一种延伸。[3] 我很认同这个比喻。

它带着一种有趣的历史对称。1948 年,图灵曾设想,一个人拿着纸、铅笔和橡皮,严格遵循一组规则,他的行为就可以被看作一台通用机器。[4] 那时,人们借助纸和笔解释人怎样模拟机器。近八十年后,方向似乎反了过来:机器正在成为新的纸和笔,帮助人把意图展开为可以运行的世界。

这个比喻也让我想起大学时的生活。除了睡觉,我大概有三分之一的时间都在软件和硬件之间来回折腾:安装操作系统、配置环境、学习工具,也摆弄单片机、调试轮式机器人,让它们协同编队,再做一些自己想做的演示。那个过程很有乐趣,但我也常常把更多时间花在准备创造上,而不是创造本身。就像一个画家总在寻找纸张、制作颜料和修理画笔。

说 AI 是新的纸和笔,并不是说它无所不能。纸不会自动写出小说,颜料不会自动画出好画,相机也不会自动拍出好电影。工具降低了表达成本,却不替创作者决定什么值得表达。

Coding Agent 比纸笔主动得多。它会提出建议、执行任务,也会在一定范围内作出选择。但只要它不能为作品的目的和后果承担责任,它就不会因为参与得更多而自动成为作者。

真正令我感兴趣的,是“新的纸和笔”的下半句:

如果有了新的纸和笔,我们需要什么样的艺术家?

软件创作的重心正在上移

“程序员是艺术家”不是一个新说法。

1974 年,Donald Knuth 在《作为艺术的计算机程序设计》中讨论编程为何既需要知识、技巧和创造力,也能产生具有美感的对象。[5] 2003 年,Paul Graham 在《黑客与画家》中提出,黑客与画家都是“创造东西的人”;对软件创造者而言,计算机就像颜料之于画家、混凝土之于建筑师,是一种表达媒介。[6]

所以,AI 并没有让程序员第一次成为艺术家。它改变的是艺术主要发生在哪里。

过去,程序员的艺术很大一部分发生在代码内部:一个算法是否精巧,一组抽象是否简洁,一个系统是否以尽可能少的结构容纳了足够多的可能性。这种美不会因为 Agent 出现而消失。

但当更多实现工作下沉到 Agent,人的创作重心会向上移动。软件的艺术将更多地体现在整个作品中:选择什么问题,理解怎样的人,建立什么秩序,舍弃哪些可能,怎样回应用户,又以什么方式进入人的生活。

产品和体验层面的创造早已存在。变化在于,当实现不再占据大部分注意力,这些工作可能成为更多软件创造者的主要工作。

代码的优雅仍然重要,但代码从来不是软件之美的全部。人与 AI 共同完成的软件,也不应只被看作一堆能够运行的代码,而应被看作一个完整的软件作品。

这就是“新的艺术家”所指向的变化。

如果用现有的职业语言近似描述,这个角色有些像产品经理和架构师的结合:既追问做什么、为谁而做,也追问系统怎样长期成立、边界在哪里。但这两个称呼还不够。软件的作者还需要审美、同理心、取舍能力,以及对整体结果负责的意愿。

这里的“艺术家”不是更高贵的职位,也不一定是某一个人。它是一种对完整作品负责的作者角色,也可以由一个团队共同承担。

工程让作品可靠地存在;艺术决定它为什么存在,以及怎样进入人的生活。

工程不会消失,责任不能外包

新的艺术家并不是提出一个好点子,然后等 AI 把剩下的事情做完。

纸笔普及以后,写作仍然需要训练;相机普及以后,摄影仍然需要判断。Coding Agent 降低了实现门槛,却没有自动解决复杂系统中的架构、安全、性能、质量和维护问题。

我不读代码,也不意味着我放弃了工程控制。控制点发生了变化:从逐行检查实现,转向明确系统目标、架构原则、数据边界、权限模型、测试标准、可观测性和验收结果。

这不是把严格变成宽松,而是把严格放在不同的地方。测试是否覆盖了真正的风险?运行结果能否证明系统满足约束?Agent 给出的解释是否有证据支持?一个功能能够运行,是否也意味着它值得交付?AI 可以参与这些工作,但最终必须由人判断证据是否可信,并承担判断错误的后果。

有些领域——例如基础设施、安全关键系统和底层软件——仍会长期要求人深入代码,甚至比过去更需要少数真正理解底层的人。新的抽象层从来不会消灭下面的层。高级语言没有消灭汇编,云计算也没有消灭操作系统。它只是让更多创造者不必在每一次创造中重新穿过所有底层。

我选择不写也不读代码,是一项有边界的实践,不是一条适用于所有人的规则。它的价值不在于证明代码已经过时,而在于帮助我看清:当代码不再是人控制软件的唯一界面,哪些工作仍然不能被交出去。

答案首先是判断,其次是责任。

更强的工具也可能带来更大规模的平庸。实现成本下降以后,我们很可能先得到更多重复、粗糙、没有真实需求的软件。纸和笔不会自动带来文学,Coding Agent 也不会自动带来软件的文艺复兴。

AI 没有消除稀缺性,它只是转移了稀缺性。

过去,软件生产的瓶颈主要在于编程能力、工程资源和实现时间。随着这些约束减弱,问题判断力、产品直觉、系统认知、审美、对人的理解,以及为后果负责的意愿,就会变得相对更加稀缺。

当“怎样做成”越来越便宜,“究竟做什么”就会变得越来越昂贵。

从代码的作者到软件作品的作者

Bret Taylor 曾引用 Arya Asemanfar 的一个概括:AI 可以替你起草,但你仍然是作者。[7] Addy Osmani 则把开发者的新角色描述为架构师和主编。[8]

作者并不等于亲手完成作品中的每一个动作。建筑师不亲手砌下每一块砖,导演也不操作片场里的每一台摄影机。但他们必须知道作品要成为什么,能够判断它是否成立,并对作品整体负责。

软件正在发生同样的变化。

过去,我们常常用“谁写了代码”来识别软件的作者。以后,作者身份可能越来越取决于另一组问题:谁定义问题,谁建立约束,谁作出关键取舍,谁判断作品已经完成,又由谁承担它进入现实世界之后的后果。

这还可能改变软件的经济单位。过去,通常只有足够多人共享的需求,才值得被开发成一套软件。当实现成本大幅下降,一个团队、一个家庭,甚至一个人的特殊工作流,也可能值得拥有自己的软件。未来未必人人都要成为程序员,但更多人可以成为软件的作者。

AI 把越来越多的实现工作向下推,也把人的控制点和创作重心向上推了一个抽象层。程序员将不再只是代码的作者,而会越来越成为软件作品的作者——这就是我所说的“新的艺术家”。

新的纸和笔已经出现。但新的文艺复兴不会因此自动到来。它不取决于 Agent 能生成多少代码,而取决于我们是否有判断力,也是否愿意承担责任,回答一个比“怎样做成”更困难的问题:

什么值得被创造,我们又希望人怎样感受它?


参考资料

[1] Andrej Karpathy,介绍“Vibe Coding”的 X 帖子,2025-02-02。

[2] Andrej Karpathy,提出“Agentic Engineering”的 X 帖子,2026-02-04。

[3] 柳宁馨,《王坚:创新源于“不完美”与“跨界”》,《21世纪经济报道》,2025-09-25。

[4] Alan M. Turing,“Intelligent Machinery”,National Physical Laboratory report,1948。

[5] Donald E. Knuth,“Computer Programming as an Art”Communications of the ACM,17(12),1974,pp. 667–673。

[6] Paul Graham,“Hackers and Painters”,2003-05。

[7] Bret Taylor,“AI is your ghostwriter, but you are the author”,LinkedIn,2026-02-10。

[8] Addy Osmani,Beyond Vibe Coding,O’Reilly Media,2025-08。