Files
cmroubao/android-buyer/README.md
T

541 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<p align="center">
<img src="docs/images/logo.png" alt="肉包 Roubao - AI Android Automation" width="120" height="120">
</p>
<h1 align="center">肉包 Roubao</h1>
<p align="center">
<strong>首款无需电脑的开源 AI 手机自动化助手 | AI Phone Automation Assistant</strong>
</p>
<p align="center">
基于视觉语言模型 (VLM) · 原生 Android Kotlin · 多 Agent 协作架构
</p>
<p align="center">
<a href="README_EN.md">English</a> | 简体中文
</p>
<p align="center">
<img src="https://img.shields.io/badge/Platform-Android-green.svg" alt="Platform">
<img src="https://img.shields.io/badge/Min%20SDK-26-blue.svg" alt="Min SDK">
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License">
<img src="https://img.shields.io/badge/Language-Kotlin-purple.svg" alt="Language">
</p>
<p align="center">
<img src="docs/demo/demo.gif" width="280" alt="演示">
</p>
<p align="center">
<img src="docs/screenshots/1.jpg" width="180" alt="首页">
<img src="docs/screenshots/3.jpg" width="180" alt="能力">
<img src="docs/screenshots/2.jpg" width="180" alt="执行记录">
<img src="docs/screenshots/4.jpg" width="180" alt="设置">
</p>
---
## 项目背景
2025 年 12 月,字节跳动联合中兴发布了「豆包手机助手」,一款能够自动操作手机完成复杂任务的 AI 助手。它能帮你比价下单、批量投简历、刷视频,甚至代打游戏。
首批 3 万台工程机定价 3499 元,上线当天即告售罄,二手市场一度炒到 5000+。
**买不到?那就自己做一个。**
于是有了肉包——一个完全开源的 AI 手机自动化助手。
为什么叫「肉包」?因为作者不爱吃素。🥟
---
## 与同类项目的对比
| 特性 | 肉包 | 豆包手机 | 其他开源方案 |
|------|------|----------|--------------|
| 需要电脑 | ❌ 不需要 | ❌ 不需要 | ✅ 大多需要 |
| 需要购买硬件 | ❌ 不需要 | ✅ 需要 3499+ | ❌ 不需要 |
| 原生 Android 实现 | ✅ Kotlin | ✅ 原生 | ❌ Python |
| 开源 | ✅ MIT | ❌ 闭源 | ✅ 开源 |
| Skills/Tools 架构 | ✅ 完整 | ❓ 未知 | ❌ 无 |
| UI 设计 | ⭐⭐⭐½ | ⭐⭐⭐⭐ | ⭐⭐ |
| 自定义模型 | ✅ 支持 | ❌ 仅豆包 | ✅ 部分支持 |
### 我们解决了什么问题?
**传统的手机自动化方案痛点:**
- 必须连接电脑运行 ADB 命令
- 需要部署 Python 环境和各种依赖
- 只能在电脑端操作,手机必须通过数据线连接
- 技术门槛高,普通用户难以使用
**肉包的解决方案:**
一个 App,装上就能用。无需电脑、无需数据线、无需任何技术背景。
打开 App → 配置 API Key → 说出你想做的事 → 完成。
---
## 为什么选择肉包?
### 原生 Android 实现,不是 Python 脚本的封装
市面上几乎所有手机自动化开源项目(包括阿里的 MobileAgent)都是 **Python 实现**,需要:
- 在电脑上运行 Python 脚本
- 手机通过 USB/WiFi ADB 连接电脑
- 截图通过 ADB 传输到电脑,处理后再把操作指令传回手机
**肉包完全不同。**
我们用 **Kotlin 重写了整个 MobileAgent 框架**,原生运行在 Android 设备上:
- 截图、分析、执行全部在手机本地完成
- 无需电脑中转,延迟更低
- 利用 Shizuku 获得系统级权限,而非繁琐的 ADB 命令
### 为什么需要 Shizuku?
Android 系统出于安全考虑,普通 App 无法:
- 模拟用户点击、滑动屏幕
- 读取其他 App 的界面内容
- 执行 `input tap`、`screencap` 等系统命令
传统方案需要连接电脑执行 ADB 命令。而 **Shizuku** 是一个优雅的解决方案:
1. 通过无线调试或电脑 ADB **启动一次** Shizuku 服务
2. 之后普通 App 就可以获得 ADB 级别的权限
3. **无需 Root**,无需每次都连接电脑
这让肉包可以直接在手机上执行截图、点击、输入等操作,真正实现「一个 App 搞定一切」。
### 类 Claude Code 的 Tools/Skills 双层架构
受 [Claude Code](https://claude.ai/claude-code) 架构启发,肉包实现了 **Tools + Skills 双层 Agent 框架**:
```
用户: "帮我点份外卖"
│
▼
┌─────────────┐
│ SkillManager │ ← 意图识别
└─────────────┘
│
┌────┴────┐
│ │
▼ ▼
🚀 快速路径 🤖 标准路径
(Delegation) (GUI 自动化)
│ │
▼ ▼
直接 DeepLink Agent 循环
打开小美 AI 操作美团 App
```
**Tools 层(原子能力)**
底层工具集,每个 Tool 完成一个独立操作:
| Tool | 功能 |
|------|------|
| `search_apps` | 智能搜索已安装应用(支持拼音、语义) |
| `open_app` | 打开应用 |
| `deep_link` | 通过 DeepLink 跳转到 App 特定页面 |
| `clipboard` | 读写剪贴板 |
| `shell` | 执行 Shell 命令 |
| `http` | HTTP 请求(调用外部 API) |
**Skills 层(用户意图)**
面向用户的任务层,将自然语言映射到具体操作:
| Skill | 类型 | 描述 |
|-------|------|------|
| 点外卖(小美) | Delegation | 直接打开小美 AI 让它帮你点 |
| 点外卖(美团) | GUI 自动化 | 在美团 App 上一步步操作 |
| 导航(高德) | Delegation | DeepLink 直达高德搜索 |
| 生成图片(即梦) | Delegation | 打开即梦 AI 生成图片 |
| 发微信 | GUI 自动化 | 自动操作微信发消息 |
**两种执行模式:**
1. **Delegation(委托)**:高置信度匹配时,直接通过 DeepLink 打开有 AI 能力的 App(如小美、豆包、即梦),让它们完成任务。**快速、一步到位。**
2. **GUI 自动化**:没有 AI 能力的 App(如美团、微信),通过传统的截图-分析-操作循环完成。Skill 会提供操作步骤指导,提高成功率。
---
## 核心特性
### 🤖 智能 AI Agent
- 基于先进的视觉语言模型(VLM),能够"看懂"屏幕内容
- 自然语言指令,说人话就能操作手机
- 智能决策,根据屏幕状态自动规划下一步操作
### 🎨 精心设计的 UI
**这可能是所有手机自动化开源项目中 UI 做得最好看的。**
- 现代化 Material 3 设计语言
- 流畅的动画效果
- 深色/浅色主题自适应
- 精心设计的首次使用引导
- 完整的中英文双语支持
### 🔧 高度可定制
- 支持多种 VLM:阿里云通义千问、OpenAI GPT-4V、Claude 等
- 预设 API 服务商:阿里云、OpenAI、OpenRouter 一键切换
- 从 API 动态获取可用模型列表,支持模糊搜索
- 可配置自定义 API 端点,支持本地模型(Ollama、vLLM 等)
### 🔐 安全保护
- API Key 使用 AES-256-GCM 加密存储
- 检测到支付、密码等敏感页面自动停止
- 任务执行全程可视,悬浮窗显示进度
- 随时可以手动停止任务
- 可选的云端崩溃上报(可在设置中关闭)
### 🔓 Root 模式支持
当 Shizuku 以 Root 权限运行时,肉包可以启用 Root 模式:
- **Root 模式**:解锁更多系统级操作能力
- **su 命令**:允许执行 `su -c` 命令(需谨慎使用)
- **自动检测**:自动检测 Shizuku 权限等级(ADB/Root),非 Root 环境下该选项为灰色不可用
---
## 快速开始
### 前置要求
1. **Android 8.0 (API 26)** 或更高版本
2. **WiFi 网络** - Shizuku 无线调试依赖 WiFi 连接,确保手机已连接 WiFi
3. **Shizuku** - 用于获取系统级控制权限
4. **VLM API Key** - 需要视觉语言模型的 API 密钥(如阿里云通义千问)
### 安装步骤
#### 1. 安装并启动 Shizuku
Shizuku 是一个开源工具,可以让普通应用获得 ADB 权限,无需 Root。
- [Google Play](https://play.google.com/store/apps/details?id=moe.shizuku.privileged.api)
- [GitHub Releases](https://github.com/RikkaApps/Shizuku/releases)
**启动方式(二选一):**
**无线调试(推荐,需 Android 11+)**
1. 进入 `设置 > 开发者选项 > 无线调试`
2. 开启无线调试
3. 在 Shizuku App 中选择"无线调试"方式启动
**电脑 ADB**
1. 手机连接电脑,开启 USB 调试
2. 执行:`adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh`
#### 2. 安装肉包
从[上游 Releases](https://github.com/Turbo1123/roubao/releases) 页面下载最新 APK 安装。
#### 3. 授权与配置
1. 打开肉包 App
2. 在 Shizuku 中授权肉包
3. **⚠️ 重要:进入设置页面,配置你的 API Key**
### 获取 API Key
**阿里云通义千问(推荐国内用户)**
1. 访问 [阿里云百炼平台](https://bailian.console.aliyun.com/)
2. 开通 DashScope 服务
3. 在 API-KEY 管理中创建密钥
**OpenAI(需要代理)**
1. 访问 [OpenAI Platform](https://platform.openai.com/)
2. 创建 API Key
---
## 使用示例
```
帮我点个附近好吃的汉堡
打开网易云音乐播放每日推荐
帮我把最后一张照片发送到微博
帮我在美团点一份猪脚饭
打开B站看热门视频
```
---
## 技术架构
```
┌──────────────────────────────────────────────────────────────┐
│ 肉包 App │
├──────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ UI 层 (Compose) │ │
│ │ HomeScreen / Settings / History │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────▼────────────────────────────┐ │
│ │ Skills 层 │ │
│ │ SkillManager → 意图识别 → 快速路径/标准路径 │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ 点外卖 │ 导航 │ 打车 │ 发微信 │ AI画图 │ ... │ │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────▼────────────────────────────┐ │
│ │ Tools 层 │ │
│ │ ToolManager → 原子能力封装 │ │
│ │ ┌─────────────────────────────────────────────┐ │ │
│ │ │ search_apps │ open_app │ deep_link │ clipboard │ │
│ │ │ shell │ http │ screenshot │ tap │ swipe │ type │ │
│ │ └─────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────▼────────────────────────────┐ │
│ │ Agent 层 │ │
│ │ MobileAgent (移植自 MobileAgent-v3) │ │
│ │ ┌───────────┬───────────┬───────────┬──────────┐ │ │
│ │ │ Manager │ Executor │ Reflector │ Notetaker│ │ │
│ │ │ (规划) │ (执行) │ (反思) │ (记录) │ │ │
│ │ └───────────┴───────────┴───────────┴──────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────▼────────────────────────────┐ │
│ │ VLM Client │ │
│ │ Qwen-VL / GPT-4V / Claude │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
├────────────────────────────┼────────────────────────────────┤
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Shizuku │ │
│ │ System-level Control │ │
│ │ screencap │ input tap │ input swipe │ am start │ │
│ └─────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
```
### 工作流程
```
用户输入指令
│
▼
┌─────────────────┐
│ Skills 匹配 │ ← 检查是否有对应的 Skill
└─────────────────┘
│
├── 高置信度 Delegation Skill ──▶ 直接 DeepLink 跳转 ──▶ 完成
│
▼
┌─────────────────┐
│ 标准 Agent 循环 │
└─────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ 1. 截图 - Shizuku screencap │
│ 2. Manager 规划 - VLM 分析当前状态 │
│ 3. Executor 决策 - 确定下一步操作 │
│ 4. 执行动作 - tap/swipe/type/open_app │
│ 5. Reflector 反思 - 评估操作效果 │
│ 6. 循环直到完成或安全限制 │
└──────────────────────────────────────────────┘
```
### 项目结构
```
app/src/main/java/com/roubao/autopilot/
├── agent/ # AI Agent 核心 (移植自 MobileAgent-v3)
│ ├── MobileAgent.kt # Agent 主循环
│ ├── Manager.kt # 规划 Agent
│ ├── Executor.kt # 执行 Agent
│ ├── ActionReflector.kt # 反思 Agent
│ ├── Notetaker.kt # 笔记 Agent
│ └── InfoPool.kt # 状态池
│
├── tools/ # Tools 层 - 原子能力
│ ├── Tool.kt # Tool 接口定义
│ ├── ToolManager.kt # 工具管理器
│ ├── SearchAppsTool.kt # 应用搜索
│ ├── OpenAppTool.kt # 打开应用
│ ├── DeepLinkTool.kt # DeepLink 跳转
│ ├── ClipboardTool.kt # 剪贴板操作
│ ├── ShellTool.kt # Shell 命令
│ └── HttpTool.kt # HTTP 请求
│
├── skills/ # Skills 层 - 用户意图
│ ├── Skill.kt # Skill 接口定义
│ ├── SkillRegistry.kt # Skill 注册表
│ └── SkillManager.kt # Skill 管理器
│
├── controller/ # 设备控制
│ ├── DeviceController.kt # Shizuku 控制器
│ └── AppScanner.kt # 应用扫描 (拼音/语义搜索)
│
├── vlm/ # VLM 客户端
│ └── VLMClient.kt # API 调用封装
│
├── ui/ # 用户界面
│ ├── screens/ # 各个页面
│ ├── theme/ # 主题定义
│ └── OverlayService.kt # 悬浮窗服务
│
├── data/ # 数据层
│ └── SettingsManager.kt # 设置管理
│
└── App.kt # Application 入口
app/src/main/assets/
└── skills.json # Skills 配置文件
```
---
## 路线图
### 已完成 (v1.x)
- [x] **原生 Android 实现** - Kotlin 重写 MobileAgent,摆脱 Python 依赖
- [x] **Tools 层** - 原子能力封装(search_apps、deep_link、clipboard 等)
- [x] **Skills 层** - 用户意图映射,支持 Delegation 和 GUI 自动化两种模式
- [x] **智能应用搜索** - 拼音、语义、分类多维度匹配
- [x] **快速路径** - 高置信度 Skill 直接 DeepLink 跳转
### 🚀 v2.0 开发中
> 正在开发的重大更新,目前在 `roubao2.0+AccessibilityService` 分支
- [ ] **无障碍服务混合模式** - 集成 AccessibilityService,实现更精准的 UI 操作
- 优先使用元素索引点击(不受屏幕变化影响)
- 智能回退:索引模式失败时自动切换到坐标模式
- 无需 Root,进一步降低使用门槛
- [ ] **UI 树感知** - Agent 能够获取完整的 UI 结构
- 识别可点击元素、输入框、滚动区域
- 为 LLM 提供结构化 UI 上下文
- 减少纯视觉误判
- [ ] **宏脚本系统** - 录制、存储、回放操作序列
- 将执行过程录制为可重复播放的脚本
- 支持循环播放、延时控制
- 脚本管理界面(新增"脚本"导航页)
- [ ] **设置增强**
- 无障碍服务开关与引导
- 混合模式状态展示
### 近期计划
- [ ] **MCP (Model Context Protocol)** - 接入更多能力扩展,如日历、邮件、文件管理等
- [ ] **执行录屏** - 保存任务执行过程视频,方便回顾和调试
- [ ] **更多 Skills** - 扩充内置 Skills,支持用户自定义
### 中期计划
- [ ] **更多设备支持** - 适配更多 Android 设备和定制系统(MIUI、ColorOS、HarmonyOS 等)
- [ ] **本地模型** - 支持在设备端运行小型 VLM,实现离线使用
- [ ] **任务模板** - 保存和分享常用任务
### 长期愿景
- [ ] **多应用协作** - 跨 App 联动完成复杂工作流
- [ ] **智能学习** - 从用户操作习惯中学习,优化执行策略
- [ ] **语音控制** - 语音唤醒和语音指令
---
## 开发
### 环境要求
- Android Studio Hedgehog 或更高版本
- JDK 17
- Android SDK 34
### 构建
```bash
# 克隆仓库
git clone https://github.com/yourusername/roubao.git
cd roubao
# 构建 Debug 版本
./gradlew assembleDebug
# 安装到设备
./gradlew installDebug
```
---
## 问题反馈
遇到崩溃或 Bug?请通过以下方式反馈:
### 导出日志
1. 打开肉包 App → 设置
2. 找到「反馈与调试」分组
3. 点击「导出日志」
4. 选择分享方式(微信、邮件等)发送给开发者
### 日志包含的信息
- 设备型号和 Android 版本
- 应用版本号
- 崩溃堆栈信息(如有)
- 操作日志
> 💡 日志文件不包含您的 API Key 或个人隐私信息
### 提交 Issue
请在 [GitHub Issues](https://github.com/Turbo1123/roubao/issues) 提交问题,附上:
- 问题描述
- 复现步骤
- 导出的日志文件
---
## 贡献
欢迎提交 Issue 和 Pull Request!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 开启 Pull Request
---
## 许可证
本项目基于 MIT 许可证开源。详见 [LICENSE](LICENSE) 文件。
---
## 致谢
- [MobileAgent](https://github.com/X-PLUG/MobileAgent) - 阿里达摩院 X-PLUG 团队开源的移动端 Agent 框架,为本项目提供了重要的技术参考
- [Shizuku](https://github.com/RikkaApps/Shizuku) - 优秀的 Android 权限管理框架
---
<p align="center">
Made with ❤️ by Roubao Team
</p>