Весной 2026 года команда Roo Code объявила, что сворачивает разработку расширения и уходит делать корпоративный продукт. У Roo Code к тому моменту было около трёх миллионов установок, и для многих это был основной ИИ-агент для VS Code. Выключить свет, правда, не успели. Сообщество подхватило исходники, и через несколько недель в маркетплейсе появился Zoo Code. Это тот же агент под новой вывеской, бесплатный и с открытым кодом.
Сегодня разберём Zoo Code целиком. Поставим расширение, подключим модель, настроим MCP-серверы и индексацию, а потом руками пройдём первый проект и посмотрим, где агент реально экономит время, а где за ним нужен глаз да глаз. Статья пригодится тем, кто переезжает с Roo Code, и тем, кто только присматривается к вайб-кодингу. Получилось длинно, поэтому по оглавлению можно сразу прыгать к нужному разделу: каждый написан так, чтобы читаться отдельно.
ВАМ ПРИШЛО ПРИГЛАШЕНИЕ 💌
Приходите к нам в соцсети поделиться своим мнением и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте — шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!
Что такое Zoo Code и откуда он взялся
Zoo Code — бесплатное расширение для VS Code, которое работает как ИИ-агент. Обычный помощник с автодополнением дописывает строку, на которой стоит курсор. Агенту вы ставите задачу словами, и дальше он сам открывает нужные файлы, правит их, запускает команды в терминале и проверяет, что получилось. Если интересно, что происходит у такой программы внутри, почитайте наш разбор о том, как устроен ИИ-агент.
Решения принимает языковая модель, которую вы подключаете по API. Расширение выдаёт ей руки: инструменты для чтения файлов, правки кода, работы с терминалом и внешними сервисами. Модель решает, какой инструмент нужен на этом шаге, Zoo Code выполняет действие и возвращает ей результат. Цикл крутится, пока задача не решена или пока вы не нажали «Стоп».

Расширение распространяется под лицензией Apache 2.0: его можно ставить, менять и использовать в коммерческих проектах без оплаты. Издатель в маркетплейсе — организация Zoo Code Organization, идентификатор расширения ZooCodeOrganization.zoo-code.
Ниже сначала посмотрим, что агент умеет сразу после установки, а потом коротко разберём, откуда он взялся.
Что расширение умеет из коробки
Сразу после установки и подключения модели у Zoo Code есть всё, чтобы работать с проектом целиком. Вот что он делает без дополнительных настроек:
- Читает проект. Агент сам ищет по файлам, открывает нужные и строит картину того, как устроены папки. Если хотите сэкономить ему время, можно сразу указать файл через
@в поле ввода, например@/src/app.js. - Правит несколько файлов за одну задачу. Каждое изменение сначала появляется в окне сравнения, где старая версия слева, а новая справа. Вы смотрите разницу и решаете, сохранять правку или нет.
- Работает с терминалом. Zoo Code может поставить зависимости, запустить тесты или локальный сервер и прочитать вывод команды. Если тест упал, агент увидит ошибку и попробует её исправить.
- Переключает режимы. Встроенных режимов пять: Code пишет код, Ask отвечает на вопросы, Architect планирует, Debug ищет ошибки, Orchestrator делит большую задачу на части. У каждого свой набор прав, и можно создавать собственные режимы.
- Подключает внешние сервисы через MCP. Это открытый протокол, через который агент ходит в базы данных, GitHub, документацию библиотек и вообще куда угодно, если для сервиса есть MCP-сервер.
- Делает чекпоинты. Перед правками расширение тихо сохраняет снимок проекта. Если агент увлёкся и всё сломал, к снимку можно откатиться кнопкой Restore Changes.
Отдельно стоит сказать про модели. Zoo Code не привязан к одному поставщику: в списке провайдеров есть Anthropic, OpenAI, Google, DeepSeek, OpenRouter, локальные Ollama и LM Studio и ещё несколько десятков вариантов. В версии 3.72.0, например, добавили поддержку Claude Opus 5, Kimi K3 и Gemini 3.6 Flash.
Почему «Zoo»
Roo в названии старого расширения — это кенгуру. Новая команда объяснила в README, что пользователи у проекта очень разные: кто-то пишет код на работе, кто-то строит сложные автоматизации, кто-то улучшает сами модели. Для такой компании зоопарк подходит лучше, чем одно животное. Так кенгуру превратился в слона, барсука, жирафа и ещё полдюжины соседей по вольеру.
История Roo Code и что она значит для пользователя
У Zoo Code длинная родословная. Сначала было расширение Cline, которое раньше называлось Claude Dev. Его форком стал Roo Code: он добавил кастомные режимы, Architect и раннюю поддержку MCP и к 2026 году набрал около трёх миллионов установок.
Весной 2026 года руководитель команды Roo Code Мэтт Рубенс объявил, что активная разработка расширения останавливается. Команда переключилась на Roomote, корпоративного агента, который живёт в Slack и закрывает задачи за всю команду разработчиков. В версии 3.53.0, последней от старой команды, в списке изменений прямо написали, что плагин никуда не исчезает и его передают сообществу.
Дальше события развивались быстро. 23 апреля 2026 года бывшие контрибьюторы Roo Code создали репозиторий Zoo-Code-Org/Zoo-Code. 15 мая репозиторий Roo Code перевели в архив. 16 мая в маркетплейсе VS Code вышел Zoo Code версии 3.54.0. Нумерацию продолжили с того места, где остановился Roo. С тех пор новые версии выходят почти каждую неделю, и к началу октября 2026 года актуальной стала ветка 3.86.
Что это значит на практике? Установленный Roo Code продолжит работать, но обновлений, новых моделей и исправлений уязвимостей в нём больше не будет. Настройки, режимы и ключи переносятся в Zoo Code через экспорт и импорт, об этом расскажем в отдельном разделе. А проектные файлы вроде папки .roo и .roomodes Zoo Code читает как есть, поэтому в репозиториях ничего переименовывать не нужно.
Что понадобится перед установкой
Установка Zoo Code занимает пару минут, но перед ней стоит проверить четыре вещи. Если одной не хватает, расширение встанет и работать не начнёт.
- VS Code версии 1.84.0 или новее. Номер версии видно в меню Help → About (в русской локализации «Справка → О программе»). Если VS Code обновлялся хотя бы раз за последние два года, с версией всё в порядке.
- Аккаунт у провайдера моделей с пополненным балансом. Это может быть OpenRouter, Anthropic, OpenAI, Google или DeepSeek. Провайдер выдаёт API-ключ, по которому Zoo Code отправляет запросы к модели и списывает токены с вашего счёта.
- Стабильный интернет. Агент отправляет запрос к модели на каждом шаге задачи, а шагов в одной задаче бывает и двадцать, и пятьдесят. Если соединение рвётся посреди длинной цепочки, задачу приходится возобновлять вручную.
- Папка с проектом. Лучше не пустая: агенту нужно за что-то зацепиться, чтобы понять стек, стиль и структуру. Даже два-три файла с заготовкой дадут ему больше, чем подробное описание словами.
Второй пункт важнее остальных. Без API-ключа расширение установится, покажет красивый приветственный экран и на этом остановится. Это самая частая причина жалоб в духе «поставил, а оно молчит». Если платить провайдеру пока не хочется, есть два обходных пути: запустить локальную модель через Ollama или попробовать акционные модели Zoo Gateway. Про оба расскажем в разделе о подключении моделей.
Как установить Zoo Code
Способ установки зависит от редактора.В обычном VS Code всё делается через встроенный маркетплейс, в его клонах вроде VSCodium и Cursor через Open VSX, а если магазин недоступен, расширение можно поставить из файла. Есть ещё вариант для IDE от JetBrains. Пошаговые инструкции от разработчиков лежат в документации Zoo Code в разделе установки, а мы пройдём по каждому способу.
Через маркетплейс VS Code
Это основной и самый быстрый путь, на него уходит меньше минуты:
- Откройте VS Code.
- Перейдите на панель расширений. Можно кликнуть по иконке из четырёх квадратиков на левой панели, а можно нажать
Ctrl+Shift+Xна Windows и Linux илиCmd+Shift+Xна macOS. - В строке поиска наберите
Zoo Code. - В результатах выберите карточку Zoo Code с издателем Zoo Code Organization. Проверить, что это нужное расширение, можно по идентификатору: в карточке должно стоять
ZooCodeOrganization.zoo-code. - Нажмите Install.
- Если VS Code попросит перезагрузить окно, согласитесь.
Проверка издателя здесь не формальность. После закрытия Roo Code появилась россыпь форков с похожими названиями вроде Qoo Code и Bolt Code, и далеко не все они связаны с командой Zoo Code. Расширение с доступом к терминалу и файлам лучше ставить только из проверенного источника.
Если вы привыкли к терминалу, то же самое делает одна команда:
# ставим расширение по его идентификатору через CLI редактора VS Code
code --install-extension ZooCodeOrganization.zoo-code

Через Open VSX для VSCodium, Windsurf и Cursor
Клоны VS Code не могут подключаться к магазину Microsoft: его условия использования разрешают работу только с продуктами самой Microsoft. Поэтому эти редакторы берут расширения из открытого каталога Open VSX, где Zoo Code тоже опубликован.
- Откройте VSCodium, Windsurf или Cursor.
- Перейдите на панель расширений тем же сочетанием
Ctrl+Shift+XилиCmd+Shift+X. - Найдите
Zoo Code. - Выберите карточку Zoo Code с тем же идентификатором и нажмите Install.
- Перезагрузите окно, если редактор попросит.
В Open VSX новые версии иногда появляются на несколько часов позже, чем в маркетплейсе Microsoft. Если в карточке висит старая версия, просто подождите или поставьте свежую вручную из файла, как описано ниже.
Вручную из файла VSIX
VSIX — это обычный архив с расширением внутри. Ручная установка выручает, когда маркетплейс заблокирован корпоративным прокси, когда нужна конкретная старая версия или когда свежий релиз ещё не доехал до Open VSX.
- Откройте страницу релизов Zoo Code на GitHub.
- В блоке последнего релиза раскройте раздел Assets и скачайте файл с расширением
.vsix, напримерzoo-code-3.86.0.vsix. - В VS Code откройте панель расширений.
- В правом верхнем углу панели нажмите на три точки.
- В меню выберите Install from VSIX…
- Укажите скачанный файл и дождитесь уведомления об успешной установке.
То же самое можно сделать из терминала:
# ставим расширение из скачанного файла, путь подставьте свой
code --install-extension ~/Downloads/zoo-code-3.82.0.vsix
У ручной установки есть минус: расширение, поставленное из файла, всё равно будет обновляться из маркетплейса, если тот доступен. Если вам нужна именно зафиксированная версия, отключите автообновление в контекстном меню расширения.
Плагин для IDE на JetBrains
В JetBrains Marketplace есть плагин Zoo Code от вендора Zoo Code Organization. Его исходники лежат в репозитории Zoo-Code-Jetbrains внутри той же организации на GitHub, что и основное расширение, а релизы собираются из стабильных версий для VS Code. Например, сборка 3.82.0 для JetBrains вышла 5 сентября 2026 года.
Предупреждение. Плагин для JetBrains устроен иначе, чем расширение для VS Code. Внутри он запускает то же самое расширение через встроенный хост расширений VS Code и встраивает его интерфейс в окна IDE. Отсюда ограничения: нужна IDE на платформе IntelliJ с билдом 233 (версия 2023.3) или новее, а интерфейс работает только в среде с поддержкой JCEF. Для Android Studio нужна версия 2026.1.4 или новее. В официальной документации Zoo Code раздела про JetBrains пока нет, поэтому часть функций может вести себя не так, как описано в этой статье.
Установка стандартная: Settings → Plugins → Marketplace, поиск по Zoo Code, кнопка Install и перезапуск IDE. После перезапуска Zoo Code появится отдельным окном инструментов.
Как убедиться, что всё встало
После установки на левой панели VS Code, где живут проводник, поиск и Git, появляется новая иконка Zoo Code. Кликните по ней, и откроется боковая панель с приветственным экраном и предложением выбрать провайдера модели. Если вы её видите, установка прошла успешно и можно переходить к подключению модели.
Иконки может не оказаться на виду, если на панели слишком много значков. Тогда VS Code прячет лишние под кнопку с тремя точками внизу панели. Проверьте там, а заодно перетащите иконку Zoo Code повыше, чтобы потом не искать.
Ещё один способ проверки: палитра команд. Нажмите Ctrl+Shift+P или Cmd+Shift+P и начните вводить Zoo. Если в списке появились команды расширения, оно загрузилось.
Если иконки нет нигде, откройте View → Output (в русской версии «Вид → Выходные данные») и выберите в выпадающем списке справа канал Zoo Code. Там будут ошибки загрузки, если они были. Чаще всего помогает перезапуск VS Code, а остальные случаи разберём в разделе про поломки.

Если захочется дополнить редактор чем-то ещё, загляните в нашу подборку, где мы собрали полезные плагины для VS Code.
Как перенести настройки из Roo Code
Если вы пришли сюда с вопросом «Roo Code закрыли, что делать», вот короткий ответ: ставить Zoo Code и переносить настройки. Это ближайшая альтернатива Roo Code, потому что внутри тот же код, те же режимы и тот же формат настроек. Переезд занимает пять минут и делается через экспорт в файл и импорт из него:
- Откройте настройки Roo Code. Нажмите на шестерёнку в верхней панели расширения и перейдите в раздел About Roo Code.
- Нажмите Export и сохраните файл. Появится стандартное окно сохранения, выберите любое удобное место. Внутри файла лежат ваши API-ключи открытым текстом, поэтому не кладите его в папку проекта, облако или общий чат.
- Установите Zoo Code любым способом из предыдущего раздела. Сам Roo Code на время переезда лучше отключить в списке расширений: два агента с одинаковыми горячими клавишами в одном окне мешают друг другу.
- Импортируйте файл в Zoo Code. Откройте настройки Zoo Code, нажмите Import Settings и укажите файл, который сохранили на втором шаге. Импортированные настройки Zoo Code аккуратно сливает с текущей конфигурацией.
- Проверьте результат и удалите файл экспорта. Откройте список профилей провайдеров и убедитесь, что ключи на месте, загляните в список режимов. После этого удалите файл экспорта, чтобы ключи не валялись на диске.
Без потерь переносятся профили провайдеров с ключами и выбранными моделями, глобальные кастомные режимы, промпты режимов и пользовательские инструкции. Проектные файлы вроде .roomodes, папки .roo/rules и .roo/mcp.json переносить вообще не нужно: они лежат в репозитории, и Zoo Code читает их как есть. Разработчики пишут, что поддержка отдельной папки .zoo появится позже, но обратная совместимость с .roo сохранится.
На одну вещь стоит обратить внимание отдельно. Глобальный конфиг MCP-серверов mcp_settings.json хранится в отдельном файле, и надёжнее перенести его руками: в Roo Code откройте его кнопкой Edit Global MCP, скопируйте содержимое и вставьте в такой же файл Zoo Code. Где эта кнопка, покажем в разделе про MCP.
А если жалко старых диалогов с агентом, на странице About в настройках Zoo Code есть импорт истории задач из Roo Code. Он появился в версии 3.64.0.
Как подключить модель и API-ключ
Настройка Zoo Code начинается с модели: без неё расширение просто не знает, кого спрашивать. Базовый сценарий везде одинаковый:
- Откройте панель Zoo Code, кликнув по иконке на левой панели VS Code.
- На приветственном экране выберите провайдера.
- Вставьте API-ключ, который выдал провайдер, в соответствующее поле.
- Выберите модель и завершите настройку.
Какую модель брать для старта? Документация Zoo Code советует Claude Sonnet 4.5. Расширение общается с моделью через инструменты: „прочитай файл“, „примени правку“, „выполни команду“. Разные модели по-разному держат формат этих вызовов, поэтому для первого знакомства разумнее взять рекомендованную, а не экспериментировать
Провайдеров в списке несколько десятков. Вот основные:
| Провайдер | Что нужно для доступа | Когда выбирать |
| OpenRouter | Аккаунт на openrouter.ai, пополненный баланс, ключ API | Хотите один ключ на сотни моделей и возможность быстро их сравнивать |
| Anthropic | Аккаунт в Anthropic Console, баланс, ключ API | Работаете в основном с Claude и хотите прямые цены и кэширование без посредника |
| OpenAI | Аккаунт на платформе OpenAI, баланс, ключ API | Основная модель из линейки GPT |
| ChatGPT Plus/Pro | Платная подписка ChatGPT, вход через браузер | Подписка уже есть, и отдельно платить за API не хочется |
| Google Gemini | Аккаунт Google AI Studio, ключ API | Нужен большой контекст или бесплатный тариф для экспериментов |
| DeepSeek | Аккаунт на платформе DeepSeek, баланс, ключ API | Важна низкая цена за токен |
| Ollama, LM Studio | Установленная программа и скачанная модель | Код нельзя отправлять наружу или нужно работать без интернета |
| VS Code Language Model API | Подписка GitHub Copilot | Есть Copilot, и хочется использовать его модели внутри агента |
| Zoo Gateway | Аккаунт Zoo Code, купленные кредиты | Не хочется заводить аккаунты у каждого провайдера по отдельности |
Все подключения сохраняются как профили. Их можно завести несколько и назначить разным режимам разные модели: например, дорогую для планирования в Architect и дешёвую для рутинных правок в Code. Каждый режим запоминает последнюю выбранную модель и переключается на неё сам.

Дальше разберём каждый вариант подробнее, начиная с самого универсального.
OpenRouter как универсальный вход
OpenRouter — сервис-агрегатор: вы пополняете один баланс и получаете доступ к моделям Anthropic, OpenAI, Google, DeepSeek и десятков других лабораторий через единый API-ключ OpenRouter. Это удобно на старте, когда ещё непонятно, какая модель вам подходит.
- Зарегистрируйтесь на openrouter.ai через Google, GitHub или почту.
- Откройте раздел Credits и пополните баланс. Для первых экспериментов хватит 5–10 долларов: по расчёту из раздела о стоимости типовая задача обходится от 30 центов до 2 долларов.
- Перейдите в раздел Keys и нажмите Create Key. Дайте ключу понятное имя вроде
zoo-code-laptopи задайте лимит расходов. Лимит работает как предохранитель: даже если агент зациклится, больше заданной суммы он не потратит. - Скопируйте ключ. Он начинается с
sk-or-v1-и показывается только один раз, так что сразу сохраните его в менеджере паролей. - В Zoo Code на приветственном экране выберите провайдера OpenRouter и вставьте ключ в поле API-ключа.
- В списке моделей найдите и выберите
anthropic/claude-sonnet-4.5. Идентификатор лучше вводить дословно: у OpenRouter много похожих названий, включая версии с суффиксами. - Сохраните настройки и отправьте в чат что-нибудь простое, например «Опиши структуру этого проекта». Если агент начал читать файлы, всё подключено.
Поменять ключ или модель потом можно в настройках: шестерёнка в верхней панели Zoo Code, раздел Providers.

Прямые ключи Anthropic, OpenAI, Google и DeepSeek
Работать с провайдером напрямую имеет смысл, когда вы уже определились с моделью. Посредника нет, цены те же, что в прайсе провайдера, а кэширование промптов работает без сюрпризов. Подключение устроено так же, как с OpenRouter: в консоли провайдера создаёте ключ, в Zoo Code выбираете нужного провайдера из списка и вставляете ключ. Модели при этом называются без префикса лаборатории, например claude-sonnet-4-5 вместо anthropic/claude-sonnet-4.5.
Главное отличие прямого подключения в лимитах запросов. Провайдеры распределяют аккаунты по уровням, которые называют тирами. Новый аккаунт Anthropic попадает на первый тир после небольшого пополнения, и лимиты на число запросов и токенов в минуту там скромные. Агент же отправляет запрос на каждом шаге, а в каждом запросе едет весь контекст задачи. На первом тире длинная задача легко упирается в ошибку 429 «слишком много запросов». Лимиты растут автоматически по мере того, как вы тратите больше и дольше пользуетесь аккаунтом. У OpenAI похожая лестница из пяти уровней.
У Google своя особенность: у Gemini API есть бесплатный уровень, и для экспериментов это хороший вариант. Но лимиты там рассчитаны скорее на чат, чем на агента, и серьёзная задача быстро их исчерпает. Кроме того, на бесплатном уровне Google может использовать ваши запросы для улучшения своих продуктов, так что рабочий код туда лучше не отправлять.
DeepSeek заметно дешевле остальных и жёстких тиров не вводит: ограничения там плавающие и зависят от нагрузки на серверы. Платить за это приходится скоростью, в часы пик ответы могут приходить медленнее.
Если запросы всё-таки упираются в лимит, в настройках профиля Zoo Code можно задать минимальную паузу между запросами. По умолчанию она отключена.
Полезный блок со скидкой
Если захотелось собирать собственные связки из агентов и внешних сервисов, посмотрите курс ИИ-агенты и автоматизация. Если интересно, как устроен поиск по смыслу изнутри, и хочется самому строить сервисы на языковых моделях с RAG и мониторингом, подойдёт ИИ-инженер. Или начните с основ в курсе Python-разработчик: на Python пишут многие MCP-серверы и почти все инструменты для работы с моделями.
Бесплатные вводные курсы в Практикуме тоже есть — по всем направлениям, от Python до аналитики.
Локальные модели через Ollama и LM Studio
Локальная модель работает прямо на вашем компьютере. Код никуда не уходит, интернет после скачивания модели не нужен, и за токены платить не надо. Подключаем на примере Ollama:
Скачайте Ollama с официального сайта ollama.com и установите. Программа запустит локальный сервер на порту 11434.
Скачайте модель для кода. В терминале выполните команду ниже, а если видеокарта слабая, возьмите вариант поменьше.
# скачиваем модель для работы с кодом из библиотеки Ollama
ollama pull qwen3-coder:30b
Зафиксируйте размер контекста. По умолчанию Ollama даёт модели маленькое окно, а агенту нужно хотя бы 32 тысячи токенов. Создайте файл Modelfile:
# берём за основу скачанную модель
FROM qwen3-coder:30b
# задаём окно контекста в 32 тысячи токенов
PARAMETER num_ctx 32768
Соберите из него модель с новым именем:
# создаём копию модели с увеличенным контекстом
ollama create qwen-coder-32k -f Modelfile
В настройках Zoo Code выберите провайдера Ollama. Адрес по умолчанию http://localhost:11434 менять не нужно.
В поле модели укажите имя, которое задали на четвёртом шаге: qwen-coder-32k.
С LM Studio всё похоже, только без терминала: скачиваете модель во встроенном каталоге, на вкладке Developer запускаете локальный сервер, а в Zoo Code выбираете провайдера LM Studio.
Теперь о том, где локальные модели проседают. Слабее всего они в длинных агентных цепочках. Задача из двадцати шагов требует держать в голове план, историю правок и вывод команд, и небольшая модель к десятому шагу начинает забывать, что делала в начале. Отсюда растёт и вторая беда, вызовы инструментов. Агенту нужно отвечать в строгом формате, а локальные модели чаще его ломают: пишут правку не туда или вызывают инструмент с неправильными параметрами. Отдельная история с железом. Модель на 30 миллиардов параметров комфортно работает на видеокарте с 24 ГБ памяти, а на процессоре ответ одного шага может занимать минуты. Для простых правок и вопросов локальная модель годится, для сквозной задачи на десяток файлов лучше облачная.
Zoo Gateway и кредиты без подписки
Zoo Gateway — собственный шлюз команды Zoo Code. Схема похожа на OpenRouter: вместо отдельных ключей для каждого провайдера вы покупаете кредиты Zoo Gateway и получаете доступ ко всем поддерживаемым моделям через один аккаунт. Подписки нет, платите только за то, что потратили. Шлюз полностью опционален, расширение работает и со своими ключами.
Подключается он прямо с приветственного экрана: выбираете Zoo Gateway, входите в аккаунт через браузер, и расширение само получает токен. Список доступных моделей и их цены опубликованы на сайте zoocode.dev в разделе моделей. С версии 3.82.0 ключ Zoo Gateway можно использовать и вне расширения, в любом клиенте, который умеет работать с OpenAI-совместимым API.
У шлюза есть ещё один плюс для тех, кто только пробует: команда регулярно устраивает акции. В разных версиях давали скидку 50% на отдельные модели на пару недель, а в 3.82.0 на ограниченное время открыли бесплатный доступ к MiniMax-M3. Условия меняются, поэтому актуальные предложения лучше смотреть в заметках к релизу. Для серьёзной работы такие модели подходят не всегда, но чтобы разобраться с интерфейсом агента и ничего не заплатить, их хватает.
Сколько стоит работа с Zoo Code
Само расширение Zoo Code бесплатное, а платите вы провайдеру модели за токены. Сколько именно, зависит от выбранной модели и от того, как вы ставите задачи: одна и та же правка может стоить и 30 центов, и два доллара.
Токен — это кусочек текста, примерно три-четыре символа английского текста или чуть меньше для русского. Провайдеры считают отдельно входные токены, то есть всё, что отправлено модели, и выходные, то есть всё, что модель написала в ответ. Выходные обычно в несколько раз дороже: у Claude Sonnet 4.5 миллион входных токенов стоит 3 доллара, а миллион выходных 15 долларов.
Дальше разберёмся, откуда берутся эти токены и как сократить их количество.
Из чего складывается расход
Каждый шаг агента — это отдельный запрос к модели, и в каждом запросе модель получает всё, что нужно для решения, с самого начала. Чат-бот вроде ChatGPT устроен похоже, но там в контексте лежит только переписка. У агента контекст тяжелее.
Первое, что едет в каждом запросе, — системный промпт. Это большая инструкция, в которой расширение объясняет модели правила работы, перечисляет инструменты и их форматы, описывает текущий режим и ваши правила проекта. По замерам пользователей Roo Code, от которого Zoo Code унаследовал промпт, он занимает около 10 тысяч токенов.
К промпту добавляются описания MCP-инструментов. Каждый подключённый сервер приносит список своих функций с параметрами, и всё это отправляется вместе с каждым запросом, даже если в этой задаче MCP вообще не нужен. Три-четыре сервера легко добавляют несколько тысяч токенов.
Дальше идут файлы. Агент читает файлы целиком, и если ему попался файл на 800 строк, все 800 строк попадут в контекст и останутся там до конца задачи. Туда же складывается история: ваши сообщения, ответы модели, вывод команд из терминала, тексты правок.
В итоге контекст растёт с каждым шагом, а оплачивается он каждый раз заново. Если на первом шаге запрос весил 16 тысяч токенов, а на двадцатом 44 тысячи, за задачу вы заплатите примерно за 600 тысяч входных токенов. В нашем прогоне первый запрос занял 9,9 тыс. токенов, а вся задача из первого проекта обошлась примерно в 40 центов. Для длинной задачи на 15–20 шагов на Claude Sonnet 4.5 расчёт даёт от 30 центов до 2 долларов, в зависимости от кэширования и аккуратности с контекстом. Это модельный расчёт по прайсу Anthropic.
Следить за расходом удобно прямо в Zoo Code: в шапке задачи видно, сколько токенов отправлено и получено, сколько из них взято из кэша и во сколько обошлась задача на текущий момент. Там же есть индикатор заполненности окна контекста.

Пять приёмов, которые режут счёт
Большая часть лишних трат уходит на то, что модель получает ненужный контекст. Вот что с этим можно сделать:
- Выключайте MCP, когда он не нужен. В настройках MCP есть переключатель Enable MCP Servers. Если его снять, расширение уберёт из запросов всё, что связано с MCP, и каждый запрос станет легче на несколько тысяч токенов. Тоньше настраивается через список разрешённых серверов для каждого режима: например, Ask обойдётся без доступа к базе данных.
- Показывайте агенту нужные файлы сами. Когда вы пишете в задаче
@/src/app.js, агенту не нужно перебирать папки в поисках нужного места. А файл.rooignoreв корне проекта закроет от агента всё лишнее:node_modules, сборки, логи, большие JSON с данными. - Назначьте дешёвые модели простым режимам. Отвечать на вопросы в Ask и делать мелкие правки может модель в 5–10 раз дешевле флагманской. Дорогую оставьте для Architect и сложных задач в Code. Режимы запоминают свою модель, так что переключать её вручную не придётся.
- Начинайте новую задачу для новой темы. Агент, который час назад чинил вёрстку, а теперь пишет тесты, тащит в каждом запросе всю историю про вёрстку. Новая задача стартует с чистого контекста. Если задачу прерывать не хочется, нажмите кнопку сжатия контекста в шапке: расширение попросит модель пересказать историю коротко и продолжит с пересказа.
- Пользуйтесь кэшированием промптов. Провайдеры умеют запоминать начало запроса, которое не менялось, и брать за него в разы меньше. У Claude чтение из кэша стоит десятую часть обычной цены. С прямым ключом Anthropic расширение использует кэш автоматически, а у некоторых других провайдеров для этого есть отдельная галочка в профиле.
И последний совет, без номера, потому что он про страховку: ставьте лимит расходов прямо на ключе у провайдера. Агент может зациклиться, например бесконечно чинить тест, который чинится только вручную, и лимит не даст ему спустить весь баланс.

Режимы работы и когда какой включать
Режимы в Zoo Code — это роли агента. В каждой роли у модели свой системный промпт и свой набор прав: что она может читать, что править и можно ли ей трогать терминал. Права раздаются группами инструментов. Группа read отвечает за чтение и поиск по файлам, edit за создание и правку файлов, command за запуск команд в терминале, mcp за обращение к MCP-серверам.
Разберём, какие режимы есть сразу после установки, как между ними переключаться и как сделать свой.
| Режим | Доступ к инструментам | Типовая задача |
| Code | Полный: read, edit, command, mcp | Написать функцию, добавить фичу, отрефакторить модуль |
| Ask | Только read и mcp, ничего не правит и не запускает | Объяснить чужой код, разобраться в проекте, ответить на вопрос по технологии |
| Architect | read, mcp и edit только для файлов Markdown | Спланировать фичу, написать техническое задание, продумать миграцию |
| Debug | Полный: read, edit, command, mcp | Найти причину ошибки, добавить логи, проверить гипотезу |
| Orchestrator | Своих инструментов нет, только раздача подзадач другим режимам | Большая задача, которую удобнее делать по частям |
Code включён по умолчанию, и в нём проходит большая часть работы. Это режим с полными правами: агент читает, пишет, запускает команды и ходит в MCP. Для повседневных задач другого и не нужно.
Ask — самый безопасный режим. Он может читать файлы и обращаться к MCP-серверам, но не может ничего изменить. Его удобно включать, когда вы открыли незнакомый репозиторий и хотите понять, как он устроен. Можно спокойно спрашивать «где здесь проверяется авторизация» и не бояться, что агент заодно что-нибудь «улучшит». Ask охотно рисует схемы и даёт развёрнутые объяснения.
Architect занимает промежуточное положение. Код он не трогает, зато может создавать и править файлы Markdown. Этого хватает, чтобы записать план, спецификацию или чеклист миграции прямо в репозиторий. Хороший приём: сначала обсудить задачу с Architect, получить файл с планом, а потом переключиться на Code и попросить реализовать план по пунктам.
Права у Debug те же, что у Code. Его особенность в подходе к работе. В его инструкциях прописано работать методично: сначала собрать симптомы, сформулировать несколько гипотез, добавить логи, подтвердить причину и только потом чинить. На простых багах это кажется медленным, зато на сложных экономит часы, потому что агент не начинает переписывать код по первой догадке.
Orchestrator стоит особняком. Сам он только делит задачу на части и раздаёт их другим режимам. Подробнее о нём ниже.
Четыре способа переключиться
Переключать режимы можно в любой момент, в том числе посреди задачи:
- Выпадающий список рядом с полем ввода. Кликните по названию текущего режима слева под полем ввода и выберите нужный из списка.
- Слеш-команды. Наберите в начале сообщения
/code,/ask,/architect,/debugили/orchestrator. Режим переключится, а поле ввода очистится, чтобы можно было сразу писать задачу. - Горячие клавиши.
Ctrl+.на Windows и Linux илиCmd+.на macOS. Каждое нажатие переключает на следующий режим по кругу. - Предложения агента. Иногда агент сам понимает, что задача лучше решится в другом режиме, и предлагает переключиться. В чате появится кнопка, на которую достаточно кликнуть.
Каждый режим запоминает модель, с которой работал последний раз. Если вы назначили Architect дорогую модель для планирования, а Code дешёвую для правок, переключение режима переключит и модель. Выбранный режим тоже сохраняется между сессиями, так что после перезапуска VS Code вы окажетесь там же, где остановились.
Orchestrator и разбиение на подзадачи
Orchestrator, который в документации ещё называют Boomerang, нужен для задач, которые не помещаются в одну голову. Представьте прораба на стройке, который распределяет работу между бригадами. Получив большую задачу, Orchestrator составляет план, а каждую часть отдаёт подходящему режиму через специальный инструмент new_task: проектирование уходит в Architect, реализация в Code, разбор упавших тестов в Debug.
Каждая подзадача выполняется в отдельной задаче со своим чистым контекстом. Подзадача видит только инструкцию от оркестратора и нужные файлы, без всей предыдущей истории. Когда она закончена, режим возвращает оркестратору короткий отчёт, отсюда и название «бумеранг». Оркестратор читает отчёт и решает, что делать дальше.
У такой схемы два плюса. Первый плюс в экономии: контекст каждой подзадачи небольшой, поэтому запросы не раздуваются до сотни тысяч токенов, как в одной длинной задаче. Второй плюс в качестве: модель хуже справляется, когда в контексте перемешаны вёрстка, база данных и тесты, а в отдельной подзадаче она сосредоточена на чём-то одном.
Минус тоже есть. Оркестратор передаёт подзадаче только то, что сам счёл важным. Если он забыл упомянуть договорённость из начала разговора, подзадача о ней не узнает. Поэтому всё, что должно соблюдаться всегда, лучше вынести в правила проекта.

Кастомные режимы и файл .roomodes
Когда встроенных ролей не хватает, можно сделать свою. Кастомный режим описывается в YAML или JSON и бывает двух видов. Глобальные режимы лежат в настройках расширения и доступны во всех проектах, их открывает кнопка Edit Global Modes на странице режимов. Проектные лежат в файле .roomodes в корне репозитория и открываются кнопкой Edit Project Modes (.roomodes). Если слаги совпадают, проектный режим полностью заменяет глобальный.
Вот пример режима для написания тестов, которому можно править только файлы с тестами:
# список кастомных режимов проекта
customModes:
# уникальный идентификатор режима: только латиница, цифры и дефисы
- slug: test-writer
# имя, которое увидите в выпадающем списке режимов
name: 🧪 Тестировщик
# короткое описание под именем в списке
description: Пишет и чинит тесты, рабочий код не трогает
# роль, с которой начинается системный промпт режима
roleDefinition: Ты инженер по тестированию. Пишешь понятные тесты на Jest и проверяешь граничные случаи.
# подсказка для оркестратора, когда отдавать задачи этому режиму
whenToUse: Используй для написания и исправления автотестов.
# дополнительные правила поведения
customInstructions: Перед правкой запусти тесты и покажи, какие падают.
# группы инструментов, доступные режиму
groups:
# чтение и поиск по файлам
- read
# правка разрешена, но с ограничением по именам файлов
- - edit
# можно править только файлы вида *.test.js и *.spec.js
- fileRegex: \.(test|spec)\.js$
# пояснение, которое агент увидит при попытке нарушить ограничение
description: Только файлы с тестами
# запуск команд, чтобы гонять тесты
- command
Если при попытке исправить app.js вы увидите ошибку FileRestrictionError, значит, ограничение сработало. Создавать режим вручную необязательно: можно попросить агента «Сделай режим, который может править только Markdown», и он соберёт YAML сам. Готовые режимы от сообщества есть в маркетплейсе Zoo Code.
Автоодобрение действий
По умолчанию Zoo Code спрашивает разрешения почти на каждое действие: прочитать файл, сохранить правку, выполнить команду. Поначалу это успокаивает, но к двадцатому клику «Approve» за задачу начинает раздражать. Для этого в настройке Zoo Code есть автоодобрение: вы заранее разрешаете агенту некоторые действия, и он перестаёт за ними спрашивать.
Панель автоодобрения открывается кнопкой под полем ввода (на ней написано Auto-approve off или число включённых разрешений) или сочетанием Ctrl+Alt+A на Windows и Linux, Cmd+Alt+A на macOS. Внутри сетка из семи плиток-разрешений, кнопки All и None для массового выбора и главный переключатель Enabled в правом нижнем углу. Переключатель ставит автоодобрение на паузу целиком, но выбранные плитки при этом запоминаются. Горячая клавиша как раз переключает Enabled.
| Разрешение | Что делает | Риск |
| Read | Читает файлы и списки папок без вопросов | Средний: агент может увидеть то, что вы не хотели показывать, например .env |
| Write | Создаёт и правит файлы без подтверждения | Высокий: можно не заметить, как агент переписал половину проекта |
| Execute | Сам запускает команды из белого списка | Высокий: команда в терминале может удалить данные или что-то отправить наружу |
| MCP | Вызывает инструменты подключённых MCP-серверов | От среднего до высокого, зависит от того, что умеет сервер |
| Mode | Переключается между режимами | Низкий |
| Subtasks | Создаёт и закрывает подзадачи, это нужно оркестратору | Низкий |
| Question | Через заданное время сам выбирает первый вариант ответа на свой уточняющий вопрос | Низкий |
Документация предупреждает прямо и крупными буквами: автоодобрение даёт агенту прямой доступ к вашей системе и может закончиться потерей данных, порчей файлов или чем-то похуже. Особенно опасен доступ к командной строке, потому что одна неудачная команда способна повредить систему или открыть дыру в безопасности. Включать автоодобрение стоит только для тех действий, которым вы полностью доверяете.
У разрешений есть встроенные ограничители. По умолчанию агент читает и пишет только внутри открытой папки проекта, а для выхода за её пределы нужна отдельная галочка. Файлы в папке .roo и сам .rooignore защищены от правки, даже если правка файлов разрешена. Для MCP нужно двойное согласие: общее разрешение на панели и галочка Always allow у конкретного инструмента в настройках сервера.
Для команд в настройках есть два списка. В Allowed Commands перечисляются начала команд, которые можно запускать без вопросов, например npm run или python -m pytest. В Denied Commands перечисляется то, что запрещено всегда: rm, git push, sudo и npm publish. Если команда подходит под оба списка, побеждает более длинное и точное совпадение. С версии 3.76.0 есть ещё опциональный Destructive Command Guard: отдельный защитный слой, который блокирует явно разрушительные команды, даже если вы разрешили выполнение.
Рекомендация редакции. Включите чтение файлов и переключение режимов: риск там минимальный, а кликов становится заметно меньше. Подзадачи тоже можно разрешить, если пользуетесь оркестратором. Правку файлов оставьте на ручном подтверждении хотя бы первые несколько недель, пока не привыкнете к тому, как агент работает. А выполнение команд держите на ручном подтверждении всегда, кроме короткого белого списка вроде npm run test. Одна секунда на клик стоит меньше, чем восстановление удалённой папки.
Как настроить MCP-серверы
MCP в Zoo Code настраивается через два JSON-файла: глобальный mcp_settings.json для всех проектов и проектный .roo/mcp.json в корне репозитория. В файл вписывается объект mcpServers с описанием каждого сервера, и после сохранения Zoo Code сам его запускает. Вот рабочий конфиг с сервером Context7, который подтягивает агенту свежую документацию библиотек:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"],
"alwaysAllow": [],
"disabled": false,
"timeout": 60
}
}
}
На Windows npx надёжнее запускать через командную строку cmd, поэтому там конфиг чуть отличается:
{
"mcpServers": {
"context7": {
"type": "stdio",
"command": "cmd",
"args": ["/c", "npx", "-y", "@upstash/context7-mcp@latest"],
"alwaysAllow": [],
"disabled": false,
"timeout": 60
}
}
}
Для работы конфига на компьютере должен стоять Node.js, именно он даёт команду npx. Context7 работает и без ключа; если ключ у вас есть, добавьте его по инструкции в документации сервера. Комментариев в коде выше нет специально: формат JSON их не поддерживает, и файл с комментариями просто не прочитается. Подробный разбор полей с комментариями ждёт ниже.
Если хочется сначала разобраться в самой технологии, у нас есть отдельная статья «MCP-сервер: что это и как настроить», а полное описание протокола лежит в спецификации MCP. Ниже собрано всё, что нужно для настройки MCP-сервера именно в Zoo Code.
Что такое MCP и зачем он агенту
MCP, или Model Context Protocol, — открытый стандарт, который описывает, как ИИ-агент общается с внешними программами. Его предложила Anthropic в 2024 году, и сейчас его поддерживают почти все агенты для программирования.
Проще всего представить MCP как универсальную розетку. До неё каждый агент изобретал свой способ подключиться к GitHub, к базе данных или к Figma, и для каждой пары «агент + сервис» приходилось писать отдельную интеграцию. С MCP сервис один раз реализует сервер по стандарту, и к нему может подключиться любой агент, который этот стандарт понимает: Zoo Code, Cursor, Claude Code и другие.
MCP-сервер — это небольшая программа, которая сообщает агенту список своих инструментов. Например, сервер для GitHub говорит: «Я умею создавать issue, читать pull request и искать по коду, вот какие параметры мне нужны». Агент видит этот список, и когда задача требует, вызывает нужный инструмент. Сервер выполняет действие и возвращает результат.
Зачем это агенту? Сам по себе Zoo Code видит только файлы проекта и терминал. Через MCP он получает доступ к тому, что лежит за пределами редактора: к актуальной документации библиотек, к задачам в трекере, к данным в базе, к макетам в Figma. Без MCP агенту пришлось бы полагаться на то, что он запомнил при обучении, а документация, как известно, устаревает быстрее, чем выходят новые модели.
Глобальный и проектный конфиг
У MCP-серверов в Zoo Code два уровня настроек:
- Глобальный хранится в файле
mcp_settings.jsonв служебной папке расширения (на Windows это%APPDATA%\Code\User\globalStorage\zoocodeorganization.zoo-code\settings\). Серверы оттуда работают во всех проектах. Сюда стоит класть то, что нужно всегда: например, Context7. - Проектный хранится в файле
.roo/mcp.jsonв корне репозитория. Его можно закоммитить, и вся команда получит одинаковый набор серверов. Сюда кладут серверы, специфичные для проекта: доступ к базе этого проекта, к его трекеру задач.
Если сервер с одинаковым именем описан в обоих файлах, проектный конфиг перебивает глобальный.
Открыть оба файла можно прямо из интерфейса:
- Нажмите на шестерёнку в верхней панели Zoo Code и выберите в меню слева раздел MCP Servers.
- Убедитесь, что стоит галочка Enable MCP Servers. Если её снять, серверы не запустятся и не будут тратить токены.
- Прокрутите страницу вниз до кнопок под списком серверов.
- Нажмите Edit Global MCP, чтобы открыть глобальный файл, или Edit Project MCP для проектного. Если проектного файла ещё нет, Zoo Code создаст его сам вместе с папкой
.roo. - Вставьте конфиг из начала раздела и сохраните файл сочетанием
Ctrl+S. - Вернитесь на страницу MCP Servers. Новый сервер появится в списке, и через несколько секунд рядом с ним загорится зелёный индикатор. Если список не обновился, нажмите Refresh MCP Servers внизу страницы.
Если кладёте ключи в проектный файл, не забудьте добавить .roo/mcp.json в .gitignore или используйте подстановку переменных окружения вида ${env:ИМЯ_ПЕРЕМЕННОЙ}, чтобы секреты не попали в репозиторий.
Три транспорта: stdio, Streamable HTTP и SSE
Транспорт — это способ, которым Zoo Code обменивается сообщениями с сервером. Их три — STDIO, Streamable HTTP и SSE.
STDIO самый простой и самый безопасный: сервер работает на вашей машине, в сеть ничего не торчит, задержек на передачу нет. Минус в том, что сервер живёт ровно столько, сколько открыт VS Code, и им не поделиться с коллегами.
Streamable HTTP нужен, когда сервер должен работать отдельно от редактора: например, команда держит один сервер с доступом к корпоративной базе знаний, и к нему подключаются все разработчики. В конфиге такого сервера вместо command и args пишутся адрес и заголовки:
{
"mcpServers": {
"company-docs": {
"type": "streamable-http",
"url": "https://mcp.example.com/mcp",
"headers": {
"Authorization": "Bearer ВАШ_ТОКЕН"
}
}
}
}
В отличие от STDIO, для серверов по адресу поле type обязательно. Без него Zoo Code не поймёт, какой из двух HTTP-транспортов использовать, и сразу покажет ошибку.

SSE — это старый вариант HTTP-транспорта с отдельными адресами для входящих и исходящих сообщений. Он подходит только для старых серверов, которые ещё не перешли на Streamable HTTP. Считается устаревшим.
Разбор полей конфига
Возьмём конфиг локального сервера и разберём каждое поле. Комментарии здесь только для объяснения: если будете копировать конфиги в рабочий файл, то удалите их.
{
// корневой объект со всеми серверами
"mcpServers": {
// имя сервера, его вы увидите в списке; должно быть уникальным
"context7": {
// программа, которая запускает сервер: npx, node, python, docker или полный путь
"command": "npx",
// аргументы для программы: пакет сервера и его параметры
"args": ["-y", "@upstash/context7-mcp@latest"],
// переменные окружения, которые получит процесс сервера
"env": {
// пример секрета, который сервер прочитает из окружения
"SOME_API_TOKEN": "ВАШ_ТОКЕН"
},
// инструменты, которые можно вызывать без подтверждения
"alwaysAllow": ["resolve-library-id"],
// true временно выключает сервер, не удаляя его из конфига
"disabled": false,
// сколько секунд ждать ответа инструмента: от 1 до 3600, по умолчанию 60
"timeout": 60
}
}
}
command — обязательное поле для локальных серверов. Это та программа, которую Zoo Code запустит в фоне. Чаще всего здесь npx для серверов на JavaScript, uvx или python для серверов на Python и docker для серверов в контейнерах.
args — массив аргументов. В нём указывают пакет сервера и его параметры. Внутри можно подставлять системные переменные окружения через ${env:ИМЯ_ПЕРЕМЕННОЙ}, чтобы не хранить ключи в открытом виде.
env — объект с переменными окружения для процесса сервера. Многие серверы берут токены именно отсюда, например сервер GitHub ждёт GITHUB_PERSONAL_ACCESS_TOKEN.
alwaysAllow — список инструментов, которые агент может вызывать без вашего подтверждения. Работает только вместе с плиткой MCP на панели автоодобрения. Имена инструментов видно в списке сервера на странице настроек MCP.
disabled — выключатель. Если поставить true, сервер не будет запускаться, но его настройки останутся в файле. Удобно, когда сервер нужен раз в неделю, а описания его инструментов в каждом запросе не нужны.
timeout — время ожидания ответа в секундах, от 1 до 3600. По умолчанию 60. Увеличивать стоит для медленных инструментов, например для сервера, который собирает проект или гоняет тяжёлый запрос к базе.
Есть и необязательные поля: cwd задаёт рабочую папку сервера, watchPaths перезапускает сервер при изменении указанных файлов, а disabledTools выключает отдельные инструменты, оставляя остальные.
Установка сервера из маркетплейса
Вписывать конфиг руками необязательно. В Zoo Code есть маркетплейс, где собраны популярные MCP-серверы и готовые режимы:
- Нажмите на иконку маркетплейса в верхней панели Zoo Code или на кнопку MCP Marketplace внизу страницы MCP Servers.
- Перейдите на вкладку MCP и найдите нужный сервер через поиск.
- Нажмите Install в карточке сервера.
- Выберите область установки: Project запишет сервер в
.roo/mcp.jsonтекущего проекта, Global в общийmcp_settings.json. - Выберите метод установки, если сервер предлагает несколько. NPX запускает сервер через Node.js и подходит в большинстве случаев. Docker запускает его в контейнере: так сервер изолирован от системы, но нужен установленный Docker.
- Заполните параметры, которые просит сервер, например токен доступа, и подтвердите установку.
Маркетплейс сам допишет нужный блок в выбранный файл. Если потом захочется что-то поменять, откройте файл кнопкой Edit Global MCP или Edit Project MCP и поправьте его вручную.
Сервер не поднялся
Если индикатор у сервера красный или серый, проверьте по порядку:
npxне найден. Не установлен Node.js или VS Code запустился раньше, чем обновилсяPATH. Поставьте Node.js и полностью перезапустите VS Code.- Сервер стартует и сразу падает на Windows. Замените
“command”: “npx”на вариант сcmdи/c, как во втором конфиге выше. - Ошибка авторизации. Проверьте ключ в
args,envилиheaders. Частая причина: пробел или кавычка, попавшие в ключ при копировании. - Сервер на месте, но агент его не использует. Проверьте, включён ли тумблер Enable MCP Servers и не стоит ли у сервера
“disabled”: true. - Инструмент отваливается по таймауту. Увеличьте
timeoutили выберите большее значение в списке Network Timeout у сервера.
После любой правки конфига нажмите кнопку перезапуска рядом с сервером. Подробности ошибки видно, если кликнуть по серверу в списке.
Индексация кодовой базы
Без индексации агент ищет по проекту так же, как вы через Ctrl+Shift+F: по точному совпадению строки. Если в коде функция называется checkToken, а вы спрашиваете про «логику авторизации», обычный поиск ничего не найдёт, потому что слова «авторизация» в коде нет. Агенту придётся открывать файлы один за другим и угадывать, а каждый открытый файл — это токены.
Индексация решает эту проблему: агент начинает искать код по смыслу. После неё запрос «где проверяется, что пользователь вошёл в систему» приведёт прямо к checkToken, даже если ни одно слово не совпало.
Устроено это так. Сначала библиотека Tree-sitter разбирает код на смысловые блоки: функции, классы, методы. Tree-sitter понимает синтаксис десятков языков и режет файл по границам конструкций, так что функции остаются целыми. Потом каждый блок отправляется в модель эмбеддингов. Эмбеддинг — это набор из сотен или тысяч чисел, который описывает смысл фрагмента. Фрагменты с похожим смыслом получают похожие наборы чисел, даже если написаны разными словами. Наконец, эти векторы складываются в векторную базу данных Qdrant, которая умеет быстро находить ближайшие к запросу.
Когда агенту нужно что-то найти, он вызывает инструмент codebase_search: запрос превращается в вектор, Qdrant возвращает самые похожие блоки кода с путями к файлам и номерами строк.
Индексатор уважает файлы .gitignore и .rooignore: всё, что там перечислено, в индекс не попадёт. Ещё он пропускает бинарные файлы, картинки и всё, что больше 1 МБ. За изменениями индексатор следит сам: после правки файла обновляется только его часть индекса.
Что нужно для запуска
Для индексации нужны две вещи: провайдер эмбеддингов, который превращает код в векторы, и база Qdrant, где эти векторы хранятся. Настраивается всё в одном окне:
1. Поднимите Qdrant. Проще всего запустить его в Docker на своём компьютере одной командой. Если Docker не установлен, переходите к следующему подразделу и берите облачный Qdrant.
# скачиваем и запускаем Qdrant в фоне, открываем порт 6333 и сохраняем данные в томе qdrant_data
docker run -d --name qdrant --restart unless-stopped -p 6333:6333 -v qdrant_data:/qdrant/storage qdrant/qdrant
2. Проверьте, что база отвечает. Откройте в браузере http://localhost:6333/dashboard. Если появилась панель управления Qdrant, всё работает.
3. Получите ключ для эмбеддингов. Удобнее всего бесплатный ключ Google Gemini из Google AI Studio, о нём подробнее ниже. Подойдут и OpenAI, Mistral, OpenRouter или локальная Ollama.
4. Откройте настройки индексации. В правом нижнем углу поля ввода Zoo Code есть маленький значок статуса индексации. Кликните по нему, откроется окно настроек.
5. Заполните поля. В Embedder Provider выберите провайдера, вставьте ключ в API Key и выберите модель, например gemini-embedding-001. В Qdrant URL укажите http://localhost:6333. Поле Qdrant API Key для локальной базы оставьте пустым.
6. Запустите индексацию. Нажмите Save, а затем Start Indexing.
7. Дождитесь зелёного статуса. Жёлтый значок означает, что индексация идёт, зелёный — что индекс готов, красный — ошибка. Серый значит, что индексация не настроена или выключена.
Небольшой проект индексируется за минуту-две, на крупном репозитории с десятками тысяч файлов процесс может занять полчаса. Агентом при этом можно пользоваться, просто результаты поиска будут неполными.
Если захотите переиндексировать проект с нуля, например после смены модели эмбеддингов, нажмите Clear Index Data. Это удалит все векторы проекта из Qdrant, отменить действие нельзя.
Бесплатная связка
Индексацию можно настроить, не заплатив ни копейки. Документация Zoo Code прямо рекомендует такую связку: Qdrant в Docker или в облаке на бесплатном тарифе плюс бесплатный ключ Gemini для эмбеддингов.
С Qdrant есть два пути. Первый: Docker на своём компьютере, как в инструкции выше. Это полностью бесплатно, данные остаются на вашем компьютере, а Qdrant справляется даже на скромном железе: для индекса проекта на несколько тысяч файлов хватает пары сотен мегабайт памяти. Второй путь: Qdrant Cloud. На сайте сервиса можно зарегистрироваться, создать кластер на бесплатном тарифе и получить адрес и API-ключ. Адрес вставляется в поле Qdrant URL, ключ в Qdrant API Key. Облачный вариант удобен, если Docker ставить не хочется или если вы работаете с нескольких компьютеров. Подробности о тарифах и настройке есть в документации Qdrant.
Для эмбеддингов берём Gemini. Ключ выдаётся в Google AI Studio за пару минут, а модели эмбеддингов на бесплатном уровне доступны с лимитами, которых для индексации небольших и средних проектов хватает. Есть нюанс: на бесплатном уровне Google может использовать отправленные данные для улучшения своих сервисов. При этом уходят только фрагменты по 100–1000 символов, но для закрытого рабочего кода лучше выбрать платный уровень или локальный вариант.
Полностью локальная связка тоже возможна: Qdrant в Docker плюс модель эмбеддингов в Ollama, например nomic-embed-text. Тогда код вообще не покидает компьютер. С версии 3.58.0 в Zoo Code есть ещё один локальный провайдер, Semble, который считает эмбеддинги на лету без отдельного сервера.
А нужна ли индексация вообще? На маленьком проекте из десятка файлов агент и так быстро найдёт всё нужное. Индексация начинает окупаться, когда файлов сотни, а вы сами не помните, где что лежит.
Правила проекта и кастомные инструкции
Каждая новая задача для агента начинается с чистого листа. Он не помнит, что вчера вы трижды просили писать комментарии на русском, не коммитить без тестов и не тащить в проект jQuery. Чтобы не повторять это в каждом сообщении, такие договорённости выносят в правила. Правила — это обычные текстовые файлы, которые Zoo Code при каждом запросе добавляет в конец системного промпта. Модель читает их так же внимательно, как остальные инструкции.
Правила живут на двух уровнях. Проектные лежат в папке .roo/rules/ в корне репозитория, коммитятся вместе с кодом и работают у всей команды. Глобальные лежат в домашней папке пользователя: ~/.roo/rules/ на Linux и macOS или %USERPROFILE%\.roo\rules\ на Windows, и действуют во всех ваших проектах. Если проектное правило противоречит глобальному, побеждает проектное. Ещё правила можно привязать к конкретному режиму: для этого их кладут в папку .roo/rules-{слаг режима}/, например .roo/rules-code/ или .roo/rules-architect/.
Вот как это выглядит в проекте из нашего кейса:
bookshelf/
├── .roo/
│ ├── rules/
│ │ ├── 01-stack.md
│ │ ├── 02-code-style.md
│ │ └── 03-commits.md
│ ├── rules-architect/
│ │ └── 01-plans.md
│ └── mcp.json
├── .roomodes
├── .rooignore
├── AGENTS.md
├── index.html
├── style.css
├── app.js
└── books.json
Файлы внутри папки читаются по алфавиту, поэтому их удобно нумеровать. Писать правила лучше короткими утверждениями без воды, вот пример файла 02-code-style.md:
# Стиль кода
- Пишем на чистом JavaScript (ES2020), без фреймворков и без jQuery.
- Для переменных используем const, а let только там, где значение меняется.
- Комментарий ставим над каждой строкой кода, на русском языке.
- Имена функций и переменных -- на английском, в camelCase.
- Не добавляем новые зависимости без явной просьбы.
- После правки JavaScript-файла проверяем, что в консоли браузера нет ошибок.
Кроме папки .roo, Zoo Code читает файл AGENTS.md в корне проекта. Это общий стандарт, который понимают и другие агенты, поэтому если в команде кто-то работает в Zoo Code, а кто-то в другом инструменте, общие договорённости удобно держать именно там. Отключить чтение AGENTS.md можно в настройках VS Code параметром roo-cline.useAgentRules. С версии 3.64.0 в настройках Zoo Code есть вкладка Rules, где правила можно создавать, открывать и удалять мышкой, не залезая в файловую систему.
Теперь о разнице между правилами проекта и системным промптом режима. Системный промпт режима задаёт роль: кто агент сейчас и что ему разрешено. В кастомном режиме за это отвечают поля roleDefinition и groups, и меняется роль только вместе с режимом. Правила проекта роль не трогают. Они описывают сам проект: стек, стиль, запреты, формат коммитов. Поэтому правила из .roo/rules/ подмешиваются в промпт любого режима: и Code, и Architect, и вашего тестировщика должны одинаково знать, что в проекте нет jQuery.
Полезная привычка — дописывать правило каждый раз, когда приходится поправлять агента второй раз подряд. Через пару недель в .roo/rules/ соберётся инструкция, которая экономит больше времени, чем любая настройка модели. Главное — не превращать правила в роман: всё, что там написано, едет в каждом запросе и оплачивается как входные токены.
Первый проект от начала до конца
Настройки позади, пора дать Zoo Code настоящую задачу и посмотреть, как он с ней справится. Это и есть вайб-кодинг в чистом виде: вы описываете результат словами, а код пишет агент. Если вы только начинаете и хочется сначала разобраться с самим подходом, почитайте наш вайб-кодинг для джунов, а потом возвращайтесь сюда.
В качестве подопытного возьмём маленький проект: страницу-каталог «Книжная полка». Она загружает список книг из файла и рисует карточки. Агенту предстоит добавить поиск, фильтр по жанрам, тёмную тему и счётчик найденных книг. Результат видно в браузере, правок нужно минимум в трёх файлах, а вся задача укладывается в полчаса вместе с проверкой.
Открываем папку и формулируем задачу
Сначала создадим заготовку. Агенту нужен живой проект, чтобы понять стиль и структуру, поэтому начнём не с пустой папки. Создайте папку bookshelf и положите в неё четыре файла.
Данные о книгах лежат в books.json. Комментариев в нём нет, потому что формат JSON их не поддерживает:
[
{ "title": "Мастер и Маргарита", "author": "Михаил Булгаков", "genre": "роман", "year": 1967 },
{ "title": "Пикник на обочине", "author": "Аркадий и Борис Стругацкие", "genre": "фантастика", "year": 1972 },
{ "title": "Чистый код", "author": "Роберт Мартин", "genre": "программирование", "year": 2008 },
{ "title": "Грокаем алгоритмы", "author": "Адитья Бхаргава", "genre": "программирование", "year": 2016 },
{ "title": "Солярис", "author": "Станислав Лем", "genre": "фантастика", "year": 1961 },
{ "title": "Преступление и наказание", "author": "Фёдор Достоевский", "genre": "роман", "year": 1866 }
]
Страница index.html:
<!-- объявляем, что это HTML5-документ -->
<!DOCTYPE html>
<!-- корневой элемент, язык страницы русский -->
<html lang="ru">
<!-- служебная часть страницы -->
<head>
<!-- кодировка, чтобы кириллица отображалась правильно -->
<meta charset="UTF-8">
<!-- заголовок вкладки браузера -->
<title>Книжная полка</title>
<!-- подключаем стили -->
<link rel="stylesheet" href="style.css">
</head>
<!-- видимая часть страницы -->
<body>
<!-- шапка с названием каталога -->
<header class="header">
<!-- главный заголовок -->
<h1>Книжная полка</h1>
</header>
<!-- контейнер, куда скрипт положит карточки книг -->
<main id="book-list" class="book-list"></main>
<!-- подключаем скрипт в самом конце, когда разметка уже готова -->
<script src="app.js"></script>
</body>
</html>
Стили style.css:
/* общие настройки страницы */
body {
/* системный шрифт без засечек */
font-family: system-ui, sans-serif;
/* убираем стандартный отступ браузера */
margin: 0;
/* светлый фон */
background: #f7f7f7;
/* тёмный текст */
color: #222;
}
/* шапка страницы */
.header {
/* внутренние отступы */
padding: 16px 24px;
/* белый фон шапки */
background: #fff;
/* тонкая линия снизу */
border-bottom: 1px solid #ddd;
}
/* сетка с карточками */
.book-list {
/* раскладываем карточки сеткой */
display: grid;
/* колонки не уже 220 пикселей, сколько влезет */
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
/* расстояние между карточками */
gap: 16px;
/* отступы вокруг сетки */
padding: 24px;
}
/* карточка одной книги */
.book {
/* белый фон карточки */
background: #fff;
/* скруглённые углы */
border-radius: 8px;
/* внутренние отступы */
padding: 16px;
/* лёгкая тень */
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
/* метка жанра */
.genre {
/* мелкий шрифт */
font-size: 12px;
/* серый цвет */
color: #777;
/* отступ справа до года */
margin-right: 8px;
}
И скрипт app.js:
// загружаем список книг из файла books.json
fetch('books.json')
// превращаем ответ сервера в массив объектов
.then((response) => response.json())
// передаём массив в функцию отрисовки
.then((books) => renderBooks(books));
// функция рисует карточки книг на странице
function renderBooks(books) {
// находим контейнер для карточек
const list = document.querySelector('#book-list');
// очищаем контейнер перед отрисовкой
list.innerHTML = '';
// перебираем книги по одной
books.forEach((book) => {
// создаём элемент карточки
const card = document.createElement('article');
// добавляем карточке класс для стилей
card.className = 'book';
// заполняем карточку названием, автором, жанром и годом
card.innerHTML = `<h2>${book.title}</h2><p>${book.author}</p><span class="genre">${book.genre}</span><span>${book.year}</span>`;
// добавляем карточку в контейнер
list.appendChild(card);
});
}
Откройте папку bookshelf в VS Code через File → Open Folder. Это важно: Zoo Code работает с той папкой, которая открыта в редакторе, и за её пределы по умолчанию не выходит. Проверить, как выглядит страница до правок, можно командой в терминале VS Code:
# запускаем простой веб-сервер Python в текущей папке на порту 8000
python -m http.server 8000
На Windows вместо python иногда нужно писать py. После запуска откройте в браузере http://localhost:8000. Через двойной клик по index.html страница не заработает: браузер не даст скрипту загрузить books.json с диска.

Теперь формулируем задачу. Хороший промпт для агента похож на хорошее ТЗ для фрилансера: что сделать, какие ограничения и как понять, что готово. Переключаемся в режим Code и пишем:
В проекте страница-каталог книг: index.html, style.css, app.js, данные в books.json.
Добавь на страницу:
1. Поле поиска над списком. Ищет по названию и автору без учёта регистра, обновляет список по мере ввода.
2. Кнопки-фильтры по жанрам, которые есть в books.json, и кнопку «Все». Поиск и фильтр работают вместе.
3. Счётчик «Найдено: N» под поиском. Если ничего не найдено, вместо карточек сообщение «Ничего не нашлось».
4. Переключатель тёмной темы в шапке. Выбор сохраняется в localStorage и восстанавливается после перезагрузки.
Ограничения: чистый JavaScript без библиотек, books.json не меняй, комментарий над каждой строкой кода.
Когда закончишь, запусти сервер командой python -m http.server 8000 и напиши, что проверить в браузере.
Обратите внимание на последние две строки. Ограничения отсекают самые частые «творческие» решения агента вроде подключения библиотеки ради одной функции. А просьба описать проверку заставляет его самого подумать о том, как убедиться в результате.

Что агент показывает и что стоит одобрять
После отправки задачи агент начинает работать, а вы наблюдаете за его действиями в чате. Сначала он читает файлы проекта. Если чтение не включено в автоодобрение, Zoo Code спросит разрешения на каждый файл. Здесь можно смело нажимать Approve: чтение безопасно, и без него агент не поймёт, что править.
Запросы на чтение приходят по файлам или по группам файлов. Список задач в режиме Code в нашем прогоне не показывался, зато в режиме Orchestrator он был: об этом ниже.
Самое интересное начинается с правок. Для каждого изменения Zoo Code открывает окно сравнения: слева файл до правки, справа после. Изменённые строки подсвечены. Внизу чата появляются кнопки Save и Deny.
Что стоит проверять в окне сравнения:
- Правка делает то, о чём вы просили. Если просили поиск, а агент заодно переименовал половину CSS-классов, это повод нажать Deny и написать, что именно не нужно.
- Не удалено ничего лишнего. Красные строки слева — то, что исчезнет. Агенты иногда «упрощают» код, выбрасывая работающие куски.
- Соблюдены правила. В нашем случае — комментарии над строками и отсутствие библиотек.
- Нет секретов и отладочного мусора. Ключи API,
console.logна каждой строке, закомментированные куски старого кода.
Если правка в целом хорошая, но нужна мелочь, можно поправить код прямо в правой части окна сравнения и только потом нажать Save. Агент увидит вашу версию и продолжит с неё.
Отдельно стоят команды. Когда агент захочет запустить python -m http.server 8000, в чате появится запрос с текстом команды и кнопками Run и Deny. Читайте команду целиком перед запуском. Здесь всё безобидно, но привычка пригодится в день, когда агент решит «почистить временные файлы» командой с rm или del.
Когда агент считает задачу выполненной, он пишет итоговое сообщение: что сделано и что проверить. Под ним появятся кнопки See New Changes и Restore Changes. Первая покажет все изменения за задачу одним списком, вторая запускает откат, о нём в следующем подразделе.


Вот как изменилась страница после работы агента:

Чекпоинты и откат
Чекпоинты страхуют от неудачных правок. Пока агент работает, Zoo Code перед каждой правкой файлов делает снимок проекта и сохраняет его в отдельный скрытый Git-репозиторий. С вашим собственным Git он никак не пересекается: коммиты и ветки проекта остаются нетронутыми. Для работы чекпоинтов на компьютере должен стоять Git.
Допустим, агент добавил тёмную тему, и после этого сломалась вёрстка карточек. Откатываемся так:
- Дождитесь конца задачи. В итоговом сообщении «Task Completed» появятся кнопки See New Changes и Restore Changes, а над ними счётчик вроде «3 file(s) changed in this conversation».
- Нажмите See New Changes, чтобы увидеть всё, что изменилось за задачу, и убедиться, что откат действительно нужен.
- Закоммитьте в обычный Git всё, что хотите сохранить. Версию, которую жалко потерять, надёжнее держать в коммите.
- Нажмите Restore Changes. Откат не сработает сразу: вместо кнопок появятся красная Confirm Restore Changes и Cancel.
- Нажмите Confirm Restore Changes, если уверены, или Cancel, если передумали. После отката проверьте страницу и
git status, а потом напишите агенту, что сделать иначе.
Отметки «Checkpoint» стоят в ленте перед каждой правкой файла, последняя из них помечена как Current. Откат, о котором шла речь выше, делается кнопкой в итоговом сообщении.
Чекпоинты привязаны к задаче. Если начать новую задачу, у неё будут свои снимки, а откатиться к точке из старой задачи из новой не получится. И ещё одно ограничение: если внутри проекта есть вложенные Git-репозитории, чекпоинты отключаются.

Большая задача через Orchestrator
Поиск и фильтры — задача на один заход. Но допустим, мы хотим большего: форму добавления новой книги с проверкой полей, сохранение добавленных книг в браузере и автотесты на функции фильтрации. Если отдать всё это одним сообщением в режим Code, контекст разрастётся до огромного размера: агент будет держать в голове вёрстку формы, логику хранения и настройку тестов одновременно. Счёт за такую задачу заметно вырастет, а качество, наоборот, просядет.
Для таких случаев есть Orchestrator. Переключаемся командой /orchestrator и описываем задачу целиком, так же подробно, как в первый раз. Оркестратор сам ничего не пишет. Он разбивает задачу на этапы и раздаёт их подходящим режимам. В нашем прогоне он первым делом составил список из четырёх пунктов: форма с проверкой полей, сохранение книг в localStorage, модуль filters.js и тесты на Node.js. Список висел в чате, и по мере работы пункты отмечались зелёными галочками. Тесты, например, писала отдельная подзадача: она создала filters.test.js, отчиталась оркестратору, что 34 теста на встроенном node:test проходят, и тот отметил пункт выполненным. Весь прогон обошёлся примерно в доллар по счётчику задачи.
Каждая подзадача появляется в чате как отдельная задача со своей историей. В неё можно провалиться и посмотреть, что там происходило, а можно ждать отчёта в главной ветке. Когда подзадача заканчивается, оркестратор получает короткую сводку и решает, что делать дальше. Переписку подзадачи он целиком не видит, только итог.
На что обратить внимание. Включите в автоодобрении плитку Subtasks, иначе придётся подтверждать каждую. Правки файлов и команды внутри подзадач подтверждаются так же, как в обычной задаче, так что контроль у вас остаётся. Если оркестратор раздробил задачу слишком мелко, например на десять подзадач по одной функции, остановите его и попросите укрупнить этапы. Слишком мелкое дробление съедает выгоду: у каждой подзадачи свой системный промпт и своё чтение файлов.
В нашем прогоне задача затронула пять файлов и четыре отдельных этапа: форму, хранение, модуль и тесты. Оркестратор справился. Для правки в паре файлов проще и дешевле остаться в Code.

Результат работы на странице — рабочая форма добавления книг.


Что проверить руками после агента
Агент написал «Готово», но верить на слово пока рано. Перед тем как считать задачу закрытой, пройдитесь по чеклисту:
- Открыть результат и прокликать всё, о чём просили. Ввести в поиск часть названия, часть фамилии, слово в другом регистре. Пощёлкать фильтры, в том числе вместе с поиском. Переключить тему и перезагрузить страницу.
- Проверить пограничные случаи. Пустой поиск, поиск без результатов, жанр, в котором одна книга. Именно на них агенты чаще всего ошибаются.
- Открыть консоль браузера. Нажмите
F12и загляните на вкладку Console: красных ошибок быть не должно. - Посмотреть все изменения целиком. Кнопка See New Changes в конце задачи или git diff, если проект под Git. Ищите лишние файлы, удалённые куски и закомментированный код.
- Сверить правила проекта. Комментарии на месте, библиотек не появилось,
books.jsonне тронут. - Закоммитить результат. Чекпоинты живут только внутри задачи, а нормальный коммит в Git останется навсегда и позволит откатиться в любой момент.
На нашем прогоне агент справился за один заход: поиск и фильтр по жанру работали вместе, счётчик показывал верное число, на запрос «яяя» вместо карточек появлялось «Ничего не нашлось», и тёмная тема переживала перезагрузку страницы. Проверять руками всё равно стоит: в промпте это отдельные пункты, и именно такие мелочи проще всего упустить.
Что ломается чаще всего
Большинство ситуаций, когда кажется, что Zoo Code не работает, сводятся к десятку типовых причин. Собрали их в одном месте в формате «что видите → почему так → что нажать». Почти для всех случаев есть общий первый шаг: открыть View → Output и выбрать в списке справа канал Zoo Code. Там расширение пишет подробные ошибки, которых нет в чате.
- Расширение не появилось в панели после установки. Что видите: установка прошла, а иконки Zoo Code на левой панели нет. Почему так: иконка спрятана под кнопкой с тремя точками из-за нехватки места, или расширение не загрузилось из-за старой версии VS Code. Что нажать: проверить меню с тремя точками внизу левой панели, затем Help → About и убедиться, что версия VS Code не ниже 1.84.0. Если иконки нет и там, выполните в палитре команд
Developer: Reload Window. - Агент молчит после ввода задачи. Что видите: задача отправлена, в чате крутится индикатор или ничего не происходит. Почему так: не указан или не сохранён API-ключ, выбран провайдер без модели или на балансе провайдера закончились деньги. Что нажать: шестерёнка → Providers, проверить ключ, модель и сохранить профиль. Заодно зайти в личный кабинет провайдера и посмотреть баланс.
- Ошибка авторизации по ключу. Что видите: в чате сообщение с кодом 401 или текстом вроде Invalid API key. Почему так: ключ скопирован с пробелом или переносом строки, отозван или вставлен не в того провайдера, например ключ OpenRouter в профиль Anthropic. Что нажать: создать новый ключ у провайдера, вставить его заново в нужный профиль и нажать Save.
- Ошибка 429 и паузы посреди задачи. Что видите: агент периодически останавливается с сообщением о превышении лимита запросов. Почему так: аккаунт провайдера на низком тире, а агент отправляет запросы быстрее разрешённого. Что нажать: в настройках профиля задать паузу между запросами или переключиться на OpenRouter, у которого лимиты обычно свободнее.
- MCP-сервер в списке серый. Что видите: сервер есть в настройках MCP, но индикатор серый или красный, и инструменты не появляются. Почему так: выключен общий тумблер Enable MCP Servers, у сервера стоит
“disabled”: true, не установлен Node.js или на Windowsnpxзапускается безcmd /c. Что нажать: включить тумблер, кликнуть по серверу и прочитать текст ошибки, поправить конфиг кнопкой Edit Global MCP или Edit Project MCP и нажать кнопку перезапуска сервера. - Индексация висит на нуле. Что видите: значок индексации жёлтый или красный, прогресс не двигается. Почему так: Qdrant не запущен или недоступен по указанному адресу, неверен ключ провайдера эмбеддингов или в индекс попала огромная папка вроде
node_modules. Что нажать: проверитьdocker psи адресhttp://localhost:6333/dashboard, пересохранить ключ, добавить тяжёлые папки в.gitignoreили.rooignore, затем Clear Index Data и Start Indexing. - Агент правит не те файлы. Что видите: просили поправить поиск, а изменения появились в посторонних файлах или в копии проекта. Почему так: в VS Code открыта не та папка, в проекте лежат дубликаты файлов, или задача сформулирована слишком размыто. Что нажать: Deny на ненужной правке, затем откат к чекпоинту и новая формулировка с явными путями через
@, например@/app.js. Лишние папки закройте от агента через.rooignore. - Счёт за токены вырос втрое. Что видите: в шапке задачи стоимость заметно больше обычного, баланс тает. Почему так: задача тянется слишком долго и контекст раздулся, подключено много MCP-серверов, агент читает тяжёлые файлы или крутится в цикле, повторяя одну и ту же неудачную правку. Что нажать: Стоп, затем сжать контекст кнопкой в шапке задачи или начать новую задачу. Отключить ненужные MCP-серверы, закрыть тяжёлые файлы через
.rooignoreи поставить лимит расходов на ключе у провайдера. - Агент ломает формат правок. Что видите: в чате повторяются ошибки применения правки, файл не меняется. Почему так: модель плохо держит формат инструментов, чаще всего это бывает с небольшими локальными моделями. Что нажать: переключиться на модель из рекомендованных, например Claude Sonnet 4.5, и повторить задачу.
- Команда в терминале зависла. Что видите: агент ждёт окончания команды, которая не заканчивается, например запущенного сервера. Почему так: команда работает бесконечно по своей природе, а агент ждёт её завершения. Что нажать: кнопку продолжения в чате, чтобы агент шёл дальше, не дожидаясь конца команды. В промпте можно прямо написать, что сервер нужно запускать в отдельном терминале.
Если ни один пункт не подошёл, в документации есть раздел о том, как собрать отчёт об ошибке. Команда Zoo Code разбирает такие отчёты в issues на GitHub и в Discord.
Чем Zoo Code отличается от Cline, Continue и агента VS Code
Zoo Code — далеко не единственный ИИ-агент для VS Code. Рядом живут его прямой предок Cline, открытый ассистент Continue и агентный режим, встроенный в сам редактор вместе с GitHub Copilot. Все четыре умеют читать проект, править файлы и подключать MCP-серверы, так что различия кроются в деталях.
| Инструмент | Модель работы | MCP | Кому подойдёт |
| Zoo Code | Свой ключ к любому провайдеру или кредиты Zoo Gateway; пять режимов с разными правами плюс свои режимы, оркестратор для подзадач | Глобальный и проектный конфиг, маркетплейс серверов, ограничение серверов по режимам | Тем, кто хочет тонко настроить агента под команду и проект и не зависеть от одного поставщика моделей |
| Cline | Свой ключ к любому провайдеру; два основных режима, Plan для обсуждения и Act для выполнения | Встроенный каталог серверов, настройка через файл | Тем, кому нужен тот же агентный подход с более простым интерфейсом |
| Continue | Открытый ассистент со своим ключом или локальными моделями; режимы Chat, Plan и Agent, плюс автодополнение кода | Серверы описываются в общем YAML-конфиге, работают только в режиме Agent | Командам, которым важны автодополнение, локальные модели и одна конфигурация на всё |
| Агент VS Code | Встроенный агентный режим чата GitHub Copilot, модели из подписки Copilot | Встроенная поддержка, серверы прописываются в настройках редактора | Тем, у кого уже есть Copilot и кто не хочет ставить сторонние расширения |
Есть места, где Zoo Code проигрывает, и о них лучше знать заранее.
У Zoo Code нет автодополнения. Он работает только через чат и задачи: подсказок серым текстом по мере набора, как в Copilot или Continue, здесь не будет. Многие ставят Zoo Code вместе с каким-нибудь инструментом автодополнения, и это нормальная связка.
Со стоимостью тоже не всё однозначно. У Copilot фиксированная месячная подписка, и агент внутри неё не выставляет отдельный счёт за каждую задачу. У Zoo Code вы платите за токены напрямую, и при активной работе с дорогой моделью месячный счёт может оказаться выше подписки. Сама документация Zoo Code прямо предупреждает, что агент обходится дороже альтернатив, потому что работает с флагманскими моделями и многошаговыми задачами.
Ещё один момент: порог входа. Режимы, профили, правила, автоодобрение, индексация: настроек у Zoo Code заметно больше, чем у Cline или встроенного агента. Для опытного пользователя это плюс, а новичку первые дни может быть тяжеловато.
Наконец, у Zoo Code молодая команда. Проекту полгода, его поддерживает сообщество. Релизы выходят часто, но гарантий, что так будет всегда, никто не даст. У Cline и Continue за плечами несколько лет развития, у агента VS Code — Microsoft.
Теперь о плюсах. Zoo Code почти не ограничивает в выборе модели: от Claude и GPT до локальной Ollama и десятков других провайдеров. Ни у кого из конкурентов нет такой детальной системы режимов с правами по типам файлов и такого оркестратора. А переезд с Roo Code проходит без потерь, потому что формат настроек совпадает.
Итогового победителя тут нет, всё зависит от задачи. Вот как мы бы выбирали.
Если вы переезжаете с Roo Code или хотите максимально настроить агента под проект и команду, ставьте Zoo Code. Вы получите знакомый интерфейс, все старые режимы и правила, а заодно свободу в выборе моделей.
Если у вас уже есть подписка Copilot и нужен агент для небольших задач без лишних настроек, начните со встроенного агентного режима VS Code. Его хватает для повседневных правок, а сторонние расширения можно подключить позже.
Если важнее всего автодополнение и работа с локальными моделями внутри закрытого контура, присмотритесь к Continue. Он хорош как ассистент на каждый день, но его агентный режим проще, чем у Zoo Code.
Если нужен агент попроще, но той же школы, берите Cline. А если хочется работать с агентом прямо из терминала, почитайте наш гайд по Claude Code: там подход другой, и для некоторых задач он удобнее.
Частые вопросы
Zoo Code бесплатный?
Да, само расширение бесплатное и распространяется под открытой лицензией Apache 2.0. Платить приходится только провайдеру модели за токены: OpenRouter, Anthropic, OpenAI или другому. Если подключить локальную модель через Ollama, работа вообще ничего не будет стоить, кроме электричества. Подписки у Zoo Code нет, а кредиты Zoo Gateway покупаются только по желанию.
Чем Zoo Code отличается от Roo Code?
Zoo Code — это продолжение Roo Code, которое ведёт сообщество после того, как команда Roo весной 2026 года остановила разработку. Внутри тот же код, те же режимы и тот же формат настроек. Roo Code больше не обновляется. Zoo Code получает новые модели, исправления и функции вроде Zoo Gateway, вкладки правил и защиты от опасных команд.
Работает ли Zoo Code в Cursor и Windsurf?
Да, Zoo Code ставится в Cursor, Windsurf, VSCodium и другие редакторы на основе VS Code. Устанавливать его нужно через каталог Open VSX, потому что магазин расширений Microsoft в этих редакторах недоступен. Если в каталоге оказалась старая версия, расширение можно поставить вручную из файла VSIX со страницы релизов на GitHub. Настройки и проектные файлы при этом работают так же, как в VS Code.
Можно ли работать без интернета на локальной модели?
Да, если подключить модель через Ollama или LM Studio, Zoo Code будет работать полностью офлайн после скачивания модели. Но стоит учитывать ограничения. Локальные модели хуже справляются с длинными задачами и чаще ошибаются в формате вызова инструментов, а для комфортной скорости нужна видеокарта с большим объёмом памяти. Для простых правок такой вариант годится.
Безопасно ли включать автоодобрение?
Частично безопасно: чтение файлов, переключение режимов и создание подзадач можно включать без особого риска. Правку файлов и особенно выполнение команд лучше оставить на ручном подтверждении. Документация прямо предупреждает, что автоодобрение даёт агенту доступ к системе и может привести к потере данных. Для команд используйте белый и чёрный списки. Опасные команды вроде rm или git push стоит сразу внести в чёрный список.
Куда класть mcp.json — в проект или в глобальные настройки?
Зависит от того, кому и где нужен сервер. Серверы, которые нужны во всех проектах, например Context7 с документацией библиотек, удобнее держать в глобальном mcp_settings.json. Серверы конкретного проекта, вроде доступа к его базе, лучше положить в .roo/mcp.json и закоммитить для команды. При совпадении имён проектный конфиг перебивает глобальный. Секреты в проектном файле лучше передавать через переменные окружения.
Обязательна ли индексация кодовой базы?
Нет, индексация необязательна: без неё агент тоже работает и ищет по проекту обычным текстовым поиском. Индексация полезна на больших проектах из сотен файлов, где нужно находить код по смыслу. Настроить её можно бесплатно: Qdrant в Docker плюс бесплатный ключ Gemini для эмбеддингов. На маленьком проекте из десятка файлов разницы почти не будет.
Что делать, если модель отвечает мимо задачи?
Сначала уточните формулировку: укажите нужные файлы через @, перечислите ограничения и опишите, как проверить результат. Если агент уже наделал лишнего, откатитесь к чекпоинту и отправьте задачу заново. Помогают правила проекта в .roo/rules/, а сложные задачи лучше отдавать оркестратору. Иногда помогает и обратное: разбить большую задачу на две-три маленькие и отдавать их по очереди. Если ничего не помогает, попробуйте модель посильнее.
Полезный блок со скидкой
Если вам интересно разбираться со смартфонами, компьютерами и прочими гаджетами и вы хотите научиться создавать софт под них с нуля или тестировать то, что сделали другие, — держите промокод Практикума на любой платный курс: KOD (можно просто на него нажать). Он даст скидку при покупке и позволит сэкономить на обучении.
Бесплатные курсы в Практикуме тоже есть — по всем специальностям и направлениям, начать можно в любой момент, карту привязывать не нужно, если что.
Заключение
Zoo Code берёт на себя рутину, которую раньше приходилось делать руками: найти нужные файлы, внести согласованные правки в несколько мест сразу, запустить проверку и починить то, что упало. Расширение бесплатное, работает с любым провайдером моделей и почти без потерь заменяет Roo Code. Взамен оно просит немного внимания: следить за контекстом, чтобы не переплачивать за токены, и проверять правки перед сохранением.
Если хочется сравнить модели, которые можно подключить к агенту, загляните в наш обзор, где собраны лучшие нейросети 2026 года.
Чтобы первый час с Zoo Code прошёл без сюрпризов, пройдитесь по этому чеклисту:
- Установить расширение и проверить издателя
ZooCodeOrganization.zoo-code(раздел «Как установить Zoo Code»). Если переезжаете с Roo Code, сразу перенесите настройки через экспорт и импорт (раздел «Как перенести настройки из Roo Code»). - Подключить модель и поставить лимит расходов на ключ. Для старта подойдёт
anthropic/claude-sonnet-4.5через OpenRouter (раздел «Как подключить модель и API-ключ»). - Настроить автоодобрение по минимуму: чтение файлов и переключение режимов включить, правки и команды оставить на ручном подтверждении (раздел «Автоодобрение действий»).
- Завести файл правил
.roo/rules/01-stack.mdсо стеком и главными запретами проекта (раздел «Правила проекта и кастомные инструкции»). - Дать агенту небольшую задачу на два-три файла и пройти её вместе с ним: смотреть окна сравнения, попробовать откат к чекпоинту и проверить результат руками (раздел «Первый проект от начала до конца»).
MCP-серверы и индексацию стоит подключать уже после этого, когда станет понятно, каких возможностей агенту не хватает в вашем проекте.
Советуем дополнительно почитать
15 скиллов для AI-агентов: один раз настроил — агент запомнил — что такое скиллы с файлом SKILL.md, как их ставить в Claude Code, Cursor и Gemini CLI и какие 15 стоит попробовать.
Harness для ИИ-агента: как устроен и как собрать — код вокруг модели, который отвечает за цикл, инструменты и контекст. В конце собираем минимального агента на Python, который сам чинит упавший тест.
Модели с открытыми весами: что можно запустить у себя бесплатно — чем открытые веса отличаются от открытого кода, как прикинуть, влезет ли модель в видеопамять, и когда локальный запуск дешевле облака.
Ставим и настраиваем Gemini CLI и сравниваем с Claude Code — терминальный агент Google: установка, авторизация, лимиты и отличия от Claude Code. Обновлён 21.10.2026.
Как дебажить LLM — почему модели выдают правдоподобную ерунду, какие бывают типы таких ошибок и какие приёмы повышают точность ответов.
Бонус для читателей
Если вам интересно погрузиться в мир IT и при этом немного сэкономить, держите наш промокод на курсы Практикума. Он даст вам скидку при оплате, поможет с льготной ипотекой или безлимитом на маркетплейсах. Ладно, окей, это просто скидка, без остального, но хорошая.
