模型没有报错,任务却悄悄走偏:Event Horizon 实测记录

2 阅读8分钟

让模型去操作网页,最难受的是任务已经走偏,却没有任何报错。点错了对象、漏看了半个列表、把过期的页面当成现在的页面,模型照样给出一个语气笃定的答案。回头追问“它当时看到了什么、为什么点了那个”,往往没有记录可查。

Event Horizon(下称 EH)是一套网页感知与操作核验工具。它把页面可见的内容、控件和状态整理成模型可用的结构,执行模型发起的点击、填写、选择和滚动,在动作前检查执行条件,并在动作后记录页面变化。模型负责规划与选择,EH 提供页面信息、执行检查和过程记录,让每一步都有据可查。已有多种模型通过它完成任务,具体表现见下文。

这篇文章只做一件事:把已经跑过的记录摆出来。

下面的实验和录制来自历史本地部署版本,不把它们当作当前订阅客户端的实测成绩。当前版本通过 MCP 接入用户自己的 Agent,本机 Chrome 与云端感知服务配合运行;接入方式放在文末。

先看一段实况:在自建测试站上连续跑六道题

演示视频:自研 Agent AI 操作网页实况:筛选、表单、翻页、弹窗六道题连续跑(8 分 12 秒)。

下文六道题对应的完整历史录制为 8 分 12 秒,一镜到底,没有剪辑、倍速或字幕,留存在演示仓库。它仅客观演示模拟真人访问目标网页的功能。

2026 年 9 月 21 日,我们在当时自建的公开测试站 plutoyyanng.cn 上整屏录了这段实况。测试站用固定的合成数据搭成,有 24 件商品、36 个模拟班次、30 条资料公告和 3 个展示点,每个答案都能与测试站的数据源核对;站内没有账号、支付或真实预订,也不涉及任何第三方网站。屏幕左边是聊天前台,右边是一个未登录的 Chrome。我们在前台逐题输入题目,网页上的每一步由驾驶模型现场决定。

六道题层层递进,走遍测试站的六个页面。第一道题从空白页打开网址,之后每一道都接着上一道留下的页面继续:

#页面题目要点驾驶用时步数
1工作台读四项统计和四个类别的件数,再打开“数据说明”弹窗读三条说明38 秒2
2商品样本在音频设备里筛出新品、按价格排序,打开最便宜的一件,读单价、库存、规格和关联资料83 秒13
3班次数据筛出北京到上海、按票价排序,打开最便宜的一班,读时刻、票价、余位和开行日期70 秒12
4条件查询查 10 月 1 日成都到乐山、08:00–16:00 出发、票价不超过 100 元、只看有余位的班次108 秒14
5资料公告翻到第 3 页读第一条资料,再跳到它关联的商品,读单价、库存和评分44 秒7
6展示点信息进页面先弹出一则营业时间调整公告,读出特殊时段,再读常规营业时间和关联商品40 秒3

六道题驾驶合计 6 分 24 秒、51 步,没有动作被引擎拒绝。43 项交付内容逐一和测试站的数据源核对,全部一致。驾驶模型是 DeepSeek V4.1 Flash(OpenCode,思考档 high),六道题的模型费合计 $0.060,不含聊天前台、硬件和人工。

这段实况用的是冻结版代码(与下文 300 次运行同一版本)加四处页面读取的小修。四处都是在这个测试站上发现的同一类问题:页面上看得见,模型收到的页面结构里却没有,或者认错了。例如,被标签包住的票价输入框没有进入页面结构,模型只能用方向键把数值一点点调出来,那次条件查询跑了 464 秒(当时的驾驶模型是 DeepSeek V4 Flash);补上这一处之后,同一台机器、同一个模型再跑一次用了 217 秒。实况是在另一台机器上录的,换用了 V4.1 Flash、四处都已补上,这道题用了 108 秒;条件不同,不能和前两个数字直接比。四处修正都可以单独关闭,回到冻结版的行为。

测试站是我们自己搭的,页面数量、交互和数据量都比真实网站简单。这一段只说明这六道题、这一轮的结果,不代表真实网站上的表现;真实网站上的批量结果见下文“300 次运行”。视频、每道题的结果、运行报告、核对清单和哈希见实况说明。

起点:一道需要两个网站接力的出差题

早期验证从一道出差题开始。2026 年 6 月 28 日,我们把一次真实出差改编成测试题:次日从北京去上饶,18:00 前到酒店;到上饶前要先到南昌和同事汇合,所以必须先飞南昌再换高铁。航班落地、去高铁站的转场、发车、到店,四个时间必须同时对得上。看错其中一个,就可能得到一条走不通的行程。

模型连续操作东方航空和 12306,查询航班与车次,再按题设给定的机场转站 2 小时、上饶站到酒店 30 分钟,核算出这条去程:

MU6139  北京首都 10:40 → 南昌昌北 13:05
        +2h 前往南昌西站
G1616   南昌西 15:27 → 上饶 16:46
        +30min 前往酒店
        17:16 到店,距 18:00 还有 44 分钟

当时只测试了去程。随后换成国航加 12306,要求去程、返程四段都实际查询。前四轮陆续暴露出页面状态、动作反馈和列表处理问题;修正后,第五轮共尝试 36 次动作,其中 35 次返回执行成功、1 次被拒绝,最终完成四段查询。无需人工接管指的是这次修复后的运行,全程没有进入购买流程。

后来又用 Codex 复现同一道题。前两轮被叫停,期间修正了输入框残值处理、浮层关闭后引用旧对象和列表回顶等问题;第三轮的 56 次动作尝试均返回执行成功,完成了去返两条链路,未由人工接管。新增动作主要用于扩查航班备选,其中包括此前运行没有完成查询的北京大兴方案。

这两次成功运行采用了不同的查询路径。由于预算、任务提示和工具版本也有变化,35 次与 56 次的差距不能单独用于判断模型能力。完整的运行条件与修复过程见早期迭代记录。

单次复现之外:用七种驾驶组合查找缺陷

下面这批记录来自工具仍在迭代的早期阶段,主要用于查找缺陷。这里把模型与运行它的 CLI 环境合称为“驾驶组合”;结果对应当时的版本与配置,后续版本的表现需要重新测试。

一组受控测试让 Claude、MiniMax、DeepSeek 和 Qwen 在同一自动感知条件下分别完成相同的电商任务。淘宝任务的首轮测试中,四个模型都完成了任务;京东详情任务的首轮则暴露出一处工具层交付缺陷:页面信息已经采集到,却没有完整进入模型实际收到的页面结构。

这个问题最初一度被误判为模型能力不足。沿保存的现场记录复核并修正工具层后,四个模型按同一条件整组重跑,均在 4 次动作内完成任务,提交字段也都通过冻结证据核验。这次排查说明,多模型测试还能提供定位线索,帮助区分模型决策问题与工具交付缺陷。

2026 年 7 月 3 日至 4 日,我们又把密集测试扩到 Claude、Codex、DeepSeek、Qwen、MiniMax、混元和豆包七种驾驶组合,覆盖出行、电商、表单和内容四类任务、两轮循环,累计 30 余次驾驶测试。各类任务参与的组合不同,下面的分母分别表示实际参加该项测试的组合数量。第一轮并不好看:陌生城市对的混合出行,全程查询完成比例只有 1/3;跨站电商比价为 3/3;酒店长表单为 3/4;双站内容汇总为 4/4。

第二轮扩大了陌生城市对的测试范围:原先的 Codex、DeepSeek、Qwen 再次运行,并加入此前未测试这道题的 MiniMax。四个组合中,Codex 和 MiniMax 完成了全部查询;DeepSeek 和 Qwen 完成了大部分流程,但在返程航段耗尽了动作预算。在这四次运行中,首轮出现的错月和误触问题没有再次发生。

这些数字不能合并成一个“七模型成功率”。不同模型运行在不同 CLI 环境中,参与的任务也并非完全相同;同一个模型更换运行环境后,面对大日历浮层也出现过明显不同的操作行为。这些观察提示,模型、运行环境和收到的页面信息都会影响结果,各种组合的稳定性需要分别测量。

和 Browser Use 的六对同题对照

2026 年 7 月,我们首次与 Browser Use 做了六对同题对照。任务要求先从 Investing 核对 RXT 行情,再从 SEC 首页逐级找到最新的 8-K 和 EX-99.1 字段。两边都用 DeepSeek V4 Pro,关闭经验,交替先手,相邻运行至少冷却 300 秒。最终输出交给同一套固定规则检查,下文称为“质量门”。

指标EHBrowser Use
通过质量门6/61/6
六轮用时中位数391.8 秒514.6 秒
六轮模型调用数中位数2224
六轮费用中位数$0.0456$0.0732
总费用 ÷ 通过次数$0.047$0.407

Browser Use 的五次未通过分为三类:一次在 SEC 入口之间绕行后没有形成结果,两次最终提交的字段不全,两次选错了申报对象。其中四轮在 SEC 阶段的第一个动作就选中了正确入口,问题出在后面的筛选、对象选择和结果提交。唯一两边都通过的一对里,EH 用时低约 5%,费用低约 5.5%,调用数略高。

质量门检查完成标记、必需字段和部分预设条件,没有自动将每个行情数值与页面逐项对照,也没有独立确认申报文件是当时最新、日期内容正确。因此,“通过质量门”不等同于全部字段已经完成事实核验。

这是项目方组织的固定配置测试。EH 的任务卡带分段查询和字段绑定指引,Browser Use 使用本地适配层;两边的提示、执行预算和结果提交机制没有完全对齐,推理档位是否等价也缺少记录证明。表格描述的是这道任务、这组配置下通过质量门的比例与运行开销,不能单独归因为框架能力差异,也不能外推成“全面领先”。这组对照没有跑前面那道飞机加高铁的出差题,Browser Use 在那道题上的表现没有记录。具体条件见对照说明。

300 次运行:把一道题扩大到 50 道

完成前面的缺陷排查后,我们把测试扩展到日常使用中的自然语言任务:自建 50 道网页任务,在无经验和有经验两种条件下各重复运行 3 次,得到两组各 150 次运行。无经验组不读取历史驾驶经验;经验组可以读取预先冻结的驾驶经验。两组都用 DeepSeek V4 Flash 经 OpenCode 驾驶,执行期间没有人工接管。这 300 份运行的交付,我逐份按任务交付要求核过;下面的 298/300 是按交付统计的通过数。

指标无经验组(150 次)经验组(150 次)合计
执行结束并留下记录150/150150/150300/300
通过交付判定(原冻结口径)149/150149/150298/300
实际涉及站点4645并集 51
到达的去重 URL318315并集 479
保存的页面状态帧1,8801,8003,680
累计任务用时11 小时 46 分11 小时 05 分22 小时 52 分
每次运行用时中位数200.2 秒195.7 秒197.9 秒
每次运行模型费用(均值)$0.01876$0.01802$0.01839
输入缓存命中率95.63%95.51%95.58%

这张表怎么读:

  • 149/150 表示每组通过原冻结交付判定的数量,关注模型是否获取并交付了任务答案。这 300 份交付由我逐份核验;298/300 是交付通过数,不扩大为独立第三方逐字段事实核验的准确率,也不能与前面 Browser Use 对照的质量门通过率合并。
  • 经验组未提高交付通过数。效率收益有限且不稳定,不作为本项目主要卖点;这里保留两组的原始统计,不把耗时差异解释为自动学习收益或跨题泛化能力。
  • 3,680 帧是每次感知后保存的现场,同一页面可以有多帧,不是 3,680 个不同网页。站点按主域名归一。
  • 费用只含当时调用记录的模型费,不含硬件、网络和人工。缓存命中率按缓存读取 token 与未缓存输入 token 加权计算。

任务包括:查中国天气网上海未来三天有没有雨,证据必须来自 weather.com.cn;采集豆瓣电影 Top250 第二页的 25 部电影,片名和评分一条不能少,也不能混入第一页;核实“最近显卡是不是又涨价了”,需要两个不同来源的独立证据,“没有涨价”也是合法结论。

隐藏评分细则在开跑前写好,不提供给模型;题面中的来源、数量和字段等公开约束照常提供。已公开的样题以后只用于开发与回归,不再承担隐藏泛化测试的证明作用。任务结构、十条样题与判定说明见任务集附录。

这些记录的能力边界

  • Canvas。 画布内部的内容识别与交互暂不承接,图标类控件的识别在计划里,还没算进能力。
  • 缺少语义的控件和动态页面。 没有可靠字段说明的控件、复杂的输入联动、浮层切换、虚拟滚动,仍可能造成识别缺口或操作受阻。新站点要先验证可操作范围和停止条件。
  • 模型本身。 页面建模补不上模型的推理和规划能力。反复操作、收尾不足、预算耗尽都是已经观察到的问题,小尺寸本地模型的可用程度要单独测。
  • 无人接管的范围。 已有的长批次来自预先约定任务和权限的测试环境。登录态变化、站点改版、验证码都会中断交付;有购买、删除、授权等副作用的流程不能直接套用只读测试的结论。

上述测试版本在动作派发前会检查目标是否有效、动作是否允许、落点是否被遮挡,命中支付、购买、删除、授权规则的操作会被拒绝并留下原因。300 次运行里这类规则没有触发过,所以这组数据不能证明它在真实高危请求下的拦截效果。项目只面向授权范围内的任务,不提供绕过登录、验证码或平台限制的能力。

番外:一次企业流程探索

我们也在飞书里试过一条 OA 流程:在沙盒 OA 环境中给 agent 一个受控员工账号,把网页操作接进企业审批。目前仍处于探索阶段,没有对应的在售产品,也不代表部署或托管承诺。

当前 MCP 客户端与试用

9 月文章中的旧托管演示入口已经退役。现在的方式是:把你自己的 Agent 接到你自己的浏览器。Chrome 在本机运行,网页采样需要发送到云端处理;模型与 Agent 由你选择。

客户端仓库、安装和接入说明。需要 Python 3.10+、Chrome,以及能够访问本机文件、加载 MCP 工具的 Agent。启动本机控制台后,按说明注册并验证邮箱、激活权益、连接浏览器,再把接入指令交给自己的 Agent。

客户端代码采用 AGPL-3.0-only,云端核心不包含在这个仓库中;在线服务需要有效订阅权益,自己的模型调用费用另计。仓库里提供了一批一次性试用激活码,见 赠送激活码-20个.txt;部分可能已经领取,以文件和实际激活结果为准。

公开 HTTP(S) 站点不要求精确白名单,敏感站点和私有网络入口受限制。浏览器在本机,页面采样仍会经过云端,使用前请阅读控制台中的服务协议。

如果你在工程中遇到类似问题,或者对这些记录有疑问、有复核意见,欢迎发邮件交流:eventhorizontest@163.com,标题以「[EH 反馈]」开头,不要发附件。反馈时可以说明具体任务、Agent 当时看到什么,以及从哪一步开始走偏。

本文根据我之前的知乎实测文章整理,保留历史实验的时间与统计口径,更新了当前接入方式。演示仓库保留完整历史录制、逐题结果、报告与附录。