# Gemini CLI и Claude Code в промышленной разработке

> Практическое сравнение Gemini CLI и Claude Code по автономности, контексту, цене, безопасности и работе с реальными задачами.

Gemini CLI и Claude Code умеют изучать репозиторий, редактировать файлы, запускать команды и последовательно выполнять составную задачу. Из-за внешнего сходства компании часто выбирают не тот инструмент. Разница проявляется после первой правдоподобной правки: что агент читает, что забывает, какие действия выполняет без остановки, как восстанавливается после ошибки и во сколько обходится завершенная задача.

Мой короткий ответ таков: Claude Code обычно стабильнее как основной агент для реализации задач с неясными условиями, а Gemini CLI особенно привлекателен для широкого исследования, больших объемов входных данных, среды вокруг Google и внедрения с ограниченным бюджетом. Универсального победителя нет. Правильная модель работы дает команде больше, чем спор о местах в рейтинге моделей.

Сравнение быстро устаревает. Для квот и средств контроля я опираюсь на актуальную документацию продуктов, но не считаю название модели или тест самого поставщика долговечным выводом. Имеет значение проверка в чистом рабочем дереве, на типичной задаче, с одинаковыми критериями приемки и ревью получившегося diff.

## Полезное сравнение начинается после первой правки

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

| Вопрос | Gemini CLI | Claude Code |
| --- | --- | --- |
| Лучшая роль по умолчанию | Исследование репозитория, сбор широкого контекста, недорогие эксперименты | Неоднозначные задачи реализации, итеративная отладка, аккуратные локальные изменения |
| Модель автономности | Режимы Default, Auto-Edit, Plan и YOLO с движком политик | Режимы Default, acceptEdits, Plan, auto, dontAsk и bypassPermissions с правилами allow, ask и deny |
| Инструкции проекта | Иерархические файлы `GEMINI.md`, настраиваемые имена файлов, импорты и команды памяти | Иерархический `CLAUDE.md`, правила по областям, импорты, автоматическая память и управление сжатием |
| Восстановление | Необязательные контрольные точки с теневым репозиторием Git плюс возобновление сессии | Автоматические контрольные точки для прямых инструментов редактирования плюс откат диалога и возобновление сессии |
| Начальная цена | Значительная бесплатная квота с аккаунтом Google, затем подписки или оплата API по потреблению | Доступ по подписке Pro или Max, командные планы или оплата API по потреблению |
| Типичный операционный риск | Большой видимый запас контекста подталкивает загружать все подряд | Долгие итеративные циклы расходуют платный лимит и сохраняют устаревшие предположения |

Таблица описывает устройство продуктов, а не качество кода. Результат по-прежнему зависит от выбранной модели, репозитория, запроса, набора инструментов и приемочного теста. Исправление одной строки в зрелом сервисе и миграция между пакетами для агента выглядят как разные продукты.

Я оцениваю агента по пяти моментам: как он формулирует задачу, как ищет, когда начинает редактировать, что запускает после правки и как реагирует на неудачную проверку. Claude Code часто лучше удерживает связь между этими действиями. Gemini CLI часто ищет шире. Узкая работа полезнее, если в задаче скрыты локальные соглашения. Широкая работа полезнее, если сначала нужно найти ответственный модуль или сравнить множество файлов.

Есть неудобная правда: качество агентов способно поменяться местами внутри одного репозитория. Claude может решать серверные задачи с меньшим контролем, а Gemini быстрее находит зависимости интерфейса. Не превращайте рабочее предпочтение в корпоративную религию.

## Автономность задает архитектура разрешений, а не характер

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

Gemini CLI предлагает понятную лестницу. В режиме Default многие операции записи требуют подтверждения. Auto-Edit разрешает инструменты редактирования, но продолжает спрашивать о других действиях. Plan оставляет исследование только для чтения. YOLO автоматически одобряет инструменты, поэтому его место в одноразовой или жестко изолированной среде. Движок политик умеет разрешать, запрещать или запрашивать подтверждение с учетом имени инструмента, префикса команды, аргументов, режима и интерактивности сессии. В документации Google сказано, что глобальный запрет может полностью убрать инструмент из доступного модели контекста. Это лучше, чем надеяться, что агент сам его не выберет.

У Claude Code похожая лестница, но границы немного другие. Default спрашивает при первом использовании. `acceptEdits` разрешает правки файлов и обычные файловые операции в доступных каталогах. Plan исследует проект без изменений исходников. `dontAsk` отклоняет все, что не было разрешено заранее. `bypassPermissions` убирает запросы и подходит только для изолированного контейнера или виртуальной машины. Более новый режим `auto` добавляет фоновые проверки безопасности, но Anthropic называет его исследовательской предварительной версией. Я пока не строил бы на нем политику управления для продакшена.

Оба инструмента отделяют поведенческие инструкции от обязательных ограничений. Строка в `GEMINI.md` или `CLAUDE.md` может попросить модель не читать секреты, но запрет в политике или граница песочницы физически блокирует доступ. Различие существенное. Запросы направляют поведение. Политики клиента и изоляция на уровне операционной системы ограничивают его.

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

Политика Gemini делает такое намерение конкретным:

```toml
[[rule]]
toolName = "run_shell_command"
commandPrefix = "git push"
decision = "deny"
priority = 100

[[rule]]
toolName = "run_shell_command"
commandPrefix = "npm test"
decision = "allow"
priority = 50
```

Claude Code выражает ту же идею через правила разрешения и запрета в настройках. Синтаксис отличается, но вопрос на ревью остается прежним: видит ли другой инженер, какие команды выполняются без остановки, какие блокируются и какие пути остаются недоступными?

Решение о песочнице нужно принимать отдельно. Gemini умеет запускать весь CLI в платформенной или контейнерной изоляции и запрашивать однократное расширение песочницы, когда команде нужен дополнительный доступ. Claude сочетает правила разрешений с песочницей операционной системы для Bash и его дочерних процессов. В обоих инструментах безопасная высокая автономность требует одноразового рабочего дерева в контейнере, без учетных данных и без доступа к развертыванию. Агент может уничтожить свое рабочее пространство, но не должен повредить что-либо еще.

## Работа с контекстом требует отбора, а не накопления

Большое окно контекста не гарантирует понимания репозитория. Агенту все равно нужно выбрать подходящие файлы, сохранить важные факты между ходами и убрать шумный вывод до того, как он вытеснит суть задачи.

Gemini CLI хранит постоянные инструкции в иерархии файлов `GEMINI.md`. Он загружает глобальный контекст, контекст рабочего пространства и отдельных каталогов, импортирует другие файлы и показывает собранный результат командой `/memory show`. Настраиваемое имя контекстного файла удобно в репозиториях с несколькими агентами: команда может попросить Gemini CLI загрузить существующий `AGENTS.md`, а не поддерживать копию правил. В Gemini также есть возобновление сессии, сохраненная память и сжатие контекста.

Claude Code загружает `CLAUDE.md` и `CLAUDE.local.md`, проходя по иерархии каталогов. Файлы ниже рабочего каталога попадают в контекст, когда Claude читает соответствующие поддеревья. Правила проекта могут действовать только на подходящие пути, а автоматическая память хранит выбранные сведения о проекте в локальных файлах Markdown. Документация Anthropic честно признает важный факт: эти файлы расходуют контекст и содержат инструкции, а не обязательные ограничения. Она советует держать `CLAUDE.md` примерно в пределах 200 строк, потому что более длинные файлы хуже соблюдаются.

Длинные сессии проверяют механизм сжатия. Claude Code автоматически пересказывает историю по мере заполнения контекста. Корневой `CLAUDE.md` заново читается после сжатия, а инструкции только из диалога могут исчезнуть, если пересказ их не сохранил. Gemini CLI тоже сжимает длинную историю и повторно загружает свою систему постоянного контекста. В обоих случаях долговечные ограничения должны лежать в инструкциях репозитория, а не в запросе сорокаминутной давности.

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

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

Широкий контекст Gemini помогает, когда доказательства действительно разбросаны, например при трассировке события через несколько сервисов или сравнении повторяющихся схем. Выборочная загрузка файлов и зрелое сжатие Claude часто ощущаются управляемее во время долгого цикла реализации. Но выбирать все равно стоит по измеренной задаче: чистая структура репозитория стирает значительную часть различий, а хаотичная побеждает оба инструмента.

## Цену нужно считать на принятую задачу

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

Документация по квотам Gemini CLI указывает 1000 запросов к модели на пользователя в день для частных пользователей, которые входят через аккаунт Google. Google AI Pro увеличивает лимит до 1500, а Ultra до 2000. Бесплатный ключ Gemini API дает 250 запросов и работает только с Flash. Платные варианты с ключом API и Vertex AI тарифицируются по потреблению, а корпоративные подписки Code Assist дают фиксированные квоты. На текущей американской странице Google One цена Google AI Pro составляет $19,99 в месяц, хотя региональные цены и состав пакета различаются.

Claude Code входит в индивидуальный план Pro, который стоит $20 в месяц или дешевле при годовой оплате, а Max начинается со $100 в месяц. Для командных мест и корпоративных соглашений действуют другие лимиты. При входе через Console оплата API зависит от числа токенов, а маршруты через облачных поставщиков подчиняются их тарифам. Вывод `/usage` от Anthropic показывает оценку токенов и цены сессии для пользователей API, а подписчики видят расход лимита плана, а не осмысленный счет за отдельную сессию.

Начальные цены подписок выглядят близко, но лимиты нельзя сравнивать напрямую. Запрос Gemini не равен сообщению Claude, а один агентный ход способен вызвать разное число обращений к модели, результатов инструментов, повторов, чтений кеша или решений маршрутизации. Лимиты подписок могут обновляться по разному расписанию. Отдел закупок не нормализует эти продукты, разделив месячную цену на опубликованное число запросов.

Для каждой завершенной задачи отслеживайте четыре показателя:

- Минуты человека на запросы, подтверждения, исправления и ревью
- Стоимость работы агента или долю израсходованного лимита подписки
- Минуты CI и расходы внешних инструментов, вызванные запуском
- Минуты доработки после первого ревью

Затем считайте цену принятой задачи и цену принятого изменения внутри каждой категории размера. Не смешивайте мелкие исправления с миграциями. Если один инструмент обходится на $40 в месяц дороже на разработчика, но экономит два часа ревью старшего инженера, разница в цене несущественна. Если команде требуются планы Max из-за того, что сессии постоянно сжигают контекст на плохо ограниченных задачах, сначала исправьте процесс, а потом покупайте более высокий потолок.

Gemini CLI выигрывает по цене испытания с низким риском, потому что бесплатная индивидуальная квота позволяет провести содержательную оценку. Цена входа в Claude Code Pro легко оправдывается для работающего инженера, но тяжелые параллельные сессии могут подтолкнуть к Max или оплате API. Проводите пилот с включенной телеметрией расходов. Память не заменяет бухгалтерию.

## Честная проверка на реальных задачах укладывается в неделю

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

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

Создайте два чистых рабочих дерева из одного коммита:

```bash
git worktree add ../trial-gemini trial-base
git worktree add ../trial-claude trial-base
cd ../trial-gemini
git status -s
```

Ожидаемый вывод последней команды пуст. Запишите коммит через `git rev-parse HEAD`, используйте одинаковые локальные зависимости и отключите сеть, если задача ее не требует. Дайте обоим агентам одинаковые критерии приемки, но разрешите использовать родные средства планирования и контекста. Единый искусственный запрос, который выключает сильные стороны продуктов, дает аккуратное, но бесполезное сравнение.

Используйте такую оболочку задачи:

```text
Goal: Fix the duplicate invoice event described below.
Scope: billing-worker and its tests. Do not change generated clients.
Acceptance: the focused test passes, the full billing suite passes, and no public API changes.
Evidence: report files changed, commands run, and any remaining uncertainty.
Stop: do not install packages, access the network, or commit.
```

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

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

При ревью diff отвечайте на конкретные вопросы. Агент изменил самый узкий правильный слой? Добавил регрессионный тест, который падает без исправления? Сохранил публичное поведение? Оставил комментарии, объясняющие код, или пересказал в них сессию? Спрятал неудачную команду за уверенным отчетом? Решение, которое проводит тесты за счет ослабления проверки, провалено даже при зеленых отметках.

Повторите хотя бы одну задачу, поменяв порядок инструментов. Оценщик учится на первом запуске и может неосознанно дать второму агенту более точный запрос, поэтому чередуйте продукт, который идет первым. Сохраняйте исходные диалоги, итоговые diff, журналы команд и оценочные листы. Обновления моделей рано или поздно обесценят рейтинг, но стенд для проверки останется полезным.

## Результат на реальной задаче зависит от ее формы

Claude Code обычно получает первую попытку, если условия неполны, а в репозитории действуют строгие локальные соглашения. Он часто сохраняет связную линию реализации через поиск, правку, тест и исправление. Это заметно при отладке, когда первый падающий тест указывает на симптом, а не на причину. Интерфейс контрольных точек и отката также делает итеративное исследование спокойнее, если изменения прошли через отслеживаемые инструменты редактирования.

Gemini CLI получает первую попытку, когда поиск важнее реализации. Его система контекста, интеграция с поиском Google там, где это разрешает политика, настраиваемые имена файлов инструкций и широкий набор инструментов подходят для исследований между каталогами или источниками данных. Бесплатная квота позволяет поставить его каждому инженеру для периодического анализа, а не только постоянным пользователям.

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

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

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

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

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

Мое общее предпочтение поэтому зависит от условий: Claude Code для основного цикла реализации, Gemini CLI для широкого исследования и недорогого второго мнения. Другой репозиторий способен поменять их местами. Без проверки я готов защищать только одно мнение: команда не должна выдавать ни одному агенту производственные полномочия лишь потому, что его код выглядит зрелым.

## Худшие сбои выглядят как продуктивная работа

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

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

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

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

У средств восстановления тоже есть границы. Контрольные точки Claude Code не отслеживают файлы, измененные произвольными командами Bash. Контрольные точки Gemini по умолчанию выключены и требуют настройки. Ни одна функция не заменяет Git. Работайте в чистом рабочем дереве, изучайте `git diff` и создавайте коммит только после ревью человеком. Кнопка отката удобна, а известный начальный коммит дает доказательство.

## Выберите командный стандарт и оставьте запасной путь

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

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

Выбирайте Gemini CLI по умолчанию, если часто нужен широкий анализ, среду уже определяют Google Cloud и его система доступа или организации важен полноценный бесплатный вход. Платформенным командам стоит внимательно изучить движок политик. Проверяйте именно тот способ аутентификации, который собираетесь внедрить: личный вход, корпоративный Code Assist, ключи API и Vertex AI различаются квотами, оплатой и условиями работы с данными.

Оставьте оба инструмента, если у второго есть четкая роль. Например, один агент реализует задачу, а другой проверяет diff, или Gemini составляет карту миграции, а Claude выполняет ограниченное изменение пакета. Не запускайте двух агентов одновременно в одном рабочем дереве. Разведите их по отдельным деревьям и сравните результаты до слияния, иначе они перезапишут файлы и испортят доказательства друг друга.

В oleg.is я оцениваю эти инструменты как части инженерной операционной системы, а не как отдельные подписки. Team & AI Audit имеет смысл только тогда, когда показывает, какую работу можно передать агентам, где контроль должен остаться у людей и как выглядит экономика принятой задачи.

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

## Для продакшена нужна письменная рабочая политика

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

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

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

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

Если выбирать нужно сегодня без пилота, дайте Claude Code основное место реализации, а Gemini CLI установите для исследований с бесплатной квотой. Затем назначьте испытание. Стандарт по умолчанию задает исходную позицию, а не окончательный вердикт, и первый отклоненный производственный diff научит вас большему, чем еще одна сравнительная таблица.
