让AI真正“看见“界面:纯视觉GUI自动化编排器开源了

今年3月,我开源了 Hermes Agent CN,一个轻量级 AI Agent 框架。几个月来,社区反馈最多的问题是:"Agent 怎么操作真实的软件界面?"

之前的方案依赖于 DOM、CSS 选择器、坐标定位------每种界面都得写不同的解析逻辑,浏览器、桌面软件、3D 工具、游戏,各有各的"方言"。

而人类操作界面从来不需要这些。我们看一眼就知道按钮在哪。

这正是 browser-agent(包名 gui-agent-vlm)要解决的问题------让 AI 通过纯视觉理解操作任何界面。

一个真实测试:AI 完整操作小红书

今天做了个端到端测试,验证 AI 是否真的能像人一样"看屏幕操作":

复制代码
任务线:打开小红书 → 找一篇笔记点赞 → 返回首页 → 搜索指定内容 → 找到结果页 → 点赞 → 完成

7 步任务编排,全部自动完成,中间没有一行硬编码的 CSS 选择器。AI 通过截图观察页面,理解每个元素是什么,决定下一步做什么。

测试用的模型是 Qwen/Qwen3-VL-8B-Thinking(硅基流动云端 API),每次操作前先截图分析,识别按钮位置,调用对应工具执行。

测试过程中,我们也对比了不同规模 VLM 的效果差异:

Ollama qwen3-vl:2b(本地) --- 2B 模型在复杂多步任务中很快暴露瓶颈:视觉精度不够,经常把"导航按钮"和"搜索输入框"搞混;POI 检测到交互元素后,模型在两步操作之间就开始"遗忘"页面状态,反复做同一操作陷入死循环。它对"页面加载完成"和"操作成功"的视觉反馈几乎无感。7 步任务链跑到第 3 步就卡死了。

Qwen/Qwen3-VL-8B-Thinking(硅基流动) --- 同样是纯视觉截图驱动,8B 模型整条链路走通。关键差异在于:它能正确区分"导航到新页面 ≠ 在当前页搜索",能够感知点赞后的 UI 反馈(心形变红),遇到意外弹窗(如登录提示)能自然跳过继续任务。

结论很清晰:GUI 自动化场景下,8B 是复杂任务的入门之选。 2B/4B 适合单一页面内的简单点击(如"点一下弹窗确认"),但涉及页面切换、搜索、状态判断的多步编排,参数规模直接决定了可用性。从实测看,本地 8B(如 qwen3-vl:8b 的 Ollama 版本)效果也会接近云端,8GB VRAM 即可部署。

架构:不是另一个自动化工具

市面上做浏览器自动化的项目不少。但 browser-agent 的定位不一样------它是编排器,不是执行器。

复制代码
用户/Agent 下达任务
       │
       ▼
browser-agent (编排器)
  ModelRouter 自动选模型
       │
       ├── PlaywrightExecutor (浏览器)
       │   └── 通过 VLM 截图理解 + 操作
       │
       └── ManoPExecutor (桌面 GUI) 
           └── 纯视觉定位(Mano-P 云端 API)

三层可插拔架构

第一层:执行器抽象

PlaywrightExecutor 负责浏览器,ManoPExecutor 负责桌面 GUI。每个执行器只需实现 observe()(观察)和 act()(操作)两个接口。想支持新界面?写个新执行器就行。

第二层:模型自动检测

不绑死任何模型。ModelRouter 自动检测可用 VLM:

优先级 模型源 适用场景
P0 手动指定 生产环境固定配置
P1 Ollama / vLLM / LM Studio 本地 VLM 离线/私有化部署
P2 调用方 Agent 注入 Hermes Agent 等框架集成

甚至支持 Agent 把自己的模型注入给 browser-agent 用,省去单独部署一套推理服务。

第三层:监督纠错

操作前后自动截图,pHash 比对验证页面是否发生变化。超过阈值自动重试,避免"以为点了但页面没动"的经典死循环。

三种调用方式

python 复制代码
# 1. Python API
from browser_agent import BrowserAgent
agent = BrowserAgent()
result = agent.run("搜索深圳天气")
print(result.text)
bash 复制代码
# 2. CLI
browser-agent "搜索深圳天气"
browser-agent --no-headless "帮我登录 GitHub"  # 调试模式
json 复制代码
// 3. MCP Server(跨框架兼容)
{
  "mcpServers": {
    "browser-agent": {
      "command": "python",
      "args": ["-m", "browser_agent.mcp_server"]
    }
  }
}

MCP Server 模式意味着 Cline、Cursor、Continue、甚至你现在正在用的编辑器------任何支持 MCP 的 Agent 框架都可以直接调用。

今天,gui-agent-vlm 正式发布到 PyPI

复制代码
pip install gui-agent-vlm
playwright install chromium
  • 29 个单元测试 + 3 个模拟 E2E 场景,全部通过
  • 与 Hermes Agent CN 深度集成(自带 SKILL.md,MCP 配置即用)
  • 跨平台:Linux / Windows / macOS / WSL2

后续规划

  • 更多执行器:Mano-P 本地推理(等 NVIDIA CUDA 开源)、Selenium、Puppeteer
  • 更智能的监督:执行前预测结果 vs 执行后实际结果对比
  • 大规模 E2E 测试:多站点、复杂交互场景

最后

browser-agent 尝试回答一个很简单的问题------

如果 AI 能像人一样"看屏幕"操作,那我们还需要为每种软件写适配器吗?

我觉得不需要。欢迎试试。

GitHub: github.com/xyshanren/browser-agent

PyPI: pypi.org/project/gui-agent-vlm


求索实验室
聚焦 AI Agent、GUI 自动化、开源工具

相关推荐
弯_弯11 小时前
AI 项目验收:别在上线那天才谈怎么算成
人工智能·企业ai落地·企业ai培训·fde
.道阻且长.11 小时前
AI 按数据模态分类:计算机视觉、NLP、语音处理,一篇理清
人工智能·计算机视觉·分类
Java后端的Ai之路12 小时前
RAG 还是 Agent 自主检索?Claude Code 删掉向量库之后,我把选型讲透了
开发语言·人工智能·prompt·agent·rag
我是koten12 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
笃行35013 小时前
用 Rokid AIUI 开发日语学习助手
人工智能
段一凡-华北理工大学15 小时前
工业智能体:从Codex/Claude到项目实战~系列文章06:一张蓝图看懂“工业智能体×高炉炼铁“
人工智能·claude·codex·工业智能体·高炉炼铁智能化·高炉智能体技术栈
怕浪猫15 小时前
十个人,630 万订阅:一张 AI 学习清单里的五种老师
人工智能
JonaHu16 小时前
5分钟搭建帮你赚钱的 AI API 网站:从品牌门户到客户 Key 交付
人工智能·api·开发者·ai创业·acedatacloud
Csvn16 小时前
模型挂了全站 502?降级链让它先保住“有响应”(R04)
人工智能·aigc·agent
isNotNullX16 小时前
仓储管理最全框架:6大流程、8项指标、10个管理动作、12个常见问题
大数据·人工智能