大家好,我是何三,独立开发者

67k 行 C 代码,30 年打磨,2 个月被 Claude 改了 26k 行。

这不是什么 AI 创业公司的 PR 稿。这是上周真实发生在开源社区的事。rsync——那个你部署脚本里大概率躺着的文件同步工具——它的 3.4.3 版本被发现混入了数百个 Claude 生成的 commit。GitHub Issue #929 的标题直接开喷:"Please Do Not Vibe Fuck Up This Software"

Hacker News 上 77 points,评论区直接炸了。

有人当场写了替代品 OpenRsync。有人翻出了 rsync 的 commit 历史,发现 2 个月内将近 40% 的代码被动过。有人冷静分析说"大部分只是测试用例",但更多人只问了一句:一个跑在无数生产环境里的 30 岁工具,凭什么让 AI 来动它的核心逻辑?

这事有意思的地方在于——它不是又一个"AI 取代程序员"的爽文。恰恰相反,这是一个30 岁的工具反过来教 AI 做人的故事。

rsync 到底是个什么玩意儿

简单说,rsync 就是文件同步界的瑞士军刀。

你要把文件从 A 拷贝到 B,本地也好,远程也好,几十 GB 也好,几百万个小文件也好,一条命令搞定。它最牛的地方是增量传输——只传变化的部分,不是每次全量拷贝。

打个比方:

你有一本 1000 页的书要抄给朋友。一般人做的事:把整本书重抄一遍寄过去。rsync 做的事:看看你朋友手上那本跟你这本差在哪几页,只把那几页寄过去。

这个算法叫 rsync 算法,1996 年由 Andrew Tridgell 和 Paul Mackerras 发明。30 年了,几乎没人能提出更好的替代方案。

它的参数也很经典:

# 本地增量同步
rsync -avh ./project/ /backup/project/

# 远程同步(走 SSH)
rsync -avz --progress ./data/ user@server:/data/

# 增量备份,保留硬链接
rsync -avh --delete --link-dest=../backup-yesterday ./source/ ./backup-today/

说实话,这玩意儿我用了十年,参数也就记熟了这四五条。但它就是稳。

rsync 命令行实战

然后就出事了

今年 5 月,有人发现 rsync 的 GitHub 仓库不太对劲。

commit 历史里突然冒出来大量署名 "Claude" 的提交。就是 Anthropic 那个 Claude。2 个月,26k 行代码变动——而 rsync 全部代码量不过 67k 行。

想想看,一个你用了十年的工具,它的核心维护者突然开始用 AI 批量改代码。而且改的不只是测试用例和文档——有些 commit 直接改了 C 语言里的行为逻辑

有人翻出一个具体 commit:把某个"安全"的 C 操作换成了另一种写法,结果触发了内存损坏的 bug。

维护者可能觉得:这些都是小修小补,AI 生成的代码我再 review 一遍就行。

但问题是——C 语言的内存安全不是靠 review 能保证的。这东西,说不好听点,改一行可能炸一片

HN 评论区有人说得特别狠:

"26k code changes in 2 months... rsync was 67k LOC."

26k / 67k = 约 39%。两个月,你告诉我一个 30 年的项目,将近一半代码被 AI 动过,你敢在生产环境升级吗?

我不敢。

跑题一下——说到 C 语言的内存安全

我突然想起一件事。

前阵子有个朋友跟我争论,说 Rust 是不是 C 的终极替代品。我说不一定,C 在系统工具层的地位短期内很难被取代——你看看 OpenSSL、rsync、git,哪个不是 C 写的?

但 Rust 确实在蚕食这个领域。Linux 内核开始接受 Rust 代码,Windows 内核也在搞 Rust 集成。

然后 rsync 这事让我想到一个问题:如果 rsync 是用 Rust 写的,Claude 改出来的代码会不会安全一些?

很难说。LLM 生成的 Rust 代码安全性未必比 C 高多少——unsafe block 一旦写错,该崩还是崩。但至少 borrow checker 能挡掉大部分内存问题。

——行了,跑偏了,回到正题。

社区炸了,但炸得有道理吗

GitHub Issue #929,标题直译过来是:"求你别用 vibe coding 把这软件搞砸了"。

这个 issue 的发言方式确实有点冲。HN 上有人评论说 "incredible obnoxious",也有人觉得"话糙理不糙"。

我看完所有评论,发现大家的担忧其实集中在三点:

1. 速度问题:2 个月 26k 行,即使人工 review 也跟不上这个节奏。review 速度跟代码生成速度完全不是同一个量级。

2. 信任问题:rsync 是跑在生产环境里的基础设施。它处理的是你最重要的数据。你把代码交给 AI 去改,用户凭什么信任新版本?

3. 动机问题:也是最让我困惑的一点——rsync 本身没什么大毛病啊。它不愁用户,不愁收入(也没收入),没有功能竞争压力。那为什么要在上面搞这种高风险实验?

HN 上有个评论说得特别到位:

"You wrote the perfect tool, you won. It makes no sense to gamble with that."

你写了一个完美的工具,你已经赢了。为什么要赌?

原理大概是这样,细节可能有出入——有懂的大佬欢迎指正。

Rsync 事件核心数据

延伸阅读

rsync 不是第一个被 AI 乱改的开源项目,也不会是最后一个。

同期还出现了一个叫 OpenRsync 的项目(现在 macOS 已经默认用它替代了旧版 rsync)。有人开玩笑说,rsync 3.4.3 的 AI 风波直接催生了一个竞争对手。

如果你对这类"古老工具 vs 现代 AI"的冲突感兴趣,我之前还写过一篇《为什么说 C 语言是 LLM 推理的隐藏王者?》,讲的是另一个角度——C 语言在 AI 时代的不可替代性。关注后回复「工具」就能看到。

另外,rsync 的 GitHub 仓库在这里:

GitHubhttps://github.com/RsyncProject/rsync

它的 Issue #929 直接引发了这场风波,现在去看还能围观到当时的讨论现场。

一些个人的想法

写到最后,其实我想说的是——

我并不反对用 AI 辅助开发。我自己也用 AI 写代码,debug,写测试用例,写文档。但这东西有个度。

30 年的工具,它的稳定不是靠功能丰富,而是靠不动。

有些代码,动一行可能没什么。动一千行,可能也没什么——直到有一天,你的备份脚本突然把数据删了,或者同步到一半进程崩溃了,你才发现,原来那行代码是有理由那么写的。

别问我为什么知道。

问那个用 Claude 改 rsync 的维护者去吧。

本文使用 MGO 编辑并发布

关注“何三笔记”,回复“mgo” 免费下载使用