DroidRun:手机AI自动化技术突破:从“看网页”到“动手机”DroidRun是一个通过LLM代理控制Android设备的强大框架。它使用自然语言命令自动化Android设备交互。传统自动化工具如BrowserUse聚焦网页操作,ComputerUse处理桌面任务,而DroidRun首次打通LLM与移动OS的闭环。 功能亮点- 支持多个LLM提供商(OpenAI、Anthropic、Gemini)
快速上手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 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 importasyncio importos fromdroidrun.Agent.react_agentimportReActAgent fromdroidrun.agent.llm_reasoningimportLLMReasoner fromdotenvimportload_dotenv
# Load environment variables from .env file load_dotenv()
asyncdefmain(): # 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 =awaitagent.run() print(f"Execution completed with{len(steps)}steps")
if__name__ =="__main__": asyncio.run(main())
|