通过 AI 从 10 万行 Rust 中学习 (2025)

2026-05-20 1 阅读 pramodbiligiri
在过去的几个月里,我一直在压力测试人工智能编码代理在构建真实的生产级分布式系统时可以带我们走多远。结果是:一个基于 Rust 的多 Paxos 共识引擎,不仅实现了 Azure 复制状态库 (RSL) [1](支撑大多数主要 Azure 服务)的所有功能,而且还针对当今的硬件对其进行了现代化改造。整个项目花了我大约 3 个月的时间,大约 4 周内编写了 10 万行 Rust 代码,并在大约 3 周内实现了从 23K 操作/秒到 300K 操作/秒的性能优化。除了前所未有的生产力之外,我还发现了一些有用的技术。这篇文章分享了我最有价值的经验:确保代码契约的正确性、应用轻量级规范驱动开发、追求积极的性能优化——以及我对人工智能辅助编码未来的愿望清单。为什么要对 RSL 进行现代化改造? Azure 的 RSL 实现了多 Paxos 共识协议,并构成了许多 Azure 服务中复制的支柱。然而,RSL 是十多年前编写的。虽然它很强大,但尚未发展到能够匹配现代硬件和工作负载。该项目存在三个关键缺陷: 无管道:当投票正在进行时,新请求必须等待,从而增加了延迟。无 NVM 支持:非易失性内存现在在 Azure 数据中心中很常见,可以大大减少提交时间。有限的硬件意识:RSL 并不是为了利用 RDMA 而构建的,而 RDMA 现在在 Azure 数据中心中很普遍。消除这些限制可以显着降低延迟并提高吞吐量——这对于现代云工作负载和人工智能驱动的服务至关重要。鉴于我对 Rust 和 AI 加速开发的兴趣,我开始从头开始构建一个现代 RSL 等效项。大规模生产力提升 在大约六周的时间里,我驱动了 AI 并实现了超过 13 万行 Rust 代码,涵盖了 RSL 的完整功能集,包括多 Paxos、领导者选举、日志复制、快照和配置更改。我利用了许多可用的 AI 编码代理:GitHub Copilot、Claude Code、Codex、Augment Code、Kiro 和 Trae。我的工作流程发展很快,但现在我的主要驱动程序是 Claude Code 和 Codex CLI,并使用 VS Code 处理差异和细微编辑。我发现从 CLI 进行编码可以创建完美的异步流程,从而最大限度地提高我的工作效率。我还发现了一个简单的心理技巧:我每月为 Anthropic 的最高套餐支付 100 美元。这变成了一种强制功能——如果我不在睡觉前与克劳德一起开始编码任务,我会觉得我在浪费钱。当 Codex CLI 到来时,我添加了第二个 ChatGPT Plus 订阅来处理速率限制 - 一个订阅用于周一至周三,另一个订阅用于周四至周日。代码合约——由人工智能,为人工智能 我最常遇到的问题是:人工智能如何正确实现像 Paxos 这样复杂的东西?测试是第一层防御。我的系统现在包括 1,300 多个测试 - 从单元测试到最小集成测试(例如,仅提议者 + 接受者),一直到注入故障的多副本完整集成测试。查看项目状态。但真正的突破来自人工智能驱动的代码合约。代码契约指定关键函数的前提条件、后置条件和不变量。这些合约在测试期间转换为运行时断言,但可以在生产版本中禁用以提高性能。虽然我很久以前就开始在 .NET [2] 中使用这种方法,但人工智能已经使合约变得更加强大。以下是我在三个层面上应用它们的方法: 1. 让人工智能编写合同。 Opus 4.1 编写了很好的合约,但 GPT-5 High 编写了优秀的合约。我专注于审查和完善。例如, process_2a 方法(处理 Paxos 中的第 2a 阶段消息)有 16 个合约,其中包括以下一个: 2. 从合约生成测试。一旦定义了合同,我就会要求人工智能为每个后置条件创建有针对性的测试用例。它擅长于此,自动生成有意义的边缘情况。 3. 基于属性的合同测试。这是我最喜欢的。人工智能将合同转化为基于财产的测试,探索广阔的随机输入空间。任何违反合同的行为都会引发恐慌,尽早暴露深层错误。例如,一个 AI 生成的合约发现了一个微妙的 Paxos 安全违规:该合约在投入生产之前就挽救了可能严重的复制一致性问题。轻量级规范驱动开发 我尝试过各种规范驱动开发 (SDD) 工具。事实上,早期的组件(例如领导者选举、提议者、接受者和学习者)都是遵循严格的 SDD 方法实现的。我会从需求降价开始,将其转变为设计降价,然后是任务列表降价。但我渐渐发现这个过程太死板了;一路上进行更改并确保所有文档保持一致成为一个令人头痛的问题。我现在已经改用更轻量级的方法。当我开发某个功能时(例如,sn