592 字
3 分钟
语言之争:Rust 真的比 Go 更适合构建 Agent 基础设施吗?
现状:Go 的统治与 Rust 的崛起
如果你看 Kubernetes, Docker, Prometheus,云原生时代是 Go 的天下。简单、高并发、编译快,Go 简直是为了写微服务而生的。
但到了 AI Agent 时代,风向似乎变了。
HuggingFace 的核心库用了 Rust,Turborepo 用 Rust 重写了,甚至 Node.js 的挑战者 Deno 和 Bun (Zig) 都在追求极致性能。
Agent 基础设施的特殊需求
AI Agent 和传统的 Web 服务不同,它有几个痛点:
- 极致的内存效率:Agent 通常需要加载大量的 Context,如果 Runtime 本身吃内存(比如 JVM),那就留给模型的空间就少了。
- Python 互操作性:AI 生态是 Python 的后花园。Rust 的
PyO3让 Rust 可以无缝变成 Python 模块,性能几乎没有损耗。而 Go 调用 C/Python (cgo) 还是有一定的 overhead。 - 确定性延迟:Go 的 GC (垃圾回收) 虽然已经优化得很好了,但在高负载下偶尔的 STW (Stop The World) 对于实时语音交互 (Realtime API) 来说是致命的。Rust 没有 GC,延迟是可预测的。
Go 的优势:开发速度
如果你的 Agent 系统主要是在做 IO 编排(调用 OpenAI API,存数据库,发 Slack 消息),Go 依然是王者。
写一个 Rust 的 async/await 可能会让你和借用检查器 (Borrow Checker) 搏斗半天,而 Go 的 go func() 五秒钟就写完了。对于快速迭代的业务层,Go 的心智负担低太多了。
Rust 的优势:系统基座
如果你的系统涉及到:
- 向量数据库引擎 (如 Qdrant, LanceDB)
- 本地 LLM 推理运行时 (如 llama.cpp 的封装)
- 高性能网关 (处理 WebSocket 海量长连接)
那么 Rust 是不二之选。它的类型系统能在编译期捕获并发错误,这对于构建长期运行的稳定基座至关重要。
辉哥的结论
不要二选一,要分层。
- Data Plane (数据面):用 Rust。处理向量计算、模型推理、高频网关。追求极致性能和安全。
- Control Plane (控制面):用 Go (或者 TypeScript/Node.js)。处理业务逻辑、API 编排、Web 后台。追求开发效率和生态丰富度。
OpenClaw 选择了 Node.js/TypeScript 作为胶水层,利用 Node 的灵活性调用 Rust 编写的高性能插件(如 sqlite-vec)。这或许是另一种形式的“最佳实践”。
语言之争:Rust 真的比 Go 更适合构建 Agent 基础设施吗?
https://www.oferry.com/posts/a28/