当前位置: 首页 > news >正文

[自动化Adapt] 录制引擎

链接:https://github.com/OpenAdaptAI/OpenAdapt/wiki/OpenAdapt-Architecture-(draft)

在这里插入图片描述


docs:OpenAdapt

OpenAdapt 是一个开源项目,旨在 记录回放 用户在计算机上的交互行为

它如同智能助手般 观察 我们的操作(鼠标点击、键盘输入、屏幕变化),并将这些行为存储为结构化 *数据模型*

通过 任务自动化 技术,这些记录数据可以被重新执行,并利用 *AI* 驱动的策略来适应不同场景。

该项目特别注重 隐私保护,允许从记录中擦除敏感信息。

架构

在这里插入图片描述

章节

  1. 录制引擎
  2. 数据模型
  3. GUI 交互(窗口/元素)
  4. 配置管理
  5. 事件处理与合并
  6. 数据库管理
  7. 隐私擦除
  8. 回放策略
  9. AI 模型驱动

第一章:录制引擎

欢迎进入 OpenAdapt 的奇妙世界~

本章将解析 OpenAdapt 实现计算机任务自动化的核心组件——录制引擎

该组件如同系统的感官系统,实时捕捉用户在计算机上的所有交互行为。

录制引擎的核心价值

设想我们需要教机器人烘焙蛋糕,单纯的口头指导远不如亲自演示每个操作步骤。OpenAdapt 的录制引擎正是通过 全维度行为捕捉 来实现类似的教学过程:

  1. 行为复现基础
    记录鼠标轨迹、键盘输入、屏幕变化等原始数据,为自动化回放建立数据基石

  2. 环境上下文感知
    同步捕获窗口状态、浏览器元素等环境信息,确保操作场景的可还原性

  3. 多模态数据融合
    整合视觉(屏幕截图)、操作(键鼠事件)、语义(浏览器元素)等多维度信息

快速入门指南

通过终端命令启动录制流程:

python -m openadapt.record "打开浏览器并点击按钮"

操作演示完成后,使用 Ctrl+C(Windows/Linux)或 Cmd+C(macOS)终止录制。

系统将自动保存结构化录制数据至数据库。

多维感知子系统

视觉采集模块

# 摘自 openadapt/record.py
def read_screen_events(event_q, terminate_processing, recording, started_event):logger.info("启动屏幕事件读取器")while not terminate_processing.is_set():# 获取当前屏幕截图screenshot = utils.take_screenshot()  # 注入事件队列event_q.put(Event(utils.get_timestamp(), "screen", screenshot))

关键技术:

  • 跨平台屏幕捕获(Windows/macOS/Linux)
  • 可配置采样频率(默认 30fps)
  • 智能差分压缩(仅存储帧间差异)

输入监控模块

# 键盘事件监听实现
def read_keyboard_events(event_q, terminate_processing, recording, started_event):keyboard_listener = keyboard.Listener(on_press=partial(on_press, event_q),  # 按键按下事件on_release=partial(on_release, event_q)  # 按键释放事件)# 鼠标事件捕获逻辑
def read_mouse_events(event_q, terminate_processing, recording, started_event):mouse_listener = mouse.Listener(on_move=partial(on_move, event_q),  # 移动轨迹on_click=partial(on_click, event_q),  # 点击事件on_scroll=partial(on_scroll, event_q)  # 滚轮操作)

数据精度控制:

  • 鼠标坐标的屏幕坐标系映射
  • 事件时间戳的微秒级同步
  • 输入设备类型的自动识别

窗口状态追踪

# 窗口事件处理流程
def read_window_events(event_q, terminate_processing, recording, started_event):prev_window_data = {}while not terminate_processing.is_set():window_data = window.get_active_window_data()  # 获取窗口元数据if window_data != prev_window_data:event_q.put(Event(utils.get_timestamp(), "window", window_data))

核心元数据包含:

{"window_id": 0xCAFEBABE,"title": "Chrome浏览器 - 示例网站","geometry": [1280, 720, 1920, 1080],"process_id": 114514,"executable_path": "/Applications/Google Chrome.app"
}

浏览器深度监控

通过 Chrome 扩展实现网页元素级监控:

// chrome_extension/content.js
chrome.runtime.sendMessage(
{type: "element_click",data: {xpath: "//button[@id='submit']",innerText: "提交表单",boundingRect: { x: 320, y: 240, width: 80, height: 40 }}
});

扩展程序功能矩阵:

  • DOM 元素语义化解析
  • 动态内容变更监听
  • 跨域 iframe 穿透处理

跨域 iframe 穿透 :通过技术手段绕过浏览器同源策略,实现跨域 iframe 与父页面或子页面之间的数据交互或操作。

常见方法包括:

  • postMessage:通过 window.postMessage 实现安全跨域通信。
  • document.domain:主域相同时可设置相同 document.domain 实现共享。
  • 代理页面:借助同源中间页作为桥梁转发数据。
  • CORS 头部:服务端配置 Access-Control-Allow-Origin 允许特定域访问。

数据处理流水线

在这里插入图片描述

关键处理阶段:

  1. 时空对齐
    采用 NTP 时间同步协议,确保跨设备事件时序一致性

  2. 上下文关联
    建立操作事件与屏幕状态、窗口环境的映射关系

  3. 语义增强
    对浏览器元素添加 XPathCSS 选择器等可编程标识

NTP(网络时间协议): 一种让计算机时钟与标准时间源保持一致的协议,就像自动校准手表一样。

事件类型体系

事件类型数据结构示例应用场景
屏幕帧{timestamp: 162083.12, format: "PNG"}操作回放可视化
鼠标点击{x: 640, y: 360, button: "left"}点击位置分析
键盘输入{key: "Enter", modifiers: ["Shift"]}表单自动填写
窗口切换{title: "Untitled - Notepad"}多应用工作流录制
浏览器DOM事件{xpath: "//input[@name='email']"}网页元素精准定位

总结与展望

通过本指南,我们深入理解了 OpenAdapt 录制引擎的多维度感知能力。该组件不仅实现了基础操作记录,更通过环境上下文捕获和语义增强,为智能自动化奠定了数据基础。

值得关注的技术演进方向:

  1. 基于 WebAssembly 的前端行为录制
  2. 图形界面元素的 AI 语义识别
  3. 分布式设备的协同录制

下一章:数据模型将解析如何将这些原始事件转化为可编程的自动化指令。

http://www.dtcms.com/a/313279.html

相关文章:

  • Nginx 相关实验(1)
  • C语言数据结构(7)贪吃蛇项目2.贪吃蛇项目实现
  • 分离还是统一,这是个问题
  • STM32F103_Bootloader程序开发13 - 巧用逆向拷贝,实现固件更新的“准原子”操作,无惧升级中的意外掉电
  • 时间空间复杂度
  • 高质量数据集|从武汉光谷《面向科技情报大模型的高质量数据集建设》招标项目谈起
  • 实现游戏排行榜
  • SpringBoot项目数据脱敏(自定义注解)
  • 关于corn
  • SpringAI无人机智能灌溉、本地化AI推理、分析气象站、分析球场草皮系统实践
  • Python操作Excel——从入门到精通
  • QML 将一个qml文件定义为公共的全局单例
  • 外设数据到昇腾310推理卡 之五 3403ATU
  • 【分析学】Hilbert 空间
  • python脚本-ATE测试数据stdf文件自动处理之概率分布图、直方图、数据分布图
  • 说说对泛型的理解?
  • 数据资产——解读2025 数据提供合同(示范文本)【附全文阅读】
  • linux扩展磁盘容量到home下
  • Python篇---import
  • 线段树学习笔记 - 区间最值操作
  • 实战案例:容器数据卷四部曲(三)目录数据卷
  • DDR SDRAM中的DQS与DQ信号
  • 【网络安全】日志文件格式
  • 数据结构——单向链表
  • Kali基础知识点【1】
  • Pytorch-04 搭建神经网络架构工作流
  • TikTokShop-美国本土跨境-达人邀约_影刀RPA源码解读
  • 8.1.3 TiDB集群方案雨Replication原理
  • 关于逻辑回归的相关知识大全
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘scikit-learn’问题