hotpath CLI

hotpath — профилировщик Rust: время, память, процессор, каналы, SQL и HTTP, настройка через агента командой hotpath init и MCP-сервер для вопросов

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

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

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

  • Команда `hotpath init` скачивает инструкции навыка с GitHub при каждом запуске и передает их агенту, который затем правит `Cargo.toml` и исходный код
  • Сборка с `hotpath-mcp` открывает на локальном порту HTTP-сервер с метриками работающей программы, а токен по умолчанию не задан
  • В настройке для CI отчеты загружаются в hotpath Cloud, и GitHub App сервиса получает право писать комментарии в запросы на слияние
Все причины и проверки

hotpath-rs/hotpath

Установка

Работает в

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

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`.

Обсуждение

Вопросов и отзывов пока нет.

MCP-сервер на потоках Rust: агент получает подсказки, переходы к определениям, ссылки, форматирование и диагностику компилятора от rust-analyzer

MCP-серверРасширенный доступ486Звезды репозитория

CodeGraph на Rust

codegraph-rust

Граф кода для агента на Rust: четыре MCP-инструмента показывают, что заденет правка, как устроена архитектура и где хрупкие места проекта

MCP-серверРасширенный доступ908Звезды репозитория

Считает, какие файлы импортируют друг друга и что заденет правка, и отдает это агенту через хуки, MCP и команду codemap

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

Rust SDK для агентов программирования и готовый CLI abstract: REPL, 34 инструмента, MCP, граф памяти, Anthropic и OpenAI, вывод JSON для CI

CLIШирокий доступ461Звезды репозитория
Официальный

MCP-сервер и CLI для исследования кода: поиск и разбор по вашему проекту и по всему GitHub с экономией токенов

MCP-серверРасширенный доступ956Звезды репозитория

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

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

Foxx AIhotpath
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.