将任何网络应用转变为API。Chrome扩展程序捕获浏览器流量,自动生成模式,让AI直接重放API。无需官方API。
将任何 Web 应用变成 API。 无需官方 API,无需浏览器自动化。
Neo 是一款 Chrome 扩展程序,能够被动捕获浏览器发出的每一次 API 调用,学习其模式,并允许 AI(或您自己)直接重放这些调用。
如今操作 Web 应用的 AI 智能体只有两种选择,而且都不理想:
| 方式 | 痛点 |
|---|---|
| 官方 API | 大多数 SaaS 厂商不提供 API,或者只暴露 10% 的功能 |
| 浏览器自动化 | 截图 → OCR → 点击。速度慢、易崩、UI 一改就失效 |
Neo 提供了第三条路。 每个 Web 应用都拥有一套完整的内部 API——你每次点击时,前端都会调用它。Neo 捕获这些调用并使其可重放。
v2:新增 UI 自动化。 Neo v2 新增了一个基于无障碍树的 UI 层——snapshot、click、fill、type、press、hover、scroll、select、screenshot、get、wait。当 API 存在时直接使用 API;当不存在时,Neo 可以通过同一个 CLI 驱动 UI。一个工具,覆盖两层。
正常浏览 → Neo 记录所有 API 流量 → 自动生成 Schema → AI 直接重放 API
→ 或通过 a11y 树驱动 UI
Chrome 扩展程序拦截每一次 fetch() 和 XMLHttpRequest——URL、头部、请求/响应体、时序,甚至触发调用的 DOM 元素。
对某个域名运行 neo-schema,自动生成其 API 地图:端点、必需的认证头部、查询参数、响应结构、错误码。
通过 Chrome DevTools 协议在浏览器标签页上下文中执行 API 调用。Cookie、CSRF token、会话认证——全部自动继承,无需管理 token。
| 浏览器 | 类型 | 最佳用途 |
|---|---|---|
| Chrome / Chromium | 完整浏览器 | API 捕获 + UI 自动化(默认) |
| Lightpanda | 无头浏览器 (Zig) | AI 智能体、爬虫——速度快 11 倍,内存少 9 倍 |
git clone https://github.com/4ier/neo.git
cd neo && npm install && npm run build
npm link # 使 `neo` 全局可用
加载扩展程序:
chrome://extensionsextension/dist/# 安装 Lightpanda
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux
chmod +x lightpanda && sudo mv lightpanda /usr/local/bin/
# 配置 Neo 使用 Lightpanda
# 在 ~/.neo/config.json 中:
# { "chromePath": "/usr/local/bin/lightpanda", "browserType": "lightpanda", "cdpPort": 9222 }
neo start # 启动 Lightpanda CDP 服务器
neo connect # 连接到它
neo open https://example.com
neo snapshot # 完整的 a11y 树
所有命令都通过同一个 CLI:neo <command> 执行。
需要浏览器启用 CDP(Chrome DevTools Protocol)。
# --- 连接与会话 ---
neo connect [port] # 连接到 CDP,保存会话
neo connect --electron <app-name> # 自动发现 Electron 应用的 CDP 端口
neo launch <app> [--port N] # 启动启用了 CDP 的 Electron 应用
neo discover # 查找 localhost 上可访问的 CDP 端点
neo sessions # 列出已保存的会话
neo tab # 列出活动会话中的 CDP 目标
neo tab <index> | neo tab --url <pattern> # 切换活动标签页目标
neo inject [--persist] [--tab pattern] # 向目标注入 Neo 捕获脚本
# --- 捕获与流量 ---
neo status # 捕获数据概览
neo capture summary # 快速概览
neo capture list github.com --limit 10 # 显示用于重放/详情的 ID
neo capture list --since 1h # 按时间过滤
neo capture domains
neo capture search "CreateTweet" --method POST
neo capture watch x.com # 实时跟踪(类似 tail -f)
neo capture stats x.com # 方法/状态/时序分解
neo capture export x.com --since 2h > x.json
neo capture export x.com --format har > x.har # HAR 1.2 格式,适用于 Postman/devtools
neo capture import x-captures.json
neo capture prune --older-than 7d
neo capture gc x.com [--dry-run] # 智能去重
# --- API 重放与执行 ---
neo replay <capture-id> --tab x.com # 重放捕获的调用
neo exec <url> --method POST --body '{...}' --tab example.com --auto-headers
neo api x.com HomeTimeline # 智能调用(Schema 查找 + 自动认证)
# --- Schema 与分析 ---
neo schema generate x.com # 从捕获生成 Schema
neo schema generate --all # 批量处理所有域名
neo schema show x.com [--json]
neo schema openapi x.com # 导出 OpenAPI 3.0 规范
neo schema diff x.com # 与先前版本的差异
neo schema coverage # 已生成/未生成 Schema 的域名
neo label x.com [--dry-run] # 语义化端点标签
neo flows x.com [--window 5000] # API 调用序列模式
neo deps x.com [--min-confidence 1] # 响应→请求数据依赖关系
neo workflow discover|show|run <name> # 多步骤工作流发现与重放
neo suggest x.com # AI 能力分析
neo export-skill x.com # 生成智能体就绪的 SKILL.md
# --- UI 自动化 (v2) ---
neo snapshot [-i] [-C] [--json] # 带有 @ref 映射的 a11y 树
neo click @ref [--new-tab] # 通过 @ref 点击元素
neo fill @ref "text" # 清空并填充输入框
neo type @ref "text" # 向输入框追加文本
neo press <key> # 键盘按键(支持 Ctrl+a、Enter 等)
neo hover @ref # 悬停在元素上
neo scroll <dir> [px] [--selector css] # 按方向滚动
neo select @ref "value" # 设置下拉框值
neo screenshot [path] [--full] [--annotate] # 截图
neo get text @ref | neo get url | neo get title # 提取信息
neo wait @ref | neo wait --load networkidle | neo wait <ms> # 等待元素/加载/时间
# --- 页面交互 ---
neo read github.com # 提取可读文本
neo eval "document.title" --tab github.com # 在页面中运行 JS
neo open https://example.com # 打开 URL
# --- Mock 与 Bridge ---
neo mock x.com [--port 8080 --latency 200] # 根据 Schema 创建 Mock 服务器
neo bridge [--json] [--interactive] # 实时 WebSocket 捕获流
# --- 诊断 ---
neo doctor # 检查 Chrome、扩展程序、Schema
neo reload # 从 CLI 重新加载扩展程序
neo tabs [filter] # 列出打开的 Chrome 标签页
Neo 不仅限于 Chrome。任何支持 CDP 的应用都可以——包括 Electron 应用:
# 启动带有 CDP 的 VS Code 并连接
neo launch code --port 9230
neo snapshot # 查看 VS Code 的无障碍树
neo click @14 # 点击某个菜单项
# 或连接到正在运行的 Electron 应用
neo connect --electron slack
# 将 Neo 的捕获脚本注入任意 CDP 目标
neo inject --persist # 页面导航后仍保留
neo inject --tab slack # 指定目标标签页
会话会自动保存。使用 --session 在它们之间切换:
neo --session vscode snapshot
neo --session chrome api x.com HomeTimeline
Neo v2 新增了基于无障碍树的完整 UI 交互层——无需截图、坐标或像素匹配:
# 1. 拍取快照——每个交互元素都会获得一个 @ref
neo snapshot
# @1 button "Sign in"
# @2 textbox "Search"
# @3 link "Pricing"
# 2. 通过 @ref 进行交互
neo click @1
neo fill @2 "AI agents"
neo press Enter
neo screenshot results.png --full
这为 AI 智能体提供了一种快速、语义化的方式与任何 UI 进行交互。结合 API 捕获,实现双通道方法:存在 API 时使用 API,不存在时回退到 UI。
Bridge 在扩展程序和 CLI 之间创建了一个持久的 WebSocket 通道。扩展程序会自动连接到 ws://127.0.0.1:9234,并实时流式传输每次捕获。在交互模式下,你可以直接查询扩展程序:ping、status、capture.count、capture.list、capture.domains、capture.search、capture.clear。
┌─────────────────────────────────────┐
│ Chrome / Electron App (CDP) │
│ │
│ inject/interceptor.ts │
│ ├─ Monkey-patches fetch & XHR │
│ ├─ Intercepts WebSocket/SSE │
│ ├─ Tracks DOM triggers (click → │
│ │ API correlation) │
│ └─ Records full request/response │
│ │
│ content/index.ts │
│ └─ Bridges page ↔ extension │
│ │
│ background/index.ts │
│ ├─ Persists to IndexedDB (Dexie) │
│ ├─ Per-domain cap (500 entries) │
│ └─ WebSocket Bridge client │
│ │
└──────────────┬──────────────────────┘
│ Chrome DevTools Protocol
┌──────────────┴──────────────────────┐
│ CLI: neo (Node.js) │
│ │
│ Layer 1: API Capture & Replay │
│ ├─ neo capture → traffic management │
│ ├─ neo schema → API discovery │
│ ├─ neo exec → execute in browser │
│ ├─ neo api → smart schema call │
│ ├─ neo replay → re-run captured │
│ └─ neo flows/deps → pattern analysis│
│ │
│ Layer 2: UI Automation (v2) │
│ ├─ neo snapshot → a11y tree + @refs │
│ ├─ neo click/fill/type/press/hover │
│ ├─ neo scroll/select/screenshot │
│ └─ neo get/wait │
│ │
│ Session Management │
│ ├─ neo connect/launch/discover │
│ ├─ neo tab → target switching │
│ └─ neo inject → script injection │
│ │
└──────────────┬──────────────────────┘
│
┌──────────────┴──────────────────────┐
│ AI Agent (OpenClaw / any LLM) │
│ ├─ API-first: schema → exec/api │
│ ├─ UI fallback: snapshot → click │
│ └─ Dual-channel automation │
└──────────────────────────────────────┘
# 1. 正常浏览 X — Neo 捕获 GraphQL 变更
neo schema show api.x.com
# 2. 查找 CreateTweet 端点
neo capture search "CreateTweet" --method POST
# 3. 使用原始认证重放(Cookie 自动继承)
neo replay abc123 --tab x.com
# 4. 或使用自动检测的认证头部构造新调用
neo exec "https://x.com/i/api/graphql/.../CreateTweet" \
--method POST --auto-headers \
--body '{"variables":{"tweet_text":"Hello from Neo!"},...}'
Neo 的触发跟踪将 UI 交互映射到 API 调用:
neo schema show github.com
# 输出包括:
# POST /repos/:owner/:repo/star (3x, 280ms)
# ← click button.js-social-form "Star" (3x)
neo capture watch api.openai.com
# 14:23:01 POST 200 /v1/chat/completions (1230ms)
# 14:23:05 SSE_MSG 200 /v1/chat/completions (0ms) [sse]
neo-capture-v01 数据库)拦截器自动忽略噪音:
Neo 完全在本地运行——没有外部服务器,没有遥测,没有任何数据离开你的机器。
Neo 捕获的内容: 浏览器在每个网站上发出的所有 fetch/XHR/WebSocket 调用。这功能强大但设计上也具有侵入性。
认证头部脱敏(v1.1.0+): 认证头部的值(Bearer token、CSRF token、Cookie、会话 ID)在存储时会被脱敏。IndexedDB 仅存储头部名称,不存储值。当使用 --auto-headers 执行 API 调用时,它通过 CDP 实时从浏览器获取活认证头部——从不重放存储的凭据。
你应该了解的内容:
建议:
neo capture domainsneo capture clear banksite.comNeo 是一款以能力换取隐私表面的开发者工具。请知情使用。
neo CLI 及子命令neo replay <id> 重新执行捕获的调用neo api 带 Schema 查找 + 自动认证neo flows 发现 API 调用序列neo deps 寻找响应→请求数据流MIT
| 方面 | 详情 |
|---|
| 捕获范围 | <all_urls> — Neo 会看到每一个网站的流量,包括银行、邮箱、医疗门户 |
| 内容脚本 | 在 MAIN 世界中运行(与页面共享 JS 上下文)以拦截 fetch/XHR |
| CDP 端口 | CLI 要求 Chrome 使用端口 9222——任何本地进程都可以连接到该端口 |
| 响应体 | 存储在 IndexedDB 中(截断至 100KB)——可能包含来自 API 响应的个人数据 |
| Schema 文件 | 仅存储端点结构(路径、头部名称、响应形状)——不含凭据或用户数据 |
| 导出 | neo capture export 默认脱敏认证;--include-auth 需要显式选择加入 |
neo doctor 用于设置验证neo export-skill 生成 SKILL.mdneo mock 根据 Schema 生成本地 HTTP 服务器--all)neo label)neo workflow)neo connect、neo sessions、--session 标志neo launch、neo connect --electronneo tab 列出/切换目标neo inject 支持 --persist 和 --tabsnapshot、click、fill、type、press、hover、scroll、select、screenshot、get、wait