Инструменты
Ниже приведён полный список инструментов, которые агент 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 для рабочего пространства только для чтения.
Детали отдельных инструментов
Заголовок раздела «Детали отдельных инструментов»read_file
Заголовок раздела «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
Заголовок раздела «shell, command_status и kill_terminal»Для долгих процессов (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)codebase_search
Заголовок раздела «codebase_search»Использует векторный индекс, создаваемый автоматически. Поиск не зависит от точных ключевых слов — можно искать по смыслу. Требует наличия индекса; подробнее — в разделе Индексирование.
web_fetch
Заголовок раздела «web_fetch»Открывает headless-браузер, загружает страницу и возвращает её содержимое в формате Markdown. Вывод обрезается до 60 КБ. Не работает с plain HTTP (кроме localhost).
web_search
Заголовок раздела «web_search»Позволяет агенту находить актуальную информацию, на которую у него нет ссылки: свежие версии библиотек и их API, незнакомые сообщения об ошибках, breaking changes, страницы официальной документации. Поиск выполняется на стороне сервера через бэкенд Kodik — ключи поискового провайдера никогда не попадают на вашу машину. Каждый успешный поиск списывает фиксированную сумму с того же баланса кредитов, что и использование моделей; неудачные поиски не оплачиваются. Агент комбинирует два веб-инструмента: ищет через web_search, затем читает самый перспективный результат целиком через web_fetch.
Доступен только на провайдере Kodik. На Ollama и кастомных провайдерах (со своим ключом) инструмент не предлагается — там поиск невозможно выполнить и оплатить. У подтверждения есть собственный переключатель авто-одобрения (webSearch) — см. Авто-Одобрение.
Завершённый поиск отображается в чате свёрнутой карточкой с запросом и числом результатов. Разверните её, чтобы просмотреть результаты, которые видел агент, — заголовок, URL и фрагмент каждого, — а клик по результату откроет его в браузере.
browser
Заголовок раздела «browser»Управляет тем же 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: оно принимает только литералы/арифметику, разрешённые чтения свойств страницы или элемента и данные состояния урока; присваивания и вызовы функций отклоняются. Скриншоты, сделанные агентом, показываются прямо в чате; нажмите на миниатюру, чтобы открыть полное изображение во вкладке редактора.
.kodikignore
Заголовок раздела «.kodikignore»Инструменты read_file, rg, shell и другие проверяют .kodikignore перед доступом к файлам. Файлы, совпадающие с шаблонами в .kodikignore, недоступны агенту. Подробнее — в разделе Игнорируемые файлы.
