---
title: "ИИ-агенты и MCP | Документация Kilobat"
url: "https://kilobat.app/ru/docs/agents"
description: "MCP-сервер, хуки агентов, сетевой журнал агентов, навыки агентов и как не дать Mac уснуть."
---

# ИИ-агенты и MCP

MCP-сервер, хуки агентов, сетевой журнал агентов, навыки агентов и как не дать Mac уснуть.

Пошаговые инструкции для [Claude Code](https://kilobat.app/agents/claude-code), [Codex](https://kilobat.app/agents/codex), [Cursor](https://kilobat.app/agents/cursor), [Gemini CLI](https://kilobat.app/agents/gemini-cli), [Claude Desktop](https://kilobat.app/agents/claude-desktop), [Windsurf](https://kilobat.app/agents/windsurf), [Cline](https://kilobat.app/agents/cline), [Zed](https://kilobat.app/agents/zed), [Hermes Agent](https://kilobat.app/agents/hermes), [OpenClaw](https://kilobat.app/agents/openclaw), [OpenCode](https://kilobat.app/agents/opencode), [GitHub Copilot CLI](https://kilobat.app/agents/copilot-cli) и [любого MCP-клиента](https://kilobat.app/agents/mcp-client) находятся в разделе [Настройка Kilobat в вашем ИИ-агенте](https://kilobat.app/agents).

Дайте агенту вроде Claude Code, Codex или Cursor такой промпт:

```
Install the Kilobat CLI with `brew install seifip/kilobat/kilobat`. Run `kilobat diagnose --json`, `kilobat status --json` and `kilobat scan --json`, then tell me what is slowing my connection and how to fix it. Ask me before changing DNS, profiles or rules.
```

## Сервер MCP

`kilobat mcp` работает по протоколу Model Context Protocol через stdio. Добавьте его в Claude Code:

```
claude mcp add kilobat -- kilobat mcp
```

Или добавьте его в любой клиент, который читает конфигурацию `mcpServers`:

```
{ "mcpServers": { "kilobat": { "command": "kilobat", "args": ["mcp"] } } }
```

Инструменты только для чтения: `get_status`, `diagnose_network`, `diagnose_connection`, `get_conditions`, `get_updaters`, `get_uploads`, `get_data_pack`, `get_wifi`, `scan_wifi`, `suggest_wifi_channel`, `get_usage_report`, `compare_usage`, `get_app_bandwidth`, `get_access_policy`, `get_network_history`, `list_sessions`, `agent_network_log` (все узлы, к которым обращались агент и его команды), `benchmark_dns`, `check_url`, `list_connections`, `list_devices`, `trace_route`, `get_route_history`, `compare_speed_tests`, `get_exit_path` (запрашивает ваш публичный IP у Cloudflare, только когда агент передаёт `public_ip`), `check_vpn_leaks` (проверка утечек, обращающаяся к внешним сервисам), `list_networks`, `get_fastest_dns` (самый быстрый DNS для каждой сети по фоновым проверкам приложения), `list_rules`, `list_approvals`, `list_blocked_connections`, `explain_verdict` (все правила, соответствующие узлу или приложению, и решающее правило), `check_host_reputation` (проверка на этом Mac, находится ли узел в списке вредоносных сайтов, фишинга, мошенничества или трекеров), `get_protection_status`, `run_stutter_test` и `get_game_ping` (они только отправляют ping), `get_nearby_radios`, `get_captive_portal` (страница входа в Wi-Fi, то же, что `kilobat portal --json`), `service_status` (запрашивает публичные страницы состояния названных сервисов или работающих приложений) и `create_support_report` (отчёт для вашего провайдера, который агент передаёт вам). Они возвращают тот же JSON, что и CLI. `run_speedtest` расходует данные, `run_lan_test` передаёт данные в вашей сети в течение пяти секунд и сначала запрашивает согласие, а `keep_awake` и `release_awake` предотвращают сон при бездействии на заданное время без изменения настроек; `keep_awake` с `lid_closed` после вашего разрешения также поддерживает работу Mac с закрытой крышкой и сначала спрашивает вас. Инструменты изменения (`set_profile`, `set_app_rule`, `set_new_app_mode`, `decide_approval`, `block_destination`, `set_budget`, `set_data_pack`, `set_app_quota`, `set_network_cost`, `set_updater_pause`, `set_kill_switch`, `set_protection`, который также запрещает агенту отключать защиту ради выполнения собственного запроса, `hold_upload`, удерживающий отправку другого приложения, `set_dns`, который также очищает кэш, `set_fastest_dns`, `set_dns_fallback` и `set_airdrop_visibility`, открывающий настройки AirDrop) отмечены как изменяющие данные, а их описания предписывают агенту сначала спросить вас.

## Подключение агентов

Без подсказок Kilobat судит об агенте по его трафику и нагрузке на CPU, поэтому затихший агент может как закончить работу, так и ждать вас. Хуки агента сообщают Kilobat, к какому проекту относится запуск, когда он ждёт вас и когда завершён. Каждый хук запускает `kilobat agent-event`, который ничего не выводит, возвращается сразу и всегда завершается с кодом 0, поэтому не может сломать агента. Если приложение не запущено, события ждут в небольшом файле, который оно прочитает при открытии. Kilobat читает идентификаторы сеансов, папки и короткий текст статуса — но никогда не промпты и ответы. Объедините эти хуки с уже имеющимися.

**Claude Code**, в `~/.claude/settings.json`. Каждый хук получает на stdin JSON с идентификатором сеанса и папкой, который читает `--stdin-json`. Запрос разрешения или ввода означает ожидание; Stop означает завершение, как только закончатся фоновые задачи; лимит запросов означает ожидание до его сброса.

```
{
  "hooks": {
    "SessionStart": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "Notification": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "Stop": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "StopFailure": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "SessionEnd": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }]
  }
}
```

**Codex**, самый простой способ: `notify` в `~/.codex/config.toml`. После каждого хода Codex передаёт аргумент JSON, который читает `--json-arg`. Так сообщается только о завершении, и Codex запускает лишь одну программу `notify`.

```
notify = ["kilobat", "agent-event", "done", "--agent", "codex", "--json-arg"]
```

Чтобы видеть и ожидание, используйте вместо этого хуки Codex в `~/.codex/hooks.json` и подтвердите доверие к ним через `/hooks`:

```
{
  "hooks": {
    "SessionStart": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent codex --stdin-json" }] }],
    "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent codex --stdin-json" }] }],
    "PermissionRequest": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent codex --stdin-json" }] }],
    "Stop": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent codex --stdin-json" }] }]
  }
}
```

**Gemini CLI**, в `~/.gemini/settings.json`. Gemini CLI работает как `node`, поэтому Kilobat не может связать его трафик с запуском, но состояние передаётся.

```
{
  "hooks": {
    "SessionStart": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent gemini --stdin-json" }] }],
    "BeforeAgent": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent gemini --stdin-json" }] }],
    "Notification": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent gemini --stdin-json" }] }],
    "AfterAgent": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent gemini --stdin-json" }] }]
  }
}
```

**Cline** (CLI, SDK и Kanban): установите плагин Kilobat — он добавляет один файл в хранилище плагинов Cline и не меняет других настроек. `cline plugin uninstall kilobat` удаляет его.

```
cline plugin install https://kilobat.app/agents/cline/kilobat.ts
```

Он сообщает, что запуск работает, завершён, завершился ошибкой (пока Cline открыт), отменён, упёрся в лимит запросов после того, как исчерпаны собственные повторы Cline, и что он ждёт, пока Cline задаёт вам вопрос. Прежде чем считать запуск завершённым, он дожидается субагентов и напарников. Запросы подтверждения Cline плагинам не видны, поэтому их покрывает распознавание по трафику и CPU.

Любой другой агент может вызывать `kilobat agent-event start|working|waiting|done|failed --agent <name> --session <id> --cwd <folder>` из своих хуков. Добавьте `--verbose`, чтобы увидеть, что произошло, когда пробуете вручную.

## Сетевой журнал агентов

Пока работает Claude Code, Codex, Cursor, Gemini CLI, Aider, Windsurf, Claude Desktop, ChatGPT или другой агент, Kilobat записывает каждый хост, к которому обращались он и запущенные им процессы: `npm`, `pip`, `uv`, `curl`, `git`, `brew`, MCP-серверы — даже если между ними стоит оболочка. Каждый сеанс — от запуска процесса агента до завершения его самого и всего, что он запустил, — показывает хосты по процессу, который подключался, сначала те, куда отправлено больше всего, с портом и протоколом, временем первого и последнего появления, отправленными и полученными байтами и числом подключений, а также папку проекта, в которой работал агент. Всё это — в «История › Сетевой журнал агентов», а пока агент работает, меню показывает одну строку, например «Claude Code · 14 хостов · отправлено 2,1 MB». «Скопировать как Markdown» помещает таблицу сеанса в буфер обмена — для задачи или ревью.

Отметки показывают, на что стоит взглянуть ещё раз, но никогда не означают, что что-то не так: *впервые* (ни один агент на этом Mac раньше не обращался к этому хосту; известные реестры вроде registry.npmjs.org, pypi.org и github.com, а также собственный сервис агента новыми не считаются), *HTTP без шифрования* (порт 80), *большая отдача* (больше 10 MB на один хост, кроме собственного сервиса агента, так что Claude Code, отправляющий свой контекст в Anthropic, не отмечается), *только адрес* (имя хоста неизвестно) и *обмен или туннель* (короткий список сайтов для вставки текста, файлообменников вроде transfer.sh, туннелей вроде ngrok и trycloudflare.com и сервисов для перехвата запросов вроде webhook.site). «Только отмеченные» показывает только их.

Как это работает: Kilobat и так каждую секунду читает сетевую статистику macOS по каждому подключению (ту же, что `nettop`), вместе с процессом каждого подключения. Агентов он узнаёт по исполняемому файлу, по пакету, который запускает интерпретатор (`node …/@openai/codex`, `python3 -m aider`), или по собственному исполняемому файлу приложения и следит за деревом процессов каждого агента: ядро сообщает ему, как только процесс в дереве делает fork, поэтому даже `curl`, который работает десятую долю секунды, учитывается, пока работает, а процессы, переданные launchd, остаются за агентом. Побеждает ближайший агент, поэтому Claude Code, запущенный в терминале Cursor, относится к Claude Code. Имена хостов берутся из сетевого фильтра Kilobat, когда он включён (имя, которое запросило приложение), из разрешения известных хостов для разработчиков и хостов из URL в `curl` или `git` агента через резолвер вашего Mac со сверкой адресов или из обратного DNS — он отмечается, потому что это имя сервера, а не то, которое запросило приложение. Если ничего из этого нет, в строке показан адрес.

Что он не видит: трафик служб macOS от имени процесса (DNS-запросы проходят через mDNSResponder, загрузки — через `nsurlsessiond`), контейнеры Docker и виртуальные машины (их трафик выходит через собственный процесс Docker или виртуальной машины), а также агентов внутри редактора, работающих в процессе его расширений, например Cline или Copilot в VS Code, которых нельзя отличить от редактора. В Cursor и Windsurf команды, введённые в их терминал, считаются принадлежащими приложению. Соединение, открывшееся и закрывшееся между двумя секундными измерениями, всё равно учитывается в байтах сеанса, но без узла. Процесс, запустившийся и завершившийся до обработки уведомления ядра о fork, может быть пропущен. Журнал записывается с Kilobat Pro только на этом Mac в `~/Library/Application Support/Kilobat/agent-network-log.json`, хранится 30 дней и никуда не отправляется; очистка доступна за последний час, сегодня или полностью.

Когда [Защита](https://kilobat.app/ru/docs/blocking#protection) включена, подключения, которые Kilobat отклонил, тоже видны в сеансе: они помечены как «Заблокировано» со списком или правилом контроля агентов, хотя не передали ни байта.

В терминале `kilobat agent-log` выводит последний сеанс или, если его запускает агент, сеанс самого агента; `--all`, `--since 2h`, `--agent claude`, `--flagged` и `--json` сужают выборку. Чтение бесплатно, а `kilobat agent-log --watch` записывает в реальном времени в терминале без приложения и без Pro, ничего не сохраняя. Агенты вызывают MCP-инструмент только для чтения `agent_network_log`, который без аргументов возвращает их собственный сеанс, — так агент может проверить, с чем общалась запущенная им установка.

## Очистить историю или забыть сайт

В «Настройки» › «Данные и конфиденциальность» функция *Забыть сайт* удаляет узел из заблокированных попыток, сетевого журнала агентов, адресов запусков агентов и сеансов поддержания активности, а также памяти уведомлений защиты. Включите поддомены, чтобы удалить и имена вроде www.example.com. Очистка истории сайтов удаляет те же записи за последний час, с полуночи или полностью. У заблокированных попыток и сетевого журнала агентов также есть собственные меню очистки; в контекстном меню строки узла доступен пункт «Забыть». Очистка истории сохраняет правила и настройки защиты. Будущая активность может снова записываться.

В Терминале используйте `kilobat history forget example.com --subdomains --json` или `kilobat history clear --hour` (также доступны `--today` и `--all`). Команда просит работающее приложение удалить текущие записи или изменяет сохранённую историю, если приложение закрыто. MCP `clear_history` делает то же самое, только когда вы просите агента стереть историю. Удаление нельзя отменить; результат показывает количество удалённых записей в каждой истории.

## Пока приложение на переднем плане

Для чтения или презентаций пункт чашки «Пока приложение на переднем плане» не даёт Mac уснуть, только пока выбранное приложение активно, и снова разрешает сон, как только вы переключились. «Не выключать экран» в меню чашки решает, не гаснет ли и экран, — как и для всего, что Kilobat не даёт уснуть. Kilobat следит за собственными событиями macOS о смене приложений: он не опрашивает систему, не двигает мышь и не имитирует активность, поэтому не может изобразить ваше присутствие для программ мониторинга. Режим заканчивается, когда приложение закрыто, когда вы его выключите или на батарее при 20% (или на пороге, заданном для работы с закрытой крышкой), и никогда не удерживает Mac с закрытой крышкой. У режима своё удержание, поэтому переключение или закрытие приложения не прерывает ни сеанс без сна, ни запуск агента. Из терминала: `kilobat awake --while-frontmost Keynote --display`.

## При питании от сети

Включите «Не засыпать при питании от сети» («Настройки › Без сна и агенты») или «При питании от сети» в меню чашки — и с подключённым адаптером питания Mac не уснёт, пока вы его не отключите, о чём полоса статуса и сообщит: «Без сна при питании от сети». «Не выключать экран» решает, не гаснет ли и экран. Если выключить режим, он останется выключенным до следующего подключения питания, даже если Kilobat перезапустится. Kilobat узнаёт о переключении из собственного уведомления macOS об источнике питания, без опроса. Отключение питания завершает только тот сеанс, который начало подключение: начатый вами сеанс, ожидаемая загрузка, приложение на переднем плане, запуск агента или удержание из терминала продолжаются. Этот режим никогда не держит Mac включённым с закрытой крышкой. Из терминала: `kilobat settings awake-on-power on`, а для экрана — `kilobat settings keep-screen-on on`; `kilobat conditions --json` показывает его как `awakeOnPower`.

## Работа с закрытой крышкой

Если закрыть крышку, Mac уснёт, даже когда Kilobat не даёт ему уснуть, — если только вы не разрешили работу с закрытой крышкой в «Настройки › Без сна и агенты». Для этого устанавливается небольшой помощник, работающий от root; macOS попросит разрешить его в «Системные настройки › Основные › Объекты входа». После этого работающий запуск агента не даст Mac уснуть с закрытой крышкой, как и сеанс без сна, если в меню чашки отмечен пункт «И с закрытой крышкой». Агент, который ждёт вас, удерживает Mac, только если включено «Не засыпать, пока агент ждёт», и не дольше 30 минут.

Закрытый Mac в сумке может перегреться и разрядить батарею, поэтому сам помощник даёт Mac уснуть на заданном пороге заряда (по умолчанию 20%), при перегреве, сразу после отключения от питания, если выбран режим «только от сети», по истечении заданного максимального времени (не больше 8 часов) и через минуту после закрытия Kilobat. Если помощник или Mac перезапустится во время удержания, сначала возвращается прежняя настройка. Kilobat показывает, чем закончилось каждое удержание, например «Mac может уснуть: заряд 20%».

Из терминала `kilobat awake --lid-closed` просит приложение о таком же удержании и объясняет, если оно невозможно; удержание заканчивается вместе с командой. Агенты используют `keep_awake` с `lid_closed`, а описание инструмента велит им сначала согласовать это с вами. `kilobat conditions --json` сообщает `lidClosedAllowed` и текущее `lidHold`.

## Навыки для агентов

Девять навыков (Agent Skills) учат агентов для программирования диагностировать сеть Mac и с помощью Kilobat доводить долгие запуски до конца. Они интерпретируют измерения, объясняют, в чём есть неопределённость, и спрашивают, прежде чем менять настройки. Устанавливайте их вместе: навык `kilobat` направит агента к подходящему.

```
npx skills add seifip/kilobat-skills
```

|  |  |
|---|---|
| [kilobat](https://github.com/seifip/kilobat-skills/tree/main/skills/kilobat) | Начните отсюда. Настройка, правила безопасности и какой навык подходит к вопросу. |
| [mac-network-troubleshooting](https://github.com/seifip/kilobat-skills/tree/main/skills/mac-network-troubleshooting) | Медленный или нестабильный интернет с неясной причиной: находит сбойный уровень. |
| [mac-wifi-troubleshooting](https://github.com/seifip/kilobat-skills/tree/main/skills/mac-wifi-troubleshooting) | Слабый или пропадающий Wi-Fi, загруженные каналы, лучшее место для Mac или роутера. |
| [mac-hotspot-data-saver](https://github.com/seifip/kilobat-skills/tree/main/skills/mac-hotspot-data-saver) | Точки доступа телефона и лимиты трафика: что расходует данные, профиль «Поездка», лимиты. |
| [mac-dns-troubleshooting](https://github.com/seifip/kilobat-skills/tree/main/skills/mac-dns-troubleshooting) | Медленные DNS-запросы, бенчмарки DNS-серверов, смена DNS, страницы авторизации. |
| [video-call-network-check](https://github.com/seifip/kilobat-skills/tree/main/skills/video-call-network-check) | Рывки в звонках и игровом стриминге: всплески задержки, джиттер, потери, bufferbloat и фоновая отдача. |
| [mac-bandwidth-monitor](https://github.com/seifip/kilobat-skills/tree/main/skills/mac-bandwidth-monitor) | Какие приложения используют подключение, история использования и куда они подключаются. |
| [mac-app-firewall](https://github.com/seifip/kilobat-skills/tree/main/skills/mac-app-firewall) | Блокировка и разрешение приложений, доменов и IP; вопросы о новых приложениях и ответы на них. |
| [mac-agent-runs](https://github.com/seifip/kilobat-skills/tree/main/skills/mac-agent-runs) | Долгие запуски агентов: не дать Mac уснуть, проверить условия, подключить хуки агентов, узнать, когда запуск завершился, ждёт вас или застрял. |

Установите CLI Kilobat отдельно командой Homebrew выше или подключите его сервер MCP. CLI требует macOS 14 или новее; сборка из исходников через Homebrew требует Xcode 16 или новее. Смотрите [навыки на skills.sh](https://skills.sh/seifip/kilobat-skills) или [их исходный код и справочные материалы](https://github.com/seifip/kilobat-skills).

## Siri и Быстрые команды

Спросите Siri о соединении, и Kilobat ответит по результатам собственных проверок одним-двумя предложениями и карточкой с числами. Назовите приложение в вопросе, как требует Siri: «Почему интернет медленный в Kilobat?» запускает новую проверку и называет причину: «Wi-Fi работает нормально; линия провайдера теряет 4% пакетов с 21:05. Это указано в отчёте для провайдера». Другие вопросы: «Всё ли в порядке с соединением в Kilobat?», «Почему завис звонок в Kilobat?» (отчёт о последнем звонке), «Slack не работает в Kilobat?» (любой сервис со страницей состояния, которую читает Kilobat, или «Мои приложения не работают в Kilobat?» для используемых приложений), «Что использует мой интернет в Kilobat?», «Сколько данных я использовал в Kilobat?», «Готово ли соединение к звонку в Kilobat?», «Есть ли утечка VPN в Kilobat?» и «Проверь скорость с помощью Kilobat». Те же вопросы работают в Spotlight, а каждое действие в «Быстрых командах» передаёт результат следующему шагу: состояние сети с причиной, задержкой и потерями; отчёт о звонке; состояние сервисов; сегодняшний расход данных. Действие «Использовать модель» может передать эти результаты в Apple Intelligence. Без Kilobat Pro Siri сообщает о проблеме и измерениях линии, числе зависаний звонка и сбое сервиса; Pro добавляет причины и способы исправления. На тех же действиях построены [готовые команды](https://kilobat.app/shortcuts).
