Авторство: hackeryaroslav
Источник: xss.pro
Интро
Всем привет! Это, можно сказать, продолжение моей предыдущей статьи (вот ссылка, если кто пропустил: https://xss.pro/threads/135599/). Судя по откликам, тема ИИ вам очень даже зашла, и это круто – рад, что всё больше людей интересуются этими технологиями.Я не пропал, я лишь долго искал о чем можно написать![]()
А тут как раз свежая новость подоспела. Буквально вчера Google выкатила новый инструмент для кодеров – автономного агента Gemini CLI. Он опенсорсный. Я когда это увидел, прям заинтересовался.
О самой технологии
Пожалуй, вкусное – это условия для индивидуальных разработчиков. Логинитесь с обычного гугл-аккаунта и получаете бесплатную лицензию Gemini Code Assist, а с ней – доступ к Gemini 2.5 Pro с его огромным контекстным окном в 1 миллион токенов. А лимиты... ну: 60 запросов в минуту и 1000 в день. Бесплатно. Это, честно говоря, очень щедро, я бы сказал, почти безлимит для большинства задач на первое время. Если нужно больше или какие-то специфичные модели – там уже через AI Studio или Vertex AI с оплатой по факту, или через платные подписки Code Assist.
Упор, конечно, на кодинг. Gemini CLI умеет и многое другое: генерация контента, решение проблем, какой-то ресёрч и даже управление задачами. В общем, такая универсальная локальная утилита. Плюс, его интегрировали с Google AI Code Assist. Так что, если вы уже пользуетесь Code Assist (в VS Code, например), то теперь эти два инструмента работают на одной технологии. Это, по идее, должно обеспечить какой-то консистентный опыт, что неплохо.
Как это всё работает под капотом? Есть встроенные инструменты. Например, он может использовать Google Search, чтобы подтягивать актуальную инфу из веба. Это полезно, чтобы модель не галлюцинировала на пустом месте, основываясь только на данных своего обучения. Можно расширять его возможности через Model Context Protocol (MCP) или какие-то свои расширения. И, само собой, кастомизировать промпты и инструкции под свои нужды и рабочие процессы. Даже автоматизировать задачи, вызывая Gemini CLI неинтерактивно из скриптов.
И вот тут важный момент, который я уже упоминал – это опенсорс (Apache 2.0). Можно самому посмотреть код, понять, как оно там всё устроено, проверить безопасность. Google прямо говорит, что ждёт комьюнити: репорты багов, предложения фич, улучшения безопасности и пул-реквесты. Всё это на GitHub (https://github.com/google-gemini/gemini-cli). И, конечно, возможность расширять его – это всегда плюс. Строили его с учётом возможности расширения, используя стандарты вроде MCP и системных промптов через
GEMINI.md.Теперь про настройку. Тут, конечно, Google постаралась дать гибкость. Есть несколько уровней конфигурации: дефолтные значения, пользовательский файл настроек (
~/.gemini/settings.json), проектный файл настроек (.gemini/settings.json в вашем проекте), переменные окружения и аргументы командной строки. Приоритет, как обычно: более специфичные настройки (например, из командной строки) перекрывают более общие (например, дефолтные).Файлы
settings.json – это обычный JSON, и там можно даже ссылаться на переменные окружения, что удобно. В проектной папке .gemini могут лежать и другие специфичные для проекта штуки, например, кастомные профили для песочницы.Что там можно настраивать? Да много всего: имя файла контекста (по умолчанию
GEMINI.md), команду для репорта багов, фильтрацию файлов (учитывать ли .gitignore, включить ли рекурсивный поиск файлов при автодополнении префиксов @), какие тулзы из ядра доступны модели, а какие исключить. Можно даже настроить авто-принятие безопасных команд (read-only операции, например), чтобы каждый раз не подтверждать. Тему оформления, конечно же, тоже можно сменить.Есть параметры для песочницы (включить/выключить, какой образ использовать), кастомные команды для обнаружения и вызова тулзов из вашего проекта, подключение к MCP серверам для ещё более кастомных инструментов. И, разумеется, настройки для чекпоинтов (сохранение/восстановление сессий) и телеметрии (её можно настроить или отключить, если что).
Отдельно хочется сказать про "контекстные файлы" (по умолчанию
GEMINI.md, но имя можно изменить в настройках). Это, по-моему, очень мощная фича. Идея в том, чтобы давать модели инструкции, гайды по стилю кодирования, или любую другую фоновую информацию специфичную для вашего проекта. Эти файлы загружаются иерархически: из домашней директории пользователя (~/.gemini/GEMINI.md), из корня проекта и его родительских папок, и даже из поддиректорий (но с учётом всяких .gitignore и прочих исключений, чтобы не сканировать node_modules, например). Более специфичные файлы как бы дополняют или переопределяют общие. В CLI даже есть индикатор, сколько таких файлов загружено, и команды /memory refresh и /memory show, чтобы этим управлять. Очень полезно, чтобы ИИ лучше понимал, что вы от него хотите в рамках конкретного проекта. Можно туда записать что-то вроде: "Когда генерируешь TypeScript код, используй 2 пробела для отступов и префикс I для интерфейсов".Про безопасность тоже подумали. Есть возможность запускать потенциально небезопасные операции (типа выполнения шелл-команд или модификации файлов) в песочнице. По умолчанию она выключена, но можно включить флагом (
--sandbox или -s) или переменной окружения GEMINI_SANDBOX. Используется Docker-образ gemini-cli-sandbox. Можно даже свой Dockerfile для песочницы подсунуть в проект (.gemini/sandbox.Dockerfile), если стандартный не подходит. Это хорошо, дает какой-то контроль.Ещё момент: сбор статистики использования. Google говорит, что собирают анонимные данные, чтобы улучшать инструмент: какие тулзы вызываются, успешно ли, время выполнения. API запросы тоже логгируются (модель, длительность, успех), информация о конфигурации CLI. Важно, что они не собирают, по их словам: персональные данные (PII), содержимое промптов и ответов, содержимое файлов. И да, это можно отключить в
settings.json (параметр usageStatisticsEnabled: false), если вы параноик... или просто не хотите делиться.Конечно, есть и куча переменных окружения для более тонкой настройки:
GEMINI_API_KEY (обязательно!), GEMINI_MODEL, ключи и ID проектов для Google Cloud, пути к кредам, настройки для Seatbelt на macOS, и даже всякие DEBUG_MODE и NO_COLOR. CLI также автоматически подгружает переменные из .env файлов, ища их сначала в текущей директории, потом выше по дереву, и в итоге в домашней директории. Удобно.Аргументы командной строки тоже есть:
--model (или -m), --prompt (-p для неинтерактивного режима), --sandbox (-s), --debug_mode (-d), и даже --yolo (автоматически одобряет все вызовы инструментов, будьте осторожны с этим).Как выглядит все на практике?
Ну что ж, давайте посмотрим, как эта вся красота (или пока не совсем красота) выглядит на практике. Я немного потыкал Gemini CLI, и вот какие впечатления.
Сам интерфейс, кстати, вполне себе юзабельный. Если с английским дружите, то освоиться не проблема, всё довольно интуитивно. Но вот дальше начинаются нюансы, как говорится.
Первое, что бросается в глаза, и тут я буду честен – инструмент пока сыроват. Да, потенциал чувствуется, но до того, чтобы он был "таким крутым, как пишут", ему ещё, на мой взгляд, нужно дозреть. Баги случаются, и порой довольно неожиданные.
Вот, например, решил я потестировать его с MCP-сервером. Помните, в прошлой статье я упоминал один, который просто собирает инфу о компе? Взял его же для чистоты эксперимента. Claude, кстати, с ним отлично справился, на все вопросы по данным с сервера отвечал как надо.
А вот Gemini... тут всё пошло интереснее. Даю ему запрос проверить статистику – используя единственный доступный ему через MCP файл, он вместо этого взял и сгенерил совершенно новый скрипт(( Написал-то его, надо отдать должное, неплохо))
Итог
Итак, что мы имеем на сегодня? Gemini CLI – это, безусловно, шаг вперёд. Идея интегрировать мощную ИИ-модель прямо в терминал – она классная, и потенциал у этого инструмента огромный, особенно учитывая его открытость и щедрые лимиты для индивидуальных разработчиков. Я прям вижу, как это могло бы изменить многие рабочие процессы, если всё будет работать как часы.Но, как это часто бывает с новыми технологиями, особенно на ранних этапах, есть и "детские болезни". Сырость, баги, не всегда предсказуемое поведение – всё это присутствует. Тот же MCP-сервер он не смог обработать так гладко, как хотелось бы, а зацикливания могут подпортить впечатление от работы.
Кстати, вы могли заметить, что в этой статье я немного изменил формат: старался делать меньше громоздких абзацев, а больше коротких, легко перевариваемых предложений. Надеюсь, такой подход поможет привлечь больше новичков и сделает понимание даже сложных штук чуточку проще. По крайней мере, я на это рассчитываю!)