Esc
<- 所有文章

来路不明的代码:AI 智能体到底从程序员那里拿走了什么

当 AI 编码工具从聊天建议升级为环境级智能体,代码来得更快了——但理解、维护和责任,变得比以往任何时候都更难。

过去两年,人们问得最多的关于 AI 编码工具的问题很简单:它能写代码吗?它快吗?它能修 bug 吗?

这些问题仍然重要,但它们错过了更大的转变。最新一代 AI 工具不再只是回答问题。它进入开发环境、读取文件、修改代码、运行测试、观察结果并作出调整。软件开发正从「人写代码,AI 提建议」走向「AI 参与工作流,人承担结果」。

代码比以往任何时候都来得更快。但一个更难的问题也随之浮现:当代码仿佛凭空出现时,我们还能理解自己维护的系统吗?

从聊天助手到环境行动者

人类学家兼网页开发者 Heikki Wilenius 最近在 Allegra Lab 发表了一篇题为《来路不明的代码》(Code from Nowhere)的文章,为这一转变提供了一个清晰的视角。他运营着一个独立的学术 WordPress 站点,亲身体验了两种截然不同的 AI 辅助开发模式。

第一种模式基于聊天:把一段代码粘贴给模型,得到解释和建议,然后自己决定复制什么、修改什么、测试什么。在这个阶段,AI 感觉像一个会说话的搜索引擎。它节省研究时间,但本质上是顾问性质的。

第二种模式基于智能体:模型不只是用文字回复——它进入开发环境、检查文件、修改代码、运行命令并评估结果。人类仍然下达指令,但许多中间操作已经自动化。Wilenius 把这种体验形容为让模型「钻进电脑内部」。

这是一个重大的变化。AI 不再只是产出可能有用的文本。它在真实系统中行动,根据文件结构、运行时反馈和错误信号作出调整。它已经从「告诉你」变成了「做给你看」。

更快的代码,而不是更快的理解

对独立开发者、小团队和工具构建者来说,这种转变极具诱惑力。以前要花半天调试的问题,现在十分钟就能得到可用的修复。以前觉得太冒险不敢碰的旧代码库,可以交给 AI 去读、去分析、去修改。

但这里有个陷阱:代码生成速度不等于理解速度。

Wilenius 描述了一个头像图片加载问题的案例。AI 智能体在本地环境里找到了一个看似合理的原因,修复了部分问题。但测试服务器和生产服务器并不完全相同。几周后,问题又回来了。只有经过多轮人机协作之后,真正的原因才浮现出来:服务器基础设施的差异、头像服务的限制,以及生产环境的细微差别。

这揭示了真实世界开发中一个重要的事实。最难的部分很少是写代码,而是理解代码所处的环境。一个功能的稳定性取决于本地机器、测试服务器、生产服务器、第三方服务、缓存、权限和网络请求——这是一张任何 AI 都无法在第一次就完全把握的因素之网。

当人类不加背景、不核查假设、不验证影响地被动接受 AI 的输出时,「效率提升」就会变成「加速累积的技术债」。

从作者到责任人

《来路不明的代码》的价值在于,它没有把 AI 智能体简单地描述为程序员的替代品。相反,它用人类学的视角考察软件工作中角色正在发生怎样的转移。

传统上,一个程序员同时扮演三重角色:设定意图、编写代码、执行变更,并为结果承担责任。目标设定者、作者、执行者和责任人是同一个人。

在智能体驱动的工作流中,这些角色被拆开了。人类设定目标。AI 生成并修改代码。工具链运行测试。服务器环境决定结果。但最终责任仍然落在人类身上。

这产生了一个令人不安的事实:AI 可能是代码的直接「执笔者」,但一旦出了问题,使用 AI 的那个人仍然要负责。

这意味着 AI 时代的程序员并没有从理解中被解放出来。恰恰相反,他们需要比以往更清楚地知道:任务目标是什么,系统边界在哪里,AI 在做哪些假设,哪些结果需要人工验证,以及出问题时谁负责。

程序员正在从「代码作者」转变为「系统责任人」。真正有价值的技能,正在从编写代码扩展到描述任务、提供背景、设计验证流程、评估风险和维护系统。

来路不明的代码并非真的没有来路

「来路不明的代码」这个说法捕捉到了一些有趣的东西。它不是说代码没有起源,而是说起源被遮蔽了。

当 AI 生成一段代码时,用户看到的是一个即时、流畅、看起来聪明的结果。但在这个结果背后,是一张巨大的网络:开源代码、论坛讨论、开发者经验、文档、教程和社区协作。那些散落在互联网上、由无数贡献者经年累月构建起来的知识,被重新包装成一种神奇的能力:你问,它给。

对用户来说,代码仿佛凭空出现。对开源生态来说,它是长期积累的公共劳动的产物。

这引出了一个更深层的问题:如果 AI 吸收了大量的开源知识,并把它重新包装成商业能力,开源社区的维护负担会不会加重?如果有更多 AI 生成的代码流入项目,谁来审查?谁来清理?谁来长期维护?

开源社区已经在表达担忧:AI 生成的劣质 issue、pull request 和安全报告正在消耗维护者的时间。AI 既能帮助维护开源项目,也会制造新的维护负担。问题不在于要不要用 AI,而在于是否把它放在一个负责任的流程之中。

同样的转变适用于一切知识工作

尽管《来路不明的代码》聚焦于软件开发,它的洞见具有广泛的适用性。

在写作中,AI 可以生成初稿,但人类仍然需要判断论点是否成立、来源是否可靠、表达是否恰当。在财务工作中,AI 可以整理票据和电子表格,但人类必须评估风险、合规性和准确性。在政府工作中,AI 可以总结政策、生成清单,但问责、判断和执行监督仍然属于人类。

AI 越能「生成」,人类的价值就越向「判断」转移。

过去,许多工作的瓶颈是从零开始:写代码、写报告、写文档。现在 AI 能快速产出初稿。新的瓶颈变成了:这份初稿可靠吗?它符合上下文吗?它漏掉了什么?它是否引入了风险?它能长期维护吗?

这就是为什么擅长使用 AI 不只是会提好问题。它关乎设计工作流:知道什么时候让 AI 起草,什么时候让 AI 检查,什么时候人工审查是必须的,什么时候结果应该沉淀为可重复的流程。

给独立开发者的五个习惯

对独立开发者来说,AI 智能体提供了立竿见影的价值:读旧项目、生成页面、修 bug、补测试、写文档、预览部署。一个人确实可以做得更多。

但团队越小,只追求速度就越危险。小团队没有专门的测试、运维和安全人员。如果代码变得不可维护,长期成本要高得多。

以下是负责任地使用 AI 智能体的五个习惯:

  1. 给出完整上下文。 不要只说「修一下」。要描述项目结构、运行环境、目标行为,以及哪些东西不应该被弄坏。
  2. 修改之前先要解释。 让 AI 在动代码之前,先解释它的诊断、拟议的变更和影响范围。
  3. 每一步变更都必须可逆。 Git 提交、备份或预发布环境——永远留出回滚的余地。
  4. 实现的同时要求测试和文档。 不只是让它跑通,还要让下一次维护更轻松。
  5. 把成功的流程沉淀为 SOP。 一旦某个流程(比如「读取发票 → 识别金额 → 校验月份 → 生成表格 → 标记异常」)稳定下来,就持续复用它。

成熟的 AI 使用方式,不是每次问一个一次性问题,而是把 AI 整合进可重复的工作流。

不是每个人都会写代码,但每个人都必须理解系统

一个常见的预测是:AI 智能体将让每个人都能写软件。这话有几分道理,但并不完整。

更准确地说,AI 将让更多人能够生成软件、修改软件、自动化工作流。但软件能否长期稳定运行,仍然取决于是否有人理解这个系统。

一个非程序员可能会用 AI 构建一个小工具。但如果他不理解数据从哪来、权限如何运作、错误如何处理、用户如何与系统交互、坏了由谁来修,那么这个小工具很可能只是一个临时玩具。

AI 降低了开始的门槛,但没有取消承担责任的要求。

这正是《来路不明的代码》的核心信息:当代码变得越来越容易生成,人类绝不能放弃理解。决定一个系统价值的,不是它跑通了一次,而是它能否在真实的生产环境中被解释、被修复、被更新、被信任。

AI 不会取代你,但会放大你的责任

AI 编码工具正在把我们带进一个新阶段。过去我们把 AI 当作回答问题、提供建议的助手。现在它像一个进入环境、执行任务、修改系统的同事。

这带来了实实在在的效率提升,也给了个人和小团队更大的创造力量。但它也让责任变得更加复杂:代码是谁写的?谁理解它?谁维护它?谁为错误负责?

也许 AI 时代最稀缺的技能,不是让 AI 写出代码的能力,而是判断 AI 是否写对了的能力。

当代码开始凭空出现,真正的任务不是惊叹于魔法,而是发问:它从哪来,它依赖什么,它改变了什么,谁将来照看它。

未来也许会有更多 AI 写的代码。但让系统持续可靠运行的,仍然会是人的理解、判断和责任。