AI 对软件开发的影响:人类开发者会被取代吗?|技术笔记
前段日子,我收到了一封这样的邮件:
大意是:我开发的项目 Zest SSG 被一个叫 XERJ Corpus Hub 的项目收录了。
XERJ 与 Corpus Hub:给 AI Agent 的代码索引
XERJ 是一个用 Rust 编写的开源、AI 原生的搜索引擎,要解决的是 AI Agent 的“记忆浪费”问题。AI 编码代理写代码时,要么依赖上下文记忆,要么用 grep 逐行搜索,两者都消耗大量不必要的 Token。仅 WordPress 的 PHP 代码就约有 520 万 Token,远超单个上下文窗口的容量。XERJ 的自动索引(Autoindex)能把任意文件夹——代码、文档、日志、PDF——转成可查询的结构化索引,代理直接检索精确的代码片段或函数,不必读整个文件。据称比使用 grep 节省 40 倍的 Token。它还兼容 Elasticsearch 的 REST API,现有客户端和工具可以直接对接;索引方式是 AST(抽象语法树)感知的,代理能按“函数”而非“行”检索。
Corpus Hub 是 XERJ 生态里的一个组件,可以理解为公开的、经过精选的代码解决方案索引库。编码代理遇到具体问题——比如“如何更新样式”——时,XERJ 能在 Corpus Hub 中检索并返回其他开源项目里已经跑通的实现代码,作为参考范例。目的是让 AI Agent 参考经过验证的代码,而不是从零“即兴发挥”,避免重复造轮子和重蹈覆辙。
这次收录让我觉得荣幸,也算是对这个开源项目和代码的一份认可。但比认可更让我在意的,是它引出的问题:AI 与人类开发者的关系,正在被重塑成什么样子?
能力:AI 已经能独立完成复杂任务
AI Agent 如今在越来越多场景下能够独立完成相当复杂的软件开发任务,在某些维度上甚至比大多数开发者更稳定、更出色。LLM 很少随意命名变量,也不容易无缘无故破坏规范。AI 幻觉曾经是个大问题,但随着模型能力提升,幻觉率已经显著下降,在不少任务上不比人类常见的疏漏更糟。不管是 ChatGPT-6 Astra、Claude Fable 5.1 这类前沿模型,还是 GLM 5.3、DeepSeek-V4.1、Hunyuan 4 等国产模型的最新版本,在软件开发的理解力和编程知识广度上都已经相当出色。AI 正在许多环节上接近甚至部分取代人类开发者的工作。
Mayx 在「Vibe Coding 新体验(2)- Mayx的博客」里记录了一次 AI 创作,创新能力相当可观。顺便说一句,他文中有一段话需要更正:最近我在和群友聊天的时候发现有人用C#做了个静态网站生成器,也是用AI做的,看起来挺有意思。其实SSG的原理还是挺简单的,说到底就是些文字转换罢了。于是我就想,要不然我就让AI搓个能在WASM Linux中运行的SSG出来吧? 。他提到的“群友”其实就是我,哈哈;不过我的 SSG 是用 F# 开发的,不是 C#,也就是前面提到的 Zest SSG。
LLM 的底层逻辑常被概括为“预测下一个 token”,初看机械,甚至带点随机性,和“智能”二字似乎相去甚远。但换个角度看,这和人类思维的内核有相通之处:人靠长期积累的经验判断下一步,模型靠海量语料习得的上下文规律推导下一个片段,都是在已有信息上做最适配场景的延伸。所以“AI 只会机械重复人类已有成果”这个说法已经不成立了。当前大模型的创新能力还没全面超越顶尖人类创作者,但早已跳出“重复造轮子”的范畴,能够生成有独立价值的全新开源项目。
盲区:F# 与数据分布
回到我自己的项目。AI 的创造力已经不容小觑,但在函数式语言上,它的基础知识有明显的结构性短板。F# 的训练语料远不如主流命令式语言充裕,模型生成 F# 时更容易机械复刻 C# 里惯用的 OOP 写法,或者在基本语法上出错。这几乎是由数据分布决定的系统性偏差。我能为 AI 补充一些 F# 语料,固然是好事,但这件事本身暴露了一个更深的问题:我们所维护的“知识”,究竟是为谁准备的?
语言的演化:人类可读性不再是唯一标准
不管是面向过程、面向对象还是函数式,也不管是各种新语法还是语法糖,设计初衷大多是服务于人类开发者的易读性,而不是计算的本质需求。人类的工作记忆有限,靠线性阅读,依赖视觉格式降低解析负担;于是语言压缩冗余、隐藏细节,用语法糖把常见模式包装成更易写易读的形态。
但 LLM 的约束结构恰好相反:它有巨大的上下文窗口,却在跨调用的因果追踪上相对薄弱;它不需要“好看”的语法来减轻短期记忆负担,反而需要显式、冗余、无歧义的结构来帮助推理。在这个意义上,语法糖对 AI 而言未必是便利,更接近一种理解障碍:隐式转换、运算符重载、惯例优先于声明的设计,都要求模型额外模拟一层“代码看起来在做什么”与“运行时实际在做什么”之间的落差。或许这也是 AI 更偏爱 Zig 语法的原因:Zig 以显式为设计目标,相当清晰可读。
当然,这不意味着现有编程范式会立刻过时,也不意味着人类可读性失去价值。AI 仍在学习人类语言,人类可读的语法在训练数据中仍占主导;但语言演化的长期方向,可能不再由人类的阅读舒适度单独决定。
许可证:统计学习与署名义务
邮件里还提到了许可证:我的项目用 Apache 2.0,XERJ 承诺保留署名并遵守许可证要求。就我而言,如果 AI 的行为仅限于对代码做统计学习,输出也不构成对原代码的实质性复制,那我认为 Apache 2.0 中针对分发和修改的署名要求并不当然适用;在这个前提下,我也不要求标注来源或署名。人类开发者同样会学习开源项目,但学完之后独立写出的代码是否受原许可证约束,取决于是否构成复制或衍生作品,不能一概而论。开源许可证在执行中确实有理想化成分,具体义务仍应结合具体行为判断。
顺便吐槽一下 Netlify 的免费额度实在太不抗用了,我这个月会临时把 Netlify 镜像站点关闭一下,等下个月免费额度重置之后再重新开启。
日常开发还是推荐大家用 GitHub Pages 托管网站,边缘计算平台推荐用 Cloudflare Worker 代替 Netlify Functions。

