ZeroAI 中文文档 下载 App

UniFFI 桥接层 — Kotlin 和 Rust 安全互通

UniFFI 是什么

UniFFI 是 Mozilla 开发的跨语言 FFI(Foreign Function Interface)工具——它的目标是:

用 Rust 写业务逻辑,自动生成其他语言的绑定代码。

Mozilla 自己在 Firefox、Firefox for Android、Rust 组件中大量使用。ZeroAI 选择它而不是手写 FFI。

为什么不用手写 FFI

手写 Kotlin ↔ Rust FFI 的坑多到数不清:

手写 FFI 容易写出"能跑但不稳定"的代码——尤其 ZeroAI 要支持 8 家模型供应商、5 条通道、24 项安全开关,手动维护根本不现实。

UniFFI 做了什么

ZeroAI 仓库里 UniFFI 桥接层在 zeroclaw-android/zeroclaw-ffi/ 目录:

  1. 用 UDL 描述接口——类似接口定义语言,告诉 UniFFI Rust 侧暴露了哪些函数/类/结构体
  2. 自动生成 Rust 侧 FFI——把 Rust 函数包装成 C 兼容接口
  3. 自动生成 Kotlin 侧绑定——生成 Kotlin 类/函数,内部调用 C FFI
  4. 类型安全——String、Int、Vec、Option、Result 等常见类型都有正确映射
  5. 内存安全——UniFFI 生成的代码自动管理内存,不会泄漏也不会 double free

开发者构建

README 里提到:

./gradlew :app:assembleDebug

UniFFI 代码生成是 Gradle 构建流程的一部分——不需要手动跑 UniFFI 命令,改了 Rust 接口声明后直接 assembleDebug 就行。

两层桥接之外

除了 UniFFI 自动生成的绑定,ZeroAI README 还提到:

The terminal subsystem's safe Rust FFI wrappers were informed by patterns from libghostty-rs

终端渲染层自己写了一套 FFI 来对接 libghostty-vt——这部分是手写的,因为 UniFFI 还不支持终端渲染这种复杂场景。

资料来源:GitHub ZeroAI README、UniFFI 官方文档