Skip to content

浏览器自动化系统

本文档是 系统设计主文档 的子文档,详细描述浏览器自动化系统的设计。

最后更新: 2026-02-11 (v0.33.0)


2.12 浏览器自动化系统 ✅已完成 (v0.33.0)

✅ 完成状态: 已在v0.33.0版本中全部实现(Phase 1-3 + Computer Use)

完成时间: 2026-02-11 代码量: ~5000+ 行新代码 核心模块: 28个文件,4个子目录 IPC handlers: 68+

2.12.1 系统概述

浏览器自动化系统提供完整的网页自动化能力,支持工作流编辑、智能元素定位、操作录制回放和 AI 诊断功能。该系统通过三个阶段逐步完成,实现了企业级的自动化测试和任务自动化需求。

核心特性:

  • 工作流编辑器: 可视化构建自动化工作流
  • 智能元素定位: 多策略定位 (XPath、CSS、文本、视觉识别)
  • 操作录制回放: 录制用户操作并自动生成脚本
  • AI 智能诊断: 自动检测问题并提供修复建议
  • SPA 支持: 单页应用状态监测和变更检测

2.12.2 三阶段实现

Phase 1: 基础引擎 (✅完成)

BrowserEngine - 核心自动化引擎

javascript
// 核心功能
class BrowserEngine {
  // 浏览器实例管理
  async launch(options);
  async close();

  // 页面导航
  async goto(url, options);
  async reload();
  async goBack();
  async goForward();

  // 元素交互
  async click(selector, options);
  async type(selector, text, options);
  async select(selector, value);
  async hover(selector);

  // 页面操作
  async screenshot(options);
  async evaluate(fn, ...args);
  async waitForSelector(selector, options);
}

关键文件: src/main/browser/browser-engine.js (~300行)

IPC 接口 (12个):

通道功能参数
browser:launch启动浏览器options
browser:close关闭浏览器-
browser:goto导航到 URLurl, options
browser:click点击元素selector, opts
browser:type输入文本selector, text
browser:screenshot截图options
browser:evaluate执行 JSscript, args
browser:wait-selector等待元素selector, opts
browser:get-content获取页面内容-
browser:get-url获取当前 URL-
browser:get-title获取页面标题-
browser:execute-action执行自动化动作action

Phase 2: 智能定位与快照 (✅完成)

ElementLocator - 智能元素定位器

javascript
class ElementLocator {
  // 多策略定位
  async locate(target, options) {
    // 策略1: 精确 ID/CSS 选择器
    // 策略2: XPath 路径定位
    // 策略3: 文本内容匹配
    // 策略4: 属性匹配
    // 策略5: 视觉识别 (OCR)
  }

  // 智能元素识别
  async findSimilar(element, page);
  async generateSelector(element);

  // 元素验证
  async isVisible(selector);
  async isEnabled(selector);
  async isClickable(selector);
}

关键文件: src/main/browser/element-locator.js (~450行)

定位策略优先级:

优先级策略准确率速度适用场景
1ID 选择器99%<5ms具有唯一 ID 元素
2数据属性98%<10ms自动化测试属性
3CSS 选择器95%<15ms结构化页面
4XPath93%<20ms复杂嵌套结构
5文本匹配90%<25ms动态内容
6视觉识别85%<200ms无明确标识元素

SnapshotEngine - 快照与诊断引擎

javascript
class SnapshotEngine {
  // 快照管理
  async capture(page, options);
  async compare(snapshot1, snapshot2);
  async diff(baseline, current);

  // 变更检测
  async detectChanges(page, previousSnapshot);
  async highlightDifferences(diff);

  // 问题诊断
  async diagnose(page, expectedState);
  async suggestFixes(issues);
}

关键文件: src/main/browser/diagnostics/snapshot-engine.js (~280行)

IPC 接口 (6个):

通道功能参数
browser:locate-element定位元素target, options
browser:capture-snap捕获快照options
browser:compare-snaps对比快照snap1, snap2
browser:diagnose-page诊断页面expectedState
browser:get-elements获取元素列表selector, options
browser:analyze-page分析页面结构options

Phase 3: AI 智能代理 (✅完成)

BrowserAutomationAgent - AI 自动化代理

javascript
class BrowserAutomationAgent {
  // AI 驱动的任务执行
  async executeTask(task, context);

  // 智能决策
  async analyzeIntent(userInput);
  async planSteps(goal);
  async selectAction(context);

  // 自适应执行
  async handleError(error, context);
  async retryWithAlternative(action, error);
  async learnFromExecution(result);
}

关键文件: src/main/browser/browser-automation-agent.js (~400行)

智能能力:

  • 意图理解: 从自然语言描述中提取自动化意图
  • 步骤规划: 自动生成执行步骤序列
  • 错误恢复: 智能处理执行错误,尝试替代方案
  • 学习优化: 从执行历史中学习,优化未来执行

2.12.3 录制与回放系统

RecordingEngine - 操作录制引擎

javascript
class RecordingEngine {
  // 录制控制
  async startRecording(page, options);
  async stopRecording();
  async pauseRecording();
  async resumeRecording();

  // 事件捕获
  onUserAction(callback);
  captureClick(event);
  captureInput(event);
  captureNavigation(event);
  captureScroll(event);

  // 脚本生成
  async generateScript(format); // 'js', 'python', 'json'
  async exportRecording(path);
}

关键文件:

  • src/main/browser/recording/recorder.js (~250行)
  • src/main/browser/recording/player.js (~200行)

录制事件类型:

事件类型描述捕获数据
click点击操作selector, coordinates, button
input输入操作selector, value, inputType
navigation页面跳转url, type (goto/back/forward)
scroll滚动操作scrollX, scrollY, element
select下拉选择selector, value, options
keypress键盘操作key, modifiers
wait等待操作selector, timeout, condition

回放控制:

javascript
class RecordingPlayer {
  // 回放控制
  async play(recording, options);
  async playStep(step);
  async pause();
  async resume();
  async stop();

  // 回放配置
  setSpeed(speed); // 0.5x, 1x, 2x, 4x
  setBreakpoints(stepIndexes);
  enableStepMode(enabled);
}

2.12.4 诊断系统

SmartDiagnostics - AI 诊断系统

javascript
class SmartDiagnostics {
  // 问题检测
  async detectIssues(page, expectedState);
  async analyzePerformance(page);
  async checkAccessibility(page);

  // 根因分析
  async findRootCause(issue);
  async correlateIssues(issues);

  // 修复建议
  async suggestFixes(issues);
  async autoFix(issue, options);
}

关键文件: src/main/browser/diagnostics/smart-diagnostics.js (~350行)

诊断类型:

类型检测内容自动修复
元素缺失预期元素不存在尝试替代选择器
元素不可见元素存在但不可见滚动到视图
元素禁用元素不可交互等待启用
加载超时页面或元素加载超时重试/刷新
断言失败预期值与实际值不匹配报告差异
网络错误API 请求失败重试请求
JavaScript错误页面脚本错误记录并报告

截图对比 - 视觉回归测试

javascript
class ScreenshotDiff {
  // 截图对比
  async compare(baseline, current, options);

  // 差异分析
  calculateDiffPercentage(diff);
  highlightDifferences(diff);
  generateDiffImage(baseline, current);

  // 阈值配置
  setThreshold(percentage);
  setIgnoreRegions(regions);
}

关键文件: src/main/browser/diagnostics/screenshot-diff.js (~200行)

2.12.5 前端 UI 组件

BrowserControl.vue - 工作流编辑器

vue
<template>
  <div class="browser-control">
    <!-- 工具栏 -->
    <div class="toolbar">
      <button @click="launchBrowser">启动浏览器</button>
      <button @click="startRecording">开始录制</button>
      <button @click="runWorkflow">运行工作流</button>
    </div>

    <!-- 浏览器预览 -->
    <div class="browser-preview">
      <iframe ref="browserFrame" />
    </div>

    <!-- 工作流编辑器 -->
    <div class="workflow-editor">
      <WorkflowStepList :steps="steps" />
      <StepEditor :step="selectedStep" />
    </div>
  </div>
</template>

DiagnosticsPanel.vue - 诊断面板

vue
<template>
  <div class="diagnostics-panel">
    <!-- 问题列表 -->
    <IssueList :issues="issues" />

    <!-- 快照对比 -->
    <SnapshotCompare :baseline="baseline" :current="current" />

    <!-- 修复建议 -->
    <FixSuggestions :suggestions="suggestions" @apply="applyFix" />
  </div>
</template>

RecordingPanel.vue - 录制面板

vue
<template>
  <div class="recording-panel">
    <!-- 录制控制 -->
    <RecordingControls
      :isRecording="isRecording"
      @start="startRecording"
      @stop="stopRecording"
      @pause="pauseRecording"
    />

    <!-- 步骤列表 -->
    <RecordedStepList :steps="recordedSteps" />

    <!-- 回放控制 -->
    <PlaybackControls
      :speed="playbackSpeed"
      @play="playRecording"
      @stop="stopPlayback"
    />
  </div>
</template>

2.12.6 目录结构

desktop-app-vue/src/main/browser/
├── browser-engine.js           # 核心自动化引擎 (~300行)
├── browser-ipc.js              # IPC 处理器 (~200行)
├── browser-automation-agent.js # AI 自动化代理 (~400行)
├── computer-use-agent.js       # Computer Use 统一代理 ⭐v0.33.0
├── element-locator.js          # 智能元素定位 (~450行)
├── spa-observer.js             # SPA 状态监测 (~180行)
├── ocr-engine.js               # OCR 识别引擎 (~150行)
├── actions/                    # 自动化操作 (28文件)
│   ├── index.js                # 模块入口
│   ├── click-action.js         # 点击操作
│   ├── input-action.js         # 输入操作
│   ├── navigation-action.js    # 导航操作
│   ├── scroll-action.js        # 滚动操作
│   ├── wait-action.js          # 等待操作
│   ├── keyboard-action.js      # 键盘操作
│   ├── multi-tab-action.js     # 多标签页操作
│   ├── upload-action.js        # 文件上传
│   │── # Computer Use 能力 (v0.33.0) ⭐
│   ├── coordinate-action.js    # 坐标级操作
│   ├── vision-action.js        # Vision AI 视觉定位
│   ├── desktop-action.js       # 桌面级操作
│   ├── network-interceptor.js  # 网络拦截
│   ├── workflow-engine.js      # 工作流引擎
│   ├── audit-logger.js         # 操作审计
│   ├── screen-recorder.js      # 屏幕录制
│   ├── action-replay.js        # 操作回放
│   ├── safe-mode.js            # 安全模式
│   ├── element-highlighter.js  # 元素高亮
│   ├── template-actions.js     # 模板操作
│   ├── computer-use-metrics.js # 性能指标
│   ├── context-memory.js       # 上下文记忆
│   ├── action-suggestion.js    # 操作建议
│   ├── automation-policy.js    # 自动化策略
│   ├── smart-element-detector.js # 智能元素检测
│   ├── screen-analyzer.js      # 屏幕分析
│   ├── error-recovery-manager.js # 错误恢复
│   ├── clipboard-manager.js    # 剪贴板管理
│   ├── file-handler.js         # 文件处理
│   ├── notification-manager.js # 通知管理
│   ├── console-capture.js      # 控制台捕获
│   └── session-manager.js      # 会话管理
├── advanced/                   # 高级功能
│   ├── advanced-scanner.js     # 高级扫描器
│   ├── pattern-matcher.js      # 模式匹配
│   └── element-analyzer.js     # 元素分析
├── diagnostics/                # 诊断系统
│   ├── smart-diagnostics.js    # AI 诊断 (~350行)
│   ├── snapshot-engine.js      # 快照引擎 (~280行)
│   ├── screenshot-diff.js      # 截图对比 (~200行)
│   └── issue-reporter.js       # 问题报告
└── recording/                  # 录制系统
    ├── recorder.js             # 录制器 (~250行)
    ├── player.js               # 回放器 (~200行)
    └── script-generator.js     # 脚本生成

2.12.7 性能指标

实测数据:

指标数值说明
元素定位准确率95%+包含视觉识别备选方案
快照对比延迟<200ms实时诊断反馈
工作流编辑响应<50ms流畅的用户交互
录制覆盖率98%+完整捕获用户操作
回放成功率92%+含自动错误恢复
AI 意图理解准确率88%+自然语言到动作转换

资源消耗:

资源空闲状态活动状态峰值
CPU<1%5-15%30%
内存50MB150MB300MB
磁盘 I/O最小中等高(录制)

2.12.8 与其他系统集成

AI 引擎集成:

javascript
// 通过 AI 引擎执行自动化任务
aiEngine.executeTask({
  type: "browser-automation",
  goal: "登录网站并提取数据",
  parameters: {
    url: "https://example.com",
    credentials: { username, password },
    dataSelector: ".data-table",
  },
});

知识库集成:

  • 录制的工作流可保存到知识库
  • 支持工作流模板共享
  • 执行历史记录和分析

P2P 协作集成:

  • 远程浏览器控制
  • 协作录制和编辑
  • 实时共享执行状态

2.12.9 安全考虑

沙箱隔离:

  • 浏览器进程隔离执行
  • 敏感数据自动过滤
  • 网络请求白名单

权限控制:

  • 操作级别权限检查
  • 录制内容审计
  • 脚本执行审批

数据保护:

  • 敏感信息脱敏
  • 录制数据加密存储
  • 截图自动模糊处理

2.12.10 Computer Use 能力 ⭐v0.33.0新增

✅ 完成状态: 已在v0.33.0版本中全部实现 代码量: ~2000+ 行新代码 核心模块: 28个 actions 文件

Computer Use 能力提供类似 Claude Computer Use 的桌面操作能力,支持像素级坐标操作、Vision AI 视觉定位、安全模式和工作流引擎。

核心模块

模块文件说明
CoordinateActioncoordinate-action.js像素级坐标点击、拖拽、手势操作
VisionActionvision-action.jsVision AI 集成 (Claude/GPT-4V/LLaVA)
DesktopActiondesktop-action.js桌面级截图、鼠标键盘控制
NetworkInterceptornetwork-interceptor.js网络请求拦截、模拟、条件控制
ComputerUseAgentcomputer-use-agent.js统一代理,整合所有能力
AuditLoggeraudit-logger.js操作审计日志,风险评估
ScreenRecorderscreen-recorder.js屏幕录制,暂停/恢复/导出
ActionReplayaction-replay.js操作回放,变速/单步/断点调试
SafeModesafe-mode.js安全模式,权限/区域/速率限制
WorkflowEngineworkflow-engine.js工作流引擎,条件/循环/并行
ElementHighlighterelement-highlighter.js元素高亮显示
TemplateActionstemplate-actions.js预定义操作模板
ComputerUseMetricscomputer-use-metrics.js性能指标收集

AI Tools Integration

12个工具可供 AI 调用:

工具说明
browser_click点击元素 (选择器定位)
visual_click点击元素 (视觉定位)
browser_type输入文本
browser_key按键操作
browser_scroll滚动页面
browser_screenshot页面截图
analyze_page分析页面内容
browser_navigate导航到 URL
browser_wait等待条件
desktop_screenshot桌面截图
desktop_click桌面级点击
desktop_type桌面级输入

与 Claude Computer Use 对比

特性Claude Computer UseChainlessChain
基本操作
Shadow DOM
多语言 OCR有限✅ (10+ 语言)
工作流引擎✅ (条件/循环/并行)
录制回放✅ (断点调试)
操作审计✅ (风险评估)
安全模式✅ (权限控制)

附录

A. 相关文档

B. 关键提交

  • browser-automation-phase1: 基础引擎实现
  • browser-automation-phase2: 智能定位和快照
  • browser-automation-phase3: AI 代理和诊断

C. 版本历史

版本日期说明
v0.33.02026-02-11Computer Use 能力完成 ⭐
v0.29.02026-02-06Phase 1-3 全部完成,生产就绪

ChainlessChain 系统设计文档 — 面向开发者