news 2026/4/15 5:43:19

Open-AutoGLM如何记录操作日志?审计追踪功能实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open-AutoGLM如何记录操作日志?审计追踪功能实现

Open-AutoGLM如何记录操作日志?审计追踪功能实现

Open-AutoGLM – 智谱开源的手机端AI Agent框架,正在重新定义我们与移动设备的交互方式。它不仅让AI能够“看懂”屏幕、理解用户意图,还能自动执行复杂操作流程。但随着自动化能力的增强,一个关键问题浮现:我们如何知道AI做了什么?什么时候做的?为什么这么做?

这正是操作日志和审计追踪功能的核心价值所在。

AutoGLM-Phone 是一个基于视觉语言模型的 AI 手机智能助理框架。它能以多模态方式理解屏幕内容,并通过 ADB 自动操控设备。用户只需用自然语言下指令,如“打开小红书搜美食”,模型即可解析意图、理解界面并自动规划、执行操作流程,无需手动点击。

而 Phone Agent 更进一步,作为一个基于 AutoGLM 构建的完整手机端智能助理系统,它集成了感知、决策、执行与安全机制于一体。系统通过 ADB 控制设备,利用视觉语言模型进行屏幕感知,结合推理引擎生成操作序列。更重要的是,在整个自动化过程中,每一步动作都被精确记录——这是实现可追溯、可审查、可调试的关键。

本文将深入探讨 Open-AutoGLM 是如何设计和实现其操作日志与审计追踪功能的,帮助开发者理解系统的透明性保障机制,并为后续的功能扩展提供参考。

1. 为什么需要操作日志与审计追踪?

在AI代理系统中,尤其是涉及真实设备控制的场景下,操作日志不是附加功能,而是基础安全设施

1.1 可信执行的前提

当AI代替你打开App、输入信息、甚至完成支付准备时,你必须清楚地知道它“做了什么”。没有日志,就等于把控制权交给一个黑箱。操作日志提供了行为的可见性,让用户或管理员可以回溯整个任务流程。

1.2 故障排查与调试支持

自动化流程可能因界面变化、网络延迟、权限限制等原因失败。如果没有详细的执行记录,排查问题将变得极其困难。日志中包含时间戳、操作类型、目标元素、执行结果等信息,是定位问题的第一手资料。

1.3 安全合规与风险控制

对于企业级应用或敏感操作(如金融类App操作),审计日志是合规要求的一部分。系统需记录谁发起了请求、AI执行了哪些步骤、是否有敏感操作被触发、是否进行了人工干预等,确保所有行为均可追溯。

1.4 用户反馈与体验优化

通过分析日志数据,可以了解AI在哪些环节频繁出错、哪些指令表述不够清晰、哪些App兼容性较差。这些洞察可用于持续优化提示词工程、改进UI识别算法,提升整体用户体验。


2. Open-AutoGLM的日志架构设计

Open-AutoGLM 的日志系统采用分层结构,兼顾性能、可读性和可扩展性。整体分为三个层级:

2.1 日志采集层:从动作到事件

每次AI决定执行一个操作(如点击、滑动、输入文本),都会生成一条结构化事件。这些事件由ActionExecutor模块统一捕获,并附加上下文信息。

class ActionEvent: def __init__(self, action_type, target_element=None, value=None, timestamp=None): self.action_type = action_type # "tap", "input", "swipe", "back" self.target_element = target_element # 元素描述或坐标 self.value = value # 输入值 self.timestamp = timestamp or time.time() self.screenshot_ref = None # 截图文件名(可选)

例如,当AI识别到“搜索框”并输入“美食”时,会生成如下事件:

{ "action_type": "input", "target_element": {"text": "搜索", "resource_id": "com.xingredian.app:id/search_input"}, "value": "美食", "timestamp": 1718923456.789, "screenshot_ref": "screen_1718923456.png" }

2.2 日志存储层:本地文件 + 可选远程上报

默认情况下,所有操作日志以 JSON Lines 格式保存在本地目录logs/下,每个任务独立成文件,命名规则为task_<timestamp>.log

每行代表一个事件,便于流式读取和后期处理:

{"action_type":"tap","target_element":{"text":"发现","bounds":[100,200,300,400]},"timestamp":1718923450.123} {"action_type":"input","target_element":{"text":"搜索框"},"value":"美食","timestamp":1718923452.456} {"action_type":"tap","target_element":{"text":"搜索按钮"},"timestamp":1718923454.789}

同时,系统预留了LoggerHook接口,支持将日志实时发送至远程服务器(如ELK、Prometheus或自建API),适用于团队协作或集中监控场景。

2.3 日志展示层:结构化输出与可视化支持

除了原始日志文件,Open-AutoGLM 还提供命令行实时输出功能。在运行main.py时,你会看到类似以下的清晰日志流:

[INFO] 2024-06-21 10:17:30 | 视觉识别完成 | 发现元素: '小红书' 图标 [INFO] 2024-06-21 10:17:31 | 执行操作 | 点击坐标 (540, 800) [INFO] 2024-06-21 10:17:33 | 屏幕更新检测 | 应用已启动 [INFO] 2024-06-21 10:17:34 | 执行操作 | 输入文本 "美食" [INFO] 2024-06-21 10:17:36 | 执行操作 | 点击 "搜索" 按钮

此外,项目还附带一个简单的 Web 查看器(log_viewer.py),可加载日志文件并配合截图回放操作过程,实现“视频式”审计体验。


3. 关键日志点详解:从指令接收到任务结束

让我们以一条典型指令为例,看看 Open-AutoGLM 是如何全程记录操作轨迹的。

指令:“打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!”

3.1 指令解析阶段日志

系统首先调用大模型进行意图理解,这一过程也会被记录:

{ "stage": "intent_parsing", "raw_input": "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!", "parsed_plan": [ {"step":1,"action":"launch_app","app":"com.ss.android.ugc.aweme"}, {"step":2,"action":"find_element","criteria":"搜索框"}, {"step":3,"action":"input_text","text":"dycwo11nt61d"}, {"step":4,"action":"tap","element":"搜索按钮"}, {"step":5,"action":"tap","element":"用户卡片"}, {"step":6,"action":"tap","element":"关注按钮"} ], "confidence": 0.96 }

这类日志帮助开发者判断AI是否正确理解了用户意图。

3.2 执行过程中的详细动作日志

每一步执行都会生成对应的日志条目。以下是部分示例:

启动App
{ "action_type": "launch_app", "package_name": "com.ss.android.ugc.aweme", "timestamp": 1718923500.123, "status": "success" }
输入文本
{ "action_type": "input", "target_element": { "text": "搜索", "resource_id": "com.ss.android.ugc.aweme:id/kn" }, "value": "dycwo11nt61d", "timestamp": 1718923505.456, "adb_command": "adb shell input text 'dycwo11nt61d'" }
点击关注按钮(含确认机制)
{ "action_type": "tap", "target_element": { "text": "关注", "class": "android.widget.Button" }, "coordinates": [900, 1200], "requires_confirmation": true, "user_approved": true, "timestamp": 1718923520.789 }

注意:这里启用了敏感操作确认机制。日志明确记录了该操作需要用户确认,并且用户已批准,增强了安全性。

3.3 异常与重试日志

如果某次点击未生效(如页面未加载完成),系统会尝试重试,并记录全过程:

{ "action_type": "tap", "target_element": {"text": "搜索"}, "attempt": 1, "result": "failed", "error": "element not found", "retry_after": 2.0, "timestamp": 1718923503.111 }

随后的重试也会单独记录,形成完整的失败-恢复链条。


4. 如何启用和查看操作日志?

操作日志功能默认开启,无需额外配置。但你可以通过参数调整其行为。

4.1 命令行运行时的日志输出

当你使用main.py执行任务时,日志会实时打印到终端:

python main.py \ --device-id YOUR_DEVICE_ID \ --base-url http://your-server-ip:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索美食"

你将在屏幕上看到清晰的操作流水,包括时间、阶段、动作和状态。

4.2 查看本地日志文件

任务结束后,前往项目根目录下的logs/文件夹:

ls logs/ # 输出示例: # task_1718923450.log

使用任何文本编辑器或命令行工具查看内容:

cat logs/task_1718923450.log | jq .

建议配合jq工具格式化JSON,便于阅读。

4.3 启用截图关联功能(增强审计)

若希望日志包含截图证据,可在启动时添加--save-screenshots参数:

python main.py \ --device-id YOUR_DEVICE_ID \ --base-url http://your-server-ip:8800/v1 \ --model "autoglm-phone-9b" \ --save-screenshots \ "打开小红书搜索咖啡店"

此时,每次操作前后的屏幕截图会被保存在screenshots/目录,并在日志中引用文件名,实现“图文并茂”的审计追踪。


5. 高级用法:自定义日志处理器与远程审计

对于企业部署或团队开发,Open-AutoGLM 支持扩展日志行为。

5.1 注册自定义日志钩子

你可以在代码中注册回调函数,监听所有日志事件:

from phone_agent.logger import register_log_hook def my_audit_handler(event): print(f"[AUDIT] {event['action_type']} on {event.get('target_element', {})}") # 可在此处发送到企业内部系统 send_to_slack(event) register_log_hook(my_audit_handler)

5.2 集成到集中式日志平台

通过编写适配器,可将日志转发至主流系统:

平台实现方式
ELK Stack使用 Logstash 接收 JSON 日志
Prometheus暴露指标接口统计成功率
Sentry错误日志自动上报
自建API调用 webhook 发送 POST 请求

示例:向远程API推送日志

import requests def remote_logger(event): try: requests.post("https://your-audit-api.com/logs", json=event, timeout=2) except Exception as e: print(f"Failed to send log: {e}") register_log_hook(remote_logger)

6. 总结

Open-AutoGLM 不只是一个能“动”的AI助手,更是一个可审计、可信任、可追溯的自动化系统。其操作日志与审计追踪功能贯穿于从指令解析到动作执行的每一个环节,提供了以下核心价值:

  • 透明性:每一项操作都有据可查,打破AI黑箱。
  • 可调试性:失败流程可通过日志快速定位原因。
  • 安全性:敏感操作需确认,且全程留痕。
  • 可扩展性:支持本地存储与远程上报,适应不同部署需求。

无论是个人用户想了解AI替自己做了什么,还是企业需要满足合规要求,这套日志体系都提供了坚实的基础。

未来,随着更多应用场景落地(如自动化测试、远程客服、无障碍辅助等),完善的审计能力将成为AI Agent走向生产环境的必备条件。而 Open-AutoGLM 已经走在了前面。


获取更多AI镜像

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

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

从图片到JSON:利用DeepSeek-OCR-WEBUI实现SpringBoot表格数据自动提取

从图片到JSON&#xff1a;利用DeepSeek-OCR-WEBUI实现SpringBoot表格数据自动提取 在企业级应用开发中&#xff0c;纸质单据、发票、采购表等结构化文档的数字化处理一直是一个高频且繁琐的任务。传统的人工录入方式不仅效率低&#xff0c;还容易出错。随着AI技术的发展&#…

作者头像 李华
网站建设 2026/4/6 4:26:14

为什么选YOLOv12官版镜像?因为它真的省心又高效

为什么选YOLOv12官版镜像&#xff1f;因为它真的省心又高效 在目标检测领域&#xff0c;模型迭代的速度越来越快。从YOLOv5到v8、v10、v11&#xff0c;再到如今的YOLOv12&#xff0c;每一次升级都不仅仅是数字的变化&#xff0c;而是架构思想的根本跃迁。而当我们真正投入项目…

作者头像 李华
网站建设 2026/4/10 14:47:35

Z-Image-Turbo工具推荐:集成Gradio的免配置镜像使用指南

Z-Image-Turbo工具推荐&#xff1a;集成Gradio的免配置镜像使用指南 Z-Image-Turbo是阿里巴巴通义实验室开源的一款高效AI图像生成模型&#xff0c;作为Z-Image的蒸馏版本&#xff0c;它在保持高质量输出的同时大幅提升了推理速度。该模型仅需8步即可完成图像生成&#xff0c;…

作者头像 李华
网站建设 2026/4/11 3:23:57

CAM++自动归档系统:按说话人分类存储实战

CAM自动归档系统&#xff1a;按说话人分类存储实战 1. 引言&#xff1a;为什么需要说话人识别的自动归档&#xff1f; 你有没有遇到过这种情况&#xff1a;会议录音堆成山&#xff0c;想找回某个人的发言内容&#xff0c;只能一遍遍拖动进度条手动查找&#xff1f;或者客服录…

作者头像 李华
网站建设 2026/4/10 22:15:23

Qwen3-Embedding-4B部署推荐:高性能镜像源实测

Qwen3-Embedding-4B部署推荐&#xff1a;高性能镜像源实测 1. Qwen3-Embedding-4B介绍 Qwen3 Embedding 模型系列是 Qwen 家族中专为文本嵌入与排序任务打造的最新成员&#xff0c;基于强大的 Qwen3 系列基础模型构建。该系列覆盖了从 0.6B 到 8B 的多种参数规模&#xff0c;…

作者头像 李华
网站建设 2026/4/14 21:39:42

Qwen3-Embedding-4B适合中小企业吗?性价比部署分析

Qwen3-Embedding-4B适合中小企业吗&#xff1f;性价比部署分析 1. Qwen3-Embedding-4B介绍 Qwen3 Embedding 模型系列是 Qwen 家族中专为文本嵌入和排序任务打造的最新成员&#xff0c;基于强大的 Qwen3 系列基础模型构建。这个系列覆盖了从 0.6B 到 8B 不同参数规模的模型&a…

作者头像 李华