strobe CLI
CLI для замера производительности: агент сравнивает ветки, ищет медленные места и подтверждает ускорение числами, а не на глаз.
- 158 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Запускает ваше приложение и снимает произвольные процессы машины снаружи, для этого нужны разрешения ОС.
- Команда `strobe look` читает содержимое экрана.
Установка
- Работает в
Ручная установка
bun add -d @hona/strobe && bunx strobe upСтавит пакет и скилл `strobe`; команда выполняется один раз на машину.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Запускает ваше приложение и снимает произвольные процессы машины снаружи, для этого нужны разрешения ОС.
- Команда `strobe look` читает содержимое экрана.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
strobe записывает веб-страницу, приложение Electron, процесс Bun или Node либо любой другой процесс на одной временной шкале и отвечает вердиктами со ссылками вида `rec_3f9a` и `exp_9b3b26`, в которые можно углубиться. Замер, который нельзя защитить, strobe отклоняет и считает это ответом. Главная команда для агента — `strobe bench`: файл `*.bench.ts` описывает цели и сценарии, например прокрутку страницы, а команда сравнивает ветку с базой попарно. Остальные команды отвечают на вопросы по записи: `strobe record` снимает процесс, `strobe query` показывает горячие места и разницу между двумя записями, `strobe look` описывает экран, `strobe report` собирает карточку результата для запроса на слияние, `strobe open` открывает запись в Perfetto. Углубление идет до строки кода, нативного стека, потоков, пробуждений, аллокаций, кадров и видеопамяти. Команда `strobe up` ставит скилл `strobe`, по которому агент знает порядок работы.
Для кого. Фронтенд- и десктоп-разработчикам, которые просят агента ускорить приложение и хотят видеть воспроизводимые цифры в запросе на слияние.
Подходит, если
- Нужно понять, ускорила ли ветка прокрутку, и получить ответ в виде пары замеров с базой.
- Установленное приложение тормозит, и надо увидеть, на что уходит время процессора по потокам.
- Есть подозрение на утечку памяти, и запись с пробами памяти должна подтвердить рост.
- В запрос на слияние нужна карточка с цифрами «до и после».
Не подходит, если
- Задача — быстро прикинуть скорость на глаз без настройки бенчмарков.
- Нужен нагрузочный тест сервера: strobe замеряет страницы, приложения и процессы машины.
- Разрешения ОС для записи процессов выдать нельзя.
Пример запроса к агенту
Стала ли прокрутка быстрее в этой ветке по сравнению с origin/main? Прогони бенч и дай карточку для запроса на слияние.Ограничения
Установка идет через менеджер пакетов Bun: `bun add -d @hona/strobe`, затем `bunx strobe up` один раз на машину. Команда `strobe status` показывает, что машина умеет измерять и какого разрешения не хватает. Продолжительности пишут с единицей, например `10s`, иначе команда завершается с кодом 2. Глубокие пробы вроде `waits` добавляют нагрузку на цель при каждом переключении контекста, а видеозапись искажает тайминги. Лицензия в репозитории не указана, сроки поддержки не заявлены.
Как отключить. Удалите зависимость для разработки командой `bun remove @hona/strobe` и папку скилла `strobe` из каталога скиллов агента. Записи и профили лежат в проекте и в `strobe.json`.
Частые вопросы
Как поставить strobe для агента?
Командой `bun add -d @hona/strobe && bunx strobe up` один раз на машину. Вторая часть ставит скилл `strobe`, по которому агент выбирает команды.
Что такое `app:desktop`?
Профиль в файле `strobe.json` репозитория: как собрать и запустить приложение во временной домашней папке, чтобы замеры не трогали ваши настоящие данные.
Как сравнить две записи?
Командой `strobe query rec_3f9a..rec_7c1d hotspots`: она показывает, что стало медленнее между двумя записями.
Работает ли strobe с Firefox?
Да, флагом `--engine firefox`: страница замеряется снаружи, доступны процессор, графика, память и узлы DOM. Для снимков кучи есть замеры бенча.
Как открыть запись целиком?
Командой `strobe open rec_3f9a`: запись открывается в Perfetto, где видны все потоки и кадры.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыCLI ищет в коде узкие места по сложности и отделяет находки от измерений, чтобы агент проверял, стоит ли оптимизация усилий.
CLI Vercel для проверки кодинг-агентов на вашем фреймворке: запускает Claude Code, Codex и другие, считает долю успешных задач
hyperfine многократно запускает команды, сравнивает время и другие показатели и сохраняет результаты измерений в файлы.
CLI для замеров производительности и поиска регрессий; в репозитории лежит плагин с двумя скиллами и MCP для Claude Code и Cursor
CLI проверяет веб-страницу в Chromium: находит все элементы управления, нажимает их и сообщает, что сломано. Без тестов и без LLM.
Локальный отладчик TypeScript-агентов: дерево шагов, проверка траектории в CI и архив доказательств без аккаунта.
Коротко о README
strobe рассчитан на агентов: задачи формулируются вопросами вроде «стала ли ветка быстрее», а ответом служат вердикты и ссылки на записи. Бенчмарк описывается на TypeScript и запускается парами «база и ветка».
Бейдж для README
Исходный SKILL.md
---
name: strobe
description: Measure and explain performance of web pages, Electron apps, Bun or Node processes and any process. Use when the user asks whether a change is faster, why something is slow, janky or heavy, where memory goes, what the CPU or GPU is doing, or to write a benchmark.
---
# Strobe
strobe records a target on one timeline and answers with verdicts and handles (`rec_…`, `exp_…`) to drill into. It refuses measurements it cannot defend: a refused run is an answer.
## Reference
### `strobe status`
```text
strobe status [--calibrate]
```
- Environment, validity preflight, recent handles.
### `strobe record`
```text
strobe record <target> [--probes timing|attribution|memory] [--for 10s] [--headless] [--served <dir>]
strobe record https://… --engine firefox [--probes timing|attribution] [--headless] [--for 10s]
strobe record --bench <file.bench.ts>#<case> [--head <variant>]
strobe record pid:<n>|proc:<name> [--probes timing|deep|waits] [--for 10s]
strobe record app:<id> --until-line "<regex>" [--stop-line "<regex>"]
strobe record <target> --video (or record --bench … --video: a video of the check run; timing perturbed)
```
- `--for` (and every duration) needs its unit: `500ms`, `10s`, `2m`; a bare number exits 2.
- `--bench`: a bench case (clicks, keys) under the attribution probes.
- `pid:<n>|proc:<name>`: any running process from outside: frames from the OS's present events, CPU, threads, IO, GPU, memory.
- `deep`: native stacks (kernel sampled profile, PDB symbols).
- `waits`: `deep` plus off-CPU waits (`query <rec> waits`); costs the target at every context switch.
- `--until-line`: a native app from the line it prints when ready (to the next line), not a fixed settle.
- `--engine firefox`: the page in Firefox, from outside: CPU, GPU, memory, DOM nodes, and headed the OS's frames.
- `--probes attribution`: Firefox's profiler and about:memory (`hotspots`, `layout`, `gc`, `memory`).
- `--probes memory` refuses: Firefox gives no heap snapshots; use a bench leak run.
### `strobe bench`
```text
strobe bench <file.bench.ts> --head <variant>
[--base <variant> | --aa | --check | --blocks N] [--filter <cases>] [--target <name>]