Open-AutoGLM命令行参数详解,每个选项都清楚

你是否曾为“明明只是一句‘打开小红书搜美食’,却要手动点开App、切换输入法、敲字、点击搜索”而感到疲惫?Open-AutoGLM 就是为此而生的——它不是另一个聊天机器人,而是一个能真正“动手做事”的手机端AI Agent。但当你第一次运行 python main.py ... 时,面对一长串带双横线的参数,是不是有点发懵?--device-id 到底填什么?--base-url--model 怎么配才不报错?为什么加了 --timeout 还卡住?别急,这篇文章不讲部署流程、不堆概念,就专注一件事:把 Open-AutoGLM 的每一个命令行参数,掰开、揉碎、说透,让你下次敲命令时,心里有底,手上不抖。

1. 核心参数全景:它们各自负责什么?

在深入每个参数前,先建立一个清晰的认知框架。Open-AutoGLM 的命令行参数不是随意排列的,而是围绕三个核心职责组织起来的:连接设备、调用模型、控制执行。理解这个分工,你就不会把本该填设备ID的地方错写成API密钥。

参数名 类型 必填 作用域 一句话解释
--device-id 字符串 设备层 告诉AI:“你要操控的是哪台手机?”(USB设备号或WiFi IP)
--base-url URL字符串 模型层 告诉AI:“你的大脑(大模型服务)在哪?怎么找它?”
--model 字符串 模型层 告诉AI:“你用哪个具体的大脑?是9B还是16B版本?”
--apikey 字符串 (按服务选填) 模型层 告诉AI:“你是谁?有权限调用这个大脑吗?”(仅智谱BigModel等需认证服务)
--timeout 整数(秒) (推荐填) 执行层 告诉AI:“这件事最多给你多少时间?超时就停手,别死循环。”
--max-steps 整数 (推荐填) 执行层 告诉AI:“整个任务最多允许你规划几步动作?防无限试探。”
--confirm-sensitive 布尔开关 (安全默认开启) 执行层 告诉AI:“遇到安装App、删除文件、支付等高危操作,必须先问我!”

这个表格不是为了让你死记硬背,而是帮你建立一种直觉:当你想换一台手机测试,第一反应就是改 --device-id;当你从本地vLLM服务切到智谱云服务,第一反应就是改 --base-url--apikey;当你发现AI在桌面反复找“美团”却找不到,第一反应就是调小 --max-steps。参数即意图,意图即参数。

2. 设备连接参数:让AI认出你的手机

2.1 --device-id:设备的“身份证号”

这是整个链条的起点。没有它,AI就像一个没有地址的快递员,再聪明也送不到货。它的值不是随便写的,而是由 ADB 工具动态生成的唯一标识。

  • USB连接时:运行 adb devices,输出类似 0123456789ABCDEF device,那么 --device-id 的值就是 0123456789ABCDEF
  • WiFi远程连接时:运行 adb connect 192.168.1.100:5555 后,adb devices 输出会是 192.168.1.100:5555 device,那么 --device-id 的值就是 192.168.1.100:5555

常见误区与排错

  • 错误:直接填 localhost127.0.0.1。ADB 不通过本地回环连接真机,这会导致“设备未找到”。
  • 错误:复制了 adb devices 输出里的 offlineunauthorized 行。这表示连接异常,需先解决授权问题(手机弹窗点“允许”)。
  • 正确做法:每次运行前,务必先执行 adb devices 确认状态,只取 device 状态那一行的ID。
# 正确示例:USB连接
python main.py --device-id "0123456789ABCDEF" --base-url http://192.168.1.50:8000/v1 --model "autoglm-phone-9b" "打开微信发送'你好'给张三"

# 正确示例:WiFi连接
python main.py --device-id "192.168.1.100:5555" --base-url http://192.168.1.50:8000/v1 --model "autoglm-phone-9b" "截一张当前屏幕的图"

2.2 --adb-path:当ADB不在标准路径时的“备用钥匙”

绝大多数情况下,你不需要这个参数。只有当你把 ADB 工具解压到了一个非常规路径(比如 D:\tools\adb\platform-tools\),且没有将其添加到系统环境变量 PATH 中时,才需要显式指定。

  • 它的值是一个完整路径,指向 adb 可执行文件本身(Windows是 adb.exe,macOS/Linux是 adb)。
  • 如果你已配置好环境变量,adb version 在任意目录都能运行,那就可以完全忽略此参数。
# 仅在ADB未加入PATH时使用
python main.py --adb-path "D:\tools\adb\platform-tools\adb.exe" --device-id "0123456789ABCDEF" ...

3. 模型服务参数:为AI接上“大脑”

3.1 --base-url:服务地址的“门牌号”

这是最易出错的参数之一。它不是一个网址,而是一个API服务的根路径,格式必须严格遵循 http://<IP>:<PORT>/<VERSION>https://<DOMAIN>/<PREFIX>

  • 本地vLLM部署:假设你在服务器 192.168.1.50 上用 Docker 启动了 vLLM,映射端口为 8000,那么 --base-url 就是 http://192.168.1.50:8000/v1。注意末尾的 /v1 是 Open-AutoGLM 代码里硬编码的API版本前缀,不能省略
  • 智谱BigModel云服务:官方文档明确要求使用 https://open.bigmodel.cn/api/paas/v4。这里 v4 是智谱的API版本,和本地vLLM的 v1 是两套体系,绝不能混用

致命错误

  • --base-url http://192.168.1.50:8000 (缺少 /v1,会返回404)
  • --base-url https://open.bigmodel.cn/api/paas/v1 (智谱没有v1,会返回404或认证失败)

3.2 --model:选择“大脑型号”

Open-AutoGLM 本身是一个框架,它需要一个具体的视觉语言模型(VLM)作为后端。--model 参数就是告诉框架:“请调用这个型号的模型”。

目前官方支持的模型主要有两个:

  • "autoglm-phone-9b":90亿参数的轻量版,适合在消费级显卡(如RTX 4090)上本地部署,推理速度快,对手机界面的理解足够完成大部分任务。
  • "autoglm-phone-16b":160亿参数的增强版,理解更细致,尤其擅长处理复杂界面(如多层嵌套的设置菜单、密集信息的新闻App),但对硬件要求更高。

关键提示:这个字符串必须与你后端服务实际注册的模型名称完全一致。如果你用 vLLM 启动服务时,用的是 --model zai-org/autoglm-phone-9b,那么 --model 参数就必须填 "autoglm-phone-9b",少一个字符、大小写错误都会导致 Model not found 错误。

3.3 --apikey:通往云服务的“通行证”

这是一个条件性必填参数。它的存在与否,完全取决于你使用的 --base-url

  • --base-url 指向 智谱BigModelhttps://open.bigmodel.cn/...)时,--apikey 是强制的。你需要登录智谱控制台,创建并复制一个 API Key。
  • --base-url 指向 本地vLLM服务 时,vLLM 默认不启用API密钥认证,因此 --apikey 可以完全不填。如果你在vLLM启动时加了 --api-key my-secret-key,那么此处就必须填 --apikey "my-secret-key"

安全提醒:永远不要在命令行中明文暴露你的 API Key。生产环境中,应使用环境变量(如 export BIGMODEL_API_KEY="your-key")并在代码中读取,而非直接写在命令里。

4. 执行控制参数:给AI装上“刹车”和“计步器”

4.1 --timeout:全局超时的“倒计时器”

想象一下,AI正在执行“打开抖音搜索博主”这个指令。它可能需要:1)找到抖音图标并点击;2)等待App加载;3)找到搜索框并点击;4)输入文字;5)点击搜索。每一步都需要时间。--timeout 就是为整个任务流程设定一个总时限。

  • 单位是,例如 --timeout 120 表示整个任务最长允许2分钟。
  • 一旦超时,AI会立即中止所有操作,并返回一个清晰的错误信息,如 Task timeout after 120 seconds
  • 为什么必须设? 因为某些场景下,AI可能陷入死循环。比如目标App未安装,AI会不断尝试“滑动桌面找图标”,若无超时,它将永远执行下去,耗尽你的API额度或本地GPU资源。

4.2 --max-steps:动作规划的“步数上限”

如果说 --timeout 是时间上的刹车,--max-steps 就是逻辑上的刹车。它限制的是AI规划出的操作步骤总数,而不是执行时间。

  • 默认值通常是 100,这意味着AI最多可以规划出100个原子动作(如 CLICK, SWIPE, TYPE_TEXT)。
  • 对于一个简单的“打开微信发消息”任务,通常5-10步就能完成。如果AI规划了超过 --max-steps 步,它会主动停止,并报告 Max steps exceeded: 100
  • 这是防止“幻觉式探索”的关键。例如,当AI在桌面找不到“美团”时,它本应放弃,但若不限制步数,它可能规划出“向左滑100次、向上滑100次、点每一个图标100次”的无效序列。--max-steps 让它在探索一定范围后,果断转向其他策略或报错。

4.3 --confirm-sensitive:安全操作的“人工确认开关”

这是一个布尔型开关,默认为 True(开启)。它的存在,体现了 Open-AutoGLM 的工程敬畏心。

  • 当AI规划出一个被系统标记为“敏感”的动作时(如 INSTALL_APP, DELETE_FILE, SEND_SMS, MAKE_PAYMENT),它会暂停执行,并向你发出一个确认请求。
  • 你可以在控制台看到类似 Sensitive action detected: INSTALL_APP. Continue? (y/N) 的提示,输入 y 才会继续。
  • 如果你是在做自动化测试,且确认环境绝对安全,可以通过 --no-confirm-sensitive(注意是 no- 前缀)来关闭此功能,实现全自动无人值守。

5. 高级与调试参数:进阶玩家的工具箱

5.1 --log-level:掌控日志的“音量旋钮”

当你遇到问题,日志是你唯一的线索。--log-level 参数让你决定这条线索的详细程度。

  • --log-level INFO(默认):只显示关键事件,如“已连接设备”、“开始执行任务”、“任务完成”。适合日常使用。
  • --log-level DEBUG:显示所有内部细节,包括每一步的截图分析结果、模型返回的原始JSON、ADB命令的完整输入输出。这是排查“为什么AI点错了位置”或“为什么模型没理解截图”的黄金参数。
  • --log-level WARNINGERROR:只显示警告和错误,信息量最少,适合生产环境监控。
# 调试时,强烈建议加上
python main.py --device-id "0123456789ABCDEF" --base-url http://192.168.1.50:8000/v1 --model "autoglm-phone-9b" --log-level DEBUG "打开设置,进入关于手机,连点版本号10次"

5.2 --screenshot-interval:截图频率的“快门速度”

Open-AutoGLM 的工作原理是“看一眼屏幕 -> 想一步怎么做 -> 做一步 -> 再看一眼”。--screenshot-interval 控制的就是“看一眼”的间隔时间(单位:秒)。

  • 默认值通常是 1.0 秒,即每秒截一次屏。
  • 如果你发现AI在快速变化的界面(如视频播放页、游戏)中反应迟钝,可以尝试调小,如 --screenshot-interval 0.5
  • 反之,如果任务很慢(如等待App加载),调大此值(如 --screenshot-interval 3.0)可以减少不必要的截图,节省资源。

5.3 --output-dir:保存证据的“自动归档箱”

每一次任务执行,AI都会生成大量中间产物:原始截图、AI标注后的截图、模型的思考过程(Thought)、最终的动作序列(Action)。--output-dir 参数指定一个文件夹,让所有这些“数字证据”自动保存进去。

  • 这对于复盘失败案例至关重要。你可以直接打开文件夹,对比 screenshot_001.png(初始界面)和 screenshot_005.png(AI点错后),立刻定位问题。
  • 路径可以是相对路径(如 ./logs)或绝对路径(如 /home/user/autoglm_logs)。
# 执行后,所有截图和日志都会存入 ./debug_output 文件夹
python main.py --device-id "0123456789ABCDEF" --output-dir "./debug_output" ... "打开小红书搜美食"

6. 组合实战:一条命令,一个完整世界

现在,让我们把所有参数组合起来,构建一个真实、健壮、可复现的命令。这不是一个玩具示例,而是一个你明天就能复制粘贴、直接运行的生产级模板。

python main.py \
  --device-id "0123456789ABCDEF" \
  --base-url "http://192.168.1.50:8000/v1" \
  --model "autoglm-phone-9b" \
  --timeout 180 \
  --max-steps 30 \
  --log-level DEBUG \
  --output-dir "./run_logs" \
  "打开淘宝,搜索'无线蓝牙耳机',筛选价格在100到300元之间,点击第一个商品,查看商品详情"

这条命令的每一部分都在做什么?

  • --device-id:精准锁定我的测试机,避免误操作其他设备。
  • --base-url--model:确保AI调用的是我本地部署的、经过充分测试的9B模型。
  • --timeout 180:给这个多步骤任务留足3分钟,既不过于苛刻,也不放任自流。
  • --max-steps 30:一个复杂的电商任务,30步足以覆盖所有必要操作,再多就是冗余。
  • --log-level DEBUG:全程开启“显微镜模式”,任何异常都无所遁形。
  • --output-dir:所有过程都被记录,方便后续审计与优化。

当你熟练掌握这些参数,python main.py 就不再是一条冰冷的命令,而是一把万能钥匙,能为你打开手机自动化世界的每一扇门。

7. 总结:参数即权力,理解即掌控

我们花了大量篇幅,把 Open-AutoGLM 的命令行参数从里到外梳理了一遍。但这并非终点,而是你掌控这项技术的起点。

  • --device-id 是你与物理世界的锚点,它让你的AI指令有了真实的落点。
  • --base-url--model 是你与智能世界的接口,它们决定了AI的“智商”和“知识边界”。
  • --timeout--max-steps 是你赋予AI的“理性”,让它知道何时该坚持,何时该放弃。
  • --log-level--output-dir 是你为自己保留的“上帝视角”,确保一切尽在掌握。

记住,技术的终极目的不是炫技,而是解决问题。当你能用一条清晰的命令,让AI替你完成那些重复、繁琐、耗时的手动操作时,你获得的不仅是效率,更是对时间的重新定义。现在,关掉这篇教程,打开你的终端,试着敲下第一条属于你自己的 main.py 命令吧。世界,正等着你去自动化。


获取更多AI镜像

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

Logo

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

更多推荐