hotpath CLI
hotpath — профилировщик Rust: время, память, процессор, каналы, SQL и HTTP, настройка через агента командой hotpath init и MCP-сервер для вопросов
- 1 911 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Команда `hotpath init` скачивает инструкции навыка с GitHub при каждом запуске и передает их агенту, который затем правит `Cargo.toml` и исходный код
- Сборка с `hotpath-mcp` открывает на локальном порту HTTP-сервер с метриками работающей программы, а токен по умолчанию не задан
- В настройке для CI отчеты загружаются в hotpath Cloud, и GitHub App сервиса получает право писать комментарии в запросы на слияние
Установка
- Работает в
Ручная установка
cargo install hotpath --version '^0.28'Ставит команду hotpath. В проект зависимость добавляется записью hotpath = "0.28" в Cargo.toml.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Команда `hotpath init` скачивает инструкции навыка с GitHub при каждом запуске и передает их агенту, который затем правит `Cargo.toml` и исходный код
- Сборка с `hotpath-mcp` открывает на локальном порту HTTP-сервер с метриками работающей программы, а токен по умолчанию не задан
- В настройке для CI отчеты загружаются в hotpath Cloud, и GitHub App сервиса получает право писать комментарии в запросы на слияние
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
hotpath — профилировщик для Rust. Библиотека подключается как пакет Cargo `hotpath`, а одноименная команда ставится через `cargo install hotpath`. В код добавляют макросы `#[hotpath::main]` и `#[hotpath::measure]`. Пока cargo-признак `hotpath` выключен, макросы ничего не делают, и накладных расходов нет. С включенным признаком программа измеряет время функций, выделения памяти (`hotpath-alloc`), загрузку процессора через samply (`hotpath-cpu`), каналы, потоки, футуры, блокировки Mutex и RwLock, байтовый ввод-вывод, запросы SQL (sqlx, Diesel, Toasty), HTTP-клиенты reqwest и ureq, маршруты axum и рабочие потоки Tokio. Результат выводится таблицей в конце запуска или живой терминальной панелью, а метрики можно отдавать в Prometheus и Grafana. Для агентов предусмотрена команда `hotpath init --agent claude` (подойдут и `codex`, `opencode`). Она скачивает с GitHub навык `hotpath_init` и запускает сеанс агента, передав навык как инструкцию. Агент разбирает проект, добавляет в `Cargo.toml` зависимость с признаками, ставит макросы на `main` и на первые функции, каналы и блокировки, затем проверяет сборку с профилированием и без него. Для первой настройки автор советует не больше пяти `measure_all` и тридцати `measure`. Каждую правку вы подтверждаете обычными запросами разрешений агента. Рядом лежат навыки для настройки CI, дашборда Grafana и чтения отчетов hotpath Cloud. С признаком `hotpath-mcp` работающая программа поднимает MCP-сервер на порту 6771 (его меняет `HOTPATH_MCP_PORT`, токен задает `HOTPATH_MCP_AUTH_TOKEN`). Инструментов 30: 19 выдают сводки вроде `functions_timing`, `functions_alloc`, `channels`, `sql`, `http` и `threads`, а 11 отдают журналы отдельных событий по идентификатору. Агент отвечает на вопросы по живым данным: какие функции занимают больше всего времени и где растет выделение памяти.
Для кого. Для разработчиков на Rust, которые ищут узкие места в программе и хотят поручить Claude Code, Codex или OpenCode расстановку замеров и разбор отчетов.
Подходит, если
- Сервис на Rust медленно отвечает, и надо понять, ждут ли функции ввода-вывода или упираются в процессор
- Память растет, а причина неизвестна: `hotpath-alloc` показывает выделения по функциям и по потокам
- Нужно увидеть очередь и пропускную способность каналов `mpsc`, ожидание на Mutex и RwLock, задержки SQL и HTTP по маршрутам axum
- Хочется поручить агенту первичную настройку профилирования в репозитории командой `hotpath init`
- Регрессии производительности надо ловить в каждом запросе на слияние: для этого есть навык `hotpath_init_ci` и сравнение с основной веткой
Не подходит, если
- Проект написан не на Rust: пакет подключается через Cargo и макросы Rust
- Нельзя менять исходный код: hotpath требует расставить макросы, а профилирование без правки кода делают внешние семплеры вроде perf и samply
- Нужна поддержка библиотек, которых нет в списке: SQL работает для sqlx, Diesel и Toasty, HTTP-клиенты для reqwest и ureq, сервер только для axum
- Нужен MCP-сервер, который стартует сам и без сборки с признаком: сервер поднимается внутри вашей программы и живет, пока она запущена
Пример запроса к агенту
Настрой hotpath в этом проекте на Rust: расставь замеры на обработчиках запросов и каналах и покажи, какие функции дольше всего выполняютсяОграничения
- Лицензия MIT. Автор называет проект активно развивающимся: основные публичные интерфейсы стабильны, но форматы JSON-отчетов, устройство панели и MCP-сервера и расширенные настройки могут меняться между выпусками.
- Профилирование по процессору требует установленных `samply` версии 0.13 и обертки `hotpath-samply` в PATH, а на macOS и Linux еще и разрешений системы на семплирование.
- Сборка с профилированием включается только признаком `hotpath`. Обертки каналов, потоков и блокировок меняют типы в сигнатурах функций: вне профилирования они ничего не делают, но код придется править.
- Облачный сервис hotpath Cloud принадлежит автору. Он в открытой бете и бесплатен, публичные репозитории автор обещает оставить бесплатными. Установка GitHub App дает ему право писать комментарии в запросы на слияние, а доступа к коду приложение не запрашивает.
- Скилл `hotpath_init` берет описание макросов с сайта hotpath.rs и не меняет версию `hotpath` в проекте, даже если документация описывает более новый выпуск.
Как отключить. Уберите признак `hotpath` из команды сборки, и макросы перестанут что-либо делать. Чтобы убрать профилировщик совсем, удалите зависимость `hotpath` и записи `[features]` из `Cargo.toml`, а макросы из кода. Команду `hotpath` снимает `cargo uninstall hotpath`. MCP-сервер работает, пока программа запущена с признаком `hotpath-mcp`, и закрывается вместе с ней.
Частые вопросы
Как настроить hotpath через агента командой hotpath init?
Выполните `cargo install hotpath --version '^0.28'`, затем в корне проекта `hotpath init --agent claude`. Подойдут также `--agent codex` и `--agent opencode`, а нужный агент должен быть установлен и доступен в PATH. Если запускать через CLI не хочется, навык `hotpath_init` копируют в `~/.claude/skills/hotpath_init/SKILL.md` и вызывают командой `/hotpath_init`.
Чем hotpath отличается от семплирующих профилировщиков perf и samply?
Семплер показывает, где процессор проводит время, но по нему сложно отличить ожидание ввода-вывода от вычислений. Макросы hotpath измеряют время функций и выделения памяти на их границах. Сопоставление отчетов объясняет природу узкого места: много времени при малом числе образцов процессора означает ожидание, много образцов означает вычисления, много выделений означает давление на память.
Как подключить MCP-сервер hotpath к Claude Code?
Запустите программу командой `cargo run --features='hotpath,hotpath-alloc,hotpath-mcp'`. Затем выполните `claude mcp add --transport http hotpath http://localhost:6771/mcp`. Если вы задали `HOTPATH_MCP_AUTH_TOKEN`, добавьте `--header "Authorization: ваш-токен"`. Порт меняет `HOTPATH_MCP_PORT`.
Какой накладной расход у hotpath и как он зависит от настроек?
Без признака `hotpath` макросы пусты, зависимости необязательны и не компилируются, поэтому расхода нет. При включенном профилировании `#[hotpath::measure]` добавляет около 40 нс на вызов, цикл блокировки Mutex 29–54 нс, отправка и прием по каналу 47–88 нс. Замеры автор снял на Apple M2 Pro и просит считать их порядками величин.
Что делает навык hotpath_init_ci и нужен ли для него hotpath Cloud?
Он добавляет признак `hotpath-cloud`, файл политики регрессий и рабочий процесс GitHub Actions, который загружает отчеты, чтобы каждый запрос на слияние получал комментарий с изменениями времени, выделений и RSS. Для форков есть навык `hotpath_init_ci_forks`. Комментарий публикует GitHub App сервиса hotpath Cloud, поэтому облако для этой связки нужно.
Можно ли получить дашборд Grafana под свой проект?
Да, навык `hotpath_init_grafana` создает файл дашборда с панелями только для того, что вы измеряете: время SQL и HTTP по маршрутам, поиск N+1, память и время на запрос, очереди каналов, ожидание блокировок, рабочие потоки Tokio. Саму выгрузку в Prometheus навык не настраивает, это делает признак `hotpath-prometheus`.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыrust-analyzer MCP — навигация по коду Rust для агента
r3bl-rust-analyzer-mcp-server
MCP-сервер на потоках Rust: агент получает подсказки, переходы к определениям, ссылки, форматирование и диагностику компилятора от rust-analyzer
CodeGraph на Rust
codegraph-rust
Граф кода для агента на Rust: четыре MCP-инструмента показывают, что заденет правка, как устроена архитектура и где хрупкие места проекта
Считает, какие файлы импортируют друг друга и что заденет правка, и отдает это агенту через хуки, MCP и команду codemap
Rust SDK для агентов программирования и готовый CLI abstract: REPL, 34 инструмента, MCP, граф памяти, Anthropic и OpenAI, вывод JSON для CI
MCP-сервер и CLI для исследования кода: поиск и разбор по вашему проекту и по всему GitHub с экономией токенов
Граф кода и память проекта в одной программе на Rust: агент получает выдержки из файлов со ссылкой на строки
Коротко о README
В репозитории лежат шесть пакетов Cargo: основной `hotpath`, макросы, механизм выгрузки и их версии `meta` для профилирования самого профилировщика. Рядом работают три программы командной строки: `hotpath` с панелью и командами облака, `hotpath-samply` и `hotpath-utils` для сравнения отчетов. Каталог `skills` содержит шесть навыков, а каталог `docs` документацию по режимам, процессору, SQL, HTTP, MCP и CI. Есть набор тестов, проверка Miri, измерения в CI на Linux, macOS и Windows и журнал изменений. Файл `AGENTS.md` описывает правила работы агентов над кодом.
Бейдж для README
Исходный SKILL.md
--- name: hotpath_init description: Configure hotpath profiling in a Rust project. Adds the hotpath dependency with feature-gated setup, instruments main with hotpath::main, functions with measure/measure_all, and wraps channels, mutexes, rw_locks, streams, futures, reqwest clients, axum routers and byte-level I/O with hotpath macros. Use when the user wants to add or set up hotpath profiling in a crate. --- # Initialize hotpath Profiling Set up hotpath profiling in the current Rust project. The setup is fully feature-gated: zero compile-time and runtime overhead unless the hotpath feature is explicitly enabled.