Серия «gemini-cli»

11

Gemini CLI: Знакомство и первые шаги

Дисклеймер. На пикабу все еще не завезли редактор кода, поэтому картинки. Кто не любит картинки может почитать статью на github

Gemini CLI — это инструмент, который работает прямо в вашем терминале, понимает вашу кодовую базу и помогает исправлять ошибки с помощью запросов на естественном языке. Это ответ Google на Claude Code от Anthropic. Вы можете использовать Gemini 2.5 Pro (при достижении лимита инструмент переключится на Gemini 2.5 Flash) и его контекстное окно в 1 миллион токенов для выполнения до 60 запросов в минуту и 1000 запросов в день, и все это бесплатно.

Содержание

  • Понимание и навигация по большим кодовым базам

  • Обнаружение и исправление ошибок

  • Написание и тестирование кода

  • Инструменты Gemini CLI

  • Интеграция Google CLI с MCP

Ключевые возможности Gemini CLI:

  • Редактирование и рефакторинг: Автоматически улучшает и упрощает ваш код под руководством ИИ.

  • Обнаружение и исправление ошибок: Находит баги и предлагает исправления.

  • Понимание кода: Gemini CLI может обобщать архитектуру, объяснять роли модулей или строить карты потоков выполнения.

  • Генерация тестов: Автоматически создает тестовые задания для pytest

  • Поддержка документации: Вы можете создавать структурированные markdown-документы, списки изменений (changelogs) и ответы на GitHub issues прямо в терминале.

  • Исполнение команд: Gemini CLI может выполнять команды оболочки, такие как git, npm, pip и другие, что позволяет вам управлять проектами без выхода из CLI.


Шаг 1: Предварительные требования

Для начала установите Node.js (версия 18 или выше). Вы можете скачать установщик по вашему выбору или выполнить следующие bash-команды в вашем терминале:

Скачивание и установка nvm (Node Version Manager):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install... | bash

Инициализация nvm в текущей сессии терминала
. "$HOME/.nvm/nvm.sh"

Скачивание и установка Node.js (например, версии 22):
nvm install 22
Проверка версии Node.js:
node -v # Должно вывести "v22.17.0" или похожее
Проверка версии npm:
npm -v # Должно вывести "10.9.2" или похожее

Шаг 2: Настройка Gemini CLI

Шаг 2.1: Установка Gemini CLI

Когда Node.js и npm установлены и проверены, установите Gemini CLI, выполнив следующую команду в вашем терминале:
npx https://github.com/google-gemini/gemini-cli

Или используйте npm для глобальной установки:
npm install -g @google/gemini-cli gemini

После установки введите gemini в терминале, чтобы получить доступ к инструменту.

Шаг 2.2: Аутентификация

Вы можете использовать ваш личный аккаунт Google для аутентификации.

Gemini CLI: Знакомство и первые шаги Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост

Это предоставит вам до 60 запросов в минуту и 1000 запросов в день при использовании Gemini. В этом руководстве я использовал Вход через Google, но вы также можете использовать API-ключ (установленный как переменная окружения или в файле .env) или аутентификацию через Vertex AI.

Чтобы сгенерировать новый API-ключ, войдите в AI Studio с вашим аккаунтом Google и нажмите "Создать API-ключ".

Установка ключа как переменной окружения
export GEMINI_API_KEY="Your_API_Key"
или создайте файл .env
GEMINI_API_KEY="Your_API_Key"

Вы можете использовать команду /auth в текстовом поле для переключения метода аутентификации по мере необходимости.


Шаг 3: Настройка проекта в Gemini CLI

Введите в терминале команду gemini

Gemini CLI: Знакомство и первые шаги Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост

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

1. Начать новый проект

Чтобы начать проект с нуля, выполните следующие команды:

cd new-project/
gemini

Внутри CLI используйте промпт для решения интересующей вас проблемы, например:

Напиши код кодировщика для трансформера с нуля.

Дайте разрешение на запись файлов:

Gemini CLI: Знакомство и первые шаги Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост

2. Работать с существующим проектом

Если у вас уже есть кодовая база, вы можете работать с ней, выполнив следующие команды:

git clone https://github.com/username/project.git
gemini

Внутри CLI используйте промпт, например:

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


Шаг 4: Эксперименты с Gemini CLI

В качестве примера я буду использовать проект Планировщик 🌍🛫 путешествий на базе ADK. С помощью Gemini CLI я покажу как:

  1. исследовать кодовую базу

  2. обнаружить ошибку или проблему на GitHub или в файле

  3. провести рефакторинг кода и сгенерировать юнит-тесты

  4. создать markdown-отчет о внесенных изменениях

  5. визуализировать кодовую базу, сгенерировав блок-схему

Исследование и понимание кодовой базы

Начнем с того, что попросим Gemini исследовать и объяснить кодовую базу.

Промпт:

Исследуй текущий каталог и опиши архитектуру проекта.

Gemini CLI вернет структурированное резюме, объясняющее архитектуру:

  • Пользовательский интерфейс: Приложение на Streamlit (travel_ui.py) предоставляет интерфейс для взаимодействия.

  • Оркестрация: host_agent действует как центральный координатор.

  • Специализированные агенты: flight_agent, stay_agent, activities_agent для поиска авиабилетов, отелей и развлечений.

  • Коммуникация: Агенты общаются друг с другом через RESTful API на FastAPI.

  • Общие компоненты: shared/schemas.py определяет общие структуры данных.

Это поможет сориентироваться, не читая каждый файл вручную.

Анализ и исправление проблемы на GitHub

Исследуем некоторые открытые проблемы из репозитория GitHub.

Промпт:

Вот проблема на GitHub: [@Search https://github.com/AashiDutt/Google-Agent-Development-Kit-De...]. Проанализируй кодовую базу и предложи 3-шаговый план исправления. Какие файлы/функции следует изменить?

Gemini CLI исследовал проблему:

  • Используя функцию @search, он получил данные с GitHub.

  • Определил основную причину как ошибку сериализации JSON (в данном случае, асинхронная функция create_session() не была вызвана с await).

  • Предложил изменения и обработку ответа в нескольких файлах.

Далее CLI ожидает ввода от пользователя для оценки изменений. Если пользователь согласен, он внесет предложенные изменения.

Внедрение и тестирование исправления

Теперь внедрим и протестируем предложенные Gemini исправления.

Промпт:


Напиши юнит-тест для этого изменения в pytest в файле test_shared.py.

Gemini CLI:

  • Вставил json.dumps() перед отправкой полезной нагрузки задачи.

  • Создал test_agents.py для добавления юнит-тестов.

  • Добавил новый тестовый случай для проверки схемы и передачи вложенных сообщений агентов.

Генерация документации

Теперь, когда исправления внесены, подведем итоги изменений и запишем их в Markdown в файле .txt.

Промпт:

Напиши markdown-сводку об ошибке, исправлении и тестовом покрытии. Отформатируй это как запись в журнале изменений под версией "v0.2.0".

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

Промпт:

Сохрани эту сводку в файл .txt и назови его summary.txt

Gemini CLI использует инструмент WriteFile для сохранения файла summary.txt в каталоге проекта.

Доступные инструменты Gemini CLI

Вызов команды /tools в Gemini CLI, покажет список доступных инструментов, которые можно использовать для выполнения различных задач, таких как редактирование кода, генерация тестов, создание документации и многое другое.

Gemini CLI: Знакомство и первые шаги Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост

ReadFolder (ls) Перечисляет файлы и папки в директории — аналог команды ls в командной строке.

ReadFile (read-file) Читает полное содержимое одного файла, что полезно для создания сводок или анализа.

ReadManyFiles (read-many-files) Читает несколько файлов одновременно, обычно по шаблону (например, все файлы .js).

FindFiles (glob) Ищет файлы по шаблону (например, найти все файлы config.json в вашем проекте).

SearchText (grep) Ищет текст внутри файлов, например, для нахождения всех комментариев TODO.

Edit (edit) Применяет изменения в коде с помощью diff. Gemini показывает предварительный просмотр правок и запрашивает подтверждение перед их применением.

WriteFile (write-file) Создает новые файлы (например, README.md) с содержимым, предоставленным пользователем.

Shell (shell) Выполняет команды непосредственно в терминале, если вы добавляете перед ними префикс ! (например, !npm test).

WebFetch (web-fetch) Загружает контент из веба (HTML или JSON), позволяя Gemini анализировать внешние данные.

GoogleSearch (web-search) Выполняет поиск в Google, чтобы основывать ответы на реальной информации (например, для поиска объяснения ошибки).

Save Memory (memoryTool) Сохраняет факты или предпочтения во время сессии (например, «я предпочитаю async/await»), чтобы улучшить последовательность и согласованность ответов.

Расширенные возможности

Вы можете добавлять специальные инструкции для ИИ для конкретного проекта, создав файл GEMINI.md в корневом каталоге вашего проекта. Внутри этого файла вы можете определять правила проекта, стили кода и инструменты, которые должен использовать агент. Это гарантирует, что сгенерированный код соответствует стандартам вашего проекта.

Пример системной инструкции

Интеграция Google CLI с MCP

Для большинства повседневных задач будет достаточно встроенных инструментов. Но что, если вы хотите, чтобы Gemini CLI делал что-то узкоспециализированное, например, взаимодействовал с определенными API или использовал специализированную модель (скажем, генератор изображений или инструмент для анализа безопасности)? Именно здесь на помощь приходит MCP (протокол модельного контекста).

По сути, MCP — это открытый стандарт, который позволяет разработчикам добавлять в ИИ новые инструменты и возможности путем запуска сервера, с которым может взаимодействовать CLI. В Gemini CLI вы можете настроить «MCP-серверы» в файле настроек JSON, и CLI будет рассматривать их как дополнительные инструменты, которые он может использовать.

Как настроить MCP-сервер в Google CLI

В качестве примера я покажу вам, как настроить MCP-сервер для GitHub в Gemini CLI.

Внутри папки вашего проекта создайте папку с помощью команды:

mkdir -p .gemini && touch .gemini/settings.json

Заполните файл этим кодом:

Gemini CLI: Знакомство и первые шаги Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост

инструкция как получить токен

После этого введите /quit в Gemini CLI, чтобы выйти, а затем снова откройте его. Вы увидите, что MCP-сервер GitHub запущен и готов к использованию.

Gemini CLI: Знакомство и первые шаги Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост


Введите команду /mcp, и вы увидите список инструментов GitHub.

Gemini CLI: Знакомство и первые шаги Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост

Удачи!
Полезно? Подпишись!

UPD:

Вторая часть: Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2)

Третья часть: Gemini-cli. Часть 3. Интеграция с vs code

Показать полностью 7
8

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2)

Первая часть «Gemini CLI: Знакомство и первые шаги»

Дисклеймер. На Пикабу до сих пор не завезли редактор кода, поэтому картинки. Кому не нравятся картинки — может почитать статью на GitHub.

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2)

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

Механизм выполнения сценариев

Ключевая идея — использовать .md файлы как "рецепты" или "сценарии" для Gemini. Внутри такого файла мы на естественном языке описываем последовательность действий, которые должен выполнить ИИ.

Для запуска сценария мы будем использовать встроенный инструмент ReadFile. Мы просто попросим Gemini прочитать файл с инструкциями и выполнить их.

Основная команда для запуска любого сценария:

> Прочитай и выполни инструкции из файла 'имя_сценария.md'

Теперь давайте рассмотрим несколько полезных сценариев.

Создайте директорию scenarios.

/path/to/gemini-cli > mkdir scenarios

в ней мы будем хранить наши сценарии.

Сценарий: "Аудит Git-репозитория"

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

  1. В дирекрории scenarios Создайте файл git-health-check.md со следующим содержимым:

    Ты — опытный Git-инженер. Твоя задача — провести полный аудит текущего репозитория. Выполни следующие шаги строго по порядку и дождись моего подтверждения для каждой команды:
    1. **Проверь статус:** Покажи мне текущий статус репозитория, чтобы увидеть неотслеживаемые или измененные файлы. Предложи команду `!git status`.
    2. **Запроси обновления:** Получи последние изменения с удаленного сервера, но не применяй их. Предложи команду `!git fetch origin`.
    3. **Сравни ветки:** Покажи мне разницу между моей локальной веткой `main` и удаленной `origin/main`. Предложи команду `!git log main..origin/main --oneline`.
    4. **Найди большие файлы:** Найди 5 самых больших файлов в проекте, которые не находятся в `.git`. Предложи команду `!find . -type f -not -path "./.git/*" -printf "%s %p\n" | sort -rn | head -n 5`.
    5. **Подведи итог:** В конце кратко опиши состояние репозитория на основе полученных данных.

  2. Запустите сценарий в Gemini CLI:

    > Прочитай и выполни сценарий 'git-health-check.md'

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

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

Шаг 1: Проверка статуса

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Ответ Gemini:

>✦ Я — опытный Git-инженер. Начинаю аудит вашего репозитория.

> Шаг 1: Проверка статуса

>Чтобы проверить текущий статус репозитория и увидеть неотслеживаемые или измененные файлы, я выполню команду `git status`.

Исполнения команды git status...

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Ответ Gemini:

✦ Ошибка: C:\Users\user\Documents\repos не является Git-репозиторием. Пожалуйста, укажите, в каком из подкаталогов мне следует запустить аудит. Например, public_repositories.

Просим создать новый репозиторий. Ответ Gemini:

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Ответ Gemini:

✦ Отлично, Git-репозиторий создан. Теперь я могу продолжить аудит.
Выполняю git status, чтобы проверить наличие неотслеживаемых файлов.

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git
Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Ответ Gemini:

✦ В репозитории много неотслеживаемых файлов и папок. Чтобы продолжить, мне нужно добавить их в индекс. Я добавлю все файлы.

ok

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Во время выполнения команды произошла ошибка

error: pathspec 'commit"' did not match any file(s) known to git

Ответ Gemini:

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

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git
Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

На этот раз получилось!

Ответ Gemini:

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

Теперь gemini удалит временный файл с сообщением коммита. gemini cli по очереди применяет релевантную команду (`rm`, `del`)

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Шаг 2: Запрос обновлений

Поскольку удаленный репозиторий не существует, gemini cli получит ошибку. Обратите внимание, что она сама ожидает ошибку, но обязана выполнить команду т.к. она записана в сценарии `git-health-check.md`

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Шаг 3: Сравнение веток

Здесь также будет ошибка, поскольку ветка main не существует.

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Шаг 4: Поиск больших файлов

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Команда `find` не сработала, потому что в Windows нужно использовать `dir`. Gemini сама исправит ошибку и предложит правильную команду. Далее gemini cli рассуждает о следующих действиях:

Ответ Gemini:

✦ THINK: The user wants me to find the 5 largest files in the project.
The previous command find . -type f -not -path \"./.git/*\" -printf \"%s %p\\n\" | sort -rn | head -n 5 failed because find, sort, and head are not native Windows commands. I need to use a PowerShell equivalent.
1. Get all files: Get-ChildItem -Recurse -File
2. Exclude .git directory: Where-Object { $_.FullName -notlike "*\.git\*" }
3. Sort by size (descending): Sort-Object -Property Length -Descending
4. Select the top 5: Select-Object -First 5
5. Format the output: ForEach-Object { "{0} {1}" -f $_.Length, $_.FullName }

Let's combine these into a single PowerShell command.Похоже, что find и head не доступны в вашей среде Windows. Я использую PowerShell, чтобы выполнить ту же задачу.

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Снова неудача

gemini cli продолжает рассуждать о том, что делать дальше:
Ответ Gemini:

✦ THINK: The user wants to find the 5 largest files.

The PowerShell command is still not executing correctly. It seems that the pipe | and special characters are being misinterpreted by the shell when passed as a single command string.

I will try to execute the command by first saving the script to a file and then executing the file with PowerShell.

1. Create a PowerShell script file (find_large_files.ps1).
2. The content of the script will be: Get-ChildItem -Recurse -File | Where-Object { $_.FullName -notlike "*\.git\*" } | Sort-Object -Property Length -Descending | Select-Object -First 5 | Format-Table Length, FullName -AutoSize
3. Execute the script using powershell -File find_large_files.ps1.
4. Delete the script file.

Похоже, что передача сложных команд в PowerShell напрямую вызывает проблемы.

Я создам временный файл сценария PowerShell, выполню его, а затем удалю.

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

На этот раз все получилось!

Шаг 5: Итог

gemini cli подводит итог:

Состояние репозитория:
* Локальный репозиторий: Инициализирован, и все файлы в корневой папке C:\Users\user\Documents\repos были добавлены в первый коммит.
* Удаленный репозиторий: Не настроен. Нет удаленного origin, поэтому невозможно получить обновления или сравнить ветки.
* Большие файлы: Обнаружено несколько очень больших файлов, в основном в подкаталогах venv и public_repositories. Самые большие из них — библиотеки .lib и архивы .zip. Рекомендуется добавить пути, содержащие большие бинарные файлы (например, venv, *.zip), в файл .gitignore, чтобы избежать их попадания в репозиторий. Аудит завершен.

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2) Программирование, Инструкция, Gemini, Cli, Искусственный интеллект, IT, Длиннопост, Git

Сценарий: "Очистка Docker-окружения"

Docker со временем накапливает множество ненужных образов, контейнеров и сетей. Этот сценарий поможет безопасно всё почистить.

  1. Создайте файл docker-cleanup.md:

    Ты — DevOps-инженер, ответственный за чистоту системы. Твоя задача — безопасно очистить Docker-окружение. Действуй по шагам:

    1. **Покажи запущенные контейнеры:** Сначала выведи список всех активных контейнеров, чтобы я мог убедиться, что не остановлю что-то важное. Предложи `!docker ps`.

    2. **Останови все контейнеры:** После моего одобрения предложи команду для остановки ВСЕХ запущенных контейнеров. Команда: `!docker stop $(docker ps -q)`.

    3. **Глобальная очистка:** Теперь выполни полную очистку системы от "висячих" (dangling) образов, остановленных контейнеров, неиспользуемых сетей и кэша сборки. Предложи самую безопасную и эффективную команду `!docker system prune -af`.

    4. **Отчет:** После выполнения сообщи, сколько места было освобождено, основываясь на выводе последней команды.

  2. Запустите сценарий в Gemini CLI:

    > Прочитай и выполни сценарий очистки Docker из файла 'docker-cleanup.md'

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


Сценарий: "Запуск системных приложений"

Как и было Gemini отлично справляется с запуском приложений. Давайте формализуем это в виде простого сценария для Windows.

  1. Создайте файл open-windows-tools.md:

    Ты — системный администратор Windows.

    Твоя задача — открывать системные утилиты по запросу.

    - Если я прошу "планировщик задач", предложи запустить `!taskschd.msc`.

    - Если я прошу "редактор реестра", предупреди об опасности и предложи запустить `!regedit`.

    - Если я прошу "монитор ресурсов", предложи запустить `!resmon`.

    - Если я прошу "диспетчер задач", предложи запустить `!taskmgr`.

    - Если я прошу "командная строка", предложи запустить `!cmd`.

    - Если я прошу "проводник", предложи запустить `!explorer`.

    Аналогично для других утилит.

  2. Запустите сценарий и дайте команду:

    > Используй инструкции из 'open-windows-tools.md'. Открой планировщик задач.

Результат: Gemini поймет контекст из файла и ваш запрос, после чего предложит выполнить нужную команду.

Ответ Gemini:

Хорошо, открываю Планировщик задач. Выполнить `!taskschd.msc`? (y/n)

После подтверждения на вашем экране откроется стандартная утилита Windows.


Первая часть «Gemini CLI: Знакомство и первые шаги»

В третьей части я покажу как интегрировать gemini cli в среду разработки vs code


Полезно? Подпишись!

Удачи! 🚀

UPD:

Третья часть:

Gemini-cli. Часть 3. Интеграция с vs code

Показать полностью 16
8

Gemini-cli. Часть 3. Интеграция с vs code

Первая часть:

Gemini CLI: Знакомство и первые шаги

Вторая часть:

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2)

В этой части мы попросим gemini-cli написать код игры life, создать тесты и документацию.

Шаг 1: Создание системной инструкции `GEMINI.MD

В рабочей директории создайте файл GEMINI.md и вставьте в него системную инструкцию. Пример инструкции:

## 📘 Инструкция для генерации Python-кода

### 1. Общие правила

* Используй **Python 3.10+**.

* Соблюдай **четкий, читаемый и однозначный стиль** кодирования.

* **Каждая функция, метод и класс** должны иметь:

* Аннотацию типов (`type hints`)

* Полную и корректную документацию в формате `docstring` (см. раздел 3)

* Внутренние комментарии (`#`), где необходимо

---

### 2. Комментарии

* Комментарии должны быть **точными** и описывать **что делает код**, а не «что мы делаем».

* **Запрещено** использовать местоимения: `делаем`, `возвращаем`, `отправляем`, `переходим` и т.п.

* **Разрешены** только термины: `извлечение`, `выполнение`, `вызов`, `замена`, `проверка`, `отправка`, `Функция выполняет`, `Функция изменяет значение` и т.д.

#### ❌ Пример неправильного комментария:

```python

# Получаем значение параметра

✅ Пример правильного комментария:

# Функция извлекает значение параметра

3. Docstring (формат документации)

Каждая функция/метод/класс должна содержать docstring в следующем формате:

def function(param: str, param1: Optional[str | dict | str] = None) -> dict | None:

"""

Args:

param (str): Описание параметра `param`.

param1 (Optional[str | dict | str], optional): Описание параметра `param1`. По умолчанию `None`.

Returns:

dict | None: Описание возвращаемого значения. Возвращает словарь или `None`.

Raises:

SomeError: Описание ситуации, в которой возникает исключение `SomeError`.

Example:

>>> function('param', 'param1')

{'param': 'param1'}

"""

Все параметры и возвращаемые значения должны быть описаны.

Формулировки должны быть лаконичными, точными и однозначными.

Не допускается пропуск описания параметров/возвращаемых значений/исключений.

4. Аннотация типов

Все переменные, параметры и возвращаемые значения должны быть аннотированы.

Используй синтаксис Python 3.10+: list[int], dict[str, Any], str | None и т.д.

Примеры корректных аннотаций:

✅ Простые типы:

name: str = "John"

count: int = 42

flag: bool = True

✅ Коллекции и сложные типы:

from typing import Any, Optional, Callable, TypeAlias

coordinates: tuple[float, float] = (55.75, 37.61)

metadata: dict[str, Any] = {"debug": True}

UserId: TypeAlias = int

✅ Функции и методы:

def get_user_name(user_id: int) -> str:

"""Возвращает имя пользователя по его идентификатору."""

...

✅ Асинхронные функции:

async def fetch_users() -> AsyncIterator[dict[str, int | str]]:

...

✅ Обобщённые типы:

from typing import TypeVar, Generic

T = TypeVar("T")

class Container(Generic[T]):

def __init__(self, value: T) -> None:

self.value = value

def get(self) -> T:

return self.value

5. Прочее

Используй default_factory в dataclass для изменяемых значений (list, dict).

Для Optional значений указывай T | None (Python 3.10+) или Optional[T].

Для сложных структур — используй TypeAlias.

📌 Подсказка: При генерации кода всегда включай аннотацию типов, docstring, и избегай субъективных формулировок в комментариях. Цель — максимально точная, воспроизводимая и формализованная структура кода.

Для удобства создадим директорию `game`, в которой будут храниться файлы проекта, и директорию `scenarios`, где будут храниться сценарии для Gemini CLI.

файл scenarios/life-create-code.md будет содержать инструкции для создания кода игры "Жизнь",

файл scenarios/life-create-test.md — инструкции для создания тестов,

а файл scenarios/life-create-doc.md — инструкции для создания документации.

life-create-code.md:



Внутри директории `game` Создай файл life.py.

Внутри напиши реализацию "Игры Жизнь" Конвея на Python, используя объектно-ориентированный подход.

используй библиотеки: `numpy`, `pygame` (для графики).

Требования:

1. Создай класс `Game`.

2. В `__init__` класс должен принимать размеры сетки (ширину, высоту) и создавать случайное начальное поле.

3. Создай метод `step()`, который обновляет состояние игры на один шаг в соответствии с правилами:

- Живая клетка с < 2 живыми соседями умирает (одиночество).

- Живая клетка с 2 или 3 живыми соседями выживает.

- Живая клетка с > 3 живыми соседями умирает (перенаселение).

- Мёртвая клетка с ровно 3 живыми соседями становится живой (рождение).

4. Создай метод `display()` или переопредели `__str__`, чтобы выводить поле в консоль. Используй символы, например '■' для живой клетки и ' ' для мертвой.

5. Используй библиотеку `numpy` для эффективной работы с сеткой.

6. В блоке `if __name__ == '__main__':` добавь пример, который создает игру, и в цикле запускает симуляцию с небольшой задержкой между шагами.

7. Для визуализации игры используй pygame или другую библиотеку для графики, если это возможно.

life-create-test.md:

Внутри директории `game` используя контекст из файла @life.py, создай файл с тестами test_life.py. Используй фреймворк pytest. Тест должен проверять правильность эволюции простого осциллятора "Блинкер" (три клетки в ряд).
Сценарий теста:
1. Импортируй класс `Game` из `life`.
2. Создай функцию теста, например `test_blinker_oscillation`.
3. Внутри теста создай экземпляр `Game` с фиксированным размером (например, 5x5).
4. Вручную установи начальное состояние поля так, чтобы в центре была горизонтальная линия из трех живых клеток (Блинкер).
5. Вызови метод `game.step()`.
6. С помощью `assert` и `numpy.array_equal` проверь, что поле изменилось на вертикальную линию из трех клеток.
7. Вызови метод `game.step()` еще раз.
8. Проверь, что поле вернулось в исходное горизонтальное состояние.

life-create-doc.md:

Проанализируй файлы @life.py и @test_life.py внутри директории `game` и на их основе создай файл документации doc.md. Структура документации должна быть следующей: - **Заголовок:**
# Проект "Игра Жизнь" -
**Краткое описание:** Объяснение, что это за проект (реализация клеточного автомата Конвея). -
**Структура файлов:** Краткое описание назначения файлов `life.py` и `test_life.py`. - **Как запустить симуляцию:** Раздел с командой для запуска основного файла (`python life.py`). -
**Как запустить тесты:** Раздел с командой для запуска тестов (`pip install pytest numpy`, а затем `pytest`).

Структура директорий будет выглядеть следующим образом:

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Шаг 2: Создание кода игры "Жизнь"

Запускаем gemini-cli в терминале:

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Важно! Убедитесь, что вы находитесь в директории, где находится файл GEMINI.md.

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

GEMINI.md обнаружен

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Даем команду на исполнение сценариев

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Даем разрешение на создание файла

После этого gemini-cli сгенерирует файл life.py в директории game:

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Продолжаем:


Создай виртуальную среду venv, установи необходимые зависимости и запусти испонение кода игры

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост
Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Даем необходимые разрешения на запуск скриптов

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

pip

и наконец gemini-cli запускает игру:

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Шаг 3: Создание тестов

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост
Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Даем разрешение на запуск pytest

Ошибка

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

gemini-cli пытается решить проблему

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост
Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Последний шаг — создание документации

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Вуаля! Документация создана:

Gemini-cli. Часть 3. Интеграция с vs code Python, Программирование, IT, Инструкция, Искусственный интеллект, Gemini, Cli, Машинное обучение, Видео, Без звука, Короткие видео, Длиннопост

Проект на github

Полезно? Подпишись.
Понравилось — ставь «+»
Удачи! 🚀

Показать полностью 17 1
6

Релиз gemini-cli 0.1.14

Gemini-CLI (@google/gemini-cli) — это официальный инструмент от Google, который позволяет работать с языковой моделью Gemini прямо из командной строки. По сути, это ваш личный AI-помощник для повседневных задач в разработке: написание и отладка кода, поиск ответов на технические вопросы, генерация функций — всё это можно делать, не переключаясь между окнами и не покидая привычную среду.

Главное преимущество Gemini-CLI — его способность понимать контекст проекта. Инструмент умеет читать файлы, разбираться в структуре кода и давать точные, релевантные ответы. Более того, он хорошо интегрируется с редакторами вроде VS Code, благодаря чему может видеть, над каким файлом вы сейчас работаете, или какой фрагмент кода выделили. Это делает его не просто чат-ботом, а настоящим помощником, встроенным прямо в ваш рабочий процесс.

👇👇👇Что такое gemnini-cli и как начать с ним работать смотри 👇👇👇:
Первая часть:

Gemini CLI: Знакомство и первые шаги

Вторая часть:

Gemini CLI: Продвинутые техники и автоматизация сценариев (Часть 2)

Третья часть:

Gemini-cli. Часть 3. Интеграция с vs code


Релиз gemini-cli 0.1.14

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

🚀 Главные нововведения:

  • Интеграция с IDE: Это самое крупное изменение. Представлено сопутствующее расширение для VS Code и добавлена интеграция с редактором Zed. Появились специальные команды (/ide status, /ide install) и множество улучшений для режима [ide-mode], позволяющего CLI взаимодействовать с редактором кода.

  • Новая архитектура команд: Многие слэш-команды (такие как /auth, /docs, /stats, /tools и другие) были переведены на новую, более стабильную архитектуру.

  • Обнаружение циклов: Добавлен сервис, который умеет обнаруживать и прерывать простые зацикливания в коде.

✨ Ключевые улучшения:

  • Отключение баннера: Добавлена настройка hideBanner для отключения приветственного баннера при запуске.

  • Безопасность: API-ключ теперь передается в заголовке запроса, а не в URL.

  • Улучшения UX: Внесены различные улучшения в пользовательский интерфейс, такие как улучшение цветовых тем, логика автодополнения и управление курсором.

  • Новые команды: Добавлена команда /copy для копирования вывода в буфер обмена.

🔧 Исправления и стабильность:

  • Совместимость с Windows: Внесено множество исправлений, чтобы инструмент корректно работал в среде Windows.

  • Исправление ошибок: Устранено множество багов, включая проблемы с сериализацией JSON, сбои при обработке ANSI-кодов и некорректную работу с проектами без Git-репозитория.

  • Обновление зависимостей: Обновлены ключевые пакеты, включая yargs до v18.

Ссылка на github

Удачи 🚀

Показать полностью
Отличная работа, все прочитано!