> Markdown-версия страницы https://tuna.am/blog/new-inspector/. Оглавление документации — [llms.txt](https://tuna.am/llms.txt), весь текст одним файлом — [llms-full.txt](https://tuna.am/llms-full.txt). Markdown-версия есть у любой страницы: добавьте `.md` к адресу без слеша на конце.

[Блог](https://tuna.am/blog.md)|[Релизы tuna-cli](https://tuna.am/blog/tags/releases)

# Новый инспектор с API для ИИ-агентов

10 ноября · 5 мин

Инспектор — страница на `http://127.0.0.1:4040`, где видно всё, что пришло в туннель. В tuna-cli 0.40 мы переписали его целиком и добавили то, чего не хватало: запросы, которые раньше терялись, сессии баз данных и API для ИИ-агентов.

![Новый инспектор на широком мониторе: список запросов, вебхук Stripe, запрос и ответ в две колонки](/docs/img/inspect/http-wide-webhook.webp)

> **Коротко**
>
> * **Видны отклонённые запросы.** Запрос, который отбили `--basic-auth`, `--cidr-allow` или политика трафика, теперь попадает в инспектор вместе с причиной.
> * **Базы данных.** Сессии PostgreSQL, MySQL и Redis с длительностью, результатом, ошибками и транзакциями. Туннель MySQL — новый.
> * **ИИ-агенты.** `llms.txt` и HTTP API: агент сам найдёт упавший запрос, повторит его и дождётся вебхука.
> * **Порт инспектора** задаётся флагом `--inspect-port`. В Docker инспектор теперь выключен по умолчанию.
> * Всё остальное — в [документации](https://tuna.am/docs/tunnels/inspect.md).

## HTTP: всё на одном экране

Список и детали запроса занимают всю высоту окна. На широком мониторе запрос и ответ стоят в две колонки, на ноутбуке между ними переключатель, на телефоне список и детали открываются отдельными экранами. Появились тёмная тема и английский интерфейс.

Поиск понимает фильтры-токены: `method:POST`, `status:500`, заголовок, IP, правило политики. Клик по статусу или пути в деталях добавляет фильтр, клик с Alt — исключающий фильтр.

Из заголовка `Authorization` токен открывается в разборщике JWT в один клик, временная метка — в конвертере времени. Мы переписали эти инструменты на Go и покрыли тестами: они больше не округляют большие числа, не ломают кириллицу в Base64 и не сдвигают часовой пояс.

## Отклонённые запросы

Раньше запрос, который отбил `--basic-auth`, `--key-auth`, `--cidr-*`, [политика трафика](https://tuna.am/docs/traffic-policy.md) или проверка подписи вебхука, в инспектор не попадал. Клиент получал 401 или 403, а инспектор оставался пустым, и было непонятно, дошёл ли запрос вообще.

Теперь такие запросы видны в списке с меткой «Политика». В деталях видно, кто ответил вместо приложения и какие правила сработали.

![Запрос к /wp-login.php отклонён правилом политики Block scanners](/docs/img/inspect/http-rejected-policy.webp)

## Изменить и повторить

«Изменить» открывает редактор прямо на месте запроса: метод, путь, заголовки таблицей и тело, рядом — исходный ответ. Обычный повтор отправляет тело байт в байт, поэтому подпись вебхука сходится и событие Stripe можно ещё раз прогнать через обработчик.

![Редактор повтора с исходным ответом рядом](/docs/img/inspect/http-replay-editor.webp)

## Базы данных

У [`tuna postgres`](https://tuna.am/docs/tunnels/postgres.md), [`tuna redis`](https://tuna.am/docs/tunnels/redis.md) и нового [`tuna mysql`](https://tuna.am/docs/tunnels/mysql.md) инспектор показывает сессии и их запросы: длительность, результат, ошибки с кодом и ссылкой на описание. Транзакции отмечены полосой, откат — красной. Вкладки «Ошибки» и «Медленные» фильтруют лог.

![Сессия Postgres: ошибка 42P01 и ссылка на описание кода](/docs/img/inspect/pg-error.webp)

У Postgres видны командные теги (`UPDATE 1`) и параметры prepared statements. У Redis — номер базы в имени сессии, бинарные значения в кавычках, как в `redis-cli`, и `MULTI`/`EXEC`. Через туннель работают RESP3 и `redis-cli --pipe`.

![Сессия Redis: бинарное значение PNG в кавычках](/docs/img/inspect/rd-binary.webp)

У MySQL видны запросы, транзакции и `PREPARE`/`EXECUTE`, но не результаты и ошибки: ответы сервера инспектор не разбирает.

То же видно и в терминале:

## ИИ-агенты

Claude Code, Cursor и другие агенты читают инспектор через HTTP API. Дайте агенту ссылку `http://127.0.0.1:4040/llms.txt` — там инструкция с живыми адресами и готовыми командами `curl`.

```shell
I=http://127.0.0.1:4040
curl -s "$I/v1/events?status=5xx&since=15m"     # что упало за 15 минут
curl -s "$I/v1/events?path=~hook&wait=60s"      # дождаться следующего вебхука
curl -s -X POST "$I/v1/events/<id>/replay"      # повторить через туннель

```

`wait` закрывает частую просьбу «дождись вебхука»: запрос висит, пока не придёт подходящее событие. Кнопка «Скопировать для ИИ» в деталях запроса копирует ссылку на событие: человек по ней увидит экран инспектора, агент получит Markdown.

![Предупреждение при копировании события для ИИ-агента](/docs/img/inspect/http-copy-for-agent.webp)

Инспектор ничего не маскирует: токены, cookie и тела запросов попадут в контекст агента и к провайдеру модели. При копировании он об этом предупреждает, а `llms.txt` просит агента не повторять секреты. С боевыми данными будьте осторожны.

## Что изменилось при обновлении

* **Порт.** Первый туннель занимает 4040, следующие — 4041, 4042 и дальше. Фиксированный порт — `--inspect-port` или `TUNA_INSPECT_PORT`. Если он занят, туннель не запустится и назовёт, кто его занял.
* **`inspectAddr` в `tuna.yml` больше не читается.** Адрес задаётся переменной `TUNA_INSPECT_ADDR`, порт в ней устарел.
* **Docker.** В образе `yuccastream/tuna` инспектор `tuna http`, `tuna 1c` и `tuna kubernetes` выключен. Если вы задавали только `TUNA_INSPECT_ADDR`, добавьте `TUNA_INSPECT=true`.
* **Доступ из сети.** При `TUNA_INSPECT_ADDR=0.0.0.0` CLI предупреждает в логе, а инспектор показывает баннер, что открыт без авторизации.

Как обновить CLI — в [инструкции](https://tuna.am/docs/guides/update.md). Подробности — на странице [инспектора](https://tuna.am/docs/tunnels/inspect.md). Нашли ошибку или не хватает функции — напишите в [поддержку](https://tuna.am/docs/support.md).

## Оставьте отзыв

Если вам нравится пользоваться Tuna, или наоборот вы недовольны чем-либо, то пожалуйста [оставьте отзыв](https://my.tuna.am/?show_feedback=1&lang=ru).

![](/blog/img/2024-08-22/feedback.gif)

## Новости

Анонсы новых функций и статей публикуем в [Telegram-канале](https://t.me/tuna_am). Подписывайтесь, чтобы ничего не пропустить.

## Помощь

Мы ценим наших пользователей и детально изучаем все обращения, если у вас возникли проблемы с tuna – обязательно свяжитесь с нами одним из способов:

* [Электронная почта](mailto:info@tuna.am)
* [Telegram сообщество](https://telegram.me/+Kgbtt0_gJwI5ZmEy)

Категории: [Релизы tuna-cli](https://tuna.am/blog/tags/releases)

[старее →☸️ Kubernetes-оператор Tuna — туннели, домены и Ingress ресурсами кластера](https://tuna.am/blog/kubernetes-operator.md)
