# Инструменты

> Справочник всех инструментов, доступных агенту Kodik: чтение, редактирование, терминал, браузерный предпросмотр, поиск, веб и MCP.

Источник: https://docs.kodik.ru/agent/tools

Ниже приведён полный список инструментов, которые агент Kodik может использовать в своей работе. Доступные инструменты зависят от текущего [режима](https://docs.kodik.ru/agent/modes). Доступ к файлам регулируется правилами [`.kodikignore`](https://docs.kodik.ru/context/ignore-files).

## Включение и отключение инструментов

Каждый инструмент стоит контекста: его описание и параметры входят в список инструментов модели, а правила его использования — в системный промпт, и всё это отправляется с каждым запросом. Если вы инструментом не пользуетесь, эти токены тратятся впустую. Отключение убирает инструмент и из списка инструментов, и из системного промпта — освобождая контекст для вашего кода и истории диалога.

Политика доступности инструментов находится в разделе **Harness** настроек Kodik — это единая точка для всех 23 встроенных инструментов и подсказок промпта, тогда как **Agents** отвечает за поведение ассистента и суммаризацию. Единственный переключатель инструмента изменяет выбранный режим; структурно недоступные инструменты перечисляются как недоступные. Разрешениями на выполнение без запроса управляет отдельный раздел [Auto Approve](https://docs.kodik.ru/agent/auto-approve).

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

## Таблица инструментов

| Инструмент            | Назначение                          | Примечания                                                                                                                                                                                                                                                                                                                                                      |
| --------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `read_file`           | Чтение содержимого файла            | Поддерживает диапазоны строк через параметр `ranges`. Файлы, превышающие контекстное окно модели, не читаются напрямую. Уважает `.kodikignore`.                                                                                                                                                                                                                 |
| `edit_file`           | Редактирование одного файла         | Изменяет один существующий файл одним или несколькими точными заменами. Перед правкой файл нужно прочитать; для нескольких файлов используется по одному последовательному вызову на файл. После правки проверяет диагностику линтера.                                                                                                                          |
| `create_file`         | Создание одного файла               | Создаёт один новый файл с полным содержимым и отказывается перезаписывать существующий путь. Для нескольких файлов используется по одному последовательному вызову на файл.                                                                                                                                                                                     |
| `delete_file`         | Удаление одного файла               | Удаляет один существующий файл. Для удаления нескольких файлов используется по одному последовательному вызову на файл.                                                                                                                                                                                                                                         |
| `edit_notebook`       | Редактирование Jupyter-ноутбука     | Поддерживает операции `insert`, `edit`, `delete` для ячеек типа `code` и `markdown`. Языки: Python, JS, TS, R, Julia, SQL. Изменённые ноутбуки учитывают настройку отображения изменений файлов; открытые редакторы ноутбуков обновляются и сохраняются после правок инструмента, а ноутбуки с несохранёнными изменениями сначала нужно сохранить или сбросить. |
| `shell`               | Выполнение команды в терминале      | Параметр `block_until_ms: 0` запускает команду в фоне и немедленно возвращает `terminal_id` для опроса через `command_status`. Фоновая команда выполняется в собственном терминале и не блокирует следующие команды.                                                                                                                                            |
| `command_status`      | Получение вывода фонового процесса  | Принимает `terminal_id`, возвращённый командой `shell`. Используется для опроса dev-серверов, сборщиков и других долгих процессов.                                                                                                                                                                                                                              |
| `kill_terminal`       | Остановка фонового процесса         | Принимает `terminal_id`, возвращённый командой `shell`. Завершает фоновую команду и освобождает её терминал — для очистки или перезапуска dev-сервера или watcher-а. Одобряется автоматически.                                                                                                                                                                  |
| `glob`                | Поиск файлов по шаблону             | Поддерживает шаблоны вида `**/*.ts`.                                                                                                                                                                                                                                                                                                                            |
| `rg`                  | Полнотекстовый поиск (ripgrep)      | Поиск по регулярному выражению с поддержкой опций ripgrep. Уважает `.kodikignore`.                                                                                                                                                                                                                                                                              |
| `codebase_search`     | Семантический поиск по кодовой базе | Использует локальный индекс — см. [Индексирование](https://docs.kodik.ru/context/indexing).                                                                                                                                                                                                                                                                                          |
| `read_lints`          | Чтение диагностики линтера          | Возвращает ошибки и предупреждения из VS Code для одного или нескольких файлов (или всего рабочего пространства).                                                                                                                                                                                                                                               |
| `web_fetch`           | Загрузка содержимого URL            | Только HTTPS (plain HTTP разрешён только для `localhost`). Возвращает страницу в формате Markdown. Таймаут — 30 секунд.                                                                                                                                                                                                                                         |
| `web_search`          | Поиск в интернете                   | Только на провайдере Kodik. Возвращает ранжированные результаты (заголовок, URL, фрагмент) и, как правило, синтезированный ответ. Каждый поиск оплачивается из баланса кредитов.                                                                                                                                                                                |
| `browser`             | Управление встроенным браузером     | Доступен в режимах, где его разрешает политика режима, если инструмент включён в Harness. Открывает страницы, может использовать уже открытые вкладки, запускать dev-сервер, делать скриншоты, читать консоль, инспектировать, менять размер, переходить по страницам и взаимодействовать с UI.                                                                 |
| `todo_write`          | Управление списком задач            | Создаёт и обновляет элементы списка задач для многошаговых сессий.                                                                                                                                                                                                                                                                                              |
| `memory`              | Сохранение заметок в памяти         | Записывает заметки в рабочую/глобальную память или в session memory текущей задачи. См. [Память](https://docs.kodik.ru/context/memory).                                                                                                                                                                                                                                              |
| `sub_agent`           | Делегирование подзадачи субагенту   | Запускает дочернего агента с отдельным контекстом. С `background: true` возвращается сразу, а «ребёнок» отчитывается после завершения. См. [Субагенты](https://docs.kodik.ru/agent/subagents).                                                                                                                                                                                       |
| `agent_status`        | Проверка фонового субагента         | Принимает `agent_id` из подтверждения фонового запуска `sub_agent`. Сообщает статус, цель и время работы; `wait: true` блокирует до завершения и возвращает полный отчёт. См. [Субагенты](https://docs.kodik.ru/agent/subagents).                                                                                                                                                    |
| `ask_questions`       | Уточняющие вопросы                  | Задаёт короткие вопросы, когда неоднозначность запроса меняет план работы.                                                                                                                                                                                                                                                                                      |
| `check_understanding` | Проверка понимания                  | Проводит короткую проверку понимания в режиме обучения.                                                                                                                                                                                                                                                                                                         |
| `create_lesson`       | Создание уроков                     | Создаёт интерактивный HTML-урок и открывает его во встроенном браузере в режиме обучения.                                                                                                                                                                                                                                                                       |
| `generate_plan`       | Создание плана                      | Создаёт проверяемый план реализации в режиме планирования.                                                                                                                                                                                                                                                                                                      |
| Инструменты MCP       | Любые инструменты из MCP-серверов   | Зависят от подключённых серверов. См. [MCP](https://docs.kodik.ru/mcp/overview).                                                                                                                                                                                                                                                                                                     |

Подключённые MCP-инструменты добавляются в общий список **Harness** после встроенных. Их переключатель выбранного режима действует со следующего запроса, а конфигурацией сервера и инструмента управляют настройки MCP. В подсказки промпта и итоговые суммы входят только активные MCP-инструменты.

## Детали отдельных инструментов

### read_file

Параметр `ranges` принимает массив объектов `{start_line, end_line}` и позволяет читать только нужные части большого файла. Если файл превышает допустимый размер (зависит от контекстного окна модели), `read_file` вернёт сообщение с рекомендациями использовать `rg` или `ranges` вместо полного чтения.

```
read_file("src/server.ts", ranges=[{start_line: 1, end_line: 50}])
```

### shell, command_status и kill_terminal

Для долгих процессов (dev-серверы, watcher-ы, стриминг логов) запускайте команду с `block_until_ms: 0` — она немедленно вернёт `terminal_id`. Используйте `command_status` с этим ID, чтобы периодически получать новый вывод без перезапуска процесса. Фоновая команда занимает собственный терминал, поэтому следующие команды агента не блокируются, а `kill_terminal` останавливает её, когда она больше не нужна или требует перезапуска.

Kodik выполняет эти команды в настоящем встроенном терминале. Shell integration — это протокол отслеживания команд терминалом: если выбранная оболочка его поддерживает, Kodik получает точные границы команды и код выхода. Если интеграция недоступна, Kodik всё равно запускает команду и собирает её вывод, но показывает **Завершение не подтверждено**, а не выдумывает успех или ошибку. Результат всегда относится только к породившей его команде; если фоновый процесс завершается во время активного хода, модель получает его реальный код выхода (когда он доступен) и финальный вывод.

Фоновый процесс оставляет свой терминал занятым. Следующий вызов `shell` открывает ещё один встроенный терминал, поэтому `npm run dev` продолжает работать, пока `ls`, тесты или HTTP-проверки выполняются параллельно. После завершения команды свободный терминал может использоваться повторно.

```
# Запуск dev-сервера в фоне
terminal_id = shell("npm run dev", block_until_ms=0)

# Получение логов
command_status(terminal_id=terminal_id)

# Остановка процесса
kill_terminal(terminal_id=terminal_id)
```

### codebase_search

Использует векторный индекс, создаваемый автоматически. Поиск не зависит от точных ключевых слов — можно искать по смыслу. Требует наличия индекса; подробнее — в разделе [Индексирование](https://docs.kodik.ru/context/indexing).

### web_fetch

Открывает headless-браузер, загружает страницу и возвращает её содержимое в формате Markdown. Вывод обрезается до 60 КБ. Не работает с plain HTTP (кроме localhost).

### web_search

Позволяет агенту находить актуальную информацию, на которую у него нет ссылки: свежие версии библиотек и их API, незнакомые сообщения об ошибках, breaking changes, страницы официальной документации. Поиск выполняется на стороне сервера через бэкенд Kodik — ключи поискового провайдера никогда не попадают на вашу машину. Каждый успешный поиск списывает фиксированную сумму с того же баланса кредитов, что и использование моделей; неудачные поиски не оплачиваются. Агент комбинирует два веб-инструмента: ищет через `web_search`, затем читает самый перспективный результат целиком через `web_fetch`.

Доступен только на провайдере Kodik. На Ollama и кастомных провайдерах (со своим ключом) инструмент не предлагается — там поиск невозможно выполнить и оплатить. У подтверждения есть собственный переключатель авто-одобрения (`webSearch`) — см. [Авто-Одобрение](https://docs.kodik.ru/agent/auto-approve).

### browser

Управляет тем же Integrated Browser, который видите вы в Kodik. Агент может открыть предпросмотр по URL, при необходимости сначала запустить команду dev-сервера и дождаться ответа URL, а затем закрыть предпросмотр и остановить запущенный им сервер.

Используйте `browser` для всего, что рендерится в браузере. Инструмент умеет получать список уже открытых вкладок и фокусироваться на вкладке, которую видите вы, делать скриншоты, читать консоль, менять размер до мобильного/планшетного/десктопного брейкпоинта, переходить по страницам, перезагружать их, идти назад и вперёд, инспектировать HTML/стили/размеры элемента, читать accessibility snapshot, кликать, вводить текст, наводить курсор, перетаскивать элементы и выполнять выражения на странице.

Открытие произвольных URL, запуск dev-серверов, взаимодействие со страницей и выполнение скриптов подчиняются вашим настройкам авто-подтверждения. Скриншоты, сделанные агентом, показываются прямо в чате; нажмите на миниатюру, чтобы открыть полное изображение во вкладке редактора.

## .kodikignore

Инструменты `read_file`, `rg`, `shell` и другие проверяют `.kodikignore` перед доступом к файлам. Файлы, совпадающие с шаблонами в `.kodikignore`, недоступны агенту. Подробнее — в разделе [Игнорируемые файлы](https://docs.kodik.ru/context/ignore-files).
