turn old phones into ai agents - give it a goal in plain english. it reads the screen, thinks about what to do, taps and types via adb, and repeats until the job is done.
1.3k
Stars
196
Forks
5
Watchers
10
Issues
一个可以控制安卓手机的 AI Agent。只需用自然语言输入目标,它就能自行判断该点击、输入或滑动哪里。
下载安卓 APK (v0.5.3) | 控制台 | Discord
我一直想把闲置的安卓设备变成 AI Agent。在花了几个小时对辅助功能树(Accessibility Trees)进行逆向工程并折腾了 Tailscale 之后,它成功了。
可以这样理解——几年前,我们只能通过预设的流程来自动化安卓操作。现在,想象一下这个自动化层拥有了 LLM 大脑。它能够读取任何屏幕、理解当前状态、决定执行操作并落实。你不需要 API,也不需要构建任何集成。只需安装你常用的应用程序,然后告诉 Agent 你想要完成的任务即可。
它目前最强大的功能之一是:将收到的请求委托给设备上的 ChatGPT、Gemini 或 Google Search,并将结果带回来。这无需这些服务的 API Key,它就像人类一样直接操作这些 App。
$ bun run src/kernel.ts
enter your goal: open youtube and search for "lofi hip hop"
--- step 1/30 ---
think: i'm on the home screen. launching youtube.
action: launch (842ms)
--- step 2/30 ---
think: youtube is open. tapping search icon.
action: tap (623ms)
--- step 3/30 ---
think: search field focused.
action: type "lofi hip hop" (501ms)
--- step 4/30 ---
action: enter (389ms)
--- step 5/30 ---
think: search results showing. done.
action: done (412ms)
其核心理念非常简单:一个不断循环的 感知 (Perception) → 推理 (Reasoning) → 行动 (Action) 过程,直到目标完成(或步骤耗尽)。
┌─────────────────────────────────────────┐
│ your goal │
│ "send good morning to mom on whatsapp"│
└────────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ │
│ ┌──────────────┐ │
│ │ 1. perceive │ │
│ └──────┬───────┘ │
│ │ │
│ dump accessibility tree via adb │
│ parse xml → interactive ui elements │
│ diff with previous screen (detect changes) │
│ optionally capture screenshot │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 2. reason │ │
│ └──────┬───────┘ │
│ │ │
│ send screen state + goal + history to llm │
│ llm returns { think, plan, action } │
│ "i see the search icon at (890, 156). │
│ i should tap it." │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 3. act │ │
│ └──────┬───────┘ │
│ │ │
│ execute via adb: tap, type, swipe, etc. │
│ feed result back to llm on next step │
│ check if goal is done │
│ │ │
│ ▼ │
│ done? ─────── yes ──→ exit │
│ │ │
│ no │
│ │ │
│ └─────── loop back to perceive │
│ │
└─────────────────────────────────────────────────┘
让 LLM 控制 UI 听起来很不稳定。如果处理不好故障模式,确实如此。以下是 Droidclaw 的应对之道:
DroidClaw 是一个基于人工智能的自动化代理项目,旨在将闲置的安卓手机转化为能够自主操作的智能体。通过将大语言模型与安卓设备底层调试工具(ADB)结合,该项目能够让手机理解并自动执行用户通过自然语言下达的复杂任务。
它通过视觉与布局分析实时感知当前手机屏幕状态。模型能够通过思考逻辑确定下一步动作,包括点击、输入和滑动等操作。系统内置了自动化的感知、推理与执行循环,直至任务达成。它具备完善的纠错机制,能够有效处理循环点击、死循环或 UI 交互失败等常见自动化痛点。
该项目非常适合希望实现安卓设备自动化任务、且不想进行复杂 API 开发的个人用户。它特别适用于利用闲置手机完成重复性的手机操作,或是将手机作为执行复杂任务的端侧智能助手。