>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Kotlin

一款就在你手机上的独立AI Agent — 深入解析OpenDroid

像Google Assistant或Siri这样的传统移动助手早已触及天花板。它们在设置计时器和打开应用方面表现出色,但试着让你的手机执行一系列相关操作:查看天气预报、在WhatsApp上给妻子发消息、设置闹钟。通常,你得到的要么是建议你去搜索网页,要么是识别错误。

开发者Yashab Alam决定用不同的方式解决这个问题,并在GitHub上发布了OpenDroid项目。这是一个完全开源的Android自主AI Agent,能将你的智能手机变成LLM运行环境。

OpenDroid Logo

为什么还需要另一个助手

OpenDroid的核心思想是通过标准Android服务让神经网络直接控制设备。该系统不使用简单的模板,而是采用完整的规划和执行循环。

当你给出复杂指令时,Agent会将任务分解为子任务,检查每个步骤的结果,并在出现问题时重新制定计划。项目的源代码完全开放,你可以选择使用哪个模型——云端或完全本地。

该项目已在GitHub上获得超过600颗星,其扎实的Kotlin架构正吸引着越来越多的关注。

Agent的内部工作原理

OpenDroid的架构遵循Clean Architecture原则,通过Dagger-Hilt实现依赖注入。文本和逻辑被分离到清晰的模块中,界面使用Jetpack Compose编写。

com.opendroid.ai

├── accessibility/      Автоматизация сторонних приложений
├── actions/            60+ исполнителей действий в 10 модулях
├── core/
   ├── agent/          AgentLoop, PlanManager, IntentClassifier
   ├── llm/            Провайдеры LLM, цепочки фоллбеков, промпты
   ├── memory/         4-уровневая система памяти
   └── voice/          Детекция активационного слова, STT, TTS
├── data/               База данных Room и хранилище DataStore
└── ui/                 16 экранов на Jetpack Compose

内部有多个专业引擎协同工作,每个引擎负责各自的工作领域。

行动规划器和错误处理

PlanManager模块负责处理传入的指令。它接收文本或语音,发送到AI,并接收顺序计划作为输出。

如果指令包含多个意图,例如"打开WhatsApp并写一条消息",引擎会正确地将其分解为考虑依赖关系的步骤。如果在执行过程中网络中断或应用崩溃,AgentLoop会拦截错误并尝试执行替代操作。

通过Accessibility API理解屏幕

最有趣的组件之一是视觉引擎。为了分析屏幕上发生的情况,OpenDroid通过无障碍服务(Accessibility API)截取屏幕截图,并将其发送到多模态神经网络。

在较旧的设备上或使用轻量级本地模型时,助手会切换到解析Accessibility树,提取UI元素的文本结构,而无需图像处理。

OpenDroid Interface Planner Memory System Alarm Management

四个记忆层级

人类的上下文很少能装进单次对话中。OpenDroid使用四级信息存储系统:

  • 工作记忆处理当前正在执行的任务上下文。
  • 情景记忆存储过去运行的历史及其结果。
  • 语义记忆记住关于用户及其偏好的事实。
  • 程序记忆包含用户宏和现成的场景。

所有本地信息都写入Room数据库的七个表中,API密钥等密钥存储在Android Keystore中,采用AES-GCM加密。

支持12家AI提供商

OpenDroid不将开发者绑定到特定服务。该应用支持12家神经网络提供商,并配置了可回退链。如果主模型没有响应,请求会自动转到下一个提供商。

列表包括Google Gemini、Anthropic Claude、OpenAI、Groq、DeepSeek、Mistral、OpenRouter、Cohere、Together AI和GitHub Copilot。

对于隐私爱好者,有两种本地运行选项:

  1. 连接到家庭网络上的本地Ollama服务器。
  2. 内置的LiteRT-LM管理器,可以直接在智能手机上下载和运行模型,支持离线模式。

助手在实践中能做什么

仓库包含超过60个现成的操作。它们涵盖了几乎所有日常智能手机使用场景:

  • 系统设置:切换Wi-Fi、蓝牙、手电筒、勿扰模式,调整亮度和音量。
  • 通信:打电话、发送短信、WhatsApp消息、创建邮件草稿。
  • 导航和交通:在Google Maps中规划路线、叫出租车。
  • 金融:快速转账、分摊账单。
  • 媒体:控制音乐播放、在YouTube上搜索、用相机拍照。

如何构建和运行项目

构建项目需要Android SDK 35(Android 15)和JDK 21。JDK版本在Gradle配置中是严格固定的。

构建方式是标准的:

git clone https://github.com/yashab-cyber/opendroid.git
cd opendroid

./gradlew assembleDebug

准备好的APK文件将在app/build/outputs/apk/debug/app-debug.apk目录中。

首次启动时,应用会请求授予多个系统权限。这些权限包括无障碍服务权限、通知访问权限,以及用于跟踪激活短语录音的音频录制权限。

之后,你只需进入设置,输入所选提供商的API密钥或指定Ollama服务器地址。

是否值得研究OpenDroid的代码

该项目对想要了解如何创建自主AI Agent的Android开发者很有帮助。在这里,你可以看到在移动设备上实现复杂规划循环和UI解析的实际案例。

缺点包括运行所需的高权限级别,这对于这类工具来说是很自然的。此外,完整的屏幕视觉功能需要旗舰机型或强大的智能手机硬件。

OpenDroid展示了移动自动化的发展方向,并为你的实验提供了现成的架构基础。

相关项目