DroidRun:手机AI自动化
技术突破:从“看网页”到“动手机”
DroidRun是一个通过LLM代理控制Android设备的强大框架。它使用自然语言命令自动化Android设备交互。传统自动化工具如BrowserUse聚焦网页操作,ComputerUse处理桌面任务,而DroidRun首次打通LLM与移动OS的闭环。
功能亮点
- 使用自然语言命令控制Android设备
- 支持多个LLM提供商(OpenAI、Anthropic、Gemini)
- 易于使用的CLI
- 用于自定义自动化的可扩展Python API
快速上手DroidRun
安装前置条件
- Android设备(需开启开发者模式/USB调试)
- Python 3.8+(推荐Anaconda环境)
- 依赖库安装:
pip install droidrun
安装ADB
- Windows:下载ZIP包(https://developer.android.com/studio/releases/platform-tools)
- macOS:
brew install android-platform-tools
- Linux:
sudo apt install adb (Ubuntu/Debian) 或 sudo pacman -S android-tools (Arch)
安装好后,配置环境变量
安装DroidRun Portal应用
DroidRun需要Android设备上安装DroidRun Portal应用程序:
- 从DroidRun Portal存储库下(https://github.com/droidrun/droidrun-portal)载DroidRun门户APK
- 使用DroidRun安装应用程序:
droidrun setup --path=/path/to/droidrun-portal.apk
或者使用ADB安装:
adb install -r /path/to/droidrun-portal.apk
设置API Keys
在工作目录创建.env文件,设置环境变量:
export OPENAI_API_KEY="your_openai_api_key_here"
export ANTHROPIC_API_KEY="your_anthropic_api_key_here"
export GEMINI_API_KEY="your_gemini_api_key_here"
从.env文件加载环境变量:
source .env
连接Android设备
# 设备列表
droidrun device
# 连接你的设备
droidrun connect 192.168.0.1
验证设置
droidrun status
使用CLI
基本方式
droidrun "打开设置应用程序"
使用选项
# 使用 OpenAI
droidrun "打开计算器" --provider openai --model gpt-4o-mini
# 使用 Anthropic
droidrun "检查电池电量" --provider anthropic --model claude-3-sonnet-20240229
# 使用 Gemini
droidrun "安装并打开Instagram" --provider gemini --model gemini-2.0-flash
附加选项
# 指定设备
droidrun "打开Chrome浏览器并搜索天气" --device yourdevice1
# 设置最大步数
droidrun "打开设置并启用黑暗模式" --steps 20
Python脚本示例
#!/usr/bin/env python3
import asyncio
import os
from droidrun.agent.react_agent import ReActAgent
from droidrun.agent.llm_reasoning import LLMReasoner
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
async def main():
# Create an LLM instance (choose your preferred provider)
llm = LLMReasoner(
llm_provider="gemini", # 可以使用 "openai", "anthropic", or "gemini"
model_name="gemini-2.0-flash", # 选择模型
api_key=os.environ.get("GEMINI_API_KEY"), # 获取API秘钥
temperature=0.2
)
# 创建并运行 agent
agent = ReActAgent(
task="Open the Settings app and check the Android version",
llm=llm
)
steps = await agent.run()
print(f"Execution completed with {len(steps)} steps")
if __name__ == "__main__":
asyncio.run(main())