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

Обзор агента

Kodik включает автономного агента, который читает и редактирует файлы, выполняет команды в терминале, выполняет поиск по кодовой базе, загружает страницы из интернета, управляет Integrated Browser для визуальных проверок и вызывает инструменты MCP — при этом каждое действие отображается в чате и требует вашего подтверждения (или выполняется автоматически, если вы настроили авто-одобрение).

Агент работает в одном из пяти режимов, которые определяют его поведение и набор доступных инструментов:

Режим Назначение Изменяет файлы?
Code (по умолчанию) Выполнение задач: чтение, редактирование, команды Да
Plan Создание плана реализации без изменений Нет
Ask Ответы на вопросы по кодовой базе Нет
Debug Гипотезы → инструментирование → минимальный фикс Да
Educator Обучение с пояснениями и интерактивными уроками Файлы проекта — нет

Подробнее — в разделе Режимы.

Агент использует набор встроенных инструментов:

  • Чтение и навигация — read_file, glob, grep (ripgrep)
  • Редактирование — edit_file, create_file, delete_file, edit_notebook
  • Терминал — shell (выполнение команд), get_terminal_output (опрос фоновых процессов)
  • Сеть — web_fetch (только HTTPS)
  • Браузер — browser для открытия локальных страниц, проверки отрендеренного UI, скриншотов, чтения консоли и взаимодействия со страницей
  • Обучение — check_understanding для быстрых проверок понимания и create_lesson для уроков Educator, сохранённых в .kodik/teach
  • Вспомогательные — todo_write, memory, ask_questions, read_lints
  • Субагенты — sub_agent для делегирования подзадач
  • MCP — любые инструменты из подключённых MCP-серверов

Полный справочник инструментов — в разделе Инструменты.

В режиме Plan агент исследует кодовую базу и сохраняет структурированный план через инструмент generate_plan, не внося никаких изменений. Переключитесь в Code, чтобы приступить к реализации. Подробнее — в разделе Планирование.

Kodik автоматически создаёт контрольную точку после каждого использования инструмента, сохраняя снимок рабочего пространства в теневом Git-репозитории. Вы можете откатиться к любой точке в любое время. Подробнее — в разделе Контрольные точки.

По умолчанию агент запрашивает подтверждение перед каждым действием. Вы можете настроить детализированные разрешения — разрешить чтение файлов, поиск, выполнение определённых команд и многое другое — не снимая контроля над операциями редактирования. В режиме «автопилот» одобряются все действия кроме команд из списка блокировки. Подробнее — в разделе Авто-одобрение.

Ответвление остаётся в истории после перезагрузки окна, даже если вы ещё не отправили в нём новое сообщение, и сохраняет унаследованный статус завершения.

Для текстовой модели Kodik отдельная модель с поддержкой изображений описывает вложения перед основным запросом. Описание сохраняется при отправке сообщения из очереди и в последующих запросах, а исходный текст пользователя не меняется. Если обе вспомогательные модели завершились с ошибкой, основной запрос продолжается с примечанием о пропущенном изображении.

Нажмите Escape, чтобы закрыть подсказку в чате, появившуюся при наведении указателя или фокусе с клавиатуры. Указатель и фокус могут оставаться на месте, а черновик сообщения сохраняется. Повторное наведение или фокус снова показывает подсказку.

Кольцо рядом с кнопкой отправки открывает меню Context Usage. Когда провайдер модели ответил на запрос, в заголовке показан размер промпта, который сообщил этот провайдер, относительно контекстного окна модели. До первого ответа, после сжатия и у провайдеров, которые не сообщают расход токенов, показана собственная оценка Kodik со знаком ~. После сжатия меню описывает то, что уйдёт со следующим запросом: те же System и Tool definitions, а в списке Conversation — только сводка и сообщения, которые она сохраняет (ваши последние запросы и последний обмен), в том числе после Reload Window. Сообщения, которые заменила сводка, больше не показываются и не учитываются. Строки System, Tool definitions и Conversation всегда являются оценкой и масштабируются так, чтобы в сумме давать число в заголовке. Системный промпт и определения инструментов считаются тем же токенизатором, что и оценки Harness в настройках.

Кнопка Сжать рядом с названием меню сразу сжимает разговор, как команда /compact.

Раздел Всего за сессию суммирует все запросы чата: его собственные ходы, субагентов и сжатия. Он начинается с Попаданий в кэш — доли всех входных токенов, отправленных чатом, которые были взяты из кэша промпта провайдера. Входные токены считают весь этот ввод; каждый запрос заново отправляет весь разговор, поэтому их становится больше с каждым запросом. Полоса и строки под ней делят этот ввод на Чтение из кэша (взятые из кэша), Запись в кэш (сохранённые в нём) и Чтение (ни то, ни другое: обработаны по полной цене ввода). Строка Запись в кэш появляется, только если провайдер сообщил запись в кэш: размещённые модели Kodik и большинство других провайдеров не берут за неё плату и не сообщают её. Вывод — токены, которые выдала модель, с долей рассуждений, если провайдер её сообщает. Итоги хранятся вместе с чатом и сохраняются после перезагрузки окна.

Если API отклоняет идентификатор чата, принадлежащий другому владельцу или источнику использования, чат показывает ошибку запроса без предупреждения о лимите кредитов. Ошибка сохраняется после Reload Window. Устраните проблему с идентификатором перед нажатием Retry: повторный запрос использует тот же идентификатор чата.

Если соединение с провайдером обрывается после того, как Kodik уже показал текст, ход рассуждений или результаты инструментов, частичная работа остаётся в чате, в том числе после перезагрузки окна. При временном сбое Kodik автоматически продолжает с сохранённого места, и продолжение появляется под оборванным текстом. Продолженный или повторённый ответ появляется в чате один раз, на своём месте: копия последнего блока или незавершённое «Размышление» не остаются внизу под новыми сообщениями.

Кнопка Повторить использует исходное сообщение пользователя, не добавляя вторую копию. Если перезагрузить окно до повтора, ошибка останется карточкой с кнопкой Повторить, а не превратится в текст ассистента; после успешного повтора исходный пользовательский ход также останется единственным.

Если сбой происходит, пока инструмент или foreground-субагент ещё выполняется, Kodik останавливает эту работу и переводит карточку инструмента в завершённое состояние перед подсказкой повтора. Отмена во время permission hook также остаётся отменой: поздний результат hook не может снова открыть одобрение.

Остановить отменяет и подготовку автоматической суммаризации, включая подсчёт контекста до отправки запроса. Если сообщение ещё не отправлено, оно остаётся в поле ввода и не отправляется позже из-за завершившейся подготовки.

Kodik повторяет запросы после сетевых сбоев, обрывов потока, тайм-аутов, временной недоступности провайдера и ограничения частоты запросов до успеха или нажатия Стоп. В чате видны следующая попытка и задержка. Интервал растёт до 30 секунд; провайдер может запросить более долгое ожидание.

Закончились кредиты или достигнут лимит расходов, неверные учётные данные, отказ в доступе, отсутствующая модель и некорректный запрос останавливают автоматические повторы, даже если агент уже написал часть ответа или завершил инструмент. Ошибки аккаунта и нехватка кредитов при суммаризации также останавливают запросы до обращения к резервному сервису. Пополните баланс, войдите в аккаунт либо исправьте настройки провайдера или запрос перед нажатием Повторить. При переполнении контекста Kodik автоматически запускает суммаризацию, в том числе если провайдер сообщает об этом внутри потока ответа. Чат остаётся активным без ошибки и кнопки повтора, пока Kodik повторяет запрос суммаризации, до двух раз сокращая историю. Если запрос всё ещё не помещается или провайдер отклоняет повторный запрос уже после успешной суммаризации, модели через Kodik один раз используют отдельный сервис суммаризации и продолжают исходное сообщение. Повторы соединения не сбрасывают этот предел; после завершения следующего раунда модели и инструментов новое переполнение контекста снова допускает восстановление. Если все способы восстановления не сработали, исходная история сохраняется, а одна карточка ошибки восстановления предлагает Повторить. Другие обрывы после начала вывода возобновляются до завершения хода или нажатия Стоп.

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

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

Если принятое сообщение ещё не появилось в переписке, Chat может автоматически восстановить соединение. При этом переписка обновляется без повторной отправки вашего сообщения. Обновление переписки после подтверждённого сообщения не вызывает лишнего переподключения.

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

Kodik проверяет потоковые ответы на зацикливание при каждом обновлении. Правила обнаружения повторов остаются прежними, но для обычного ответа проверяется только нужный хвост токенов, что уменьшает фоновую работу в длинных параллельных чатах. Если Kodik останавливает такой ответ, повторяющийся текст удаляется, и агент сам продолжает работу с пометкой, что ответ зациклился; если это повторяется, пометка просит выбрать другой следующий шаг. Чат не останавливается.

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

Во время длинных ответов живой текст и ход рассуждений передаются лёгкими обновлениями, поэтому длинные чаты и рабочие области с несколькими панелями продолжают плавно обновляться, а полные снимки состояния по-прежнему отвечают за перезагрузку, инструменты, повторы и переподключения. Раскрываемые детали — например, диффы, вывод команд, рассуждения и результаты поиска — монтируются только в открытом состоянии и удаляются после анимации закрытия. Текст, полученный большими порциями, появляется с равномерной скоростью; незавершённый Markdown сохраняет итоговую структуру таблиц, ссылок, списков и кода, а код в блоках остаётся подсвеченным во время стриминга и показывает иконку языка, перенос строк и копирование. Пока чат автоматически следует за концом переписки, растущие вывод команд, рассуждения и Markdown остаются привязаны к нему до следующей отрисовки вместо скачка с последующим возвратом. Прокрутите вверх, чтобы сохранить позицию чтения; перетаскивание полосы прокрутки чата обратно к концу возобновляет автоматическое следование, даже пока ответ продолжает расти. Открытие или закрытие раскрываемой детали мышью или с клавиатуры удерживает её строку на месте даже при повторном переключении посреди анимации, поэтому сообщения выше не сдвигаются. Новый текст ответа, приходящий во время закрытия блока рассуждений, не вызывает скачков переписки. Восстановление или редактирование более раннего хода также удаляет последующую ветку, не перемещая читателя, который находится в середине оставшейся истории.

Когда агент создаёт или редактирует файл, его строка появляется, пока модель ещё пишет этот вызов, — Создание файла или Редактирование файла — и показывает имя файла, как только приходит его путь. Модели может понадобиться несколько десятков секунд, чтобы написать большой файл, поэтому чат больше не молчит всё это время; когда вызов готов, на его месте появляется обычная карточка подтверждения или выполнения. У моделей, которые присылают вызов инструмента целиком, карточка появляется только в момент его получения.

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

Чаты продолжают работать при переключении или закрытии вкладки, но скрытая переписка перестаёт обновлять текст на экране. Статусы, запросы подтверждения и уведомления о завершении остаются доступны. При возвращении или повторном открытии чата загружается актуальная переписка; все видимые панели продолжают обновляться, в том числе панель без фокуса клавиатуры.

Kodik также следит за тем, не ходит ли агент по кругу. Повтор одного и того же вызова подряд с тем же результатом не выполняется, а возвращает пояснение; то же самое для длинного круга: когда агент дважды прошёл одну и ту же последовательность вызовов и каждый шаг вернул ровно то же, что раньше, следующий шаг обрабатывается так же. Любой шаг с новым результатом разрывает круг, поэтому повторный запуск тестов после правки или наблюдение за растущим выводом команды никогда не попадают под эту проверку. Для субагентов действует та же проверка.

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

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

Сообщение, поставленное в очередь во время подтверждения инструмента, ждёт завершения текущего ответа, даже если вы отклоняете инструмент. Сообщение, которое прерывает ожидание agent_status, передаётся родительскому агенту сразу в этой точке ожидания.

Сообщения, которые вы поставили в очередь, пока ход выполнялся, после перезапуска восстанавливаются как редактируемые черновики в очереди.

Потоковый Markdown использует единый ограниченный renderer: обычный текст дописывается без повторного разбора, сложная разметка обновляется порциями, а при завершении применяется точный итоговый снимок. Ссылка на файл с номером строки, например src/app.ts:42 или src/app.ts:42:7, открывает файл на этой строке и колонке.

Агент может делегировать изолированные подзадачи субагентам через инструмент sub_agent. Субагент работает в своём собственном контексте и возвращает результат родителю. Подробнее — в разделе Субагенты.

Во всех режимах чата, где Browser включён в Harness, агент может использовать Integrated Browser с одинаковым полным набором действий. Он может запустить локальный предпросмотр, сделать скриншот, прочитать консоль, изменить размер viewport, проинспектировать элементы и взаимодействовать со страницей, пока вы наблюдаете или берёте управление на себя. Подробнее — в разделах Определение dev-сервера и Инструменты.

Все правки файлов отображаются в панели изменений в чате. Вы можете принять или отклонить каждый файл по отдельности, а также открыть режим просмотра diff. Подробнее — в разделе Просмотр изменений.