
OpenClaw多模态实践GLM-4-7-Flash解析截图生成操作日志1. 为什么需要自动化操作日志上周我在测试一个内部工具时遇到了典型痛点每次操作后需要手动记录点击了哪些按钮、输入了什么参数、系统返回了什么结果。这种重复劳动不仅耗时还容易遗漏关键步骤。更麻烦的是当测试用例失败时仅凭文字日志很难还原当时的界面状态。这让我开始思考能否让AI自动观察屏幕变化并生成人类可读的操作日志经过多次尝试最终通过OpenClawGLM-4-7-Flash实现了这个需求。这个方案特别适合需要视觉反馈的自动化场景比如软件测试中的界面交互验证周期性监控关键业务指标教学演示的步骤回溯远程协助时的操作审计2. 技术方案设计2.1 核心组件选型整个系统由三个关键部分组成OpenClaw负责屏幕捕捉和操作执行GLM-4-7-Flash模型解析截图并生成自然语言描述自定义技能模块处理任务调度和日志格式化选择GLM-4-7-Flash主要考虑其多模态能力和推理速度。相比更大规模的模型这个7B参数的版本在保持足够精度的同时响应速度更适合实时性要求较高的场景。2.2 工作流程设计系统运行时遵循以下流程定时触发屏幕捕捉默认5秒间隔将当前截图与前一帧进行差异检测将有变化的区域发送给GLM模型分析模型返回自然语言描述将描述与时间戳存入Markdown日志文件# 伪代码展示核心逻辑 while True: current_screenshot capture_screen() diff_regions compare_with_previous(current_screenshot) if diff_regions: description glm4_analyze(diff_regions) append_to_log(description) sleep(interval)3. 具体实现步骤3.1 环境准备首先需要部署好基础环境# 安装OpenClawMac环境示例 curl -fsSL https://openclaw.ai/install.sh | bash openclaw onboard --provider ollama --model glm-4-7-flash配置模型服务时特别注意在~/.openclaw/openclaw.json中正确设置Ollama端点{ models: { providers: { ollama: { baseUrl: http://localhost:11434, api: ollama, models: [ { id: glm-4-7-flash, name: GLM-4-7-Flash } ] } } } }3.2 开发截图分析技能创建一个自定义Skill来处理截图分析任务// skills/screenshot-analyser/index.js module.exports { name: screenshot-analyser, actions: { async analyzeScreenshot(ctx) { const { imagePath, previousImagePath } ctx.params; // 调用OpenClaw原生截图比对能力 const diffResult await ctx.call(diff-images, { current: imagePath, previous: previousImagePath }); // 调用GLM模型分析差异 const analysis await ctx.call(models.query, { provider: ollama, model: glm-4-7-flash, prompt: 分析这两张截图的差异用自然语言描述发生了什么变化。重点关注 - 新增或消失的UI元素 - 数值变化 - 状态指示器变化 - 可能的用户操作 图片1: ${diffResult.region1} 图片2: ${diffResult.region2} }); return analysis.response; } } }3.3 配置定时任务通过OpenClaw的调度系统设置定时任务# ~/.openclaw/tasks/screenshot-logger.yml tasks: - name: periodic-screenshot schedule: */5 * * * * * # 每5秒执行 actions: - name: capture-and-analyze type: script script: | # 捕获当前屏幕 CURRENT_SCREEN/tmp/current_$(date %s).png openclaw screenshot --output $CURRENT_SCREEN # 获取上一张截图 PREVIOUS_SCREEN$(ls -t /tmp/current_*.png | head -2 | tail -1) # 分析差异 ANALYSIS$(openclaw call screenshot-analyser/analyzeScreenshot \ --imagePath $CURRENT_SCREEN \ --previousImagePath $PREVIOUS_SCREEN) # 记录日志 echo [$(date)] $ANALYSIS ~/operation_log.md4. 实际应用效果4.1 测试场景示例在测试一个电商后台系统时自动化日志成功捕获了以下关键操作[2024-03-15 14:23:05] 用户点击了新增商品按钮界面切换到商品编辑表单 [2024-03-15 14:23:22] 在商品名称输入框中输入了夏季新款T恤 [2024-03-15 14:23:40] 价格字段从0.00变为199.00 [2024-03-15 14:23:55] 点击了保存按钮出现绿色提示条保存成功4.2 性能考量在MacBook Pro (M2, 16GB)上测试单次分析耗时1.2-1.8秒CPU占用峰值35%内存占用约800MB主要来自GLM模型对于需要更高频率捕捉的场景可以考虑以下优化降低截图分辨率只捕捉特定窗口区域使用更轻量级的差异检测算法5. 踩坑与解决方案5.1 截图时机问题最初实现时发现模型经常误报无变化排查发现是因为在界面动画过程中截图。解决方案是// 在关键操作后添加延迟 await page.click(#submit-btn); await new Promise(resolve setTimeout(resolve, 500)); // 等待动画完成5.2 模型理解偏差GLM有时会将界面元素误认为是其他类型如把进度条当成温度计。通过改进提示词解决了这个问题请以专业测试人员视角分析界面变化特别注意 - 按钮状态禁用/启用、选中/未选中 - 表单字段值变化 - 通知/提示消息出现 - 数据表格的增删改5.3 日志冗余问题连续截图会产生大量相似条目。通过添加变化显著性阈值过滤if diff_area (total_area * 0.05): # 变化区域小于5%则忽略 return None6. 扩展应用场景这个基础框架可以扩展支持更多专业场景软件测试自动验证界面是否符合预期状态操作审计记录敏感系统的每一步操作教学演示自动生成操作教程远程协助帮助诊断用户操作问题一个特别有用的变种是为CI/CD管道添加视觉回归测试steps: - name: visual-regression run: | openclaw screenshot --output current.png openclaw compare --base base.png --current current.png openclaw call glm-analyzer/check-ui-changes获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。