屏幕上的鼠标自己动了起来。
它先点开登录框,敲下账号密码,再点提交。整个过程键盘没被摸过,那次点击也没人代劳。
这是阿里巴巴一个开源项目最新演示的画面,PageAgent。它最近在海外技术圈突然被顶上热门,原因简单又吓人:只要一行<script>标签,任何网页都能自己听懂人话,自己动手操作。
别人在外面开车,阿里让网页自己长出手
过去几年,想让AI替你操作网页,思路几乎是同一套:找一个外部程序,启动一个无头浏览器,截图丢给多模态模型,让它猜坐标、模拟点击。Selenium、Playwright、Puppeteer、browser-use,走的都是这条路,代理在网页外面,隔着屏幕遥控。
PageAgent把这个方向整个倒过来了。
它不开外部浏览器,不截图,也用不着多模态模型。脚本就活在网页内部,读的是浏览器里那份实时DOM,纯文本,压根碰不到像素。MarkTechPost的分析这样写道:
"Most browser agents drive the page from the outside... Alibaba's Page Agent flips the direction. It reads the live DOM as text , a 'dehydrated' FlatDomTree , then clicks, types, and scrolls as the real user."
「大多数浏览器代理都是从外部驱动页面……阿里的Page Agent把方向倒了过来。它把实时DOM读成文本,一种『脱水』过的FlatDomTree,然后像真实用户一样点击、输入、滚动。」
▲ 官网首页的标语毫不遮掩:「The AI Operator Living in Your Web Page」,住在你网页里的AI操作员,只需一行代码。
因为代理本来就在页面里运行,它天生继承用户当下的登录状态。不用重新走一遍认证,不用后端配合改一行代码。这一点,恰恰是外部代理最头疼的坎。
从Show HN到22k星标:一个人的项目,三个月后才被真正看见
这个项目其实早有苗头。今年3月,开发者Simon(GitHub账号gaomeng1900)就在Hacker News上发了帖子:
"I'm building PageAgent, an open-source (MIT) library that embeds an AI agent directly into your frontend... I'm experimenting with an 'inside-out' paradigm instead."
「我在做PageAgent,一个把AI代理嵌进前端的开源库(MIT协议)……我在尝试一种『由内而外』的架构。」
▲ Show HN帖子拿到147票、76条评论,作者亲自下场回复每一个质疑,坦承项目「高度实验性」。
那次发布拿了147个点赞,76条评论,算不上顶流,但技术圈的种子已经种下。国内掘金、知乎也陆续有人写解读,项目星标缓慢爬升。
真正的转折点在7月2日。MarkTechPost发了一篇深度分析,配上对比表格和演示视频。第二天,星标增长曲线几乎是垂直的。



▲ MarkTechPost同步发布的X摘要,把「从外部驱动页面」和「在网页内部读取DOM」这组差异放在了最前面。
紧接着,7月3日,一条英文推文把它彻底推向了SaaS圈:
"this is insane. alibaba just dropped an open-source tool called PageAgent, and almost no one in the SaaS world is paying attention yet."
「这太疯狂了。阿里刚开源了一个叫PageAgent的工具,SaaS界几乎没人注意到。」




▲ 这条推文获得67赞、23转发,评论区不少SaaS创始人第一次听说这个项目。
短短几天,GitHub星标从MarkTechPost推文里提到的1.7万,冲到了22.3k,forks接近1900,贡献者34人。
▲ 仓库主页显示:22.3k星标,1.9k forks,MIT协议,最新版本v1.11.0,四小时前刚更新过。
拆开黑箱:一份「脱水」的网页,怎么喂给AI
PageAgent的核心动作,业内叫DOM Dehydration(DOM脱水)。
一个现代网页的原始HTML动辄几千个节点,一股脑丢给大模型,又贵又吵。PageAgent做的事情,是把页面上所有可交互元素(按钮、输入框、链接)挑出来,给每个元素编号,保留关键语义信息,剥掉冗余样式。结果是一份极简的文本列表:
[0]<a aria-label="Company Home" />
[5]<input type="text" placeholder="Search by order ID..." />
[8]<button aria-haspopup="listbox">Pending Review</button>
[17]<a>SO-20260329-001 Alice Chen ... Pending Review USD 299.00</a>
[18]<button>Approve</button>
模型看到的只是这份列表,压根不掺一张截图。它决定点第18号按钮,浏览器就会真的触发那个DOM节点的点击事件。
▲ 有开发者专门写了篇技术博客拆解PageAgent的执行链路:从PageAgentCore.execute(task)到PageController真正调用DOM方法,一步步对应关系摆得明明白白。
每一轮循环,系统会把四块内容拼进提示词:操作规则(instructions)、任务状态(agent_state)、历史记忆(agent_history)、当前页面的脱水内容(browser_state)。模型必须调用一个叫AgentOutput的工具返回结构化动作,里面还带着"反思+下一步目标"的字段,逼着它先想清楚再动手,不许瞎点。
这套设计换来一个立竿见影的后果:不再需要多模态模型。一个足够强的纯文本模型就能跑起来,延迟和成本都被砍掉一大块。项目文档里写的免费测试模型,用的就是阿里自家的Qwen3.5-plus。
网页自己会点鼠标,谁来防着它点错
一个能替你操作网页的脚本,听起来方便,细想又让人后背发凉,它到底能不能被信任?
PageAgent给了几层护栏:操作白名单、敏感字段(比如密码)不送进模型、关键动作执行前必须弹窗等用户批准。但作者自己在HN评论区说得很坦白,提示词层面的"不要做危险事"终究算不上保证,真正敏感的操作还是得靠后端校验兜底。
社区显然没有照单全收。有条HN评论劈头就问:Chrome扩展的权限范围能不能锁死在一个标签页分组里?作者回复,目前扩展只能访问任务开始时的活动标签页,新开的标签会自动归进一个专属分组,算是在摸索一个折中方案。
还有一段插曲挺能说明问题。一位用户把LLM端点填成了一个根本连不通的本地IP,结果扩展当场崩溃,而且每次启动都崩。另一位网友看完调侃了一句:「希望这是LLM自己犯的错,不然对一个『开发者』来说,这盲区未免太大了。」这条吐槽被顶得很高,倒也从侧面说明,愿意较真挑毛病的人,恰恰是这个项目最值钱的用户群。
到底谁在用它
对普通开发者来说,吸引力摆在明面上:ERP、CRM、后台管理系统这类「点二十次鼠标才能完成一件事」的老系统,现在冲着输入框说句话就能搞定。
文档里的定位很低调:面向Web开发者,用来做UX增强,和browser-use那种面向"爬虫/代理开发者"、覆盖"整个浏览器"的自动化工具刻意区分开。
▲ 文档首页列出三类典型用例:接入客服机器人替代"请点这里"式引导、给没有现代化前端的老系统"一行代码"加装智能层、用来做交互式培训演示。
7月3日另一条西语推文把这种冲击感喊得更响:
"🚨EXCLUSIVA: CHINA ACABA DE ABRIR LA PUERTA AL FUTURO DE LAS WEB APPS... Esto no es una demo. Es producción-ready."
「🚨独家:中国刚刚为网页应用的未来打开了大门……别拿这当演示看,它已经生产就绪。」
这条推文拿到369个赞、61次转发、2.8万次查看,数字背后,是一批海外SaaS创始人第一次意识到,自己手搓了半年的AI Copilot功能,可能被一行脚本标签取代。
光环之下,还有几件事没解决
热闹归热闹,PageAgent目前更像一个处在早期、正在被反复打磨的实验项目,离「闭眼接入生产环境」的成熟产品还有距离。
企业级网站普遍设置的CSP(内容安全策略)会挡掉内联脚本,官方演示用的书签小工具能绕过去,真要上线还得把脚本域名加进白名单。动态渲染复杂、大量用Canvas或者Shadow DOM的页面,脱水之后信息会打折扣,识别效果跟着下降。免费测试用的Qwen模型只是给人体验用的,官方明确建议生产环境自备API Key并且做好代理保护,不要把密钥明晃晃地摆在前端代码里。
作者本人的态度也偏谨慎。他在项目治理上明确说过:自己没办法做每一行代码的第一个人类审阅者,面对AI生成代码的浪潮,这份清醒比故事本身更值得记一笔。
一个人从Hacker News的147个赞起步,三个多月后被推上2万多星标,真正的助推力,是「网页原来还能这么用」这件事本身足够反直觉,没花一分钱营销预算。至于它会不会真的成为下一代SaaS产品的标配入口,现在下结论还早。那个自己会点鼠标的网页,已经从科幻场景走进了现实。