ZeroClaw-Android - 安卓专属
约 956 字大约 3 分钟
2026-03-07
JNI 架构的 OpenClaw 实现,Kotlin UI + Rust 底层,安卓手机 24/7 AI 助手。
核心特性
JNI 架构
- Kotlin UI 层
- Rust 核心层
- JNI 桥接
- 高性能底层
原生性能
- Rust 计算引擎
- 零垃圾回收
- 低内存占用
- 快速响应
安卓优化
- 后台服务
- 推送通知
- 电池优化
- 离线能力
移动端特性
- 语音输入
- 摄像头集成
- GPS 位置
- 传感器数据
快速开始
安装
从 GitHub Releases 下载 APK:
# 下载最新版本
wget https://github.com/Natfii/ZeroClaw-Android/releases/latest/download/zeroclaw-android.apk
# 或从 F-Droid 安装
fdroid install com.zeroclaw.android配置
首次启动配置:
- 选择 LLM 提供商(OpenAI/Anthropic/本地模型)
- 输入 API Key
- 授予必要权限(通知、存储、摄像头等)
使用
// Kotlin 代码示例
val agent = ZeroClawAgent()
// 发送消息
val response = agent.sendMessage("帮我设置明天早上7点的闹钟")
// 语音输入
agent.startVoiceInput { audio ->
agent.processVoice(audio)
}
// 后台运行
agent.startForegroundService()技术架构
分层架构
┌─────────────────────┐
│ Kotlin UI 层 │ ← Activity, Fragment, Compose
├─────────────────────┤
│ Kotlin 业务层 │ ← ViewModel, Repository
├─────────────────────┤
│ JNI 桥接层 │ ← Kotlin <-> Rust 通信
├─────────────────────┤
│ Rust 核心层 │ ← Agent 逻辑, LLM 调用
├─────────────────────┤
│ 外部服务层 │ ← API 调用, 数据库
└─────────────────────┘JNI 桥接
// Rust 端 JNI 接口
#[no_mangle]
pub extern "system" fn Java_com_zeroclaw_android_Agent_nativeInit(
env: JNIEnv,
_class: JClass,
config: JString,
) -> jlong {
// 初始化 Agent
let config: String = env.get_string(config).unwrap();
let agent = Agent::new(&config);
Box::into_raw(Box::new(agent)) as jlong
}
#[no_mangle]
pub extern "system" fn Java_com_zeroclaw_android_Agent_nativeChat(
env: JNIEnv,
_class: JClass,
ptr: jlong,
message: JString,
) -> JString {
// 处理消息
let agent = unsafe { &*(ptr as *mut Agent) };
let msg: String = env.get_string(message).unwrap();
let response = agent.chat(&msg);
env.new_string(response).unwrap()
}Kotlin 层
// Kotlin JNI 封装
class ZeroClawAgent {
private var nativePtr: Long = 0
init {
System.loadLibrary("zeroclaw")
nativePtr = nativeInit(configJson)
}
fun chat(message: String): String {
return nativeChat(nativePtr, message)
}
fun destroy() {
nativeDestroy(nativePtr)
nativePtr = 0
}
// JNI 方法声明
private external fun nativeInit(config: String): Long
private external fun nativeChat(ptr: Long, message: String): String
private external fun nativeDestroy(ptr: Long)
}功能列表
核心功能
安卓特性
AI 功能
使用示例
基础对话
class MainActivity : AppCompatActivity() {
private lateinit var agent: ZeroClawAgent
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 初始化 Agent
agent = ZeroClawAgent()
// 发送消息
val response = agent.chat("今天天气怎么样?")
textView.text = response
}
}语音对话
// 语音输入
private fun startVoiceInput() {
val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
startActivityForResult(intent, VOICE_REQUEST_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == VOICE_REQUEST_CODE && resultCode == RESULT_OK) {
val results = data?.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS)
val spokenText = results?.get(0) ?: return
// 发送到 Agent
val response = agent.chat(spokenText)
// 语音合成输出
tts.speak(response, TextToSpeech.QUEUE_FLUSH, null, null)
}
}后台服务
// 前台服务保持 24/7 运行
class AgentService : ForegroundService() {
override fun onCreate() {
super.onCreate()
agent = ZeroClawAgent()
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val notification = createNotification()
startForeground(NOTIFICATION_ID, notification)
return START_STICKY
}
fun processMessage(message: String) {
val response = agent.chat(message)
sendNotification(response)
}
}性能指标
| 指标 | 数值 |
|---|---|
| 内存占用 | ~80MB |
| CPU 使用(空闲) | < 1% |
| CPU 使用(活跃) | 5-15% |
| 电池消耗 | 中等 |
| APK 大小 | ~15MB |
适用场景
推荐使用
- 移动助手: 随身 AI 助手
- 24/7 运行: 持续在线服务
- 语音交互: 语音输入输出
- 本地处理: 敏感数据不离手机
与其他方案对比
| 特性 | ZeroClaw-Android | 网页版 | 其他 App |
|---|---|---|---|
| 性能 | Rust 底层 | 一般 | JS 引擎 |
| 响应速度 | 快 | 依赖网络 | 中等 |
| 离线能力 | 部分支持 | 无 | 有限 |
| 定制化 | 高 | 无 | 低 |
相关链接
- GitHub: Natfii/ZeroClaw-Android
- 下载: Releases
- F-Droid: ZeroClaw