关于 Taprun
Taprun 将浏览器任务编译为可重复运行的确定性 `.flow.json` 程序,并检查网站变化。它面向需要处理登录页面和复杂流程的 Agent,可通过用户的浏览器或 Playwright 执行任务。
主要功能
- 01将浏览器操作编译为 `.flow.json`
- 02确定性重放已编译程序
- 03检查页面快照以发现变化
- 04通过 Chrome 或 Playwright 运行
- 05读取、写入并监控网站
- 06按需捕获并创建自动化
适用场景
- 01提取网站信息
- 02自动化登录后的浏览器流程
- 03监控网站结构变化
- 04无需每次运行消耗 LLM 令牌,重复执行浏览器任务
MCP 相关
Taprun 提供 MCP 服务,供支持的 MCP 主机创建浏览器自动化。编译后的程序通过其浏览器运行时执行,无需每次重放都调用 LLM。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.taprun.dev/mcpclaude mcp add --transport http tap https://mcp.taprun.dev/mcp{"mcpServers":{"tap":{"type":"http","url":"https://mcp.taprun.dev/mcp"}}}在 Cursor 中打开{"servers":{"tap":{"type":"http","url":"https://mcp.taprun.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"tap":{"type":"http","url":"https://mcp.taprun.dev/mcp"}}}{"mcpServers":{"tap":{"serverUrl":"https://mcp.taprun.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
4| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 否 | |
| intent | string | 否 |
详细介绍
Taprun
Agent 在你自己的已登录浏览器中驱动的操作层,专为干净 API 无法触及、充满例外且合规要求严格的最后 20% 场景打造。编译一次,永久重放,LLM 令牌消耗为零。
为你的 Agent 提供浏览器闭环操作层,专门处理干净 API 和云端 Agent 无法触及、需要登录、充满例外且合规要求严格的最后 20% 场景。在你自己的 Chrome 中驱动,捕获一次,永久重放,LLM 令牌消耗为零。
随着 API 逐渐筑起高墙并开始计量收费,仍然需要处理的工作都藏在登录、OTP 验证墙和人为手势验证之后——云端 Agent 在架构上无法触及这些例外、审批和合规步骤。Taprun 正是为此提供操作层:你的 Agent 驱动真实且已登录的 Chrome,闭合操作环路(执行 → 验证效果 → 出现漂移时重新运行),并交付一份由你掌控的确定性重放程序。
其他所有浏览器 Agent 每次执行都会重新运行实时 LLM,也会再次消耗令牌。Taprun 的 AI Agent 只检查页面一次,并生成确定性的 .flow.json 程序;此后的每次重放都只是纯数据调度——每次调用结果一致,令牌成本为 $0,流程中不再需要 Agent。它运行在你的真实 Chrome 中,因此从架构上确保 Cookie 和登录会话留在你的设备上。tap verify 会在数据过时前捕获故障。
支持 Claude Code、CodeBuddy、Cursor、Cline、Windsurf 和任何 MCP 主机——直接从聊天窗口安装。按需从任意 URL 创建 tap,无需目录。
Capture: AI inspects the site → compiles a .flow.json program (one-time cost)
Run: The program executes instantly, same result every time ($0, zero AI)
Verify: tap verify checks the snapshot equivalence predicate (catches drift)
Repair: re-run capture against the same site/name; the next (only when needed)
verify rebaselines after human review
Taprun 对比
| Taprun | AI 浏览器 Agent | 传统爬虫 | |
|---|---|---|---|
| 每次运行的 AI 成本 | $0(编译一次) | 每次运行都消耗 Token | 免费 |
| 准确性 | 确定性 | 每次运行各不相同 | 确定性 |
| 静默故障检测 | 每个点击的 CEL snapshot_equivalent 谓词 + 4 种结果判定 | 无 | 无 |
| 故障诊断 | tap verify — 精确显示发生变化的内容 | 无 | 手动抽查 |
| 检测风险 | 低(真实浏览器会话) | 高 | 高 |
| 运行时 | 2(Chrome 扩展 + Playwright) | 1 | 1 |
| 代码可检查 | .flow.json — 纯 JSON、包含 18 个操作的封闭词汇表、git diff | 黑盒 / 临时文件 | 脆弱的脚本 |
| 原生支持 MCP | 是(仅限创作层 — 执行不消耗 Token) | 否 | 否 |
开始使用
1. 从聊天窗口连接到你的 Agent
Claude Code / CodeBuddy — 在聊天中粘贴两行,仅此而已:
/plugin marketplace add LeonTing1010/taprun
/plugin install tap@taprun
这会安装 Taprun MCP 服务,以及教会 Agent 何时使用它的技能,还有将受限站点的 fetch 请求路由到 Taprun 的钩子 — 无需终端,也无需配置文件。(CodeBuddy 仅在启动时连接插件 MCP 服务,因此安装后需要彻底重启一次;Claude Code 可通过 /reload-plugins 加载。)
其他 MCP 宿主(Cursor · VS Code · Claude Desktop)— 运行一条命令即可自动写入配置:
npx -y @taprun/cli embed cursor # or: vscode | claude-desktop | claude-code | codebuddy | qwen
二进制文件会自动复制到 ~/.tap/bin,并写入 Agent 的 MCP 配置。随时运行 tap embed --verify 重新检查。
使用的编码 Agent 不在列表中?
tap embed的目标是数据,而非代码:在~/.tap/embed-targets.json中添加一行,新 Agent 就会立即生效 — 无需发布引擎版本。每行定义四种安装类型之一(cc-plugin适用于 Claude-Code-plugin 宿主、cli-mcp-add适用于支持<cli> mcp add的 CLI、ide-deeplink、desktop-bundle),例如[{"id":"kode","kind":"cc-plugin","display":"Kode CLI","tier":1,"cli":"kode"}]。这与 Taprun 一贯的设计理念相同 — 引擎保持封闭且机械化;你可以通过本地数据扩展它。
现在选择运行时 — 只有在需要复用已登录的当前 Chrome 会话时,才需要安装扩展:
- 公共网页 / 开放 API / CI — 无需再安装任何内容。 MCP 服务通过
npx运行;到此即可完成。附加--no-extension,即可在纯聊天环境中使用 Playwright 运行时及其独立隔离配置文件(无需浏览器手势,也无需点击)。 - 已登录的站点(你的银行 / 内部仪表板 / 小红书 / 知乎)— 直接在聊天中告诉 Agent “为已登录站点设置 tap”。tap-setup 技能会通过聊天完成整个桥接设置:生成稳定版二进制文件(使用引擎通过
npx已下载的文件 — 无需二次下载)并注册原生消息清单,然后打开扩展页面。唯一不能通过聊天完成的步骤,是点击一次 添加到 Chrome — 这就是允许 Taprun 复用你现有登录状态的信任关卡;安装完成后,正在执行的调用会自动恢复。 - Claude Desktop:下载
tap.mcpb并双击。
其他安装方式(brew · curl · 手动配置 MCP JSON · 原始二进制文件)
brew install LeonTing1010/tap/taprun # Homebrew (macOS / Linux)
curl -fsSL https://taprun.dev/install.sh | sh # permanent binary
npx -y @taprun/cli --version # zero-install (any Node host)
如果你更愿意自行编写,可手动配置 MCP:
{ "mcpServers": { "tap": { "command": "npx", "args": ["-y", "@taprun/cli", "mcp", "stdio"] } } }
| 平台 | 下载 |
|---|---|
| macOS(Apple Silicon) | tap-macos-arm64 |
| macOS(Intel) | tap-macos-x64 |
| Linux | tap-linux-x64 |
| Windows | tap-windows-x64.exe |
运行声明账本中的第一项——也就是其 nightly CI 运行的确切验证:
mkdir -p ~/.tap/flows/github
curl -fsSL https://raw.githubusercontent.com/LeonTing1010/tap-skills/main/claims/2026-07-11-github-trending-has-no-api/plan.json \
-o ~/.tap/flows/github/trending-no-api.flow.json
tap github/trending-no-api
"state": "committed" 加上今日热门仓库,且消耗 0 个令牌 = 安装有效,并且声明成立。
3. 打造你自己的自动化
tap capture https://news.ycombinator.com hn/front --intent "front-page stories with points"
tap hn/front # replay forever, $0
或者直接询问你的 AI Agent:
You: What's trending on GitHub today?
Agent: Here are today's top repos — React compiler hit 734 stars...
You: Capture a tap for Douban top 250 movies
Agent: Done. Run `tap douban/top250` anytime — $0 per run.
可选:从自己的代码中驱动二进制程序(TypeScript / Python)
跳过 MCP——在自己的循环中调用 tap 二进制程序:
tap capture <url> hackernews/top --intent "front-page top stories"
tap hackernews/top --args '{}' # JSON-on-stdout, exit 0 on success
tap verify hackernews/top # 3-arm verdict (live / drifted / unreachable)
CLI 会将 ToolResult<T> 封装为 JSON 输出——形状与 MCP 接口返回的相同,因此任何带有子进程库的语言都可以驱动它。运行 tap --help 查看完整的动词列表。
已有 Playwright / Puppeteer / Stagehand 脚本?
无需重写。使用其中一个开源适配器进行转换——放入现有源代码,即可生成兼容 Taprun 的 .flow.json 计划:
# Existing Playwright script (47M weekly npm downloads — most likely the one you have)
npm install @taprun/from-playwright @taprun/spec
node -e "import('@taprun/from-playwright').then(m => console.log(m.playwrightToTap(require('fs').readFileSync('tests/login.spec.ts','utf8'), {site:'example', name:'login'})))"
# Or scaffold a new starter from scratch
npx create-tap-script github/trending https://github.com/trending
| 适配器 | 源格式 | 覆盖范围 |
|---|---|---|
@taprun/from-playwright | .ts/.js Playwright 测试 | 8 个 page.* API(goto/click/fill/type/press/waitForSelector/waitForTimeout/screenshot) |
@taprun/from-puppeteer | .ts/.js Puppeteer 脚本 | 7 个 page.* API + page.keyboard.press |
@taprun/from-stagehand | .ts/.js Stagehand 脚本 | 混合模式:确定性的 page.* 会映射到计划操作;NL act/extract/observe 会标记出来,以确保验证结果如实 |
create-tap-script | (无——脚手架工具) | 根据 <site>/<name> <url> 生成初始 .flow.json 封装 |
格式本身记录在 @taprun/spec 中——这是公共协议接口包:包含 v2 Plan 的 TypeScript 类型(18 种操作组成的封闭联合类型 + 带判别字段的读 / 写 Plan 联合类型),以及 JSON Schema 2020-12,其 $id 可通过 taprun.dev/spec/plan-v1/schema.json 解析,并与 TS 类型进行双向漂移保护。第三方工具(IDE $schema 自动补全、Python/Ruby/Go 中与 ajv 等效的验证器、治理层、替代运行时、具备计划感知权限范围的 MCP 主机)可基于此包构建,而无需依赖专有的 Taprun 引擎。Plan-v1 参考文档:taprun.dev/spec/plan-v1。全部五个包的源代码位于 packages/(工作区概览请参阅 packages/README.md)。
你可以做什么?
读取 — 从任何网站提取数据
tap reddit/hot # Reddit front page
tap bilibili/trending # Bilibili trending
tap arxiv/search --keyword "LLM" # arXiv papers
写入 — 操作任何网站
tap xiaohongshu/publish --title "My Note" --images photo.jpg
tap zhihu/publish --title "My Article" --content "..."
监控 — 监测变化
tap verify github/trending # spot drift; schedule via cron / launchd
组合 — 像 Unix 管道一样串联
tap github/trending | tap filter --field stars --gt 500 | tap table
打造 — 使用 AI 创建新的自动化
tap capture https://news.ycombinator.com hackernews/hot --intent "top stories" # API detected — compiled without AI
tap capture https://example.com mysite/home --intent "..." # BYOK Claude / GPT for the long tail
使用你自己的模型——兼容 Claude、OpenAI、DeepSeek,或任何 兼容 OpenAI 的端点,包括用于完全离线打造的 本地 Ollama / LM Studio:
tap config set ai.baseUrl http://localhost:11434/v1
tap config set ai.key ollama
tap config set ai.model llama3.1
tap capture https://arxiv.org/list/cs.AI/recent arxiv/recent --intent "recent papers" # 0 bytes leave your machine
工作原理
┌─ Chrome extension (your real browser sessions)
You → AI → Taprun ──────┤
capture └─ Playwright (headless, server, CI/CD)
- 你描述想要实现的目标(URL × 自然语言意图)
- AI 编译出一个
.flow.json程序——纯 JSON,采用 18 种操作组成的封闭词汇表,并进行版本控制 - Taprun 运行该程序,可使用任一运行时——永久运行,成本为 $0
每次成功编译都会让下一次更快。要为新网站创建一个 tap?你的 Agent 可以按需使用 capture 打造一个——无需目录。
已验证的声明
tap-skills 不再是技能目录,而是一个声明账本:针对实时网络、带日期且可证伪的声明,每条声明都附带自己的确定性计划,并由 CI 每晚重新验证,不消耗任何 LLM token。如果某条声明发生变化,当晚就会公开标记为 🟡。
亲自验证第一条声明(约 2 分钟,无需登录或浏览器):
mkdir -p ~/.tap/flows/github
curl -fsSL https://raw.githubusercontent.com/LeonTing1010/tap-skills/main/claims/2026-07-11-github-trending-has-no-api/plan.json \
-o ~/.tap/flows/github/trending-no-api.flow.json
npx -y @taprun/cli github/trending-no-api
你获得的验证结果与每晚 CI 完全相同——确定性重放,结果一致。包含 140 个技能的 v1 目录原封不动地保存在 v1-archive 分支中;预先构建的目录只会逐渐过时,因此计划改为通过 capture 按需生成。
tap verify <site>/<name> # Snapshot equivalence — catches silent failures before your data goes stale
tap list # See everything available
tap show <site>/<name> # Print the saved tap's plan as JSON
架构上以本地为先
零 token 重放是核心卖点;以本地为先则是其底层保障。Taprun 在你的浏览器中运行——Chrome 扩展会复用你当前的登录会话,因此 Cookie、身份验证令牌和凭据绝不会离开你的设备。这是架构上的选择,而非营销宣传:
| 关注点 | 以云端为先的浏览器 SDK | Taprun(以本地为先) |
|---|---|---|
| 已登录的 Cookie 存放在哪里? | 云服务供应商的服务器上 | 仅在你的本地浏览器中 |
| AI 能看到什么? | 完整会话和你的数据 | 仅在生成时查看页面 DOM |
是否符合 noindex / robots.txt / TOS 的要求? | 供应商代表你签署 ToS | 使用你的账户,遵守你的条款 |
| 内部 / 内网网站 | 需要 VPN 隧道 | 直接打开页面即可 |
| 停用风险 | 供应商停运 → 你的抓取程序停止运行 | 本地代码继续运行 |
| 层级 | 保护措施 |
|---|---|
| 沙箱 | 程序以零权限运行——无法访问文件、网络或系统 |
| 静态分析 | CI 会在危险模式触达用户之前将其拦截 |
| 仅限本地 | 你的数据、会话和 API 密钥在架构层面就不会离开你的设备 |
完整威胁模型请参阅 SECURITY.md。
贡献
最简单的贡献方式:生成一个新的 tap。 只需一个 .flow.json 文件。
详情请参阅 CONTRIBUTING.md。
路线图
- 社区技能目录——于 2026-07 停用,改为采用声明账本(v1 目录已归档)
- 2 种运行时——Chrome 扩展 + Playwright(无头模式 / CI)
- Unix 管道——
tap A | tap B - 监视模式——随时间监控变化
- 验证——
tap verify快照等价性检查,提供 4 种漂移判定(等价 / 已漂移 / 首次快照 / 无法访问) - 单命令 MCP 服务——为任何 MCP 主机运行
tap mcp stdio(或tap mcp http) - Android 运行时
- iOS 运行时
- 并发控制——为 M 个 Agent 并行操作共享账户提供确定性协调
支持
- GitHub Discussions — 问答、创意交流、展示与分享
- [email protected] — 许可、私人反馈、咨询
- Issues — Bug 报告
隐私
Taprun 在架构上以本地为先。它在你自己的设备上驱动你自己的浏览器——凭据、Cookie 和页面数据绝不会离开设备。引擎不会发送遥测数据,也不会发起任何出站网络请求,唯一的例外是你明确为已保存的 tap 指定的请求(op:fetch)。已保存的 tap、密钥和跟踪记录仅存放在你设备上的 ~/.tap/ 中。
完整政策:taprun.dev/privacy。
许可证
Star 历史
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。