go2rust实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 「半空」富脚手架模式
字节 Go2Rust 工程落地实践
演讲人:范广宇
2025.9.20
2. 目录 |Contents
Part 01
背景Part 02
富脚手架模式Part 03
未来展望
Go2Rust 的收益与挑战Go2Rust 迁移的完整解决方案未来工作展望
3. 01
背景
Go2Rust 的收益与挑战,LLM 和 ABCoder 为 Go2Rust 带来全新解决方案
4. Rust 迁移的背景
Golang -> Rust 迁移收益
•Golang 服务在迁移至 Rust 后,取得 40~50% 的 CPU 收益,10~70% 的 P99 时延
•Golang 服务在迁移至 Rust 后,内存安全性、服务稳定性、运维成本均得到收益
Golang -> Rust 迁移挑战
5. ABCoder: AI-Based Coder
ABCoder:一套 LLM 驱动的项目理解并应用的
编程语言解决方案,它拥有一套完整的工作流,
包括代码解析器、知识库构建、常用AI 工具等
核心能力:将代码仓库抽象为一棵具有节点调
用关系的语法树。
6. Go2Rust 迁移的发展与变迁
7. 「半空」:ABCoder X LLM 的 Go2Rust 解决方案
富脚手架模式:Go2Rust 一站式解决方案
• 目标:为用户的 Go 项目交付一套 100% 可编译的、具有原始业务逻辑的 Rust 脚手架(0-1),用户可“开箱即用”,配合半空
插件快速迁移
• 特点:
• 依赖翻译 & 半径控制:依赖级联翻译,避免阻塞迁移;控制依赖深度,收敛依赖层数
• 编译优先:优先保证整体脚手架可编译
• IDE 亲和:提供 IDE 插件,配合用户完成迁移准备、业务迁移、持续迭代的工作
8. 02
富脚手架模式
全面迈向 Go2Rust 迁移"自动档"时代的完整解决方案
9. 人工 Golang 迁移 Rust 的流程
Go2Rust 迁移流程
说明
半空解决方案
项目立项•明确迁移项目的可行性、资源分配和目标等
项目梳理•全面梳理项目的业务逻辑、接入的组件以及代码的边缘情况, •
自动梳理、制定方案
为制定迁移方案做好充分准备
技术调研 & 选项
•
调研 Rust 开发框架和组件生态,确保能够快速重写现有功
•自动映射组件
•共同完成
•自动迁移
•提供 IDE 插件
能并持续维护
人力规划
•
评估团队对 Rust 的熟悉程度,确保团队能够持续投入 Rust
的开发
项目开发•实际投入人力进行项目整体迁移
项目验收•测试、上线
持续迭代•后续使用 Rust 对项目进行持续开发
10. 富脚手架模式的展示形式
以 IDE 插件形式对外提供服务
•
•产品融入现代智能 IDE(Trae、VSCode)
•所有交互通过 IDE 完成
一站式的Go2Rust解决方案
•
•翻译前:项目梳理、依赖分析
•翻译中:自动迁移 Golang 到 Rust
•翻译后:自动修错,高质量交付
11. 富脚手架模式的执行流程
12. 翻译前:项目迁移的“全自动规划书”
1. 项目深度理解文档
13. 翻译前:项目迁移的“全自动规划书”
2. 依赖梳理
14. 翻译前:项目迁移的“全自动规划书”
3. 接口梳理
15. 翻译前:项目迁移的“全自动规划书”
4. 迁移规划书
• 基于上述分析,自动生成规划书 & 分析翻译难度
• 与业务同学共同确定最终迁移的时间安排 & 人力规划
16. 富脚手架模式的执行流程
17. 翻译中:全自动地 Go2Rust 流程
1. IDE 插件一键触发
18. 翻译中:全自动地 Go2Rust 流程
2. 框架映射 & 代码生成
19. 翻译中:全自动地 Go2Rust 流程
2. 节点翻译:
• 函数节点:业务逻辑抽象、LLM 意译翻译
• 变量节点:指定映射规则、LLM 意译翻译
• 类型节点:指定映射规则、LLM 意译翻译
20. 翻译中:全自动地 Go2Rust 流程
2. 节点翻译: 函数翻译流程
21. 翻译中:全自动地 Go2Rust 流程
2. 节点翻译: 依赖处理方式
依赖类型处理策略技术手段
本地依赖递归翻译• 自底向上先翻译被依赖的节点,确保翻译函数前,
其依赖的节点被翻译好
级联翻译• 提前识别并标记业务封装的 SDK
• 同本地依赖的处理方式,递归翻译业务 SDK 节点
• 确保翻译函数前,其依赖的SDK节点被翻译好
内部基础组件知识库映射• 提前构建内部组件的 Rust 使用知识库
• 翻译函数前,如果使用了内部组件,则提前召回这
些组件的 Rust 使用方法
开源组件知识库映射
&
模型内置知识• 如果知识库已有知识,则召回这些使用方法
• 如果知识库没有知识,则使用模型内置知识,利用
模型本身的能力进行映射
业务 SDK
22. 翻译中:全自动地 Go2Rust 流程
2. 节点翻译: 知识召回
23. 翻译中:全自动地 Go2Rust 流程
2. 节点翻译: 示例
1. Golang 源代码
• 函数本身
2. 依赖列表
• xxx/logs:内部 log 库
• xxx/yyy/constant: 本地依赖
提取翻译信息
• xxx/yyy/kitex_gen/example:本地依赖
• xxx/yyy/redisdoc:本地依赖
• xxx/yyy/redis: 内部 Redis 组件
3. 知识召回
• logs:在 rust 中使用 “tracing”打印日志
• redis:在 rust 中使用 “byted_redis”操作 Redis
24. 翻译中:全自动地 Go2Rust 流程
2. 节点翻译: 示例
25. 翻译中:全自动地 Go2Rust 流程
3. 接口链路翻译
• 基于梳理好地接口调用链路,自底向上地翻译每一个节点,直到调用链路全部翻译完毕
26. 富脚手架模式的执行流程
27. 翻译后:高质量的 Rust 代码交付
1. 基于 LLM Agent 驱动的代码质量优化
• 遍历函数,优化代码风格,使得翻译好的 Rust 代码符合最佳实践
• 获取 Rust 编译报错,使用 LLM 多轮修复,直至可编译状态
28. 翻译后:高质量的 Rust 代码交付
2. 无缝逻辑校验:一键跳转回 Golang 源码
29. 翻译后:高质量的 Rust 代码交付
3. 翻译质量回收
30. 展望
01
02
Research 架构探索持续推广 & 优化
提高翻译维度,发挥模型
的能动性,实现
Go2Rust 重构级翻译建立完善的用户行为反馈
机制,基于用户的修改动
作优化翻译质量
31. Q&A
32. THANKS