当前位置: 首页 > news >正文

10 万行 Rust 代码开发实测封神!AI 应用经验大揭秘

从 10 万行 Rust 代码开发中获得的 AI 应用经验

2025 年 12 月 1 日

在过去几个月里,对 AI 编码工具在构建实际生产级分布式系统方面的能力进行了压力测试。

结果是,开发出了一个基于 Rust 的多 Paxos 共识引擎。它不仅实现了 Azure 复制状态库(Replicated State Library,RSL)[ [1](https://github.com/Azure/RSL) ]的所有功能(RSL 是大多数主要 Azure 服务的基础),还针对现代硬件对其进行了升级。

整个项目历时约 3 个月,其中约 4 周内编写了 10 万行 Rust 代码,约 3 周内将性能从每秒 2.3 万次操作提升到了每秒 30 万次操作。

除了实现前所未有的开发效率外,还发现了一些非常有用的技术。本文将分享在以下方面最有价值的经验:通过代码契约确保代码正确性、采用轻量级规范驱动开发方法、积极进行性能优化,以及对未来 AI 辅助编码的期望。

为何要升级 RSL?

Azure 的 RSL 实现了多 Paxos 共识协议,是许多 Azure 服务复制功能的核心。然而,RSL 是十多年前编写的。尽管它很健壮,但未能跟上现代硬件和工作负载的发展。

推动这个项目的主要有三个关键差距:

1. 缺乏流水线机制:当一个投票正在进行时,新请求必须等待,这会增加延迟。

2. 不支持非易失性内存(NVM):非易失性内存在 Azure 数据中心已很常见,它可以显著减少提交时间。

3. 对硬件的感知有限:RSL 没有针对远程直接内存访问(RDMA)进行优化,而 RDMA 在 Azure 数据中心已广泛使用。

消除这些限制可以显著降低延迟并提高吞吐量,这对于现代云工作负载和 AI 驱动的服务至关重要。

鉴于对 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)进行编码能形成完美的异步工作流程,极大地提高了开发效率。还发现了一个简单的心理技巧:

> 每月支付 100 美元订阅 Anthropic 的高级计划。这成了一种驱动力——如果睡前不使用 Claude 启动一个编码任务,就会觉得在浪费钱。

当 Codex CLI 推出后,又订阅了第二个 ChatGPT Plus 账号来应对速率限制,一个账号用于周一至周三,另一个用于周四至周日。

由 AI 生成、为 AI 服务的代码契约

最常被问到的问题是:“AI 如何能正确实现像 Paxos 这样复杂的算法?”

测试是第一道防线。系统现在有 1300 多个测试,从单元测试到最小集成测试(如仅测试提议者和接受者),再到包含故障注入的多副本全集成测试。具体项目状态可查看相关内容。

但真正的突破来自于 AI 驱动的 代码契约 。

代码契约为关键函数指定了 前置条件 、 后置条件 和 不变量 。这些契约在测试时会转换为运行时断言,但在生产环境中为了性能可以禁用。虽然很久以前就在 .NET 中使用过这种方法 [ [2](https://learn.microsoft.com/en-us/dotnet/framework/debug-trace-profile/code-contracts) ],但 AI 让契约的功能变得更强大。

从三个层面应用代码契约:

1. 让 AI 编写契约:Opus 4.1 能编写不错的契约,而 GPT - 5 High 编写的契约更出色。主要负责审查和完善。例如,`process_2a` 方法(处理 Paxos 协议中的 2a 阶段消息)有 16 个契约,其中一个如下:

2. 根据契约生成测试用例:定义好契约后,让 AI 为每个后置条件创建有针对性的测试用例。AI 在这方面表现出色,能自动生成有意义的边界情况。

3. 基于属性的契约测试:这是最喜欢的方法。AI 将契约转换为基于属性的测试,探索大量随机输入。任何契约违反都会触发程序崩溃,从而尽早发现深层次的 bug。

例如,一个由 AI 生成的契约发现了一个微妙的 Paxos 安全漏洞:

这个契约避免了一个可能严重影响复制一致性的问题,而且是在问题进入生产环境之前就被发现了。

轻量级规范驱动开发

尝试过各种规范驱动开发(Spec - Driven Development,SDD)工具。实际上,早期的组件(如领导者选举、提议者、接受者和学习者)都是按照严格的 SDD 方法实现的。会从需求文档开始,将其转化为设计文档,再转化为任务列表文档。然而,逐渐发现这个过程过于僵化,在开发过程中进行更改并确保所有文档保持一致变得很麻烦。

现在转向了更轻量级的方法。当开发一个功能(如快照功能)时,使用 spec kit [ [3](https://github.com/github/spec-kit) ] 中的 `/specify` 命令生成一个规范文档。这个规范文档包含几个用户故事和验收标准。

以下是一个关于快照功能的用户故事示例:

然后使用 `/clarify` 命令让 AI 对用户故事和标准进行自我审查和改进,并让它提出初始规范中未涵盖的其他用户故事。大部分时间都花在这一步。

满意后,进入 计划模式 ,让 AI 为特定的用户故事生成一个计划。鉴于当今 AI 编码工具的能力,单个用户故事似乎是它们能有效处理的“最佳”工作单元。在这个过程中,可能会发现一些需要添加或调整的地方,这些在同一个编码会话中很容易处理(AI 可能会压缩上下文,但通常不担心会丢失太多信息)。

以下是一个关于配置更改的 `/clarify` 交互示例:

● 问题 4:起始槽位确定
新配置的起始槽位应如何相对于结束槽位来确定?
建议:选项 A - 始终为结束槽位 + 1
这确保了槽位序列没有间隙,并保持配置之间的连续性,防止任何槽位被孤立或未分配。
| 选项 | 描述 |
| ---- | ---- |
| A | 始终为结束槽位 + 1 |
| B | 允许操作员指定任何大于结束槽位的值 |
| C | 结束槽位之后的下一个 1000 的倍数,以获得更清晰的边界 |
| D | 与结束槽位相同(两个配置共享最后一个槽位) |
你可以回复选项字母(如“A”),通过说“是”或“建议”接受建议,或提供你自己的简短答案。

积极的性能优化

性能优化是 AI 真正发挥作用的地方。在确保代码初始正确性后,花了大约三周时间专门进行吞吐量调优,AI 成为了性能优化的得力助手。

通过迭代循环,在一台笔记本电脑上将吞吐量从每秒约 2.3 万次操作提高到了每秒约 30 万次操作。反复遵循以下步骤:

1. 让 AI 在所有代码路径上插入延迟指标。

2. 运行性能测试并输出跟踪日志。

3. 让 AI 分析延迟分布(它会编写 Python 脚本来计算分位数并识别瓶颈)。

4. 让 AI 提出优化建议,实施其中一个建议,重新测量,然后重复这个过程。

这个过程揭示了一些可能会忽略的问题,例如异步路径上的锁竞争、冗余的内存复制和不必要的任务创建。

Rust 的安全模型让可以放心地进行这些优化。关键的改进来自于减少内存分配、应用零拷贝技术、避免使用锁以及有选择地消除异步开销。每一次改进都像是从高性能引擎上剥去一层延迟,而且不用担心内存损坏的问题。

对 AI 辅助编码的期望

回顾开发历程,一直在思考 AI 还能在哪些方面发挥更大的价值。以下是一些期望:

1. 端到端用户故事执行:仍然更喜欢自己定义用户故事。作为架构师,觉得自己更清楚要构建什么以及如何构建。然而,相信 AI 在完美执行方面会越来越出色。目前,仍然需要花很多时间引导 AI,比如在它暂停时让它继续工作、建议重构、审查测试覆盖率并建议添加额外的测试。希望 AI 能在端到端的执行过程中拥有更多自主权。

2. 自动化契约工作流:应用契约的流程似乎大部分可以自动化。虽然仍然希望审查契约并提出建议,但希望 AI 能完成其余的工作,如根据契约生成测试、调试单个测试用例、确保测试和契约的一致性以及编写基于属性的测试。当测试失败时,希望 AI 能自动调试并修复一些小问题,只有在契约或实现中存在真正的正确性问题时才通知。

3. 自主性能优化:性能调优似乎很适合进一步自动化。所做的很多工作都是重复性的且可以并行进行。像 AlphaEvolve(或 OpenEvolve)这样的项目在这方面展现出了潜力。理想情况下,只需提出潜在的优化方向,AI 就能完全自主地进行实验。虽然目前的工具只能处理小代码块,但将类似的技术应用于更大的代码库并进行端到端的测量似乎是可行的。

附录:项目状态

这个项目的灵感来源于微软研究院的 Jay Lorch 撰写的一份优雅的设计文档 [ [4](https://jaylorch.net/) ]。这份设计大大简化了多 Paxos 中的所有组件,使其更易于实现和理解。

到目前为止,RSL 的三个限制中已经解决了两个:流水线机制和 NVM 支持(Jay 集成了在 OSDI 2025 会议上发表的 `PoWER Never Corrupts` 论文 [ [5](https://www.usenix.org/conference/osdi25/presentation/leblanc) ] 中经过完全验证的 NVM 持久化日志)。RDMA 支持仍有待实现。

到目前为止,项目已发展到超过 13 万行 Rust 代码,有 1300 多个测试,占代码库的 65% 以上。

一个学习与分享的小天地

http://www.jsqmd.com/news/860193/

相关文章:

  • 【AI入门知识点】Agent 是什么?为什么说它是 AI 的下一阶段?
  • 开源|一款零服务器代码知识图谱引擎,支持多语言解析、Graph RAG 问答、AI 代理集成的代码分析平台
  • DB2里LISTAGG拼接超长数据报错?试试xmlagg+xml2clob这个组合拳(附完整SQL示例)
  • 书匠策AI到底能不能帮你搞定毕业论文?一个写作博主的实测级科普
  • 广东抖店商家与带货达人:短视频运营培训机构测评
  • 智慧树自动刷课插件:三步实现在线学习效率倍增的终极方案
  • 艾络迅 × 荣耀:联合推出Meteer AI跳舞机器人玩具,智能科技重新定义儿童陪伴
  • 从“念稿子”到“讲故事”:学术答辩PPT的范式转移
  • 保姆级避坑指南:在Ubuntu 22.04虚拟机里搞定ESP-IDF环境(附常见错误解决)
  • 长期使用后回顾聚合平台在服务稳定性上的实际表现
  • 对比直接使用官方 API 体验 Taotoken 在多模型选型上的便利
  • Agent技能调用LLM API的7种核心形式
  • 水下叶轮脉动压力测试:Kulite压力传感器强在哪?安装门槛怎么破?
  • 照着用就行:高效论文写作全流程AI论文网站推荐(2026 最新)
  • vivo统一AI Agent能力,Chat模式落地打造可“拼”底座助力业务演进!
  • 在 GPT 里[读文档]这件事,我测了 5 个 MCP 工具,为什么复杂 OCR 场景最终会走向 MinerU
  • 为 OpenClaw 配置 Taotoken 作为后端模型供应商的详细操作流程
  • CTF实战:熊海CMS 1.0的另类利用——绕过文件上传限制,用Pearcmd.php实现RCE的完整流程
  • 对比直接使用官方 API,通过 Taotoken 调用在成本透明度上的提升体验
  • 抖音批量下载终极指南:如何用开源工具高效采集视频素材
  • 程序员需求攀升:数字化浪潮下的行业必然
  • VR安全带防坠落体验平台助力高空作业安全培训
  • Firefox 148默认禁用asm.js优化,Web性能开创性技术实验落幕
  • 从HTTP/1.0到HTTP/3:聊聊那些年我们踩过的‘连接’坑,以及性能优化实战
  • 从TEC4模型机运算器实验,看懂CPU数据通路与ALU工作的底层逻辑
  • 工厂实验室建设公司厂家:建不好,产品质量白搞|中南实验室建设
  • 初创团队如何利用Taotoken统一管理多个AI项目的API成本与用量
  • 智慧职教刷课脚本:3分钟实现全平台自动学习的终极指南
  • 2026 高炉炼铁智能化技术全景与演进路径~系列文章00:高炉炼铁智能化的产业变革与2026技术全景
  • PP喷淋塔厂家选购指南:2026如何选到靠谱供应商 - 资讯纵览