Перейти к содержимому

Инструменты

Ниже приведён полный список инструментов, которые агент Kodik может использовать в своей работе. Доступные инструменты зависят от текущего режима. Доступ к файлам регулируется правилами .kodikignore.

Если модель возвращает несколько независимых вызовов инструментов за один ход, Kodik запускает все допущенные вызовы параллельно независимо от типа инструмента. Это относится к встроенным и MCP-инструментам, файловым изменениям, командам терминала, действиям браузера и дочерним инструментам субагента. Изменения одного и того же файла или ноутбука сохраняют порядок вызовов модели, в том числе для эквивалентных относительных путей, а независимые ресурсы по-прежнему обрабатываются параллельно. Вызов, которому всё ещё требуется подтверждение, ждёт решения пользователя, а зависимые действия выполняются последовательно, когда результат одного нужен для формирования следующего.

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

Политика доступности инструментов находится в разделе Harness настроек Kodik — это единая точка для всех 23 встроенных инструментов и подсказок промпта, тогда как Agents отвечает за поведение ассистента и суммаризацию. Единственный переключатель инструмента изменяет выбранный режим; структурно недоступные инструменты перечисляются как недоступные. Разрешениями на выполнение без запроса управляет отдельный раздел Auto Approve.

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

Инструмент Назначение Примечания
read_file Чтение содержимого файла Поддерживает диапазоны строк через параметр ranges. Файлы, превышающие контекстное окно модели, не читаются напрямую. Уважает .kodikignore.
edit_file Редактирование одного файла Изменяет один существующий файл одним или несколькими точными заменами. Перед правкой файл нужно прочитать; для нескольких файлов используется по одному вызову на файл, а независимые вызовы могут выполняться параллельно. Замена, которую не удалось применить, отклоняется отдельно — остальные всё равно применяются, а в результате каждая отклонённая замена называется по её позиции. Если не применилась ни одна, файл остаётся без изменений. Полная замена файла сохраняет точный, полностью доступный для проверки diff без квадратичного роста стоимости предпросмотра. Нечёткое восстановление после расхождения пробелов или контекста в ответе модели ограничено бюджетом: слишком неоднозначный поиск оставляет весь файл без изменений и просит агента перечитать его с более уникальными окружающими строками. После правки проверяет диагностику линтера для записанной версии модели редактора; файл без активности диагностического провайдера не получает безусловную секундную задержку.
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 Семантический поиск по кодовой базе Использует локальный индекс — см. Индексирование.
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 текущей задачи. См. Память.
sub_agent Делегирование подзадачи субагенту Запускает дочернего агента с отдельным контекстом. С background: true возвращается сразу, а «ребёнок» отчитывается после завершения. См. Субагенты.
agent_status Проверка фоновых субагентов Без agent_id выводит всех фоновых агентов текущего чата. С идентификатором из подтверждения фонового запуска sub_agent сообщает статус, цель и время работы выбранного агента; wait: true блокирует до завершения и возвращает полный отчёт. См. Субагенты.
ask_questions Уточняющие вопросы Задаёт короткие вопросы, когда неоднозначность запроса меняет план работы.
check_understanding Проверка понимания Проводит короткую проверку понимания в режиме обучения.
create_lesson Создание уроков Создаёт интерактивный HTML-урок и открывает его во встроенном браузере в режиме обучения.
generate_plan Создание плана Создаёт проверяемый план реализации в режиме планирования.
Инструменты MCP Любые инструменты из MCP-серверов Зависят от подключённых серверов. См. MCP.

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

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

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

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

Терминал предназначен для выполнения команд, а не для чтения и поиска по файлам: для этого агент использует read_file, rg и glob, а для изменения файлов — create_file, edit_file и delete_file. Вывод команды считывается из терминала и не сохраняет табуляцию, поэтому правка, построенная по выводу cat, не совпадёт с содержимым файла на диске.

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)

Использует векторный индекс, создаваемый автоматически. Поиск не зависит от точных ключевых слов — можно искать по смыслу. Требует наличия индекса; подробнее — в разделе Индексирование.

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

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

Доступен только на провайдере Kodik. На Ollama и кастомных провайдерах (со своим ключом) инструмент не предлагается — там поиск невозможно выполнить и оплатить. У подтверждения есть собственный переключатель авто-одобрения (webSearch) — см. Авто-Одобрение.

Завершённый поиск отображается в чате свёрнутой карточкой с запросом и числом результатов. Разверните её, чтобы просмотреть результаты, которые видел агент, — заголовок, URL и фрагмент каждого, — а клик по результату откроет его в браузере.

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

Используйте browser для всего, что рендерится в браузере. Инструмент умеет перечислять вкладки, принадлежащие текущему чату или явно предоставленные ему, выбирать связанный popup или дочернюю вкладку по ID сессии, делать скриншоты viewport, элемента, области или всей страницы, читать консоль, менять размер до мобильного/планшетного/десктопного брейкпоинта, переходить по страницам, инспектировать HTML/стили/размеры элемента через типизированную диагностику браузера и читать компактный accessibility snapshot с открытыми shadow roots и фреймами. Он может кликать, заполнять поля, нажимать сочетания клавиш, выбирать опции, отмечать контролы, наводить курсор, перетаскивать элементы и прокручивать страницу или вложенный контейнер. Если семантическое наведение невозможно, агент может использовать координаты, привязанные к свежему скриншоту; устаревшие или чужие координаты отклоняются.

Ссылки из snapshot действуют только для текущего наблюдения. Агент может строго искать элементы по role/name, label, placeholder, тексту, test ID, адресу ссылки, CSS и фрейму и ждать URL, загрузку, состояние сети без активных запросов, текст, состояние элемента, popup, диалог, выбор файла или загрузку; ожидания ограничены по времени и отменяемы, а неоднозначная или устаревшая цель завершается ошибкой вместо скрытого выбора первого совпадения. JavaScript-диалоги сообщаются до возобновления страницы, загружать можно только подтверждённые файлы из workspace, а скачивания агента сохраняются во временном хранилище его сессии. Если принадлежащий агенту Browser View потерян, следующее действие выполняет одну ограниченную попытку переподключения, повторно загружает последнюю страницу и открывает видимую вкладку.

Для авторизованных сценариев выполните команду Kodik: Save Browser Credential и привяжите учётные данные к точному http://- или https://-origin. Агент видит только название и непрозрачный ID; Kodik заполняет сохранённые имя пользователя и пароль ниже границы, видимой модели, и запрещает повторное использование после смены origin. Чтение/запись буфера обмена и выбор учётных данных требуют подтверждения. diagnostics выдаёт ограниченный отчёт об ошибках страницы, неудачных запросах, производительности и ресурсах, а activity — журнал с удалёнными секретами. Содержимое страницы всегда считается недоверенным. CAPTCHA, passkey, MFA или подтверждение на устройстве приостанавливают автоматизацию для передачи управления пользователю; кнопка паузы на панели Browser позволяет забрать или вернуть управление самостоятельно.

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

Инструменты read_file, rg, shell и другие проверяют .kodikignore перед доступом к файлам. Файлы, совпадающие с шаблонами в .kodikignore, недоступны агенту. Подробнее — в разделе Игнорируемые файлы.