Терминал
Агент Kodik выполняет команды в терминале через инструмент shell. Каждый вызов привязан к рабочему каталогу текущей задачи, виден в чате и требует подтверждения — если только оно не настроено автоматически.
Выполнение команды
Заголовок раздела «Выполнение команды»Когда агент вызывает shell, команда появляется в чате со статусом pending. Вы можете одобрить или отклонить её. После выполнения агент видит полный вывод команды и реагирует на него.
Команды выполняются в оболочке вашего терминального профиля по умолчанию (Terminal: Select Default Profile), и агент пишет команды в синтаксисе именно этой оболочки — например Git Bash, Command Prompt, Cygwin или PowerShell на Windows, либо zsh на macOS. Если выбранный профиль добавлен расширением, Kodik просит VS Code создать именно этот профиль, а не подставляет другую оболочку.
Kodik использует интеграцию с оболочкой, чтобы получить код завершения и вывод именно текущей команды. Если выбранная оболочка не может передать код завершения, команда получает нейтральный статус «Завершение не подтверждено», а не ошибку. Агент всё равно получает собранный вывод и не перезапускает команду только ради проверки статуса.
Если размер вывода превышает доступное контекстное окно, 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)
# Остановка по завершении (или для перезапуска)kill_terminal(terminal_id=terminal_id)Вызывайте command_status с полученным terminal_id, чтобы получать инкрементальный вывод по мере его появления. Таким образом агент может самостоятельно мониторить логи сервера, не требуя от вас вставлять вывод вручную.
Каждый результат command_status содержит вывод только соответствующей фоновой команды, без вывода предыдущих команд из переиспользуемого терминала. Если процесс завершился без определяемого кода, command_status сообщает «Завершение не подтверждено», а не внутреннее значение вроде undefined.
Фоновая команда занимает собственный терминал, поэтому она никогда не блокирует следующую команду агента — агент может запустить dev-сервер и сразу же выполнять команды против него (каждая команда выполняется в отдельном терминале, по возможности переиспользуя свободный). Когда фоновый процесс больше не нужен или его требуется перезапустить после изменения, агент останавливает его вызовом kill_terminal(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). Команда доступна через контекстное меню терминала и через палитру команд. Это удобно, когда нужно показать агенту вывод команды, которую вы запускали самостоятельно.