astrbot_plugin_linx —— 让 AstrBot 主智能体通过函数调用(agent-as-tool)指挥 Open-AutoGLM(PhoneAgent) 操控你的安卓手机:打开应用、搜索、查看消息、执行多步任务,全程可视、可确认、可接管。
- 智能层:AstrBot(PC 大脑,LLM 对话 / 工具调度)
- 手机操控:Open-AutoGLM(
phone_agent,VLM 理解屏幕并注入操作) - 形态:AstrBot 插件,注册 6 个 LLM 工具
| 项 | 要求 |
|---|---|
| AstrBot | ≥ 4.27(WebUI 可访问) |
| Python | 3.12+(AstrBot 的运行环境) |
| adb | platform-tools(adb devices 可用) |
| 手机 | 安卓,开启 USB 调试并授权本机 |
| API Key | 智谱 BigModel(手机 VLM 需要 AutoGLM-Phone / GLM-4V 等多模态模型) |
# 以 F:\AstrBot 为例(换成你的 AstrBot Python 解释器)
F:\AstrBot\backend\python\python.exe -m pip install D:\Desktop\LinX\phone- 自动安装依赖
Pillow+openai ⚠️ 不要用-e(editable)方式安装:运行中的 AstrBot 进程读不到.pth,需重启才生效
- 方式 A(推荐):AstrBot WebUI → 插件管理 → 上传
docs/astrbot_plugin_linx.zip - 方式 B:解压到
AstrBot/data/plugins/astrbot_plugin_linx/
- 在 AstrBot「模型配置」页添加一个多模态模型(如
AutoGLM-Phone、GLM-4V 系列) - 插件配置页 →「手机操控模型」下拉选中该模型(API 地址/Key 自动取自模型配置)
- 或给 AstrBot 进程设置环境变量
ZHIPU_API_KEY=<智谱 key>(插件留空时使用,模型默认AutoGLM-Phone)
- 或给 AstrBot 进程设置环境变量
⚠️ 纯文本模型无法理解手机屏幕截图,手机任务会失败——请务必选多模态模型。
adb devices # 确认设备已授权(如 504b20f8 device)手机黑屏会自动唤醒(插件已内置);有密码/图案锁屏时需手动解锁一次。
在 AstrBot 聊天窗口对话:
用手机打开微信查看消息
用手机搜索淘宝的无线耳机
主 agent 会自动调用 phone_run_task,手机子智能体逐步执行并汇报。
| 工具 | 说明 |
|---|---|
phone_status() |
手机连接状态与任务信息 |
phone_run_task(instruction, max_steps, timeout) |
执行手机任务(截图→VLM→注入→循环) |
phone_screenshot() |
手机屏幕截图(base64) |
phone_confirm(request_id, approved) |
应答敏感操作确认 |
phone_takeover_done(request_id) |
人工接管完成 |
phone_force_stop(task_id) |
紧急终止任务 |
在 AstrBot WebUI → 插件管理 → astrbot_plugin_linx → 配置:
| 配置项 | 说明 |
|---|---|
| 手机操控模型 |
下拉选择 AstrBot 已配置的多模态模型(地址/Key 自动取自该模型);留空则用 ZHIPU_API_KEY + 默认 AutoGLM-Phone |
| 最大执行步数 | 默认 50 |
| 任务超时(秒) | 默认 180 |
LinX/
├── brain/data/plugins/astrbot_plugin_linx/ # 手机桥插件(本仓库核心)
│ ├── main.py # 入口:6 个 LLM 工具
│ ├── _conf_schema.json # 插件配置(模型选择)
│ ├── metadata.yaml / README.md
│ └── phone/ # bridge(单飞/回调桥/唤醒)、heartbeat
├── phone/ # Open-AutoGLM(git submodule)
├── scripts/ # 环境检查 / 演示 / 测试
└── docs/ # 插件分发 zip
