Open-AutoGLM开发者模式开启详细步骤

1. 什么是Open-AutoGLM的“开发者模式”

1.1 开发者模式的本质不是开关,而是能力组合

很多人第一次看到“开发者模式”会下意识认为这是个像手机设置里那样点一下就能打开的开关。其实不然——Open-AutoGLM没有一个叫“开发者模式”的独立功能按钮。所谓开发者模式,是指你完整打通从本地控制端、设备连接、模型服务到任务执行的全链路能力。它意味着你能:

  • 看见每一步AI在想什么(不是黑盒调用,而是输出思考过程)
  • 自由更换设备、切换本地/远程模型、调整参数
  • 在代码里直接调用核心类,而不是只依赖命令行
  • 遇到问题时能定位到ADB层、模型层还是逻辑层

换句话说,开发者模式 = 可观察 + 可干预 + 可扩展。它不是终点,而是你真正开始定制和深入使用的起点。

1.2 为什么必须手动配置?自动部署为什么不够

Open-AutoGLM镜像(如vLLM-Omni平台上的预置镜像)通常已预装模型服务和基础依赖,但它无法自动完成设备侧配置。原因很实在:

  • ADB调试权限必须由用户在手机上手动点击“允许”,系统不允许远程授权
  • ADB Keyboard输入法需要用户主动启用并设为默认,涉及Android安全策略
  • 每台手机的IP地址、设备ID、USB连接状态都不同,无法统一预设
  • 开发者需要根据实际网络环境选择USB直连、WiFi直连或远程云设备,路径不可预测

所以,镜像给你的是“引擎”,而开发者模式是你亲手把方向盘、油门、后视镜都装好,并确认每颗螺丝都拧紧的过程。


2. 四步走通开发者模式:从零到可调试

2.1 第一步:让电脑真正“看见”你的手机

这一步失败,后面全部归零。别跳过验证环节。

2.1.1 ADB安装与路径确认(三系统统一检查法)

无论你用Windows、macOS还是Linux,请在终端/命令提示符中执行这一行:

adb version 2>/dev/null || echo "ADB未安装或未加入PATH"
  • 如果输出类似 Android Debug Bridge version 1.0.41 → 通过
  • 如果提示 command not found不是内部或外部命令 → 需重装或配PATH

快速自查清单(不用翻教程):

  • Windows:打开命令提示符,输入 where adb,应返回类似 C:\platform-tools\adb.exe
  • macOS:打开终端,输入 which adb,应返回 /opt/homebrew/bin/adb/usr/local/bin/adb
  • Linux:输入 which adb,应返回 /usr/bin/adb/usr/local/bin/adb

注意:adb 命令必须能在任意目录下运行,不能只在 platform-tools 文件夹里才有效。这是PATH没配对的典型表现。

2.1.2 手机端“允许调试”必须亲手点三次

很多用户卡在这一步,却以为是电脑问题。请严格按顺序操作:

  1. 先连USB线(确认是数据线!插上后手机通知栏应有“正在通过USB充电”提示,不是“仅充电”
  2. 手机弹窗出现“允许USB调试吗?” → 点击 “允许”(不是“确定”,不是“始终允许”,就是这一次)
  3. 立即在电脑执行 adb devices
    • 若显示 unauthorized → 断开USB,进手机「开发者选项」→「撤销USB调试授权」→ 重连 → 再点“允许”
    • 若仍不显示设备 → 换USB口、换线、重启手机ADB(adb kill-server && adb start-server

正确输出示例:

List of attached devices  
ZY22528XJ7    device
2.1.3 ADB Keyboard不是装完就完事,必须“激活+设默认”

很多用户装了APK却输不出中文,根源在此:

# 1. 确认APK已安装(输出应含com.android.adbkeyboard)
adb shell pm list packages | grep adbkeyboard

# 2. 确认已启用(输出应含enabled)
adb shell ime list -s

# 3. 设为默认(关键!必须执行)
adb shell ime set com.android.adbkeyboard/.AdbIME

# 4. 验证是否生效(输出必须是这一串)
adb shell settings get secure default_input_method
#  正确返回:com.android.adbkeyboard/.AdbIME

如果第4步返回空或别的包名,说明没生效。请勿跳过第3步。


2.2 第二步:本地模型服务启动——不是“跑起来就行”,而是“稳住再用”

你不需要自己训练模型,但必须让vLLM服务稳定承载AutoGLM-Phone-9B。重点不在参数多,而在避坑

2.2.1 最简启动命令(适合首次验证)

别一上来就抄长命令。先用这个最小集验证服务能否跑通:

python3 -m vllm.entrypoints.openai.api_server \
  --model zai-org/AutoGLM-Phone-9B-Multilingual \
  --port 8000 \
  --max-model-len 25480 \
  --tensor-parallel-size 1
  • --tensor-parallel-size 1:强制单卡,避免多卡初始化失败
  • --port 8000:固定端口,方便后续脚本引用
  • 其他参数(如mm-processor、cache-type)首次可省略,等基础服务跑通再加

启动成功标志:终端最后几行出现

INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)  
INFO:     Started reloader process [xxxx] using statreload  
2.2.2 三秒验证服务是否真活(比curl更准)

别只信curl返回200。用这个命令看模型是否加载完成:

curl -s http://localhost:8000/v1/models | jq -r '.data[0].id' 2>/dev/null || echo "服务未响应或模型未加载"
  • 如果输出 autoglm-phone-9b-multilingual(或你设的served-model-name)→ 模型已就绪
  • 如果超时或报错 → 检查vLLM日志里是否有 OSError: CUDA out of memoryFailed to load model

小技巧:首次启动会下载20GB模型权重,网速慢时可能卡在 Loading model weights 十几分钟。耐心等待,不要中断。


2.3 第三步:控制端代码部署——克隆、装包、验模块,三步闭环

这一步的目标是:让你的Python能import PhoneAgent,并能创建实例

2.3.1 创建干净虚拟环境(强烈建议)
git clone https://github.com/zai-org/Open-AutoGLM.git
cd Open-AutoGLM
python3 -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
2.3.2 安装依赖的“黄金顺序”
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
pip install vllm==0.6.3.post1  # 用文档指定版本,避免兼容问题
pip install -e .

验证安装:运行

python -c "from phone_agent import PhoneAgent; print(' PhoneAgent可导入')"  

若报错 ModuleNotFoundError,90%是 -e . 没执行,或当前目录不是Open-AutoGLM根目录。

2.3.3 用一行代码测通全链路(比main.py更轻量)

在项目根目录下,新建 test_dev_mode.py

from phone_agent import PhoneAgent
from phone_agent.model import ModelConfig

# 用你的真实设备ID(adb devices第一列)
device_id = "ZY22528XJ7"  
model_config = ModelConfig(
    base_url="http://localhost:8000/v1",
    model_name="autoglm-phone-9b-multilingual"
)

agent = PhoneAgent(model_config=model_config, device_id=device_id)
print(" PhoneAgent实例创建成功")
print(" 设备连接状态:", "已连接" if agent.adb.is_connected() else "未连接")

运行它:python test_dev_mode.py

  • 输出两行 → 开发者模式主干已通
  • 若卡在 adb.is_connected() → 回头检查2.1节设备连接
  • 若报vLLM连接错误 → 回头检查2.2节服务是否监听0.0.0.0(不是127.0.0.1)

2.4 第四步:进入开发者模式——用verbose看透AI每一步

现在,你拥有了所有零件。真正的开发者模式,从加一个参数开始。

2.4.1 命令行开启“透视眼”模式
python main.py \
  --device-id ZY22528XJ7 \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b-multilingual \
  --verbose \
  "打开微信,给文件传输助手发一条‘你好’"

你会看到类似这样的输出:

==================================================  
【视觉理解】已截取屏幕,图像尺寸 1080x2340,送入模型分析...  
--------------------------------------------------  
【AI思考】当前界面是微信主屏,底部有“微信”“通讯录”“发现”“我”四个tab。  
任务需进入聊天页,应先点击右上角“+”号,再选“发起群聊”?不对,目标是“文件传输助手”。  
该联系人位于通讯录顶部,但当前在主屏,需先点击“通讯录”tab。  
--------------------------------------------------  
【执行动作】Tap at (540, 2200) → 点击通讯录tab  
==================================================  
【视觉理解】新截图已获取,当前为通讯录列表页...  
--------------------------------------------------  
【AI思考】“文件传输助手”在列表顶部,坐标约为(540, 320),直接点击即可。  
--------------------------------------------------  
【执行动作】Tap at (540, 320) → 点击文件传输助手  
==================================================  
【视觉理解】新截图已获取,当前为聊天窗口...  
--------------------------------------------------  
【AI思考】输入框在底部,需先点击激活,再输入文字。  
--------------------------------------------------  
【执行动作】Tap at (540, 2250) → 点击输入框  
【执行动作】Input text: 你好  
【执行动作】Press enter  

这就是开发者模式的核心价值:你不再猜测AI为什么失败,而是亲眼看到它在哪一步理解错了、坐标算偏了、或者误判了UI结构。

2.4.2 Python API中开启调试(用于集成开发)

在你的业务代码里,这样写:

from phone_agent import PhoneAgent
from phone_agent.model import ModelConfig

agent = PhoneAgent(
    model_config=ModelConfig(
        base_url="http://localhost:8000/v1",
        model_name="autoglm-phone-9b-multilingual"
    ),
    device_id="ZY22528XJ7",
    verbose=True  # 👈 关键!开启详细日志
)

result = agent.run("截图当前屏幕并保存为debug.png")
print("任务结果:", result)

verbose=True 会把所有ADB命令、截图路径、模型请求/响应体(脱敏后)都打印出来,帮你精准定位是设备没响应,还是模型返回了空动作。


3. 开发者模式下的高频实战场景

3.1 场景一:任务中途人工接管——当AI卡在验证码时

AutoGLM-Phone内置了人工接管机制,但需要你主动触发:

python main.py \
  --device-id ZY22528XJ7 \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b-multilingual \
  --manual-intervention \
  "登录淘宝账号"
  • 当AI识别到验证码图片、滑块、短信弹窗等敏感操作时,会暂停并输出:
    检测到人工验证环节,请手动完成,完成后按回车继续...
  • 你操作手机完成验证后,敲回车,AI继续后续流程
  • 这个开关让自动化不再是“全有或全无”,而是人机协同的务实方案

3.2 场景二:批量测试多台设备——用代码代替重复劳动

你有3台测试机?不用一台台连。用这段代码并发跑:

from phone_agent import PhoneAgent
from phone_agent.model import ModelConfig
from concurrent.futures import ThreadPoolExecutor

devices = ["ZY22528XJ7", "R58M908TQ9F", "192.168.1.100:5555"]  # USB ID + WiFi IP
tasks = ["打开设置", "打开Chrome", "打开相机"]

def run_on_device(device_id, task):
    agent = PhoneAgent(
        model_config=ModelConfig(
            base_url="http://localhost:8000/v1",
            model_name="autoglm-phone-9b-multilingual"
        ),
        device_id=device_id,
        verbose=False
    )
    return f"{device_id}: {agent.run(task)[:50]}..."

with ThreadPoolExecutor(max_workers=3) as executor:
    results = list(executor.map(run_on_device, devices, tasks))
    for r in results:
        print(r)

效果:3台设备同时执行不同任务,总耗时≈单台耗时,不是3倍。

3.3 场景三:自定义动作逻辑——当标准Tap/Text不够用时

PhoneAgent.run() 是高层封装,但开发者模式允许你绕过它,直接调用底层能力:

from phone_agent.adb import ADBConnection
from phone_agent.screenshot import ScreenshotManager

conn = ADBConnection()
conn.connect("ZY22528XJ7")

# 1. 截图并保存到本地供你分析
screenshot = ScreenshotManager(conn).take_screenshot()
screenshot.save("debug_screen.png")  # 生成可查看的PNG

# 2. 手动执行ADB命令(比如强制停止某个APP)
conn.shell("am force-stop com.taobao.taobao")

# 3. 或者用OpenCV做自定义图像识别(非AutoGLM内置)
import cv2
img = cv2.imread("debug_screen.png")
# ... 你的OpenCV逻辑,比如找“同意”按钮坐标
# 然后 conn.tap(x, y)

这才是开发者模式的终极自由:AI是你的副驾驶,而方向盘永远在你手里。


4. 开发者模式避坑指南:那些文档没写的细节

4.1 ADB连接不稳定?试试这个“保活”命令

WiFi连接时,ADB常因休眠断开。加一行保活:

# 在设备上执行(只需一次)
adb shell settings put global adb_enabled 1
adb shell settings put global stay_on_while_plugged_in 3
  • stay_on_while_plugged_in 3 表示充电时保持屏幕常亮(值3=充电+USB+AC)
  • 配合 adb connect IP:5555,可大幅降低掉线率

4.2 中文乱码?不是编码问题,是字体缺失

如果你在手机上看到“????”而非中文,不是Python编码错了,而是ADB Keyboard没加载中文字体:

# 重新安装带中文支持的ADB Keyboard
adb uninstall com.android.adbkeyboard
adb install https://github.com/senzhk/ADBKeyBoard/releases/download/v1.0/ADBKeyboard.apk
adb shell ime set com.android.adbkeyboard/.AdbIME

验证:在手机上随便点个输入框,用电脑执行 adb shell input text "测试",应显示“测试”二字。

4.3 模型响应慢?先关掉“过度思考”

AutoGLM-Phone默认会做多步规划,但简单任务不需要。加参数提速:

python main.py \
  --device-id ZY22528XJ7 \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b-multilingual \
  --max-steps 3 \          # 限制最多3步动作,避免无限循环
  --temperature 0.01 \     # 降低随机性,让输出更确定
  "返回桌面"
  • --max-steps 是防呆关键,防止AI在“找不到返回键”时反复截图
  • --temperature 0.01 让模型更“听话”,少“发挥创意”

5. 总结:开发者模式不是终点,而是你掌控力的起点

5.1 你现在已经拥有的能力

  • 能让任意安卓设备(7.0+)通过USB或WiFi被你的电脑精准控制
  • 能本地启动AutoGLM-Phone模型服务,并验证其可用性
  • 能用--verbose参数实时查看AI的视觉理解、思考逻辑和动作执行
  • 能在任务中人工接管,也能用Python API并发操控多台设备
  • 能绕过高层封装,直接调用ADB、截图、自定义图像识别等底层能力

5.2 下一步你可以探索的方向

  • 定制化提示词工程:修改phone_agent/prompt.py里的system prompt,让AI更懂你的业务术语
  • 私有模型微调:用你自己的APP截图数据,微调视觉编码器(需GPU)
  • 集成进CI/CD:把python main.py命令写进GitHub Actions,实现每日自动回归测试
  • 构建Web控制台:用FastAPI包装PhoneAgent,做成网页版手机自动化平台

开发者模式的意义,从来不是“让AI替你干活”,而是让你有能力判断:什么时候该信AI,什么时候该自己动手,什么时候该改写AI。

你现在站在了这条分界线上——往前一步,是工具使用者;往后一步,是智能体架构师。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐