Назад к обновлениям
New releaseJul 26, 2026

kuri v0.4.14

Автоматизация браузера, веб-скрапинг и управление устройствами iOS и Android для AI-агентов. Zig-native, эффективные по токенам CDP-снимки, запись HAR, нативный клиент adb wire-protocol и автономный fetcher.

Поделиться

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. Единый бинарник, без runtime-зависимостей.

Прямые загрузки: macOS arm64 · macOS x86_64 · Linux x86_64 · Linux arm64


Автоматизация браузера и веб-краулинг для AI-агентов. Написан на Zig. Без Node.js.

Автоматизация через CDP · A11y-снимки · Запись HAR · Автономный загрузчик · Интерактивный терминальный браузер · Агентный CLI · Тестирование безопасности · Управление устройствами iOS + Android

Быстрый старт · Бенчмарки · kuri-agent · Тестирование безопасности · API · Навыки · Changelog

Почему команды переходят на Kuri: текущие сборки ReleaseFast для Apple Silicon остаются менее 2 МБ на бинарник, а свежий повторный запуск Google Flights 2026-04-23 показал 3 392 токена для полного цикла kuri-agent (go→snap→click→snap→eval). Кросс-инструментальные различия следует перепроверять в том же окружении, прежде чем указывать процент.


Почему Kuri выигрывает для агентов

Большинство браузерных инструментов создавались для QA-инженеров. Kuri создан для агентных циклов: прочитать страницу, сохранить низкую стоимость токенов, действовать по стабильным ссылкам и двигаться дальше.

  • 135 HTTP-эндпоинтов — полный паритет с agent-browser и browser-use, от инспекции React до Core Web Vitals.
  • На 7-12% меньше токенов, чем agent-browser на реальных страницах, благодаря формату ссылок @eN и рендерингу без префиксов.
  • В 44 раза легче наблюдения с /page/state (48 токенов) против полного снимка (2 124 токена) для той же страницы Google Flights.
  • Пакетное выполнение — POST /batch отправляет N команд за один HTTP-вызов, устраняя N-1 круговых обменов и N-1 ходов LLM.
  • Совместимость с React — доверенные CDP-события мыши и посимвольные события клавиатуры вызывают onClick и onChange в React 18/19.

Токены снимка: Google Flights SIN → TPE

Свежий повторный запуск 2026-05-24 в этом рабочем пространстве, измерено с помощью wc -c и аппроксимации chars/4.

Инструмент / РежимСимволы~ТокеныПримечание
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]

Эффективность токенов: kuri против agent-browser

СтраницаТокены kuriТокены agent-browserЭкономия
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

ИнструментТокены за цикл
kuri-agent~3 400
С /page/state вместо второго snap~1 700
С POST /batch (всё в одном вызове)~1 700 (те же токены, 1 HTTP-вызов вместо 5)

kuri против libretto

libretto (Playwright + Node) — ближайший конкурент по стоимости токенов на шаг. Измерено в прямом сравнении 2026-07-04 — тот же Chrome, та же вкладка, реальные подсчёты tiktoken o200k_base (полная методология и воспроизведение: benchmarks/libretto_comparison.md). Честное разделение:

ОсьПобедительДетали
Задержка на вызовkuri4–117 мс против 1 344–1 500 мс (в 13–376 раз быстрее — постоянный сервер против Node-на-команду)
Токены снимка, типичная страницаkuriпростая 61 против 151 (2,5×), статья 265 против 363 (1,37×) — более плотная грамматика
Токены снимка, большой списокразделениеkuri по умолчанию 4 424 против 813 — kuri выдаёт все 259 ссылок, libretto по умолчанию усекает. С limit=5 kuri рендерит 555 токенов (в 1,46 раза меньше libretto), 34 ссылки + маркеры … +45 more
Траектория (лента, 9 кликов)kuri, едва898 против 939 токенов (база limit=5 + цикл diff против цикла exec) — паритет или небольшое преимущество; утреннее поражение в 5,1× было из-за неусечённой базы
Повторные запускиlibrettoкомпилирует траектории в скрипт Playwright → воспроизведение за 0 токенов; kuri заново платит за цикл при каждом запуске

Что kuri получил от изучения libretto (всё вошло в этот релиз): цикл с приоритетом diff (take_snapshot_diff, ~38 токенов/шаг); адаптивный diff, который откатывается к полному снимку с заголовком ! page replaced при навигации; строки удаления только по идентичности; скриншоты, записываемые на диск (возвращается путь, байты никогда не попадают в контекст); get_page_state через MCP; и — после переписывания parseA11yNodes как настоящего обхода дерева в DFS — опциональное усечение списка (/snapshot?limit=N, одна строка … +K more на каждый усечённый запуск), ограниченный повторный захват (scope=@ref) и иерархическая индентация, также доступные как uid/limit в MCP take_snapshot. Траектория ленты из 9 кликов, которая стоила 44 285 токенов при наивных полных повторных снимках, стоит 898 с усечённой базой + diff — в 49 раз дешевле, и превосходит 939 у libretto.

Более старые таблицы выше используют аппроксимацию токенов chars/4; сравнение с 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

Измерено на текущей сборке v0.4.3 ReleaseFast с помощью /usr/bin/time -l.

Команда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

Проблема

Категории