DroidRun
扫码查看

赋予AI原生控制安卓与iOS手机的移动智能体框架

DroidRun

综合介绍

DroidRun 是一个开源的移动智能体(Mobile Agent)框架,其核心是赋予人工智能(AI)对物理或虚拟手机(支持安卓与iOS)进行原生控制的能力。它不仅仅是简单的屏幕自动化,而是作为一个真正的“移动智能体”,能够理解复杂的自然语言指令,并在移动设备上执行多步骤的工作流程。用户可以通过这个框架自动化处理手机上的日常任务,例如自动登录应用、预订酒店、在线购物等。DroidRun还能访问并提取那些仅在App内部才能获取的数据,比如需要登录才能查看的个人信息或移动端专属的优惠。该项目提供两种主要的使用形式:一个功能强大的开源Python软件开发工具包(SDK),供开发者进行深度定制和集成;以及一个即将推出的云平台(Cloud),提供开箱即用的托管解决方案,包含了凭据管理、并行任务处理等更高级的功能,旨在帮助用户将移动自动化方案从零部署到生产环境。

功能列表

DroidRun 提供开源SDK和即将上线的云平台两种服务,其功能各有侧重。

开源SDK核心功能:

  • 自然语言控制: 用户可以使用日常语言(如“打开设置检查电量”)来直接操作手机。
  • 跨平台支持: 能够控制安卓(Android)和苹果(iOS)两大平台的物理设备或虚拟设备。
  • 视觉与规划能力: AI智能体能够“看见”并理解手机屏幕上的内容,并具备规划能力,以完成如“先搜索航班,再预定酒店”之类的多步骤复杂任务。
  • 广泛的LLM兼容性: 支持与主流的大语言模型集成,包括Google Gemini、OpenAI GPT系列,以及通过Ollama运行的本地模型。
  • 灵活集成: 可以轻松地与现有的技术栈(如N8N、Zapier或自定义脚本)结合,为任何工作流增加真实的App执行能力。

云平台(Cloud)高级功能 (部分功能需加入等待名单):

  • 一键启动云端智能体: 无需本地配置,在几秒钟内即可启动一个预装了常用应用的云端虚拟手机。
  • 凭据管理: 只需输入一次账户密码(如Google、Apple、LinkedIn等),云平台会安全地保存并在需要时自动填充,简化登录流程。
  • 并行任务执行: 支持启动多个虚拟设备,并行处理多个自动化任务,大幅提升效率。
  • 复杂工作流编排: 使用自然语言即可创建跨越多个应用、包含多个步骤和判断条件的复杂工作流。
  • 工作流录制与重放 (Auto Replay): 只需手动操作一次,系统便能录制整个流程,之后可以随时以极快的速度自动重放该流程。

使用帮助

无论是使用简单的命令行,还是编写Python脚本,DroidRun都提供了清晰的上手路径。下面将详细介绍如何安装和使用其开源SDK。

第一步:环境准备

在开始之前,请确保你的电脑和手机已准备就绪。

  1. 安装安卓调试桥 (ADB)ADB是连接电脑和安卓设备的关键工具。请先从Android官方网站下载并安装Android SDK Platform-Tools。安装后,将手机通过USB连接到电脑,然后在电脑的终端(或命令提示符)中运行adb devices。如果列表中显示了你的设备ID,则表示ADB环境配置成功。
  2. 配置安卓手机
    • 开启开发者选项: 进入手机的「设置」>「关于手机」,连续点击「版本号」七次,直到屏幕提示“您现在处于开发者模式”。
    • 开启USB调试: 返回「设置」,进入「系统」>「开发者选项」,找到并启用「USB调试」功能。当手机屏幕弹出授权提示时,请选择“允许”。
  3. 获取大语言模型 (LLM) 的API密钥DroidRun需要调用LLM来理解指令。你需要一个LLM服务商的账户(例如Google AI或OpenAI)并获取API密钥(API Key)。请将此密钥保存好,后续代码中需要使用。

第二步:安装 DroidRun

在你的电脑上打开终端,使用Python的包管理器pip来安装DroidRun。

pip install droidrun

第三步:编写Python脚本开始使用

使用Python SDK是发挥DroidRun强大自动化能力的最佳方式。你可以通过编写简单的脚本来执行复杂的任务。

以下是官方提供的一个使用Google Gemini模型来操作手机的示例代码。这个脚本的目标是“打开设置并检查电池电量”。

  1. 创建一个名为 run_agent.py 的文件。
  2. 将以下代码复制并粘贴到文件中。
import asyncio
from llama_index.llms.google_genai import GoogleGenAI
from droidrun import DroidAgent, AdbTools
async def main():
# 步骤1: 加载ADB工具,它会自动连接到第一个已连接的设备
tools = await AdbTools.create()
# 步骤2: 设置并加载你选择的Gemini大语言模型
# 请务必将 "YOUR_GEMINI_API_KEY" 替换为你自己的真实密钥
llm = GoogleGenAI(
api_key="YOUR_GEMINI_API_KEY",
model="models/gemini-1.5-flash",  # 你也可以选择更强的 "gemini-1.5-pro"
)
# 步骤3: 创建一个DroidAgent智能体实例
agent = DroidAgent(
goal="Open Settings and check battery level", # 设置智能体需要完成的目标
llm=llm,
tools=tools,
vision=True,      # 设为 True,因为任务需要理解屏幕内容
reasoning=False,  # 对于简单任务可设为 False,复杂任务则设为 True 以启用规划能力
)
# 步骤4: 运行智能体并等待它完成任务
result = await agent.run()
# 步骤5: 打印任务的执行结果
print(f"Success: {result['success']}")
if result.get('output'):
print(f"Output: {result['output']}")
if __name__ == "__main__":
asyncio.run(main())
  1. 运行脚本: 在终端中,进入你保存文件的目录,然后执行以下命令:
    python run_agent.py
    

之后,你就可以观察到你的手机自动开始执行操作,打开设置应用并完成你指定的任务。

应用场景

  1. 移动端工作流自动化你可以将多个App的操作串联起来,形成一个完整的工作流。例如,你可以设定一个任务:“在Skyscanner上搜索下周从上海到东京的航班,找到价格最低的选项截图,然后打开Booking.com,搜索同一时间段内东京的酒店,并将航班和酒店信息汇总后通过Telegram发给我。”
  2. 访问并提取移动端独有数据很多应用的数据无法通过传统网络爬虫获取,例如需要登录才能查看的订单历史、移动端专属的折扣或商品信息。DroidRun可以模拟真实用户登录并浏览,将这些隐藏在App深处的数据提取出来,用于市场分析或个人存档。
  3. 自动化应用测试与回归测试对于App开发者和测试人员,可以编写自然语言脚本来替代繁琐的手动测试。例如,指令可以是“打开App,使用测试账号登录,进入个人中心,修改昵称,然后验证昵称是否修改成功并退出登录”。这大大提升了测试效率。
  4. 集成到现有自动化系统DroidRun可以作为一个“执行器”被集成到N8N或Zapier等更广泛的自动化平台中。当某个工作流需要与一个没有提供API的手机App交互时,可以调用DroidRun智能体来完成这部分操作,打通整个自动化链路。

QA

  1. DroidRun开源版和云平台(Cloud)有什么区别?开源版(SDK)是一个功能强大的工具包,你需要自己在本地电脑上进行安装和配置,适合开发者和有一定技术能力的用户进行深度定制。云平台则是一个“开箱即用”的托管服务,你无需关心环境配置,可以直接在网页上创建和管理智能体,并享受凭据管理、并行任务等高级功能,更适合企业和希望快速实现生产部署的场景。
  2. 使用DroidRun一定要付费吗?DroidRun开源框架本身是免费的。但是,你在使用时需要调用第三方的大语言模型(LLM),这些服务商(如Google, OpenAI)会根据你的API调用量收取费用。此外,未来推出的DroidRun云平台服务也可能会采用付费订阅模式。
  3. DroidRun真的支持iOS系统吗?是的,根据官方文档,DroidRun的设计目标是同时支持安卓(Android)和苹果(iOS)设备。虽然目前大多数示例和社区讨论都围绕安卓展开,但其底层架构已为跨平台支持做好了准备。
  4. 如果我不想用国外的LLM,可以使用本地模型吗?可以。官方文档中提到了支持通过Ollama来运行本地的大语言模型。这意味着你可以在自己的电脑上部署开源的LLM(如Llama 3),并将DroidRun连接到本地模型,这样既可以保护数据隐私,也可能节省API费用。
微信微博Email复制链接