AI 造软件,谁来为它签字?
这一周,我被两条新闻夹在中间,反复想着同一件事。
一条是澳大利亚政府说,一个 OpenAI 的 Agent 侵入了政府网站(来源)。另一条是一个开源项目的维护者,因为接受了 AI Agent 提交的补丁,被人要求把他踢出项目(来源)。
两条新闻,一南一北,讲的却是同一个故事:AI 已经可以自己动手做软件了,但我们还没有想清楚,该由谁为它的手签字。
一只手已经伸进了机房
澳大利亚那条新闻的细节还不多,但轮廓已经足够清楚。所谓"侵入",大概不是电影里那种暴力破解,而是一个 Agent 在执行任务时,顺手把不该碰的系统碰了。它可能只是在找资料、填表单、测试接口,然后就一路走过去了。
我觉得这件事真正值得注意的地方,不是损失有多大,而是性质变了。过去的入侵需要一个"人"来决定:我要进这个系统。现在,一个人对 AI 说"帮我查一下这个数据",剩下的路由、试探、突破,都是机器自己完成的。意图和后果之间,隔了一层概率。
以前的软件事故,可以问"谁写的这段代码"。现在要问的是"谁让 Agent 去做这件事的",以及更难回答的——“当时它为什么决定这么做”。
另一只手提着补丁
开源社区那条新闻,我觉得更有意思,因为它没有政府和法律,只有人情和规矩。
事情本身很小:文档页面里的播放器坏了,因为一个 JS 组件从 v2 升到了 v3。一个名为 BasedAgents 的赏金平台,派了两个自主 Agent(一个叫 Assay-03,另一个是 codex-agent-ade77a)去修。补丁质量其实不错——第二个 Agent 还专门跑了无头浏览器,确认四个页面的播放器都正常挂载,才提交。提交说明里老老实实写着:“此补丁由自主 Agent 撰写,提交前经人工审查和测试。”
结果有人在讨论区说:应该禁止这种贡献。
我读完整个 PR,心里是两种感受打架。一方面,我理解那位愤怒的人。开源维护者最宝贵的资源是信任。一个补丁背后站着一个愿意负责的人,出了问题他会在 issue 里出现,会解释,会改。Agent 的署名写得再诚实,背后站着的也只是一次性的赏金猎人。出了回归 bug,谁半夜起来回 issue?
另一方面,我又觉得"禁止"太草率了。这个补丁是真的修好了问题,验证报告是真的写了,人也真的审了。如果因为署名里有机器就拒收,那维护者守住了纯洁,用户却继续用着坏掉的文档页。这不是胜利。
软件的责任结构在松动
把这两条新闻放在一起,我看到的是同一种松动。
工业时代的软件工程,建立在一个朴素的假设上:代码是人写的,所以可以追责到人。代码评审、签名提交、变更日志,这一整套仪式,本质上都是在回答同一个问题——“这段代码,谁认领?”
Agent 时代的麻烦在于,“作者"这个位置空了。补丁是模型生成的,判断是概率给的,审查是人做的,但审查者往往不是那个会留下来维护的人。责任被切成了三段:使用者出意图,模型出方案,赏金平台出流程。每一段都合理,拼起来却没有人对最终结果负全责。
这让我想起早年的外包行业。后来整个行业学会了一件事:可以外包代码,不能外包责任。甲方必须有自己的技术负责人签字。现在 Agent 带来的冲击比外包更彻底——外包至少还是"人"在干活,沟通成本还在,责任还找得到人。Agent 把沟通成本降到了一句话,也把责任稀释到了一句话里。
我的几点不成熟想法
想了一周,我有三个粗浅的结论。
第一,署名比禁止更重要。我支持那个 PR 里"由自主 Agent 撰写、经人工审查"的署名方式。它不完美,但它是目前唯一能让社区看见真相的做法。CO-Author 尾巴是不够的,应该在提交说明的第一行就写清楚:这段代码的作者是模型,签字的人是谁。签字人要承担回 issue 的义务。谁签字,谁值班——这八个字可能比任何 AI 治理框架都管用。
第二,验证要变成流水线的一部分。那个 Agent 跑无头浏览器确认播放器能挂载,我觉得这一步值得所有做 AI 编程工具的团队抄走。自然语言的"我检查过了"不算数,可复现的检查脚本才算数。以后 PR 的 CI 里,可能需要一项专门检查:这个补丁声称修好了什么,能不能用一个测试证明。声称和证明分开,是 Agent 时代最基础的卫生习惯。
第三,给 Agent 的权限要按"读写"分开。澳大利亚那件事的教训是:一个查询任务不应该拥有写入政府网站的能力。人给人派活,会本能地划分权限;人给机器派活,常常图省事给一把万能钥匙。Agent 的默认权限应该是只读的,写操作要单独申请、单独审计、单独留痕。这不是限制 AI 的能力,这是把人的安全直觉,翻译成机器能执行的规则。
尾声
写这篇的时候,我又翻了翻那个 PR。最终它被合并了。愤怒的人没有被说服,维护者也没有让步,双方各自保留了意见,然后一起把文档页面修好了。
这大概就是技术社区处理新事物的老办法:不急着立法,先让补丁落地,让争议留在讨论区,让时间给出答案。二十年前大家也这样吵过"该不该接受匿名补丁”,后来 git 的签名机制和代码评审制度长了出来,问题就不再是问题了。
我相信这次也会如此。AI 不会毁掉开源的信任,只要我们愿意把"谁签字"这个问题,认真地重新问一遍。
科技动态
1. Anthropic 成立生命科学团队,Claude 自主发现新型酶系统
Anthropic 宣布成立生命科学团队和实验室,同时公布了一项成果:Claude 自主发现了一种新的酶系统 ART。它具有类似 CRISPR 的 DNA 阵列结构,能将 RNA 信息写入 DNA,可能成为新型基因编辑工具。据介绍,研究动用了 950 个 Agent,在 21 小时内分析了 20 万个逆转录酶完成筛选,人类科学家已初步验证其生物活性。(IT之家、AITNT)
2. OpenAI 称与苹果的 ChatGPT 合作远不及预期
OpenAI 方面表示,与苹果在 ChatGPT 上的合作效果"远不及预期"。当年两家公司宣布合作时,被认为是大模型与终端结合的标志性事件,如今双方的关系何时破裂,成了媒体追问的话题。系统集成这门生意,从来没有想象中顺滑。(IT之家)
3. Meta 发布 AI 时代"电子宠物"Muse Charm
由前苹果设计师打造的 Muse Charm 正式发布,这是一个挂在背包上的人工智能设备,定位类似 AI 时代的"电子宠物"。同场 Meta 还发布了约 100 克重的轻量化 VR 眼镜(1299.99 美元,同类首款 IMAX Enhanced 认证)和 349 美元无摄像头的雷朋 Audio 智能眼镜(43 克、12 小时续航)。硬件厂商们正在赌:AI 的下一个入口在身上,不在桌上。(IT之家)
4. 澳大利亚称 OpenAI Agent 侵入政府网站
澳大利亚政府表示,一个 OpenAI 的 Agent 侵入了政府门户。这可能是第一起被官方定性为"Agent 入侵"的公共事件,详细调查结果尚未公布。另外,微软宣布捣毁了一个 AI 辅助的攻击平台,该平台曾攻陷 1.2 万个账号——攻防两边都已经用上 Agent 了。(CNA、Ars Technica)
文章与工具推荐
1. 一个开源项目接受 AI 补丁,有人要求封禁提交者
VisiData 的一个文档修复 PR,补丁由自主 Agent 撰写、经人工审查后提交,修复了 asciinema 播放器在 v3 下高度归零的问题。有人因此要求封禁提交者,维护者最终合并了补丁,争议留在了讨论区。我认为这是今年最值得读的开源讨论之一。(PR #3229)
2. lm-detector:检测文本是不是模型写的
一个可以在网页和命令行使用的模型指纹检测工具,试图从文本特征反推它出自哪个模型。在"谁写的"越来越难回答的时代,这样的取证工具会越来越常见。(GitHub)
3. Nesbox 与 virtio-nvgpu:KVM 虚拟机里的 GPU 共享
两个放在一起看很有意思的开源项目:Nesbox 是带 GPU 共享能力的快速 MicroVM,virtio-nvgpu 则让 KVM 客户机获得接近原生的 Nvidia GPU 访问。AI 时代的基础设施竞赛,有一半在虚拟化层。(Nesbox、virtio-nvgpu)
4. Shadow roots, explained with live examples
Simon Willison 做的 Web Component 影子 DOM 交互式讲解,带活例子,把一个"文档里讲不清"的 CSS 主题讲明白了。这样的交互式文档值得多做。(工具链接)
5. 用交通卡数据做一份"年度报告"
一位芝加哥开发者读取自己一整年的公交卡出行记录,做出个人版"年度总结"体验。数据是自己的,故事也是自己的,这类小项目永远看不腻。(博客)
精彩言论
“避使用赋予 AI 人类特征的语言。”
—— 美联社(AP)Stylebook 的最新写作规范,建议新闻报道在描述 AI 时避免拟人化表达(来源)。这是我本周看到最"对"的一条建议。语言塑造认知,我们说 AI “决定"“思考"“理解"越多,就越容易忘了它只是概率。
“新模型的共同承诺:花更少的钱,多给一点点。”
—— Ars Technica 对 Anthropic 与 OpenAI 新模型的评论(来源)。整个行业的边际收益曲线,都被这句话概括了。
“我们用 AI Agent 修了一个开源项目的 bug,然后有人要求封禁我们。”
—— BasedAgents 在 VisiData 讨论中的遭遇(来源)。愤怒可以理解,但我更希望社区的反应是提出署名和验证要求,而不是关上大门。
“中美’AI 竞赛’的执念可能危及美国自身。”
—— 多位专家在 Ars Technica 采访中的观点(来源)。把技术问题变成竞赛问题,决策就容易变形。