news 2026/2/2 20:36:29

Open-AutoGLM详细日志查看方法,便于调试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open-AutoGLM详细日志查看方法,便于调试

Open-AutoGLM详细日志查看方法,便于调试

在使用 Open-AutoGLM 这类基于视觉语言模型的手机端 AI Agent 框架时,调试是确保任务正确执行的关键环节。由于整个流程涉及自然语言理解、屏幕图像识别、动作规划与 ADB 控制等多个模块,当任务失败或行为异常时,仅靠最终结果很难定位问题所在。因此,掌握如何开启和解读详细日志(verbose logging),对于开发者排查错误、优化提示词、提升自动化成功率至关重要。

本文将系统性地介绍 Open-AutoGLM 的日志机制,重点讲解如何启用详细模式、解读关键输出信息,并结合实际场景提供实用的调试技巧,帮助你快速定位并解决常见问题。


1. 日志系统的作用与重要性

1.1 为什么需要看日志?

Open-AutoGLM 的工作流程是一个多阶段闭环:

  1. 截图获取:通过 ADB 截取当前手机屏幕。
  2. 视觉理解:将截图送入视觉语言模型(VLM),分析 UI 元素、文本内容和布局结构。
  3. 意图解析与规划:结合用户指令和当前界面状态,生成下一步操作计划。
  4. 动作执行:调用 ADB 执行点击、滑动、输入等操作。
  5. 循环迭代:重复上述过程直到任务完成。

在这个链条中,任何一个环节出错都可能导致任务失败。例如:

  • 模型误识别了按钮位置 → 点击偏移
  • 文本输入乱码 → 输入法未正确设置
  • 动作序列不合理 → 规划逻辑有误

而这些“黑箱”内部的行为,只有通过详细日志才能观察到。

1.2 日志能告诉我们什么?

开启详细日志后,你可以看到以下关键信息:

  • 每一步的思考过程:模型是如何理解当前界面并做出决策的
  • 具体执行的动作:点击坐标、滑动方向、输入内容等
  • API 请求与响应:与 vLLM 或云端模型服务的交互详情
  • ADB 命令执行情况:是否成功发送指令
  • 异常堆栈信息:程序报错的具体原因

这些信息构成了完整的“执行轨迹”,让你像看回放一样追踪 AI 的每一步操作。


2. 如何开启详细日志模式

2.1 命令行方式启用--verbose

最简单的方式是在运行main.py时添加--verbose参数:

python main.py \ --verbose \ --device-id YOUR_DEVICE_ID \ --base-url http://localhost:8000/v1 \ --model "autoglm-phone-9b-multilingual" \ "打开小红书搜索美食推荐"

加上--verbose后,控制台会输出大量结构化信息,包括:

================================================== [INFO] 当前设备: emulator-5554 [DEBUG] 正在截取屏幕... [DEBUG] 屏幕截图已保存至: /tmp/screenshot_001.png ================================================== 思考过程: -------------------------------------------------- 用户指令为“打开小红书搜索美食推荐”。当前屏幕显示的是主屏幕,需找到小红书应用图标。 根据图标上的文字“小红书”进行定位。 -------------------------------------------------- 执行的动作: { "_metadata": "do", "action": "Tap", "element": [720, 1080] } ==================================================

2.2 Python API 中启用日志级别

如果你是通过代码调用 PhoneAgent,可以通过设置日志级别来实现:

import logging from phone_agent import PhoneAgent from phone_agent.model import ModelConfig # 设置日志级别为 DEBUG logging.basicConfig(level=logging.DEBUG) model_config = ModelConfig( base_url="http://localhost:8000/v1", model_name="autoglm-phone-9b-multilingual" ) agent = PhoneAgent( model_config=model_config, device_id="emulator-5554", verbose=True # 显式开启详细输出 ) result = agent.run("打开微信给文件传输助手发条消息")

这样可以在 IDE 或 Jupyter Notebook 中更方便地查看日志输出。


3. 详细日志的核心组成部分解析

3.1 思考过程(Reasoning Trace)

这是最有价值的部分,展示了模型的“大脑”是如何工作的:

================================================== 思考过程: -------------------------------------------------- 当前页面是抖音首页,底部导航栏包含“首页”、“朋友”、“+”、“消息”、“我”。 目标是进入“消息”页面。应点击标签栏中的“消息”图标。 该图标位于屏幕右下角区域,文字标注为“消息”。 --------------------------------------------------

你能从中获得的信息:

  • 模型是否准确识别了当前应用和界面状态
  • 是否理解了你的指令意图
  • 决策依据是什么(如文字标签、位置、颜色等)

提示:如果发现模型频繁误解界面,可能是提示词不够清晰,或者模型对某些 UI 风格不熟悉。

3.2 动作执行记录(Action Output)

接下来会输出具体的结构化动作指令:

{ "_metadata": "do", "action": "Tap", "element": [980, 1920], "description": "点击消息图标" }

常见动作类型包括:

  • Tap:点击指定坐标或元素
  • InputText:输入文本
  • Swipe:滑动操作
  • Back:返回键
  • Home:回到主屏

注意点:

  • element字段如果是[x, y]坐标,说明模型直接输出了绝对位置
  • 如果是字符串(如"搜索框"),则表示语义级操作,由底层框架转换为坐标

3.3 ADB 调用日志

日志还会显示实际执行的 ADB 命令:

[DEBUG] 执行 ADB 命令: adb -s emulator-5554 shell input tap 980 1920 [DEBUG] ADB 命令返回: [DEBUG] 截图命令: adb -s emulator-5554 exec-out screencap -p > /tmp/screen.png

这些信息可以帮助你确认:

  • 设备 ID 是否正确
  • ADB 命令是否成功执行
  • 是否存在权限或连接问题

3.4 模型 API 通信日志

当你使用本地 vLLM 或远程服务时,日志会显示请求体和响应:

[DEBUG] 发送 POST 请求至 http://localhost:8000/v1/chat/completions Request Payload: { "model": "autoglm-phone-9b-multilingual", "messages": [ { "role": "user", "content": [ {"type": "text", "text": "用户指令:..."}, {"type": "image", "image_url": "file:///tmp/screenshot.png"} ] } ], "max_tokens": 3000 } Response: { "choices": [ { "message": { "content": "{\"action\": \"Tap\", ...}" } } ] }

这部分可用于:

  • 检查图片是否成功上传
  • 验证 prompt 构造是否合理
  • 分析模型响应格式是否符合预期

4. 实战调试案例分析

4.1 案例一:点击位置偏差导致失败

现象:AI 尝试点击“登录”按钮但总是点偏。

日志片段

思考过程: -------------------------------------------------- 找到“登录”按钮,其文字为“登录”,位于屏幕中部偏下。 估算坐标约为 [540, 1600] -------------------------------------------------- 执行的动作: { "action": "Tap", "element": [540, 1600] }

问题分析

  • 模型没有精确识别按钮边界,而是“估算”坐标
  • 实际按钮中心可能在 [560, 1580]

解决方案

  • 提高截图分辨率
  • 在 prompt 中强调“请精确定位可点击元素”
  • 使用支持 bounding box 输出的模型版本

4.2 案例二:中文输入乱码

现象:输入“你好世界”变成了“Һ”

日志片段

执行的动作: { "action": "InputText", "text": "你好世界" } [DEBUG] 执行 ADB 命令: adb -s XXX shell am broadcast -a ADB_INPUT_TEXT --es msg '你好世界'

问题分析

  • ADB Keyboard 接收到了非 UTF-8 编码的文本
  • 可能是 Python 环境编码问题

解决方案: 在 Windows 上运行前设置环境变量:

$env:PYTHONIOENCODING = "utf-8" python main.py --verbose "发送消息:你好!"

Linux/macOS 用户可在启动前设置:

export PYTHONIOENCODING=utf-8

4.3 案例三:模型无响应或卡住

现象:长时间无输出,程序挂起。

日志片段

[INFO] 正在向 http://localhost:8000/v1/chat/completions 发送请求... [WARNING] 请求超时 (30s) [ERROR] 连接被拒绝

问题分析

  • vLLM 服务未启动或崩溃
  • 显存不足导致推理卡死
  • 端口被占用

排查步骤

  1. 检查 vLLM 是否仍在运行:
    ps aux | grep vllm
  2. 查看 vLLM 启动日志是否有 OOM 错误
  3. 测试 API 是否可达:
    curl http://localhost:8000/v1/models

5. 高级调试技巧与建议

5.1 结合--save-trace保存完整执行轨迹

部分版本支持--save-trace参数,可将所有中间数据保存到本地目录:

python main.py \ --verbose \ --save-trace ./debug_trace \ --device-id XXX \ "测试任务"

生成的内容包括:

  • 每一步的截图(screenshot_001.png)
  • 对应的 prompt 和 response
  • 完整的日志文件(trace.log)

这对于复现问题、做离线分析非常有用。

5.2 自定义日志处理器

你可以继承PhoneAgent类,添加自己的日志监听器:

class DebuggablePhoneAgent(PhoneAgent): def _on_action_planned(self, action): print(f"[ACTION PLAN] 即将执行: {action}") # 可以在这里插入断点或写入数据库 def _on_screenshot_taken(self, path): print(f"[SCREENSHOT] 已截取: {path}")

这种方式适合集成到 CI/CD 或自动化测试平台中。

5.3 使用 Wireshark 抓包分析网络请求(进阶)

如果你怀疑是模型服务通信问题,可以用抓包工具监控本地流量:

  1. 启动 Wireshark,选择 loopback 接口
  2. 过滤 HTTP 请求:http.host == "localhost" && http.request.method == "POST"
  3. 观察/v1/chat/completions的请求体和响应时间

这能帮你判断:

  • 请求是否发出
  • 响应延迟是否过高
  • 是否存在 JSON 格式错误

6. 常见日志问题与应对策略

问题现象日志特征解决方案
ADB 设备未识别adb devices输出为空或 unauthorized检查 USB 调试授权,重启 adb server
模型返回乱码response 包含非 JSON 内容检查模型加载是否完整,显存是否足够
输入失败InputText成功但无反应确认 ADB Keyboard 已设为默认输入法
动作循环不断重复相同操作修改 prompt 加入“避免重复操作”提示
超时中断多次出现timeout日志降低max_tokens,优化网络环境

7. 总结

掌握 Open-AutoGLM 的详细日志查看方法,是你从“能用”走向“好用”的关键一步。通过启用--verbose模式,你可以深入观察 AI Agent 的每一个决策瞬间,理解它“看到”了什么、“想到”了什么、“做了”什么。

在实际调试中,建议你养成以下习惯:

  • 始终先开日志:哪怕是最简单的任务,也建议带上--verbose
  • 关注思考过程:这是判断模型理解能力的核心依据
  • 保留 trace 文件:用于后续分析和团队协作
  • 建立日志模板:针对高频任务设计标准日志检查清单

只有真正看懂日志,你才能成为 Open-AutoGLM 的“主治医生”,而不是被动等待结果的“旁观者”。


获取更多AI镜像

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/30 8:40:55

MinerU能否识别水印?干扰元素过滤实战分析

MinerU能否识别水印?干扰元素过滤实战分析 PDF文档中嵌入的水印、页眉页脚、扫描噪点、背景图、装饰线条等干扰元素,常常让传统OCR和文本提取工具“抓瞎”——提取结果夹杂大量乱码、错位符号,甚至把水印文字当成正文强行塞进Markdown。那么…

作者头像 李华
网站建设 2026/1/25 18:47:34

yuzu模拟器帧率优化终极秘籍:突破60fps的突破性方法

yuzu模拟器帧率优化终极秘籍:突破60fps的突破性方法 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 还记得第一次在yuzu模拟器中运行《塞尔达传说:王国之泪》时,那令人惊艳的画面…

作者头像 李华
网站建设 2026/1/28 2:29:01

BERT推理资源浪费?动态批处理优化部署教程

BERT推理资源浪费?动态批处理优化部署教程 1. BERT 智能语义填空服务 你有没有遇到过这样的场景:写文章时卡在一个词上,怎么都想不出最贴切的表达?或者读一段文字时发现有个字被遮住了,但凭语感又“知道”它该是什么…

作者头像 李华
网站建设 2026/1/31 8:37:23

基于ComfyUI的Qwen集成教程:可视化操作儿童生成器实战

基于ComfyUI的Qwen集成教程:可视化操作儿童生成器实战 你是否曾想过,只需输入一句话,就能为孩子生成一张可爱的动物图片?现在,借助阿里通义千问大模型与ComfyUI的可视化工作流,这一切变得轻而易举。本文将…

作者头像 李华
网站建设 2026/1/31 14:52:39

iOS动态壁纸制作终极指南:5步解锁设备个性化潜力

iOS动态壁纸制作终极指南:5步解锁设备个性化潜力 【免费下载链接】Nugget Unlock the fullest potential of your device 项目地址: https://gitcode.com/gh_mirrors/nug/Nugget 厌倦了千篇一律的静态壁纸?想要让你的iPhone拥有独一无二的视觉体验…

作者头像 李华
网站建设 2026/1/31 14:27:21

Atmosphere EmuMMC 5大快速修复技巧:告别启动崩溃

Atmosphere EmuMMC 5大快速修复技巧:告别启动崩溃 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere 当你的Switch在启动EmuMMC时卡…

作者头像 李华