架构技术评论

OpenRocky 发布,开源手机语音助手APP,给大家一个新玩具

Image

Rocky 这个项目的灵感,首先要感谢 OpenMinis,大家可以看这篇介绍文章 Open Minis: iOS 端的 AI Agent 新物种。我很早就是 OpenMinis 的用户,也了解它功能强大。但坦白说,平时在电脑前,我还是习惯用 ChatGPT、Claude、Gemini 这些网页端工具,甚至自己开发的 MicroClaw MicroClaw:用 Rust 构建 OpenClaw。回到手机上,操作时间本就不多,所以 OpenMinis 的使用频率并不高。

直到有一天,我意识到一个被忽略的场景:每天开车上下班的路上。

这段时间其实很适合和 AI 聊天。我确实也会在路上问 ChatGPT 一些问题,有时候甚至聊上一路。但 ChatGPT 有不少事做不了 —— 查过去一周的步数和健康数据,搜索结果经常不满意,想让它分析一个 GitHub 项目,它又说什么合规策略不允许打开页面。

于是我在想:如果有一个 APP,能在手机上实时语音交互,同时还能调用 iPhone 的各种本地能力,那岂不是很好?

看了一眼 OpenMinis 的语音能力 —— 只有一个简单的语音输入按钮,并不能实现实时双向语音交互。而且 OpenMinis 一直没有开源,虽然我第一眼看到它时就觉得它应该是个开源项目。

这些因素加在一起,促使我决定自己动手。

名字的由来

Rocky 这个名字来自最近很火的电影《拯救计划》(Project Hail Mary)。里面的外星人就叫 Rocky —— 一个有一技之长、真诚可靠的伙伴。我想,如果上下班路上能有这样一个伙伴随时交流,那就太好了。

当然,豆包之类的产品也能语音聊天,但总有些能力缺失。自己做的好处是:想加什么能力就加什么能力,只要 手机系统允许,想怎么做就怎么做。 作为开发者,这种自由度是最让人兴奋的。

开发过程

基于之前开发 Liney 和 MicroClaw 的经验,我估计开发这样一个 APP 不需要太多时间。周末开工,经过一两周的开发、自测和调试,核心功能基本成型。

但"基本能用"和"稳定好用"之间的距离,比想象中大得多。尤其是语音交互这块 —— 要实现真正的实时语音对话,同时还能调用 Tools、执行 Skills、保持流畅,确实有不少挑战。这个项目几乎是纯 Vibe Coding 出来的。AI 写代码的效率确实惊人。但开发到现在我也真正体会到,OpenMinis 能做到它现在这个程度,作者确实花了非常多功夫。

现在 Vibe Coding 最有意思的一点是:有想法 → 验证想法非常快,反馈环节极其高效,反而是把功能打磨到位需要更多耐心。

技术选型:为什么不用 ISH

OpenMinis 使用了 ISH

iSH 是一个在 iOS 上“真正运行 Linux 用户空间”的项目(比 ios_system 更接近真实 Linux)。

核心思路:
- 使用 x86 用户态模拟器(emulator)
- 模拟 CPU + Linux 系统调用
- 在 iOS 内运行一个完整的 Linux 发行版(通常是 Alpine) :contentReference[oaicite:0]{index=0}

本质:
- 不是“模拟命令”,而是“模拟整台 Linux 环境”
- 可以运行真实的 Linux 可执行文件(如 apk、git、gcc)

架构:
输入命令 → 进入 Linux shell → x86 模拟执行 → syscall 转换到 iOS

特点:
- 支持完整包管理(apk)
- 可以安装真实软件(git、vim、python 等)
- 更接近真实 Linux 体验 :contentReference[oaicite:1]{index=1}

局限:
- 性能较慢(因为是 CPU 模拟)
- 只支持 x86 Linux(不是 ARM 原生)
- 仍然受 iOS 沙箱限制

和 ios_system 的核心区别:
- ios_system:假命令(函数调用)
- iSH:真 Linux(模拟 CPU + syscall)

一句话总结:
👉 iSH = 在 iOS 里用模拟器“跑一台 Linux”

和 OpenMinis 不同,Rocky 在本地执行层选择了 ios_system 而不是 ISH。

关于这个决策,我和 AI 聊了很多。AI 最终给出的结论确实是 ISH 方案更强大 —— 它甚至能安装各种 APT 包、扩展二进制命令。但我不想完整复刻 OpenMini,毕竟作者后续也有可能开源。

经过调研,我发现 ios_system 是一个非常不错的替代方案。基于它的 A-Shell 项目大家可以在 App Store 下载体验。ios_system 支持常见 Shell 命令和 Python 执行,甚至还支持 WebAssembly 扩展模块 —— 虽然目前 APP 还没用上,但这为未来的扩展性留下了很大空间。

ios_system 是一个在 iOS App 内“模拟执行 Unix 命令”的框架。

核心思路:
- iOS 不允许 fork/exec 或真正运行 shell
- ios_system 把每个命令(ls、grep 等)编译成独立的 framework
- 运行时解析字符串(如 "ls -la"),找到对应命令并调用其 main() 函数

本质:
- 不是系统命令,而是函数调用
- 没有多进程,所有命令在同一进程执行

用法类似:
ios_system("ls -la")

特点:
- 支持常见命令(ls、cp、grep、tar 等)
- 可扩展(Python、Lua 等)
- 适配 iOS 沙箱(文件路径、环境变量)

局限:
- 不是完整 Linux 环境
- 无 fork/exec、多进程、信号机制
- 需要对命令源码做适配

总结:
👉 用“动态库 + 函数调用”在 iOS 里伪造一个类 Unix 命令执行环境

灵活性上确实不如 ISH,但换个角度看:手机端本来也做不了太多复杂操作,内置的 Tools 到一定数量级其实就够了。 如果不够,还可以通过 WebAssembly 等方式探索扩展。

核心能力

网站: https://openrocky.org/

Rocky 目前已经支持 30+ 个 Tools 和多种 Skills,覆盖了日常使用的主要场景:

  • 健康数据
     — 读取步数、心率、睡眠等 HealthKit 数据,生成报表
  • 日程管理
     — 设置闹钟、提醒事项(Apple Reminders)
  • 信息获取
     — 天气查询、网页搜索、GitHub 项目分析
  • 通讯
     — 读取联系人、发送邮件
  • 本地执行
     — Shell 命令、Python 脚本、文件读写
  • 记忆系统
     — 跨会话记忆,记住你的偏好
  • 内容输出
     — 将聊天内容总结为文档,支持下载

很多 Tools 尝试对齐了部分 OpenMinis 的能力,但也有一些 OpenMinis 支持的功能目前还没有覆盖。OpenMinis 在这方面确实做得非常出色。

不过对我自己来说,最核心的价值已经实现了:开车路上用语音和 Rocky 聊一路,到公司后让它把聊天内容总结成文档 —— 这个工作流已经跑通了。

与 OpenMinis 相比

如果非要做个对比,Rocky 有两个差异点:

  1. 语音优先
     — 这是我最原始的需求。实时双向语音交互,不是简单的语音转文字。
  2. 完全开源
     — 代码公开,欢迎社区参与。Apache 2.0 协议,给足大家自由度。

如何安装

这个项目目前没有提交 App Store。原因很现实:提交 App Store 需要准备演示视频、文案,和审核人员反复沟通,如果碰上不太专业的审核员,又会浪费大量时间。

目前的策略是:

  • iOS 版
     — 通过 TestFlight 分发,今天就可以安装
https://testflight.apple.com/join/GZtbEpXN
  • Android 版
     — 也已经做出来了,由 Claude 1:1 从 iOS 版翻译而来(没有进行大量测试),测试版同步可用
https://play.google.com/apps/testing/com.xnu.rocky
  • App Store / Google Play — 正在提交中,但审核流程确实繁琐,会持续推进

  • 源码,会开发的朋友可以马上用 Xcode 或 Android Studio 运行起来了

iOS: https://github.com/openrocky/openrocky
Android: https://github.com/openrocky/openrocky_android

一个还没解决的问题

我设想中的理想场景是:在开车时通过 "嘿 Siri" 直接启动 Rocky,然后立刻开始语音交互。但目前在驾驶模式下,Siri 似乎无法正常拉起 Rocky —— 不确定是 bug 还是系统安全策略的限制。如果你知道原因,非常欢迎告诉我。

探索更多

在 APP 中,我给每一个 Tool 都加了 Prompt 示例。点击右下角的加号,选择 "Prompts",就可以看到各种用法示例,欢迎探索。

但是我其实还是感觉这个 app 比较小众,对我来说主要是解决开车场景的需求。欢迎大家交流哈。大家可以在 github readme 中找到交流群。

截图

app 还是很初级,下面是一点点截图,更多 tools/skills(更多 bug)等待大家发现。

iOS 版本

IMG_7459.png

IMG_7460.png

IMG_7461.png

Android 版本

Weixin Image_20260410235231_7_2130.png

Weixin Image_20260410235232_8_2130.png

Weixin Image_20260410235251_9_2130.png

最后

由于我先开发的 iOS版本,iOS版本也是我自己用的最多的版本,因此 iOS 相对要稳定。Android 版本刚刚用 Claude Code 翻译出来,仅初步点了几下,所以目前一定有很多 bug,大家参考哈。

欢迎大家Pull Request,加入更多有趣的功能。Apache 2.0 协议,大家也可以 Folk 改造自己的助手哈。

最后欢迎大家 Star 鼓励一下啦
Website: https://openrocky.org/
iOS : https://github.com/openrocky/openrocky
Android : https://github.com/openrocky/openrocky_android