Token导航 LogoToken导航TokenDH.com
Agent Browser logo
浏览器工具未说明官方级别未说明来源级核验

Agent Browser

MCP Server

一款专为AI代理设计的真实光标浏览器,支持多种LLM提供商,提供可视化操作和审计跟踪。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
浏览器自动化TypeScriptClaudeClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

AshtonVaughan

提供方

AshtonVaughan

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

代理浏览器

一个真正的、可见的AI代理光标浏览器。 真正的铬。真正的类人物理学。真实的审计追踪。代理以人类的方式驱动它:拖动、单击、键入、滚动——同时记录、回放和验证每个动作。

与每个主要的法学硕士合作:拟人克劳德、OpenAI GPT、谷歌双子座、Groq、Together、Fireworks、DeepInfra、Mistral、Cohere、xAI Grok、OpenRouter、困惑、Ollama(本地)、Ollama-Cloud(托管)、vLLM、LM Studio、llama.cpp或任何与OpenAI兼容的软件。 零锁定。

┌──────────────────────────────────────────────────────────────────┐
│                          Agent (your code)                       │
│   "submit the payment form"  ──┐                                 │
└────────────────────────────────┼─────────────────────────────────┘
                                 │  HTTP POST /sessions/:id/plan
                                 ▼
┌──────────────────────────────────────────────────────────────────┐
│                      AgentBrowser runtime                        │
│  Planner  ──▶  findAndClick (DOM ▶ vision-LLM)  ──▶  cursor      │
│     │              │                                  │          │
│     │              ▼                                  ▼          │
│     │     verifier (DOM diff)               Bezier trajectory    │
│     │              │                          + CDP raw events   │
│     ▼              ▼                                  │          │
│  action      action.completed event ──▶  recorder (JSONL)        │
│  memory                                              │           │
│  (skip LLM                                           ▼           │
│   on visit                                  WebSocket / SSE      │
│   #2+)                                       to operator UI      │
└──────────────────────────────────────────────────────────────────┘
                                 │
                                 ▼
                     Real visible cursor moves on real Chromium

______________________________________________________________________

为什么存在

每一个现有的浏览器自动化工具都是首先为人类构建的,并为代理进行了改装。他们讲DOM操作。它们生成8000个标记HTML转储。他们每次跑步都会重新学习每个网站。他们没有审计追踪。他们被每一个cookie横幅屏蔽了。

AgentBrowser反转了这一点。 光标是真实可见的。所有输入都经过CDP原始鼠标事件。API用目标说话,而不是用选择器说话。失败的操作会自动恢复。每一个动作都会得到验证。该系统永久学习每个网站,并在各个领域共享知识。

Other tools                       │   AgentBrowser
─────────────────────────────────│──────────────────────────────────
8000 tokens of HTML              │   50 tokens of structured meaning
agent guesses #submit-btn-v2     │   { goal: "submit the form" }
no replay, no audit              │   JSONL trace, deterministic replay
re-learns every visit            │   action memory, 7x faster on visit 3
blocked by every cookie wall     │   auto-dismiss + force-removal
no captcha story                 │   2Captcha / hCaptcha / Turnstile
no fingerprint defenses          │   per-context WebGL/canvas/audio noise
single integration: library      │   library + MCP + HTTP + WS + SSE + replay
locked to one LLM vendor         │   17 providers, one env var swap (Claude/GPT/
                                 │   Gemini/Ollama/vLLM/Groq/Together/Fireworks/...)

______________________________________________________________________

五分钟演示

git clone https://github.com/AshtonVaughan/agentbrowser
cd agentbrowser
npm install && npx playwright install chromium && npm run build

# Pick ANY LLM provider:
ANTHROPIC_API_KEY=sk-ant-...   npm run http   # Claude (default)
# or
OPENAI_API_KEY=sk-...          npm run http   # GPT
# or
GOOGLE_API_KEY=...             npm run http   # Gemini
# or
GROQ_API_KEY=gsk_...           npm run http   # Groq (Llama on LPUs)
# or run fully local with Ollama:
ollama serve &
AGENTBROWSER_LLM_PROVIDER=ollama OLLAMA_MODEL=llama3.2-vision npm run http
# or use Ollama Cloud:
OLLAMA_CLOUD_API_KEY=... npm run http

在另一个终端中:

# Create a session
curl -X POST localhost:3100/api/v1/sessions
# → { "session_id": "abc123..." }

# Plan + execute a goal end-to-end
curl -X POST localhost:3100/api/v1/sessions/abc123/plan \
  -H 'content-type: application/json' \
  -d '{"goal":"go to news.ycombinator.com and click the top story"}'
# → { success: true, steps: [...], duration_ms: 4200 }

# Watch it live
open ui/operator/index.html

代理的光标在屏幕上以人工方式移动。每个cursor.move、click、page change都会实时流式传输到操作员UI。每一个动作都被记录下来 ~/.agentbrowser/traces/ 用于重播。

______________________________________________________________________

你得到了什么

可见的类人光标

  • 通过上下文初始化脚本注入SVG光标精灵
  • 贝塞尔曲线轨迹具有抖动、易于进出、可选过冲
  • 所有输入均通过CDP Input.dispatchMouseEvent (非剧作家定位器)
  • 点击涟漪动画,淡化14点光标轨迹
  • 用于重放再现性的每条轨迹确定性种子

混合动作层

它做什么
cursor.click(x, y)通过CDP直接点击视口
cursor.clickBySelector(sel)Bbox解析,滚动查看,人性化点击。通过可访问的名称查找自动恢复过时的元素。
cursor.clickByText(text)视觉上相似的元素之间的文本消歧
cursor.clickByRole(role, {name})ARIA驱动的目标定位
findAndClick({goal, ...})DOM选择器→ text → role → 视觉LLM,每一步都经过验证
executor.executeAction(name)动作记忆快速路径→ 回退以查找并单击
planner.planAndExecute(goal)LLM目标分解→ 具有重试预算的多步骤运行

愿景管道

  • extractElementBoxes(page) 返回丰富元素目录:id/role/tag/可访问名称/值/bbox/选择器/禁用
  • bboxScreenshot(sessionId) 返回一个视口PNG,其中在每个交互式目标+元素列表上绘制了带有编号的青色框
  • VisionLLM.decide(goal, screenshot, elements) 发送给克劳德·索内特,解析 {element_id, action, rationale}
  • cursor.clickByBox(bbox) 用可见光标点击视觉导出的坐标

自我修复

  • 动作验证器 快照每次操作前的ElementBoxes,结算后的diffs,在URL更改/添加/删除/textChanged/移动元素时声明verified=true
  • 陈旧元素回收cursor.clickBySelector 回落到 getByText(originalText) 选择器故障
  • 模态断续器 在视口中心检测固定/绝对高z索引对话框,将其分类为阻止程序(cookie/同意/订阅关键字)或用户相关程序(登录对话框),自动关闭阻止程序并重试
  • 选择器库仅从验证结果中学习 -除非点击确实改变了页面,否则内存中没有条目

站点+动作记忆

  • SQLite WAL用于并发读取。每个域选择器库+页面模型缓存。
  • ActionMemory -SHA-1页面签名×目标哈希→ 选择器×成功/失败计数器。访问第2个已知页面不需要LLM调用。
  • 跨域转移: recallByGoal(goal, excludeDomain) 返回来自其他域的同一逻辑目标的获胜选择器。系统学习了“提交付款”→ stripe.com上的“#pay-btn”按钮;它在paddle.com上尝试了与假设相同的选择器。
  • decay(unusedSinceMs) 将过时的条目计数减半,这样图书馆在网站发生变化时也能保持健康。

录音+回放

  • 每个操作都以JSONL格式流式传输到 ~/.agentbrowser/traces/.jsonl
  • ReplayEngine 读取跟踪,以可配置的速度将事件分派到新会话
  • compactTrace() 折叠60个事件cursor。将轨迹移动到1,合并连续的cursor类型事件,丢弃微等待
  • 计划审核 在每个步骤边界捕获屏幕截图+元素列表-合规级回放图元

技能库

  • “技能”是一个带有命名槽令牌的记录痕迹($email, $password)
  • SkillLibrary.parameterize(events, slots) 用标记替换文字值(最长优先,以避免部分匹配错误)
  • 通过JSON文件保存/加载/列出/删除 ~/.agentbrowser/skills/
  • 便携.skill.json包 使用magic+version+元数据(作者、许可证、标签)的格式-将技能与代理代码捆绑在一起或发布到注册表;用户导入+绑定自己的凭据

验证码

  • TwoCaptchaSolver 通过2Captcha API为hCaptcha+reCAPTCHA v2+Cloudflare旋转闸门
  • 页面侧 DETECT_CAPTCHA_SCRIPT 查找所有三种类型的站点密钥
  • solveCaptchaIfPresent(page, solver) 链:检测→ 解决→ 注入令牌→ 火灾变化/输入事件→ 调用数据回调
  • 可插拔过孔 CaptchaSolver 界面(插入AntiCaptcha、CapMonster等)

防指纹

  • applyFingerprintShield(context) 按上下文初始化脚本
  • 恶搞WebGL UNMASKED_VENDOR/RENDELER(5个GPU配置文件)、navigator.hardwareConcurrency、navigator.deviceMemory、AudioContext(1e-7噪声)、画布到数据URL(~0.08%像素抖动)、navigater.plugins
  • 根据上下文确定的种子指纹在会话内保持稳定,但在会话之间有所不同

多标签

  • engine.newTab(sessionId, url?) 在同一上下文中打开一个选项卡(共享cookie/auth)
  • 每个选项卡都有自己的 HumanCursor. switchTab / closeTab / listTabs.
  • HTTP:GET/POST/DELETE /sessions/:id/tabs,POST /tabs/:tab/switch

通用LLM提供商支持(零锁定)

  • 17家供应商有线 -通过设置一个环境变量来交换它们中的任何一个
  • LLMProvider 接口(complete() + completeWithImage())分析器+视觉LLM+规划器都使用这种抽象,从不使用SDK
  • 启动时的自动检测从环境变量中选择正确的提供程序
提供者设置注释
人物克劳德ANTHROPIC_API_KEY默认值(如果未设置其他值)
OpenAIOPENAI_API_KEYgpt-4o-mini默认值
谷歌双子座GOOGLE_API_KEYGEMINI_API_KEYgemini-2.5-flash,视觉原生
GroqGROQ_API_KEYLPU上的超快Llama/Mixtral
一起AITOGETHER_API_KEY开源模型
烟花FIREWORKS_API_KEY开源模型
深度侵权。 DEEPINFRA_API_KEY开源模型
米斯特拉尔MISTRAL_API_KEYmistral大最新
科恩COHERE_API_KEYcommand-r-plus通过/兼容性
xAI GrokXAI_API_KEYgrok-2视觉
OpenRouterOPENROUTER_API_KEY一个API后面有300多个型号
困惑PERPLEXITY_API_KEY在线搜索模型
Azure OpenAIAZURE_OPENAI_API_KEY + AZURE_OPENAI_BASE_URL企业租户
Ollama(当地)OLLAMA_BASE_URL (默认值 localhost:11434)调用3.2、调用3.2-vision、qwen2.5vl等
奥利玛云OLLAMA_CLOUD_API_KEY为Ollama提供涡轮增压车型
vLLMVLLM_BASE_URL (默认值 localhost:8000)自托管生产推理
LM工作室LMSTUDIO_BASE_URL (默认值 localhost:1234)桌面图形用户界面
llama.cpp服务器LLAMACPP_BASE_URL (默认值 localhost:8080)小型自托管
任何与OpenAI兼容的东西presets.openaiCompatible(url)输入您的URL
// Pick a provider explicitly (any of the 17):
import { AgentBrowserHttpServer, presets } from 'agentbrowser';

const server = new AgentBrowserHttpServer({
  llm_provider: presets.ollamaCloud(),   // or .openai() or .groq() etc
  // ...
});

或者只是设置 AGENTBROWSER_LLM_PROVIDER=ollama 服务器自动连线。用以下内容覆盖模型 _MODEL=.

Chrome扩展程序(使用Cookie驱动Chrome)

  • 安装 extensions/chrome/ 在开发模式下(chrome://extensions → 装载未包装)
  • 单击代理浏览器图标,粘贴服务器URL+API键,单击连接
  • 现在有个特工在打电话 POST /api/v1/agents//cmd 使用您的Cookie和登录状态驱动您的Chrome
  • 清单v3+ chrome.debugger 用于真实的CDP鼠标事件+ chrome.scripting 视觉/提取
  • extensions/chrome/README.md 对于完整的安全模型

操作员+记录器+内存+技能UI

  • ui/operator/index.html -实时截图+光标轨迹叠加+事件时间线+快速操作面板
  • ui/recorder/index.html -实时WebSocket事件流+多通道时间线画布+回放洗涤器+JSONL导出
  • ui/memory/index.html -按域分页的动作内存浏览器+衰减控制+JSON导出
  • docs/pricing.html -4层定价页面已连接到 /api/v1/billing/checkout 用于自助支付Stripe
  • docs/skills.html -技能市场登陆8项精选技能(登录条纹、登录谷歌、亚马逊添加到购物车、github创建问题等)
  • 所有这些都是单文件香草HTML/CSS/JS。无构建步骤。

转录助手(“观看”视频的代理)

  • findCaptionTracks(page) 检测HTML5 ` 油管 playerCaptionsTracklistRenderer` +自定义播放器标记
  • parseVTT(text) / parseJSON3(json) 将标准字幕格式转换为键入格式 TranscriptSegment[]
  • transcribeFromCaptions(page) 一枪:检测→ 获取→ parse
  • transcriptToText(segments) 连接以供LLM使用

生产运行时间

  • Fastify上的HTTP REST API+WebSocket+SSE,带有承载令牌身份验证+每密钥速率限制
  • 30多个端点,OpenAPI 3.1规范 /api/v1/openapi.json
  • 条纹计费有线(结账+webhook+签名验证+许可证发放)
  • 普罗米修斯 /metrics +准备状态探测+仪表板摘要端点
  • 4层许可证脚手架(免费/专业/团队/企业),带功能门和配额跟踪
  • 多级Dockerfile,docker用持久卷+1GB shm_size为Chromium编写
  • Python+TypeScript SDK客户端

______________________________________________________________________

建筑

┌─────────────────────────────────────────────────────────────────┐
│  Operator UI  (browser-based dashboard)                         │
│   - live screenshot stream         - cursor trail viz           │
│   - action log + reasoning         - manual takeover            │
│  Recorder UI                                                    │
│   - timeline scrubber              - replay export              │
└─────────────────────────────────────────────────────────────────┘
                          ▲
                          │  WebSocket events + SSE frames + REST
┌─────────────────────────┴───────────────────────────────────────┐
│                   AgentBrowser HTTP Control Plane               │
│  ┌──────────────────┐  ┌──────────────────┐  ┌────────────────┐ │
│  │  REST + WS + SSE │  │  Bearer auth +   │  │  License +     │ │
│  │  Fastify         │  │  per-key rate    │  │  quota system  │ │
│  └──────────────────┘  └──────────────────┘  └────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
                          ▲
                          │
┌─────────────────────────┴───────────────────────────────────────┐
│                    AgentBrowser Core Runtime                    │
│  ┌──────────────────┐  ┌──────────────────┐  ┌────────────────┐ │
│  │  Planner         │  │  findAndClick    │  │  Recorder +    │ │
│  │  (goal → steps)  │  │  hybrid action   │  │  Replay engine │ │
│  └──────────────────┘  └──────────────────┘  └────────────────┘ │
│  ┌──────────────────┐  ┌──────────────────┐  ┌────────────────┐ │
│  │  Verifier        │  │  Modal           │  │  Action memory │ │
│  │  (diff snapshots)│  │  interrupter     │  │  (skip LLM)    │ │
│  └──────────────────┘  └──────────────────┘  └────────────────┘ │
│  ┌──────────────────┐  ┌──────────────────┐  ┌────────────────┐ │
│  │  Vision pipeline │  │  HumanCursor     │  │  Site memory   │ │
│  │  bbox + annotate │  │  Bezier + CDP    │  │  WAL SQLite    │ │
│  │  + VisionLLM     │  │  trail + ripple  │  │  + selectors   │ │
│  └──────────────────┘  └──────────────────┘  └────────────────┘ │
│  ┌──────────────────┐  ┌──────────────────┐  ┌────────────────┐ │
│  │  Anti-fingerprint│  │  Captcha solver  │  │  LLM provider  │ │
│  │  (canvas/WebGL)  │  │  + auto-inject   │  │  (Anthropic /  │ │
│  │                  │  │                  │  │   OpenAI / etc)│ │
│  └──────────────────┘  └──────────────────┘  └────────────────┘ │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │  Browser Engine - Playwright + stealth + multi-tab     │    │
│  │  ↓                                                      │    │
│  │  Chromium (the real browser, with the visible cursor)  │    │
│  └─────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────┘

______________________________________________________________________

快速入门-4种方法

作为TypeScript库

import { AgentBrowser } from 'agentbrowser';

const browser = new AgentBrowser({
  anthropic_api_key: process.env.ANTHROPIC_API_KEY,
  headless: false,    // watch the cursor move
  stealth: true,
});
await browser.launch();

const state = await browser.navigate('https://news.ycombinator.com');
console.log(state.page_type);          // 'listing'
console.log(state.available_actions);  // [{ name: 'navigate_to_new', ... }, ...]

await browser.action('navigate_to_new');

const data = await browser.extract({
  top_story: 'title of the top story',
  points: 'upvote count',
  author: 'submitter username',
});

await browser.close();

通过HTTP

curl -X POST http://localhost:3100/api/v1/sessions
curl -X POST http://localhost:3100/api/v1/sessions/$ID/navigate -d '{"url":"https://example.com"}'
curl -X POST http://localhost:3100/api/v1/sessions/$ID/find_and_click -d '{"goal":"submit the form"}'
curl http://localhost:3100/api/v1/sessions/$ID/screenshot/bbox

开发包

from agentbrowser import AgentBrowserClient

client = AgentBrowserClient("http://localhost:3100", api_key="...")
with client.create_session() as s:
    s.navigate("https://example.com")
    s.click(selector="a")
    png, elements = s.annotated_screenshot()

MCP服务器(克劳德代码等)

添加 ~/.claude.json:

{
  "mcpServers": {
    "agentbrowser": {
      "command": "node",
      "args": ["/path/to/agentbrowser/dist/server/mcp.js"],
      "env": { "ANTHROPIC_API_KEY": "sk-..." }
    }
  }
}

______________________________________________________________________

存储库结构

src/
├── engine/             Browser lifecycle, sessions, tabs
│   ├── browser.ts      Playwright wrapper, cursor wiring, popup handling
│   └── tabs.ts         Multi-tab manager
├── input/              Cursor + physics + fingerprint shield
│   ├── cursor.ts       HumanCursor: SVG overlay, CDP input, click/drag/type
│   ├── trajectory.ts   Bezier path generator with jitter + overshoot
│   └── fingerprint.ts  WebGL/canvas/audio anti-fingerprint patches
├── vision/             Vision pipeline
│   ├── bbox.ts         Element catalog extraction
│   ├── annotate.ts     Numbered-box screenshot annotator
│   ├── diff.ts         Snapshot diff (added/removed/moved/textChanged)
│   └── llm.ts          Claude vision integration
├── runtime/            Action execution + autonomy
│   ├── executor.ts     Action runner with action-memory hot path
│   ├── find.ts         Hybrid DOM-then-vision findAndClick
│   ├── verifier.ts     Action verification via snapshot diff
│   ├── modal-interrupter.ts  Cookie/consent/popup detection
│   ├── planner.ts      LLM goal decomposition + multi-step execution
│   ├── plan-audit.ts   Per-step screenshot + element capture
│   ├── recorder.ts     JSONL action stream
│   ├── replay.ts       Deterministic trace replay
│   ├── compactor.ts    Trace compaction (collapse cursor.move runs)
│   ├── events.ts       In-process event broker (pub/sub)
│   ├── captcha.ts      2Captcha API integration
│   └── captcha-solver.ts  Detect → solve → inject pipeline
├── memory/             Persistent storage
│   ├── store.ts        Site memory (page model cache + selector library)
│   └── action-memory.ts  Per-(page,goal) selector cache + cross-domain transfer
├── llm/                Provider abstraction
│   ├── provider.ts     LLMProvider interface
│   ├── anthropic.ts    Anthropic SDK wrapper
│   ├── openai.ts       OpenAI-compatible (works with vLLM/Ollama too)
│   └── index.ts        autoDetectProvider
├── semantic/           Page analysis
│   └── analyzer.ts     Page-to-SemanticPageModel via LLM
├── skills/             Skill library
│   ├── skills.ts       Parameterize/save/load/run
│   └── package.ts      .skill.json export/import format
├── server/             Production server surfaces
│   ├── http.ts         Fastify + REST + WS + SSE + auth + rate limit
│   ├── openapi.ts      OpenAPI 3.1 spec
│   ├── license.ts      Tier system + quota tracking
│   └── mcp.ts          MCP server for Claude Code et al.
├── bin/
│   └── http.ts         HTTP server entry point
├── util/
│   └── coords.ts       Viewport ↔ document ↔ screenshot coord conversions
├── types.ts            Shared types (SemanticPageModel, ActionDefinition, ...)
└── index.ts            Public API barrel

tests/                  Vitest suite (119 tests, 21 files)
clients/
├── python/             Python SDK (zero deps, stdlib urllib)
└── typescript/         TypeScript SDK (browser + Node compatible)
ui/
├── operator/           Live dashboard (single HTML file)
└── recorder/           Real-time trace timeline (single HTML file)
docs/                   Public docs site (single HTML file)
examples/               Working agent demos
.agentbrowser-meta/     Internal build planning + iteration log
Dockerfile              Multi-stage slim image (~700MB with Chromium)
docker-compose.yml      Local stack with persistent volume

______________________________________________________________________

API表面

22个HTTP端点,当配置API密钥时,所有承载器都经过身份验证。完整的OpenAPI 3.1 /api/v1/openapi.json.

方法路径目的
得到/health真实性(无身份验证)
职位/api/v1/sessions创建会话
删除/api/v1/sessions/:id销毁会话
职位/api/v1/sessions/:id/navigate转到URL
职位/api/v1/sessions/:id/cursor/{move,click,drag,scroll,type,press}光标图元
职位/api/v1/sessions/:id/find_and_click混合DOM→ 愿景LLM行动
职位/api/v1/sessions/:id/planLLM目标分解+多步骤执行
职位/api/v1/sessions/:id/extract模式驱动的LLM提取
职位/api/v1/sessions/:id/fill填写命名表格
得到/api/v1/sessions/:id/screenshot视口PNG
得到/api/v1/sessions/:id/screenshot/bbox带注释的PNG+元素列表
得到/api/v1/sessions/:id/screenshot/streamSSE PNG帧
WS/api/v1/sessions/:id/screenshot/ws二进制PNG帧
得到/api/v1/sessions/:id/state当前语义页面模型
得到/api/v1/sessions/:id/elements元素框\[\]
获取/发布/删除/api/v1/sessions/:id/tabs多标签控制
职位/api/v1/sessions/:id/solve_captcha检测+求解+注入
WS/api/v1/sessions/:id/events现场活动流
职位/api/v1/sessions/:id/back历史回顾
职位/api/v1/sessions/:id/forward历史前进
职位/api/v1/sessions/:id/reload重新加载当前页面
职位/api/v1/sessions/:id/dialog接受/取消下一个本地警报/确认/提示
获取/发布/删除/api/v1/sessions/:id/cookies读取/写入/清除浏览器Cookie
获取/发布/删除/api/v1/sessions/:id/storage读/写/清除本地存储或会话存储(?kind=localsession)
职位/api/v1/sessions/:id/upload在文件输入上设置文件({selector, paths})
职位/api/v1/sessions/:id/print将当前页面渲染为PDF(返回应用程序/PDF)
职位/api/v1/sessions/:id/route/block阻止所有与glob模式匹配的请求
职位/api/v1/sessions/:id/route/headers将标头注入到与模式匹配的请求中
职位/api/v1/sessions/:id/route/mock用于匹配请求的模拟响应体
删除/api/v1/sessions/:id/route删除所有路由处理程序(passthrough)
职位/api/v1/sessions/:id/geolocation覆盖报告的坐标(或为空以清除)
职位/api/v1/sessions/:id/viewport在会话中期调整视口大小
职位/api/v1/sessions/:id/headers为所有请求设置额外的HTTP标头
职位/api/v1/sessions/:id/har/start启动HAR网络捕获
得到/api/v1/sessions/:id/har/peek不停止获取当前条目
职位/api/v1/sessions/:id/har/stop停止并返回所有捕获的条目
职位`/api/v1/sessions/:id/console/start\peek\stop`捕获控制台消息+未捕获的错误
职位/api/v1/sessions/:id/throttle/network节流网络(下载吞吐量/上传吞吐量/延迟Ms/离线)
职位/api/v1/sessions/:id/throttle/cpuCPU速度减慢倍数(1=本机,4=慢4倍)
职位/api/v1/sessions/:id/locale覆盖navigator.language+接受语言
职位/api/v1/sessions/:id/timezone覆盖页面时区(例如“亚洲/东京”)
发布/删除/api/v1/sessions/:id/permissions授予/清除浏览器权限(剪贴板、通知等)
职位/api/v1/sessions/:id/record/start开始记忆记录技能创造
得到/api/v1/sessions/:id/record/peek录制时的实时事件计数
职位/api/v1/sessions/:id/record/stop停止并(可选)将事件保存为技能({name, slots, description})
职位/api/v1/sessions/:id/har/replay重新执行HAR条目并比较状态
得到/api/v1/sessions/:id/service-workers列出现役军人
获取/发布/api/v1/sessions/:id/snapshot导出完整会话状态(Cookie+存储+IDB);发布 /snapshot/restore 进口
发布/获取`/api/v1/sessions/:id/downloads/start\stop`自动将所有下载捕获到标记为dir的会话中
获取/发布/api/v1/sessions/:id/clipboard通过navigator.clipboard读取/写入页面的剪贴板
职位`/api/v1/sessions/:id/wait/selector\text\network-idle\function`聪明的服务员会超时
得到/api/v1/sessions/:id/markdown从当前页面提取干净的RAG友好标记
得到/api/v1/skills/:name/versions列出技能的存档版本
职位/api/v1/skills/:name/rollback还原以前的版本({version: N})
得到/api/v1/sessions/:id/activity会话的空闲时间(毫秒)
职位/api/v1/sessions/:id/touch重置空闲计数器
得到/api/v1/sessions/expired列出超过空闲超时的会话
职位/api/v1/snapshot/diff区分两个快照({a, b})返回添加/删除/更改
职位/api/v1/sessions/:id/click_by_description仅视觉点击(“蓝色提交按钮”)
职位/api/v1/pool/warmup为低于100ms的会话创建预先创建N个空上下文
得到/api/v1/pool/status温水游泳池大小+最年长的入场年龄
职位/api/v1/pool/drain关闭所有温暖的上下文
职位/api/v1/sessions/:id/copilot/install为“AI在这里”提示注入高亮叠加
职位/api/v1/sessions/:id/copilot/highlight突出显示带有可选标签的bbox
职位`/api/v1/pool/auto_refill/start\stop`后台作业,保持池满
职位/api/v1/action_memory/predict凭记忆预测下一步行动({url, elements, goal?})
得到/api/v1/skills/marketplaceGitHub Pages托管的静态技能目录(slug、标签、质量、运行、成功率)
得到/api/v1/vision/cache/stats如果SQLite支持,则Vision LLM缓存命中/未命中+persistent_size
职位/api/v1/vision/cache/clear内存中为空+磁盘上的视觉缓存
得到/api/v1/sessions/:id/har/export捕获的HAR导出为标准HAR 1.2(Chrome DevTools可导入)
职位/api/v1/vision/cache/prune删除最旧的条目 cache_max_disk_entries +真空
职位/api/v1/traces/diff区分两个跟踪事件数组(回归测试)
职位/api/v1/sessions/:id/shortcut执行指定的键盘快捷键(newTab/copy/find等)
得到/api/v1/shortcuts列出可用的命名快捷方式
得到/api/v1/dump所有服务器状态的单次调用快照
发布/获取/删除/api/v1/plans[/:slug]保存/列出/加载/删除可重复使用的计划蓝图
职位/api/v1/sessions/:id/shortcut/chain按顺序执行多个命名快捷方式
得到/api/v1/metrics/summary根据直方图p50/p95/p99/平均值/计数百分位数
获取/发布/删除/api/v1/rate_limits每个域RPS限制(导航时的令牌桶限制)
职位/api/v1/sessions/:id/plans/:slug/run加载并执行已保存的计划蓝图
职位/api/v1/skills/:name/to_plan将记录的技能转化为计划({save?, slug?})
得到/api/v1/action_memory/search?pattern=...按选择器子字符串搜索动作内存
职位/api/v1/parallel/extract生成N个并行会话,从每个URL中提取标记
职位/api/v1/plans/composeChain N将计划保存为超级计划
职位/api/v1/sessions/:id/form/autofill按名称/标签/占位符匹配自动填写表单输入
职位/api/v1/skills/diff比较两种技能的事件({a, b})
获取/发布/删除/api/v1/webhooks[/:id]订阅事件,POST到外部URL(HMAC签名时 secret 设置)
职位/api/v1/webhooks/:id/test启动测试交付以验证连接
职位/api/v1/batch/csv处理CSV:按行导航,提取标记,返回丰富的结果
得到/api/v1/webhooks/queue等待的webhook重试计数
发布/获取/api/v1/skills/:name/cost记录/读取每项技能LLM成本(代币使用×费率)
得到/api/v1/skills/cost/leaderboard总成本排名前N的最昂贵技能
职位/api/v1/skills/validate保存前验证技能的结构({skill})
职位/api/v1/skills/:name/auto_tagLLM建议从技能描述+事件中添加3-5个标签
职位/api/v1/traces/render将TraceEvent\[\]渲染为自包含的HTML时间线页面
职位/api/v1/skills/:name/auto_describeLLM从技能事件中写一行描述
得到/api/v1/skills/:name/suggested_selectors跨技能:在其他领域为同一目标工作的选择器
得到/api/v1/action_memory/export.csv将动作记忆下载为CSV格式(?domain=&limit=)
职位/api/v1/action_memory/query复合过滤器+排序查询(域、目标子串、选择器子串、min_success_rate、min_run、sort_by)
得到/api/v1/sessions/:id/a11y可访问性审计(缺少alt/标签、标题跳过、空链接、缺少lang)
得到/api/v1/skills/:name/bundle将技能导出为.agbpkg(技能+计划+统计数据+自述文件)
职位/api/v1/skills/bundle/import导入.agbpkg捆绑包
得到/api/v1/analytics/domain/:domain每个域操作内存分析+顶级选择器
获取/发布/删除/api/v1/schedules[/:id]重复技能执行({skill_name, spec: "every 5m", bindings})
职位/api/v1/skills/recommend推荐与目标文本相匹配的技能({goal, limit?, min_score?})
职位/api/v1/plan_templates/:name/to_skill将内置的计划模板转换为可运行的技能
发布/获取`/api/v1/sessions/:id/network/start\peek\stop`每会话网络字节跟踪
得到/api/v1/sessions/:id/contrastWCAG颜色对比度审计
得到/api/v1/fingerprints列出浏览器指纹预设(mac chrome、iphone-15-pro、东京iphone等)
职位/api/v1/sessions/:id/fingerprint应用预设({preset_id})-视口+UA+区域设置+时区
得到/api/v1/sessions/:id/memory从会话创建到每个会话堆/rss/外部增量
职位/api/v1/sessions/:id/memory/snapshot重新设定会话内存快照的基线
得到/api/v1/health/full详细的系统健康状况:进程、引擎、调度程序、计费、身份验证状态
得到/api/v1/sessions/:id/cpu每会话CPU增量(用户/系统/墙ms+CPU_percent)
职位/api/v1/sessions/:id/cpu/snapshot重新设定会话CPU快照的基线
职位/api/v1/action_memory/distill跨不同领域的顶级选择器(作为入门包提供)
职位/api/v1/action_memory/import_patterns使用从另一个部署中提取的模式种子内存
职位/api/v1/sessions/:id/skills/auto_run将目标与最佳技能相匹配并执行(无LLM往返)
获取/发布/删除/api/v1/skills/ab[/:key]在技能版本之间注册加权A/B路线
职位/api/v1/sessions/:id/skills/ab/:key/run运行A/B路由技能(加权变体选择)
WS/api/v1/skills/events/ws现场技能成果消防水带(?skill= 过滤器)
获取/删除/api/v1/skills/ab/:key/stats每个变体的汇总成功/失败统计数据
职位/api/v1/skills/ab/:key/promote自动推广获胜变体(z-test门控)
获取/删除/api/v1/skills/percentiles[?skill=]根据技能p50/p95/p99潜伏期直方图
获取/发布/删除/api/v1/skills技能库CRUD
得到/api/v1/skills/:name/export下载.skill.json
职位/api/v1/skills/import导入.skill.json
职位/api/v1/sessions/:id/skills/:name/run绑定回放技能
得到/api/v1/action_memory/stats内存统计信息
得到/api/v1/action_memory/by_domain/:domain系统知道什么:域
得到/api/v1/action_memory/selectors/:domain每个域具有成功/失败统计信息的顶级选择器
职位/api/v1/action_memory/recall_by_goal跨域选择器假设
职位/api/v1/action_memory/similarTF-IDF/嵌入动作记忆搜索
职位/api/v1/action_memory/similar_embedded仅强制嵌入搜索
职位/api/v1/action_memory/decay将过期条目数量减半
职位/api/v1/page_similarity对两个页面快照之间的相似性进行评分
职位/api/v1/skills/discover建议与当前页面相关的技能
职位/api/v1/skills/compose按顺序运行多种技能
得到/api/v1/skills/stats按技能成功/失败历史(按筛选 ?skill= 对于每个域行)
得到/api/v1/skills/leaderboard按成功数排名前N的表演技巧
得到/api/v1/skills/hot高置信度技能(成功率≥0.9,默认≥10次运行)
职位/api/v1/skills/prune删除低于成功阈值的技能(默认情况下为模拟运行)
删除/api/v1/skills/:name按名称删除技能
得到/api/v1/plan_templates列出内置计划模板
得到/api/v1/diagnose远程健康诊断(镜像 agb-doctor)
职位/api/v1/traces/compact压缩跟踪文件
得到/api/v1/openapi.json完整的OpenAPI 3.1规范
得到/api/v1/dashboard汇总统计数据:网站记忆+动作记忆+技能+提供者
得到/api/v1/billing/pricing含价格+限额的层级列表(权力定价页面)
职位/api/v1/billing/checkout条纹结账会议 {tier, email}
职位/api/v1/billing/webhook条纹webhook接收器(签名已验证)
得到/metrics普罗米修斯刮(无身份验证)
得到/ready准备就绪探头(503,直到发动机启动)
得到/api/v1/agents列出当前连接的Chrome扩展程序代理
得到/api/v1/agents/:id/poll下一个命令的长轮询(由Chrome扩展程序使用)
职位/api/v1/agents/:id/cmd向已连接的Chrome扩展程序发送命令
职位/api/v1/agents/:id/result扩展发布命令结果
删除/api/v1/agents/:id删除代理状态

______________________________________________________________________

生产部署

码头工人

docker compose up -d
# AgentBrowser on http://localhost:3100
# Memory + traces persist in named volume

认证+速率限制

AGENTBROWSER_API_KEYS=key1,key2 \
ANTHROPIC_API_KEY=sk-ant-... \
node dist/bin/http.js

速率限制默认为600 req/min/key。覆盖 AGENTBROWSER_RATE_LIMIT_PER_MINUTE.

可观测性

  • 每个动作都会发出一个类型 SessionEvent 到进程内代理
  • WebSocket客户端在以下位置订阅 /api/v1/sessions/:id/events (有200个事件回放缓冲区用于重新连接)
  • JSONL跟踪位于 ~/.agentbrowser/traces/ 是审核日志吗
  • compactTrace() 保持长轨迹小而不失保真度

______________________________________________________________________

测试地点:

能力状态
类型检查(tsc)干净
测试套件119/119通过21个文件
构建(npm run build)干净
真正的Chromium导航已验证
机器人检测旁路通过Cloudflare填隙、OneTrust、Cookiebot、资金选择、Reddit GDPR、Stack Overflow注册墙
光标点击→ DOM事件端到端验证
动作验证器在URL更改+元素添加/删除/文本更改时验证
视觉流水线通过魔术字节+元素列表验证的带注释的PNG
HTTP API针对完整Fastify堆栈的13次集成测试
重播确定性每个种子的轨迹生成器确定性

______________________________________________________________________

许可证

MIT。鼓励商业使用。

有关收购或合伙企业的询问: ashtonluca@gmail.com.

目录标签

目录标签

浏览器自动化TypeScriptClaude本地部署AI代理视觉管道动作记忆反指纹

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明tokenlocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP