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

Терминал

Агент Kodik выполняет команды в терминале через инструмент shell. Каждый вызов привязан к рабочему каталогу текущей задачи, виден в чате и требует подтверждения — если только оно не настроено автоматически.

Когда агент вызывает shell, команда появляется в чате со статусом pending. Вы можете одобрить или отклонить её. После выполнения агент видит полный вывод команды и реагирует на него.

Если размер вывода превышает доступное контекстное окно, Kodik автоматически запускает сжатие контекста перед возвратом результата.

Для долгих процессов — dev-серверов, watch-режимов, стриминга логов — используйте параметр block_until_ms: 0. Он запускает команду в фоне и немедленно возвращает terminal_id, не блокируя работу агента.

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

Вызывайте command_status с полученным terminal_id, чтобы получать инкрементальный вывод по мере его появления. Таким образом агент может самостоятельно мониторить логи сервера, не требуя от вас вставлять вывод вручную.

Некоторые команды никогда не одобряются автоматически — даже в режиме автопилота. Это защита от случайного удаления данных или деструктивных системных операций. По умолчанию заблокированы:

Удаление файлов:

  • rm *, sudo rm *
  • del *, rd *, rmdir *, Remove-Item *, ri *

Деструктивные команды Git:

  • git clean*

Поиск с удалением:

  • find * -delete*, find * -exec rm*

Работа с дисками:

  • mkfs*, dd if=*, format *

Системные операции:

  • shutdown*, reboot*

Прочие опасные:

  • > /dev/*, :(){:|:&};:, chmod -R 777 /, chown -R *:* /

Вы можете настроить список заблокированных команд в настройках авто-одобрения. Подробнее — в разделе Авто-одобрение.

Если авто-одобрение включено, агент проверяет команду по настроенным шаблонам (например, npm run * или git *). Если команда совпадает с шаблоном и не входит в список заблокированных, она выполняется без запроса.

В режиме автопилота одобряются все команды, кроме заблокированных. Уведомление отображается, если команда выполняется в фоне более 30 секунд.

Вы можете вручную добавить вывод из встроенного терминала VS Code в контекст чата с помощью команды Add Terminal Output to Chat (kodik.addTerminalOutputToChat). Команда доступна через контекстное меню терминала и через палитру команд. Это удобно, когда нужно показать агенту вывод команды, которую вы запускали самостоятельно.