Logo
热心市民王先生

技术架构深度解析

硅基写手 技术架构 Vision-First AI Agent

深入剖析 Magnitude 的 Vision-First 架构、核心组件、实现原理以及技术创新点

1. 整体架构概览

Magnitude 采用分层架构设计,从下到上依次为:浏览器控制层、视觉感知层、AI 决策层、任务执行层。

flowchart TD
    subgraph 用户接口层
        A[自然语言指令] --> B[Magnitude Agent]
    end
    
    subgraph AI决策层
        B --> C[LLM - Claude/Qwen]
        C --> D[视觉理解模块]
        C --> E[任务规划模块]
    end
    
    subgraph 视觉感知层
        D --> F[截图获取]
        F --> G[视觉分析]
        G --> H[元素定位]
    end
    
    subgraph 执行层
        E --> I[动作序列生成]
        H --> I
        I --> J[Playwright 执行]
    end
    
    subgraph 浏览器层
        J --> K[Chromium 浏览器]
    end
    
    K --> F

2. Vision-First 架构详解

2.1 为什么需要 Vision-First?

传统浏览器自动化工具的工作原理:

用户指令 → DOM 选择器 → 元素定位 → 执行动作

Vision-First 架构的工作原理:

用户指令 → 屏幕截图 → 视觉理解 → 像素级定位 → 执行动作

核心差异

  • 传统方式依赖结构化数据(HTML/DOM),易碎且难以处理复杂场景
  • Vision-First 依赖感知数据(像素),与人类操作方式一致,更加鲁棒

2.2 视觉感知系统

Magnitude 的视觉感知系统包含以下关键组件:

2.2.1 屏幕捕获

  • 技术基础:基于 Playwright 的截图能力
  • 捕获频率:按需捕获,非连续视频流(降低 LLM Token 消耗)
  • 图像处理:支持 viewport 调整和全页面截图

2.2.2 视觉理解模型

Magnitude 支持多种视觉语言模型(VLM):

模型提供商性能成本
Claude Sonnet 4Anthropic⭐⭐⭐⭐⭐
Qwen-2.5VL 72BAlibaba⭐⭐⭐⭐

模型选择建议

  • 生产环境:Claude Sonnet 4(最佳性能)
  • 成本敏感:Qwen-2.5VL(性价比)

2.2.3 像素级操作生成

这是 Vision-First 架构的关键创新:

// 传统方式:使用 CSS 选择器
await page.click('#submit-button');

// Magnitude 方式:视觉理解后生成像素坐标
await agent.act('点击提交按钮');
// 内部实现:
// 1. 截图当前页面
// 2. LLM 分析图像,识别"提交按钮"位置
// 3. 生成坐标:{ x: 523, y: 384 }
// 4. 执行鼠标点击操作

2.3 多模态输入处理

Magnitude 的 LLM 接收多模态输入:

输入:
├── 系统提示词(System Prompt)
├── 用户指令(User Query)
├── 当前页面截图(Screenshot)
├── 历史操作记录(Action History)
└── 可选:Zod Schema(用于数据提取)

输出:
├── 思考过程(Thought)
├── 操作类型(Action Type: click/type/navigate/etc)
├── 操作参数(Coordinates, Text, etc)
└── 完成状态(Done/Continue)

3. 核心组件分析

3.1 BrowserAgent 类

BrowserAgent 是 Magnitude 的核心类,负责:

  • 浏览器生命周期管理
  • LLM 通信
  • 动作执行协调
// 核心方法
interface BrowserAgent {
  // 导航到指定 URL
  nav(url: string): Promise<void>;
  
  // 执行自然语言描述的操作
  act(description: string, options?: ActOptions): Promise<void>;
  
  // 基于 Zod Schema 提取结构化数据
  extract<T>(description: string, schema: z.ZodSchema<T>): Promise<T>;
  
  // 停止 Agent 和浏览器
  stop(): Promise<void>;
}

3.2 TestCaseAgent 类

TestCaseAgent 继承自 BrowserAgent,专为测试场景设计:

interface TestCaseAgent extends BrowserAgent {
  // 验证页面状态(视觉断言)
  check(description: string): Promise<boolean>;
  
  // 测试框架集成(支持 beforeEach/afterEach)
  setup(options: TestOptions): Promise<void>;
}

视觉断言的工作原理

await agent.check('页面上显示"订单创建成功"');
// 1. 截取当前页面
// 2. LLM 分析截图,判断描述是否成立
// 3. 返回布尔结果

3.3 动作执行引擎

Magnitude 支持的动作类型:

动作类型描述使用场景
click点击指定坐标按钮点击、链接跳转
type输入文本表单填写
navigate导航到 URL页面跳转
scroll滚动页面长页面内容查看
drag拖拽操作排序、绘图
hover鼠标悬停触发下拉菜单
wait等待条件动态内容加载

3.4 记忆与缓存系统

Magnitude 实现了提示词缓存机制:

// 启用缓存配置
await startBrowserAgent({
  llm: {
    provider: 'anthropic',
    options: {
      model: 'claude-sonnet-4-20250514',
      cachePrompts: true  // 启用提示词缓存
    }
  }
});

缓存策略

  • 系统提示词和页面上下文被缓存
  • 减少重复 LLM 调用,降低成本
  • 提高响应速度

4. 技术创新点分析

4.1 Vision-First vs DOM-First

flowchart LR
    subgraph DOM-First
        A1[用户指令] --> B1[解析指令]
        B1 --> C1[生成选择器]
        C1 --> D1[查询 DOM]
        D1 --> E1[元素定位]
        E1 --> F1[执行动作]
    end
    
    subgraph Vision-First
        A2[用户指令] --> B2[截图]
        B2 --> C2[视觉理解]
        C2 --> D2[元素识别]
        D2 --> E2[坐标计算]
        E2 --> F2[执行动作]
    end

关键优势对比

维度DOM-FirstVision-First
抗 DOM 变化
复杂布局支持有限
Canvas/WebGL不支持支持
学习成本高(需懂前端)低(自然语言)
执行速度中等
成本高(LLM Token)

4.2 分层抽象设计

Magnitude 提供了多级抽象,适应不同使用场景:

// 高级抽象:一句话完成任务
await agent.act('登录并创建订单');

// 中级抽象:分步操作
await agent.nav('https://example.com/login');
await agent.act('输入用户名和密码');
await agent.act('点击登录按钮');
await agent.act('创建新订单');

// 低级抽象:精确控制
await agent.act('点击用户名输入框');
await agent.act('输入 "admin"');
await agent.act('点击密码输入框');
await agent.act('输入 "password"');
await agent.act('点击登录按钮');

4.3 智能数据提取

Magnitude 的 extract 方法是另一项创新:

const products = await agent.extract(
  '提取页面上的所有商品信息',
  z.array(z.object({
    name: z.string(),
    price: z.number(),
    rating: z.number().describe('评分 1-5'),
    inStock: z.boolean()
  }))
);

工作原理

  1. LLM 分析页面截图
  2. 识别符合描述的数据
  3. 使用 Zod Schema 验证和结构化输出
  4. 返回类型安全的 TypeScript 对象

5. 技术局限性与挑战

5.1 可靠性挑战

社区反馈的主要问题:

“如果一个工作流有 30 步,每步成功率 95%,整体成功率只有约 21%”

根因分析

  • LLM 决策的不确定性
  • 视觉理解的误差累积
  • 网页动态变化的影响

可能的解决方案

  • 引入重试机制
  • 步骤级别的状态检查点
  • 错误恢复策略

5.2 成本考量

Vision-First 架构的固有成本:

成本项估算
单次运行~$1.05 (Claude Sonnet)
截图 Token~1,000-2,000 tokens/张
大规模使用成本快速累积

成本优化方向

  • 提示词缓存(已实现)
  • 选择性截图(仅关键步骤)
  • 本地 VLM 部署

5.3 速度瓶颈

每步操作的延迟:

  • 截图:~100-300ms
  • LLM API 调用:~1-3s
  • 总延迟:每步 1-5 秒

对于需要快速响应的场景(如实时自动化),这可能是一个瓶颈。

6. 架构演进方向

基于代码仓库和社区讨论,Magnitude 的未来发展方向:

  1. 确定性执行:引入缓存机制,使相同输入产生相同输出
  2. 本地模型支持:减少对云端 LLM 的依赖
  3. 更多浏览器支持:扩展至 Firefox、WebKit
  4. 桌面应用自动化:Vision-First 架构可扩展至桌面应用
  5. Agent 间协作:多 Agent 协同完成复杂任务

参考资料