返回更新列表
新发布Jul 26, 2026

kuri v0.4.14

浏览器自动化、网络爬取以及iOS + Android设备控制,专为AI智能体打造。基于Zig原生开发,提供令牌高效的CDP快照、HAR记录、原生ADB有线协议客户端及独立抓取器。

分享

Kuri

Kuri 🌰

Stable release License Zig node_modules status

安装

curl -fsSL https://kuri.trilok.ai/download | sh

macOS arm64/x86_64 和 Linux x86_64/arm64。单一二进制文件,无运行时依赖。

直接下载:macOS arm64 · macOS x86_64 · Linux x86_64 · Linux arm64


面向 AI 代理的浏览器自动化与网页抓取。使用 Zig 编写。零 Node.js。

CDP 自动化 · A11y 快照 · HAR 录制 · 独立抓取器 · 交互式终端浏览器 · 代理式 CLI · 安全测试 · iOS + Android 设备控制

快速开始 · 基准测试 · kuri-agent · 安全测试 · API · 技能 · 更新日志

团队为何转向 Kuri: 当前 Apple Silicon ReleaseFast 构建的每个二进制文件均保持在 2 MB 以下,2026-04-23 重新运行 Google Flights 测得完整 kuri-agent 循环(go→snap→click→snap→eval)消耗 3,392 个 token。在引用百分比之前,应在相同环境中重新运行跨工具对比数据。


为什么 Kuri 在代理场景中胜出

大多数浏览器工具是为 QA 工程师构建的。Kuri 是为代理循环构建的:读取页面、保持低 token 成本、基于稳定引用执行操作,然后继续。

  • 135 个 HTTP 端点 — 与 agent-browser 和 browser-use 完全对等,从 React 检查到 Core Web Vitals。
  • 比 agent-browser 少 7-12% 的 token,得益于 @eN 引用格式和零前缀渲染。
  • 观测数据轻 44 倍,使用 /page/state(48 个 token)对比完整快照(2,124 个 token),针对同一 Google Flights 页面。
  • 批量执行 — POST /batch 在一次 HTTP 调用中发送 N 条命令,消除 N-1 次往返和 N-1 轮 LLM 交互。
  • React 兼容 — 可信的 CDP 鼠标事件和逐字符键盘事件可触发 React 18/19 的 onClick 和 onChange。

快照 token:Google Flights SIN → TPE

2026-05-24 在此工作区重新运行,使用 wc -c 和 chars/4 近似值测量。

工具 / 模式字符数~Token 数备注
kuri snap(完整)8,4992,124所有节点 + 交互引用
kuri snap(仅交互)~3,000~750最适合代理循环
kuri /page/state19048轻量观测(url、title、scroll%、计数)
agent-browser snap(估算)~9,183~2,295[ref=e0] 格式开销

Token 效率:kuri vs agent-browser

页面kuri token 数agent-browser token 数节省
example.com4035-13%(简单页面,agent-browser 跳过根节点)
Hacker News386~440少 12%
Google Flights SIN→TPE2,124~2,295少 7%

节省来自 kuri 的紧凑格式:

  • @e0 引用(3 字符)对比 [ref=e0](9 字符)
  • 每行无 - 前缀(节省 2 字符 × 行数)
  • 相同的缩进,相同的节点过滤

完整工作流成本:go → snap → click → snap → eval

工具每周期 token 数
kuri-agent~3,400
使用 /page/state 替代第二次 snap~1,700
使用 POST /batch(全部在一次调用中)~1,700(相同 token 数,1 次 HTTP 调用而非 5 次)

kuri vs libretto

libretto(Playwright + Node)是每步 token 成本方面最接近的竞争对手。2026-07-04 进行头对头测量 — 相同 Chrome、相同标签页、真实 tiktoken o200k_base 计数(完整方法和复现:benchmarks/libretto_comparison.md)。诚实的对比:

维度胜者详情
每次调用延迟kuri4–117 ms vs 1,344–1,500 ms(快 13–376 倍 — 持久服务器 vs 每条命令启动 Node)
快照 token,典型页面kuri简单页面 61 vs 151(2.5 倍),文章 265 vs 363(1.37 倍)— 更紧凑的语法
快照 token,大型列表各有胜负kuri 默认 4,424 vs 813 — kuri 输出全部 259 个引用,libretto 默认截断。使用 limit=5 时 kuri 渲染 555 个 token(比 libretto 少 1.46 倍),34 个引用 + … +45 more 标记
轨迹(信息流,9 次点击)kuri,微弱优势898 vs 939 个 token(limit=5 基础 + diff 循环 vs exec 循环)— 持平至微弱优势;早上的 5.1 倍差距是未截断的基础快照
重复运行libretto将轨迹编译为 Playwright 脚本 → 0 token 重放;kuri 每次运行都重新支付循环成本

kuri 从研究 libretto 中获得的改进(均在本版本中发布):diff 优先循环(take_snapshot_diff,约 38 token/步);自适应 diff,在导航时回退到带 ! page replaced 头的完整快照;仅身份移除行;截图写入磁盘(返回路径,字节永不进入上下文);MCP 上的 get_page_state;以及 — 在将 parseA11yNodes 重写为真正的 DFS 树遍历之后 — 可选列表截断(/snapshot?limit=N,每个被截断的运行一行 … +K more)、范围重新捕获(scope=@ref)和层级缩进,也作为 MCP take_snapshot 上的 uid/limit 暴露。9 次点击的信息流轨迹,使用朴素完整重新快照时消耗 44,285 个 token,使用截断基础 + diff 后仅消耗 898 个 — 便宜 49 倍,且超过 libretto 的 939。

上述较旧的表格使用 chars/4 token 近似值;libretto 对比使用真实的 tiktoken 计数。在引用百分比之前,请在自己的环境中重新运行跨工具数据。

二进制大小和内存

在 Apple M4 Pro、macOS 26.4.1 上测量。当前二进制文件使用 -Doptimize=ReleaseFast 构建。

二进制文件当前大小
kuri1,093,840 B (1.04 MiB)
kuri-agent629,904 B (615 KiB)
kuri-browse1,089,120 B (1.04 MiB)
kuri-fetch2,063,488 B (1.97 MiB)

RSS 在 Zig 0.16 迁移期间保持平稳

使用 /usr/bin/time -l 针对当前 v0.4.3 ReleaseFast 构建测量。

命令v0.4.3 平均最大 RSS
kuri-fetch --version~2.45 MiB
kuri-browse --version~2.45 MiB
kuri-fetch --quiet --dump markdown http://example.com/~9.17 MiB

问题所在

每个浏览器自动化工具都会拖入 Playwright(约 300 MB)、Node.js 运行时以及一连串 npm 依赖。你的 AI 代理只想读取页面、点击按钮,然后继续。 Kuri 是一个单一的 Zig 二进制文件。 四种模式,零运行时:

kuri           →  CDP server (Chrome automation, a11y snapshots, HAR)
kuri-fetch     →  standalone fetcher (no Chrome, QuickJS for JS, ~2 MB)
kuri-browse    →  interactive terminal browser (navigate, follow links, search)
kuri-agent     →  agentic CLI (scriptable Chrome automation + security testing)

📦 安装

一行安装(macOS / Linux)

curl -fsSL https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/install.sh | sh

检测你的平台,下载对应的二进制文件,安装到 ~/.local/bin。 下载来自 Kuri 自行管理的 release-channel 分支。macOS 二进制文件使用 Developer ID 证书进行本地签名。GitHub Release 资产与这些 tarball 相同。

bun / npm

bun install -g kuri-agent
# or: npm install -g kuri-agent

在安装时下载适用于你平台的正确原生二进制文件。

发布渠道

Kuri 的稳定二进制文件位于 release-channel 分支,并直接从 GitHub raw URL 提供。

  • 稳定版安装脚本:https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/install.sh
  • 稳定版清单:https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/latest.json
  • 分支视图:https://github.com/justrach/kuri/tree/release-channel/stable
  • 直接下载模式:https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/<version>/kuri-<version>-<target>.tar.gz

手动安装

从稳定版发布清单或 GitHub Releases 页面下载适用于你平台的 tarball,并将其解压到你的 $PATH 中。

稳定版安装 URL:

curl -fsSL https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/install.sh | sh

清单包含精确的资源 URL 以及针对 aarch64-linux、x86_64-linux、aarch64-macos 和 x86_64-macos 的 SHA-256 校验和。

平台支持

平台状态
macOS(aarch64、x86_64)预构建二进制文件,已签名并公证
Linux(aarch64、x86_64)预构建二进制文件
Windows(x86_64)实验性——仅限交叉编译。 zig build -Dtarget=x86_64-windows-gnu 已通过 CI 验证,但 Chrome 自动化、守护进程化、基于信号的关闭、HAR 录制以及基于文件的认证存储均在运行时以 error.UnsupportedOnWindows 打桩。如果你需要完整功能集,请使用 WSL2。跟踪于 #153。

Kuri 在多个地方依赖 POSIX 原语(fork、clock_gettime、原始套接字),因此完整的原生 Windows 移植是实打实的工作。上述编译级基线允许 --version/--help 路径和纯内存操作运行;那些棘手的部分(Chrome、套接字、守护进程化)需要真正的 Win32 实现才能从打桩列表中移除。如果你想接手其中任何一项,请 +1 #153 或提交 PR。

从源码构建

需要 Zig ≥ 0.16.0。

git clone https://github.com/justrach/kuri.git
cd kuri
zig build -Doptimize=ReleaseFast
# Binaries in zig-out/bin/: kuri  kuri-agent  kuri-fetch  kuri-browse

⚡ 快速开始

分类