agentic-ai-browser
用 LLM 驱动 Playwright 浏览器自动化,小模型也能完成复杂网页任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 LLM 驱动 Playwright 浏览器自动化,小模型也能完成复杂网页任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你早上起床,让 AI 帮你浏览 LinkedIn,把前 5 页招聘帖子里所有涉及"AI 工程师"岗位的公司名称、薪资范围和工作地点整理成一份文本报告——然后你睡了个回笼觉,等醒来时报告已经静静地躺在 ./logs 目录里。这不是科幻,而是 Agentic AI Browser 已经能完成的事情。
它用 Playwright 操作真实浏览器,用 LLM(Gemini / GPT / DeepSeek / Ollama)理解网页意图,用 LangChain 构建 Agent 决策图谱。与那些动辄砸几千亿参数追求"越大越好"的 AI 项目不同,这个项目走的是一条效率优先的技术路线:让小模型也能在浏览器自动化场景中发挥出不错的效果。
项目地址:https://github.com/esinecan/agentic-ai-browser Stars:162(2026年6月)| 主语言:TypeScript | License:MIT
图1:Agentic AI Browser 系统架构思维导图(来源:仓库 Browser Automator Mind Map.png)
在 Agentic AI Browser 出现之前,网页自动化主要有两种技术路线:
Agentic AI Browser 正是针对这两个痛点设计的:它用 Playwright 处理底层浏览器交互(模拟真实用户操作),用 LLM 处理高层决策(理解页面语义、选择操作目标),让 AI 和浏览器之间形成闭环。
项目作者在 README 中明确写道:
"It's single agent by design, and it doesn't require highly specialized models. Quite the opposite. It is built with getting solid benefit out of smaller models in mind."
这背后的洞察是:浏览器自动化的核心挑战不是"模型要有多聪明",而是系统设计要有多可靠。同样的任务,一个 7B 参数模型在好的 Agent 设计下,可以打败一个 70B 参数模型在差的设计下完成的效果。
项目采用经典的分层架构,从底层到高层依次是:
Layer 1 — 浏览器执行层(src/browserExecutor.ts,872行)
负责与 Playwright 直接交互,是整个系统的"手":
click、input、navigate、wait、scroll、notes、sendHumanMessagez.object({ type: z.enum([...]), ... })),确保 LLM 返回的 Action 格式合法Layer 2 — DOM 解析层(src/core/page/)
从浏览器获取原始 HTML,提取结构化信息:
PageAnalyzer:总控调度多个 ExtractorContentExtractor:处理长页面渐进式加载DOMExtractorRegistry:插件化注册机制,支持自定义 ExtractorLayer 3 — 页面理解层(src/pageInterpreter.ts,125行)
将 DOM 结构转换为 LLM 可理解的自然语言摘要:
PAGE TITLE、META DESCRIPTION、主内容区、链接列表[link text -> href]),便于 LLM 精确引用Layer 4 — Agent 决策层(src/automation.ts)
基于 LangChain LangGraph 构建状态机 Agent:
SuccessPatterns:成功模式缓存,按域名存储有效的选择器和操作data/success-patterns.json,跨会话复用Layer 5 — 可视化层
./logs 目录存储带时间戳的执行日志项目支持 4 种 LLM Provider,通过 LLM_PROVIDER 环境变量切换:
| Provider | 配置 | 说明 |
|---|---|---|
| Ollama | OLLAMA_HOST=http://localhost:11434 | 本地模型,完全离线 |
| Gemini | GEMINI_API_KEY | Google 官方 API |
| OpenAI | OPENAI_API_KEY + OPENAI_BASE_URL | 支持自定义 base URL |
| DeepSeek | 同 OpenAI 格式,BASE_URL=https://api.deepseek.com | 性价比高 |
这意味着用户可以用 Ollama 跑本地 7B 模型纯离线运行,也可以切换到 DeepSeek 享受云端大模型的能力。
user-defined-functions.json 允许用户定义自己的自动化函数(类似浏览器脚本插件),通过 UserFunctionRegistry 注册到 Agent 能力体系中。这使得非程序员也能通过修改 JSON 配置文件扩展 Agent 的技能范围。
项目对运行环境的要求不高:
PLAYWRIGHT_BROWSERS_PATH 指定)# .env 配置示例
LLM_PROVIDER=openai
OPENAI_API_KEY=your-deepseek-key-here
OPENAI_BASE_URL=https://api.deepseek.com
HEADLESS=false # 开发时设为 false 看浏览器
START_URL=https://duckduckgo.com
git clone https://github.com/esinecan/agentic-ai-browser.git
cd agentic-ai-browser
npm install
npm run dev # 开发模式(ts-node 实时编译)
# 或
npm run build && npm start # 生产模式
| 分层 | 技术选型 |
|---|---|
| 语言 | TypeScript 5.8(严格模式) |
| 运行时 | Node.js 18+(ESM 模块) |
| 浏览器自动化 | Playwright 1.42 |
| Agent 框架 | LangChain 0.1.4 + LangGraph 0.2 |
| Schema 验证 | Zod 3.21 |
| HTTP 客户端 | node-fetch 2.7(兼容旧 API) |
| HTML 解析 | Cheerio 1.0 |
| 测试 | Jest 29 + Playwright Test |
DOMExtractorRegistry 使得新增页面解析器(如社交媒体、电商详情页)无需修改核心代码,只需注册即可。SuccessPatterns 将每次成功的操作记录下来,下次遇到同类网站直接复用,无需重新推理。src/__tests__/ 目录,但单元测试主要覆盖核心组件(Action Extractor、Browser Executor),端到端自动化测试依赖真实网络环境,难以在 CI 中稳定运行。OPENAI_API_KEY 等敏感信息通过 .env 管理,但在 .env.example 中出现了示例密钥(LLM_MO...chat),可能被粗心用户误提交。Agentic AI Browser 代表了一种工程实用主义的技术路线:不是追求更大的模型参数,而是追求更好的系统设计。在企业自动化场景中,这意味着更低的成本、更稳定的运行、更快的迭代。
它的成功模式缓存机制尤其值得关注:当 Agent 学会在某个网站上完成某类操作后,这个知识会被持久化存储,未来遇到类似的网站可以直接"借鉴"。这打破了传统 RPA"每个网站单独配置"的困境。
从项目热度来看,2026 年上半年浏览器自动化 Agent 赛道正在升温:Playwright 的 GitHub Stars 突破 60k,LangChain 生态日趋成熟,加上 LLM API 成本持续下降,"小模型 + 浏览器自动化"的组合正在成为一个值得关注的技术方向。
ollama pull llama3 跑纯本地版本,零成本体验OPENAI_BASE_URL=https://api.deepseek.comuser-defined-functions.json,教会 Agent 执行你最常用的研究任务src/automation.ts 理解 LangGraph 状态机设计,然后从 src/core/page/ 扩展自己的 DOM Extractor总结:Agentic AI Browser 是一个工程导向的浏览器自动化工具,用"小而美"的设计思路替代了"大而全"的暴力堆参数路线。它的核心价值在于 SuccessPatterns 跨会话学习机制和插件化 DOM Extractor 架构,让 AI 浏览器自动化从"每次重头学"变成了"一次学会、长期复用"。适合对 AI 自动化有实际需求(数据采集、竞品监控、内容聚合)的开发者和产品团队。