strobe CLI

CLI для замера производительности: агент сравнивает ветки, ищет медленные места и подтверждает ускорение числами, а не на глаз.

  • 158 ★ репозитория
  • Последний коммит
  • MIT
CLI

Расширенный доступ

Почему такой уровень

  • Запускает ваше приложение и снимает произвольные процессы машины снаружи, для этого нужны разрешения ОС.
  • Команда `strobe look` читает содержимое экрана.
Все причины и проверки

anomalyco/strobe

Установка

Работает в

Ручная установка

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Минимальный доступ67Звезды репозитория
Официальный

CLI Vercel для проверки кодинг-агентов на вашем фреймворке: запускает Claude Code, Codex и другие, считает долю успешных задач

CLIРасширенный доступ280Звезды репозитория

hyperfine многократно запускает команды, сравнивает время и другие показатели и сохраняет результаты измерений в файлы.

CLIРасширенный доступ29,3 тыс.Звезды репозитория
Официальный

CLI для замеров производительности и поиска регрессий; в репозитории лежит плагин с двумя скиллами и MCP для Claude Code и Cursor

CLIРасширенный доступ394Звезды репозитория

CLI проверяет веб-страницу в Chromium: находит все элементы управления, нажимает их и сообщает, что сломано. Без тестов и без LLM.

CLIРасширенный доступ110Звезды репозитория

Локальный отладчик TypeScript-агентов: дерево шагов, проверка траектории в CI и архив доказательств без аккаунта.

CLIРасширенный доступ212Звезды репозитория

Коротко о 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>]

Сообщить о проблеме