1. Введение

Всем привет! Меня зовут Спарки! Я так рад, что вы смогли прийти. Я проделал весь путь от кластера GKE в us-central1 чтобы быть здесь сегодня. Добро пожаловать на эту практику.
Я всю жизнь рыскал по потокам данных Google Cloud и повидал всё. Я видел, как вы, архитекторы и инженеры, создавали потрясающие вещи. Но я также видел, как вы застряли в ежевике. Вы знаете, о чём я говорю! Это ощущение переключения контекста при отладке пода в GKE. Вы переключаетесь между kubectl logs , консолью GCP для проверки работоспособности узла, IDE для просмотра развёрнутого исходного кода и вкладкой браузера с официальной документацией Kubernetes по хукам жизненного цикла пода. Каждый прыжок — это смена фокуса!
А какой сложный инструментарий ! gcloud , kubectl , terraform ... у каждого свой DSL и куча флагов. Это приводит к постоянному поиску документации . В итоге приходится искать ту самую идеальную команду gcloud с правильной комбинацией флагов --filter и --format , чтобы получить нужные данные. Это как искать определённый орех в лесу, где их миллионы. И не заставляйте меня начинать повторяющиеся задачи . Я видел, как вы столько раз писали одни и те же Dockerfile и cloudbuild.yaml для нового сервиса Python, что, вероятно, у вас возникло дежавю.
Что ж, я здесь, чтобы показать вам лучший путь. Тайную тропу через лес. Вот в чём суть Gemini CLI !
Что такое Gemini CLI?
Так что же это за волшебный способ, который меня так воодушевляет?
Представьте себе Gemini CLI как своего личного облачного помощника прямо в вашем терминале. Это диалог, партнёрство! Он учитывает контекст , то есть не просто слушает, а понимает . Он может читать ваши файлы, запоминать соглашения вашего проекта — например, использовать ли табуляцию или пробелы — и понимать, что вы пытаетесь сделать. Я как будто чувствую запах желудей, которые вы пытаетесь собрать!
Высокоуровневая архитектура (Давайте заглянем под капот!)
Как же всё это работает? Это сочетание нескольких интересных вещей, работающих в гармонии:
- Мощная языковая модель: это мозг! А именно, это большая мультимодальная модель, обученная Google. « Мультимодальная » означает, что она не просто понимает текст, но и структуру и значение кода. Это позволяет ей делать выводы о вашем программном обеспечении, а не просто читать его.
- Ваш локальный контекст: это критически важно. Gemini CLI работает как процесс на вашем локальном компьютере с теми же правами, что и у вашей учётной записи. Это означает, что он может получить доступ к вашей файловой системе для оказания помощи по конкретному проекту. Это не какой-то далёкий облачный сервис, гадающий о вашем коде; он здесь, рядом с вами.
- Экосистема инструментов: именно так модель взаимодействует с миром. У неё есть чётко определённый набор функций, которые она может вызывать, например,
read_fileилиrun_shell_command. Представьте себе это как безопасный API. Модель решает, что делать и какой инструмент использовать, а затем генерирует блокtool_codeдля выполнения. Это делает её действия предсказуемыми и надёжными. - Выполнение команд оболочки: Это настоящее волшебство! Он может выполнить любую команду в подоболочке
bash -c <command>. Он захватываетstdout,stderrиexit code. Это невероятно! Это означает, что Gemini CLI может выполнить команду, проверить её на наличие ошибки и попытаться исправить её, основываясь на сообщении об ошибке. - Защитная сетка: Это моя любимая часть! Перед выполнением блока
tool_codeклиент CLI покажет вам точную команду или код и запросит подтверждение. Это проверка на стороне клиента, поэтому последнее слово перед любыми изменениями в вашей системе остаётся за вами. Вы всегда отвечаете за всё!
Это не просто чат-бот, это действующий человек! Активный помощник в вашем программировании.
Ключевая концепция: декларативность против императива
Самое большое и потрясающее изменение — это переход от указаний компьютеру , как что-то сделать, к указанию ему, чего вы хотите.
- Императив (Старый, тернистый путь): Вы должны выполнить каждый шаг. Вы должны быть экспертом в конкретном языке, к которому относится инструмент. Например, вот эта чудовищная команда:
Ой! Посмотрите на всё это! Нужно знать синтаксис для типа машины, семейства изображений, метаданных и тегов. Пропустите хоть одну часть, и получите зашифрованную ошибку.gcloud compute instances create my-vm --project=my-project --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --metadata-from-file startup-script=./startup.sh --tags=http-server,dev - Декларативный (Искромётный приём!): Вы просто говорите то, что хотите, на простом английском языке!
Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.
Вот и всё! Gemini анализирует ваш запрос, сопоставляет его с параметрами инструмента gcloud , определяет правильный синтаксис для каждого флага и формирует для вас эту сложную и пугающую команду. Затем он представляет её вам на утверждение. Главное — позволить вам мыслить глобально, а не просто запоминать флаги командной строки.
Расширение возможностей Gemini: введение в расширения CLI
Хотя Gemini CLI — мощный инструмент, его истинный потенциал раскрывается с помощью расширений. Расширения — это наборы подсказок, инструментов и пользовательских команд, которые расширяют функциональность CLI, позволяя адаптировать его к вашим конкретным потребностям и рабочим процессам.
Поиск и установка расширений
Gemini CLI имеет растущую экосистему расширений, созданных как Google, так и сторонними разработчиками. Официальный каталог расширений доступен по адресу geminicli.com/extensions .
Чтобы установить расширение, используйте команду gemini extensions install, указав URL-адрес Git-репозитория расширения. Например, чтобы установить официальное расширение Cloud SQL для PostgreSQL, выполните:
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Ладно, хватит разговоров! Давайте запачкаем руки и попробуем это на деле!
2. Прежде чем начать

Привет, будущие волшебники облаков! Спарки к вашим услугам. Прежде чем мы начнём наше грандиозное приключение, нам нужно убедиться, что ваша мастерская готова к работе. Представьте, что мы пакуем сумки со всеми необходимыми инструментами и волшебными желудями перед тем, как отправиться в лес. Следуйте за мной!
Если у вас уже есть проект Google Cloud, вы можете использовать Gemini CLI в Google Cloud Shell, поскольку он предустановлен. Или выполните следующие действия, чтобы настроить Gemini CLI на локальном компьютере.
Шаг 1: Самое необходимое (предварительные условия)
Каждому хорошему искателю приключений нужна прочная основа. Прежде чем устанавливать Gemini CLI, вам нужно настроить несколько компонентов на вашем локальном компьютере.
- Google Cloud SDK (
gcloud) : это основной набор инструментов для Google Cloud. Gemini CLI входит в это семейство!
- Проверьте, установлен ли он : выполните команду
gcloud --version. Если вы видите номер версии, всё готово! - Если не установлено : следуйте официальным инструкциям на cloud.google.com/sdk/docs/install .
- Git : нам это понадобится для клонирования репозитория практических лабораторных работ.
- Проверьте, установлен ли он : выполните команду
git --version. - Если не установлен : вы можете получить его с git-scm.com/downloads .
- Проект GCP и аутентификация :
- Убедитесь, что у вас есть проект Google Cloud с включённым биллингом . Это очень важно!
- Войдите в свою учетную запись Google, выполнив команду:
gcloud auth login
- Настройте свой проект для сеанса. Найдите идентификатор проекта в консоли GCP и выполните:
gcloud config set project YOUR_PROJECT_ID
(Замените YOUR_PROJECT_ID на фактический идентификатор вашего проекта!)
- Node.js версии 20 или выше
Шаг 2: Получите волшебство! (Установка Gemini CLI)
Итак, с основами разобрались, пора переходить к главному! Мы установим Gemini CLI.
Запустить мгновенно с помощью npx
# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli
Установить глобально с помощью npm
npm install -g @google/gemini-cli
Установить глобально с помощью Homebrew (macOS/Linux)
brew install gemini-cli
Проверьте версию Gemini
gemini --version
Вы должны увидеть номер версии. Это подтверждает успешную установку.
Шаг 3: Включение (конфигурация)
Теперь, когда Gemini CLI установлен, нам нужно дать ему ключи от королевства. Для начала запустите его, выполнив команду gemini в терминале. Вы должны увидеть следующий экран:

Для простоты вы можете выполнить аутентификацию с помощью своей учетной записи Google, что даст вам доступ к Gemini 2.5 Pro с контекстным окном токенов 1M и до 60 запросов в минуту и 1000 запросов в день без необходимости управления ключом API.
Если вам нужен доступ к определенным моделям Gemini или вы хотите перейти на более высокие лимиты при необходимости, используйте Gemini API Key в качестве метода аутентификации.
Для корпоративных команд и производственных рабочих нагрузок, у которых уже настроены проекты Google и учетная запись выставления счетов, используйте Vertex AI для обеспечения повышенной безопасности и соответствия требованиям.
В зависимости от выбранного варианта вам будут предложены дальнейшие действия по настройке аутентификации. Подробнее об этих параметрах см. в документации Gemini CLI .
Если вы собираетесь использовать платформу Vertex AI от Google Cloud, сначала выйдите из Gemini CLI, дважды нажав ctrl+c , и задайте необходимые переменные среды.
Независимо от метода аутентификации вам обычно потребуется установить следующие переменные: GOOGLE_CLOUD_PROJECT и GOOGLE_CLOUD_LOCATION.
Чтобы установить эти переменные:
# Replace with your project ID and desired location (e.g., us-central1)
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
Теперь войдем в Google Cloud:
gcloud auth application-default login
После аутентификации предыдущим способом снова запустите Gemini CLI, выполнив команду gemini в терминале. В параметрах аутентификации выберите Vertex AI , и всё должно быть готово.
Шаг 4: Тест искры! (Проверка настроек)
Настал момент истины! Давайте проверим, всё ли работает. Выполните эти команды, чтобы убедиться, что все индикаторы горят зелёным.
- Введите следующую подсказку:
What is my current directory?
Интерфейс командной строки Gemini должен сообщить вам текущий рабочий каталог. Это позволит проверить базовую языковую модель и интеграцию с оболочкой.

- Тестовое соединение GCP:
list my gcs buckets
Если у вас есть контейнеры GCS, он должен их отобразить. Если нет, он сообщит, что их нет. Это подтверждает правильное подключение к вашему проекту GCP.
Шаг 5: Добавляем ему ещё больше суперспособностей! (Установка расширений)
Теперь давайте расширим возможности Gemini CLI, установив несколько расширений, которые пригодятся нам позже в лабораторной работе.
Cloud Run
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Безопасность Gemini CLI
gemini extensions install https://github.com/gemini-cli-extensions/security
gcloud
gemini extensions install https://github.com/gemini-cli-extensions/gcloud
Облачный SQL для PostgreSQL
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Если все эти команды сработали, вы официально готовы к семинару! Ваша среда настроена, и вы готовы начать повышать свою производительность. Увидимся на первой лабораторной работе!
3. Основные концепции и взаимодействие с локальным рабочим пространством

Итак, готовы испачкать лапки? А теперь давайте посмотрим на инструменты в вашем новом наборе Gemini. Я считаю их своими суперспособностями для исследования и разработки в облаке! Давайте немного разберёмся, как они работают.
Основные возможности
Я разделяю свои полномочия на две категории: наблюдать за происходящим и что-то делать!
Понимание окружающей среды (мои суперчувства!)
Прежде чем начать строить новое гнездо, нужно осмотреть дерево, верно? Эти инструменты нужны для того, чтобы оценить местность.
-
list_directory: Это мой базовый инструмент для поиска. Это простая оболочка для стандартного списка каталогов на уровне ОС. Но самое интересное то, что модель может анализировать этот структурированный вывод и принимать решения, например, выбирать подкаталог с именемsrcдля исследования. -
glob: Это мой «поисковик желудей»! Он использует стандартные шаблоны glob, такие как*,**,?и[], которые вы уже знаете по таким инструментам, как.gitignore. Поэтому вы можете запросить «Найти все файлы*.pyв каталогеapp», используя шаблонapp/**/*.py. Это эффективный способ собрать определённый набор файлов для анализа моделью. -
search_file_content: Это моё рентгеновское зрение! Он использует для поиска полные регулярные выражения (regex), а не просто поиск по строкам. Это невероятно эффективно. Вы можете попросить его найти сложные шаблоны, например, «Найти все маршруты Flask, использующие метод POST», что может сгенерировать регулярное выражение типаapp\.route\(.*methods=\['POST'\].*\). Он возвращает путь к файлу, номер строки и соответствующую строку, предоставляя модели весь необходимый контекст. -
read_file: Найдя интересный файл, вы наверняка захотите его открыть.read_fileоптимизирован для этого. Вы можете прочитать файл целиком или, для больших файлов, использовать параметрыoffsetиlimit, чтобы читать его по частям. Это означает, что модель может эффективно сканировать даже большие файлы журналов без превышения времени ожидания.
От понимания к действию (время строить!)
Итак, вы изучили местность. Теперь пора обустроить своё гнездо! Эти инструменты позволят вам вносить изменения и добиваться результатов.
-
**write_file**: Нужно создать новый файл с нуля?write_file— это атомарная операция, которая записывает весь предоставленный вами контент по указанному пути. Она идеально подходит для формирования новых модулей или созданияDockerfileс нуля в соответствии с потребностями вашего проекта. -
**replace**: Этот инструмент предназначен для хирургических изменений! Это не просто поиск и замена. Вы указываетеold_stringиnew_string. Для безопасной работыold_stringдолжен быть уникальным фрагментом файла, обычно с несколькими строками контекста до и после изменяемого фрагмента. Это гарантирует, что мы изменим только тот фрагмент кода, который вы хотите изменить. -
**run_shell_command**: Это просто супер-мощь! Она выполняет заданную команду в подоболочкеbash -c <command>. Модель получаетstdout,stderrиexit code. Это критически важно для построения рабочих процессов. Модель может запуститьterraform plan, прочитать вывод и, если план выполнен успешно (код выхода 0), запросить у вас разрешение на его применение.
Сеть безопасности (Мое обещание вам!)
Выполнение команд может быть пугающим. Я понимаю! Именно поэтому так важна система безопасности. Когда модель генерирует блок tool_code , содержащий вызов run_shell_command или write_file , клиент Gemini CLI перехватывает его. Он показывает вам точную команду или полное содержимое файла для записи и выводит запрос [y/n]. Ничто не происходит без вашего явного согласия. Вы всегда контролируете ситуацию.
4. Изучение проекта

Цель: использовать Gemini CLI для понимания незнакомой кодовой базы, не выходя из терминала.
Сценарий: Вы новый разработчик, и вам нужно быстро освоить этот проект!
Задача 0: Настройка — клонирование проекта!
Прежде всего, нам нужно получить код! Он находится в публичном репозитории на GitHub, в «дереве» quickpoll . Давайте попросим Gemini CLI клонировать его для нас. Перед этим создадим рабочий каталог и запустим Gemini CLI из него:
mkdir workdir
cd workdir
gemini
Теперь введите следующую команду:
clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

Gemini понимает, что «клонирование» подразумевает использование команды git clone . Он сгенерирует вызов утилиты run_shell_command с текстом вроде git clone https://github.com/gauravkakad-google/quickpoll.git . После вашего одобрения он скачает репозиторий.
Теперь выйдем из Gemini CLI, дважды нажав ctrl+c , перейдем к репозиторию примеров и снова запустим Gemini CLI:
cd quickpoll
gemini
Отлично! Теперь, когда мы внутри дерева проекта, можно приступить к исследованию!
Задание 1: Перечислить все файлы в проекте
Теперь, когда мы вошли, давайте составим карту всего леса. Мы хотим увидеть каждый файл. Спросите Gemini:
List all the files in the project.
Gemini, скорее всего, будет использовать инструмент glob с шаблоном **/* . Он рекурсивно выводит список всех файлов, предоставляя полный манифест кодовой базы. Это отличный первый шаг к пониманию структуры проекта.
Задача 2: Найти все файлы, которые импортируют «google.cloud.sql.connector»
Ладно, мне любопытно. Где этот проект взаимодействует с Google Cloud Storage? Давайте проведём небольшое расследование. Спросите:
Find all files that import the 'google.cloud.sql.connector' library.

Используя функцию search_file_content , Gemini найдёт именно те файлы, которые содержат этот оператор импорта. Это сразу же сузит область поиска до частей кода, которые отвечают за взаимодействие с Cloud SQL. В этом проекте он должен найти backend/main.py .
Задание 3: Покажите мне содержимое основного Dockerfile
Я вижу Dockerfile ! Это план нашего контейнера. Давайте заглянем внутрь. Просто спросите:
Show me the contents of the main Dockerfile.

Gemini будет использовать read_file для отображения Dockerfile . Вы можете проанализировать базовый образ ( FROM ), устанавливаемые зависимости ( RUN pip install... ) и финальную команду ( CMD ). Это даст вам информацию о среде выполнения приложения.
Задание 4: Каково назначение файла main.py ?
Итак, пора заглянуть в суть кода. Давайте попросим Gemini быть нашим проводником. Скажите следующее:
What's the purpose of the `main.py` file?

Вот где Gemini CLI действительно блистает. Сначала он вызывает read_file в backend/main.py . Затем его мультимодальная языковая модель анализирует код Python. Он определяет, что это приложение FastAPI, предоставляющее REST API для опроса. Затем он объясняет конечные точки API и их функциональность. Это экономит ваше время, избавляя от необходимости читать и разбираться во всём этом самостоятельно. Вы также можете задавать уточняющие вопросы, чтобы подробно объяснить некоторые из этих функций. Довольно интересно, правда? Давай, попробуй!
5. От локального к реальному! Развертывание с помощью Cloud Run и Cloud SQL

Итак, облачный путешественник, ты разведал территорию. Теперь пора построить свой собственный домик на дереве в облаке! Мы превратим наше приложение для быстрого опроса в настоящее веб-приложение, доступное всем.
Цель: Развернуть приложение quickpoll в Cloud Run с бэкэндом Cloud SQL для PostgreSQL.
Задача 1: Надежная ветвь для наших данных (настройка Cloud SQL)
Каждому хорошему приложению нужно место для хранения своих драгоценных «жёлудей»… то есть данных! Мы будем использовать Cloud SQL для PostgreSQL. Это как волшебный, самоухожий сад для нашей базы данных, где мы можем сосредоточиться на самом интересном.
Давайте попросим Gemini CLI посеять семена для нашей базы данных.
Please create a new Cloud SQL for PostgreSQL instance for me in project <myproject>. Call it quickpoll-db and put it in us-central1. Lets use the Development preset for now, and make the root password a-very-secure-password!.

Интерфейс командной строки Gemini CLI, использующий расширение Cloud SQL, приступит к работе. Он покажет вам вызов инструмента create_instance. Подтвердите его!
После создания экземпляра вы должны увидеть примерно такой вывод:

Вы можете создать файл .env с указанной выше переменной среды и использовать его перед перезапуском Gemini CLI, чтобы у него был доступ к этим переменным.
Пока наш экземпляр растёт, давайте подготовим почву. Нам нужна база данных и пользователь для нашего приложения.
In the quickpoll-db instance, create a new database named quickpolldb.
Gemini CLI будет использовать инструмент create_database в расширении Cloud SQL for PostgreSQL для создания базы данных.

Теперь добавим пользователя, который будет за ним ухаживать:
In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.
На этот раз Gemini CLI будет использовать инструмент create_user .

Задача 2: Секретный путь (подключение бэкэнда)
Нашему бэкенду нужно знать секретный путь к новой базе данных. Давайте заглянем в backend/main.py и посмотрим, как он его находит.
show me how would the backend/main.py connect to the database

Ага! Видите? Он использует Cloud SQL Python Connector и ищет переменные окружения, такие как CLOUD_SQL_POSTGRES_INSTANCE, CLOUD_SQL_POSTGRES_USER, CLOUD_SQL_POSTGRES_PASSWORD и CLOUD_SQL_POSTGRES_DATABASE. Нам нужно будет передать их нашему сервису Cloud Run.
Для начала нам нужен CLOUD_SQL_POSTGRES_INSTANCE. Это как секретное рукопожатие.
What are the details for the Cloud SQL instance quickpoll-db in us-central1?

Вы увидите множество подробностей. Найдите имя подключения и скопируйте его. Оно будет выглядеть примерно так: your-project-id:us-central1:quickpoll-db .
Прежде чем развернуть приложение в Cloud Run, создадим экземпляр базы данных с необходимыми таблицами. Поскольку мы создали отдельную базу данных и пользователя, выйдем из Gemini CLI и обновим ранее созданный файл .env, добавив новые значения:
export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Теперь перезапустите Gemini CLI и введите следующее:
execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

Он автоматически определил, что инструмент execute_sql не поддерживает выполнение нескольких SQL-команд за один вызов. Поэтому он выполнил каждую SQL-команду отдельно.
Задача 3: Бэкенд, взлетай! (Развертывание в Cloud Run)
Пора нашему бэкенду покинуть гнездо! Мы попросим Gemini развернуть папку бэкенда в Cloud Run и укажем ему секретный путь к базе данных.
Deploy the backend folder to a new Cloud Run service called quickpoll-be in us-central1. Here are the secrets (environment variables):
CLOUD_SQL_POSTGRES_INSTANCE=your-project-id:us-central1:quickpoll-db
CLOUD_SQL_POSTGRES_USER=quickpoll-user
CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Gemini упакует ваш код, создаст образ контейнера и развернет его в Cloud Run. После завершения (это может занять несколько минут) вы получите URL-адрес вашего нового бэкенд-сервиса. Сохраните этот URL-адрес под рукой!

Задача 4: Последние штрихи (Настройка и развертывание внешнего интерфейса)
Наш фронтенд — это как дружелюбное лицо приложения. Он должен знать, где находится бэкенд. Давайте скажем ему, куда идти.
Deploy the frontend folder to a new Cloud Run service called quickpoll-fe in us-central1. Here are the secrets (environment variables):
BACKEND_URL=backend-url

Задание 5: Великое открытие!
Вот он! Момент истины! Возьмите URL-адрес вашего сервиса quickpoll-fe и откройте его в браузере.
Вы увидите своё приложение QuickPoll, работающее и готовое к использованию! Создайте опрос, проголосуйте и наблюдайте за обновлением результатов в режиме реального времени.
Вы сделали это! Вы взяли проект со своего локального компьютера и воплотили его в жизнь в Google Cloud. И всё это вы сделали прямо из терминала с помощью своего верного помощника Gemini CLI.
Вот это я понимаю продуктивность!
6. Для разработчика — ускорение жизненного цикла разработки

Итак, разработчики, вот тут-то и начинается настоящее веселье! Мы изучили проект, но теперь пора приступить к его реализации . Я покажу вам, как Gemini может стать вашим незаменимым помощником в программировании, помогая вам перейти от простой идеи к готовому коду быстрее, чем белка находит орех!
От идеи к коду
Представьте себе типичный цикл разработки. Это ведь не просто написание кода, верно? Это ещё и создание шаблонов, добавление обработки ошибок, рефакторинг и написание тестов. Gemini поможет со всем этим!
Шаблоны и повторяющиеся задачи: больше никакого копирования и вставки!
Итак, у вас есть базовая функциональность приложения. Теперь нужно добавить логирование и обработку потенциальных ошибок, верно? Обычно это требует множества повторяющихся блоков try...except . Теперь всё кончено! Давайте начнём с того, что попросим Gemini CLI проанализировать код и предложить рекомендации по ведению логирования ошибок и обработке исключений:
What are the best practices for error handling and logging that should also be included in this application?

Gemini CLI проанализирует существующий файл и предоставит рекомендации по наилучшей практике. Считайте его экспертом-помощником, который сэкономит вам время на самостоятельное изучение информации.
Теперь давайте попросим его реализовать для вас следующие рекомендации:
please go ahead and implement these in the existing app
Фактический вывод может отличаться в вашем случае, но в конечном итоге вы увидите подробности внесённых изменений. Например, на скриншоте ниже вы видите, что был добавлен structlog для создания журналов в формате JSON, реализована централизованная обработка исключений и улучшен способ журналирования ответов на запросы. Подумайте, сколько текста вы только что сэкономили!

Рефакторинг: ваш персональный рецензент кода
Мы все хотим писать чистый и эффективный код. Но иногда мы торопимся. Gemini может стать вашим личным ревьюером кода. Вы можете задать ему такие вопросы, как:
please perform a comprehensive code review for best practices and security


Gemini понимает рекомендации, специфичные для конкретного языка. Опять же, фактический вывод в вашем случае может отличаться от представленных выше скриншотов, но, ознакомившись с выводом, вы оцените уровень детализации, который Gemini CLI применил для анализа кода. Это поможет вам одновременно изучать и улучшать свой код!
Генерация тестов: самая лучшая часть!
Это мой любимый приём! Мы все знаем, что нужно писать тесты, но это может быть утомительно, особенно когда приходится что-то моделировать. Что ж, взгляните на это. Можете просто спросить:
Add a test suite to this application



Gemini проанализирует вашу функцию, определит её входные и выходные данные и определит её зависимости. Затем он сгенерирует полноценный файл test_main.py с несколькими тестовыми случаями, включая «удачный путь» и, возможно, ошибку. Это значительно повысит производительность!
Пройдите тесты! (Сложное задание для вас)
А вот теперь начинается самое интересное! Я оставлю эту часть как задачу для самостоятельного изучения. Не стесняйтесь задавать Gemini CLI команды для выполнения сгенерированных тестовых случаев. А затем просто расслабьтесь и наблюдайте за волшебством!
7. За пределами локального хоста: интеграция с GitHub

Мы проделали потрясающую работу на нашей локальной машине, в нашем собственном уголке леса. Но настоящая сила облака — это совместная работа и взаимодействие! Пора взлететь и посмотреть, как Gemini может взаимодействовать с окружающим миром, начиная с самого большого дерева в лесу разработчиков: GitHub!
Концепция: ваш интегрированный помощник DevOps
До сих пор мы использовали Gemini в качестве локального помощника по программированию. Теперь мы собираемся превратить его в полноценный интегрированный DevOps-помощник . Всё это благодаря интеграции с Model Context Protocol (MCP) . Название, конечно, замысловатое, но оно означает, что Gemini может безопасно взаимодействовать с другими сервисами от вашего имени, и первый из них, который мы освоим, — это GitHub.
Подумайте сами. Как часто вам приходится отрываться от терминала, чтобы проверить пул-реквест, создать задачу или просмотреть репозиторий на GitHub? Это же ещё одно переключение контекста! С помощью инструментария github вы можете сделать всё это прямо здесь. Он превращает Gemini в нативный интерфейс для GitHub.
Официальная документация GitHub по MCP-серверу содержит подробное руководство по его инструментам и параметрам настройки. Вы можете выбрать локальный или удалённый режим работы, поскольку Gemini CLI полностью поддерживает оба удалённых MCP-сервера.
Это руководство поможет вам настроить удалённый сервер MCP для GitHub . Для начала вам понадобится персональный токен доступа (PAT) от GitHub .
Получив PAT, добавьте объект MCP Server в файл settings.json. Мой полный файл settings.json показан ниже, но вы можете просто убедиться, что ваш объект mcpServers соответствует тому, что вы видите здесь:
{
"security": {
"auth": {
"selectedType": "vertex-ai"
}
},
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "GITHUB_PAT"
},
"timeout": 5000
}
}
}
После обновления settings.json с конфигурацией GitHub MCP Server просто перезапустите Gemini CLI или выполните команду /mcp refresh. На снимке экрана ниже показан GitHub MCP Server, который теперь установлен на моей системе, демонстрируя набор мощных инструментов, которые Gemini CLI теперь может использовать с протоколом контекста модели.

Демонстрация ключевых команд
Gemini предлагает целый набор новых суперспособностей специально для GitHub. Вот несколько моих любимых:
-
github.list_repositories: Хотите увидеть все репозитории вашей организации, не открывая браузер? Это ваш инструмент! Просто скажите: «Показать все репозитории моей организации». -
github.create_issue: Нашли ошибку? Не переключайтесь между окнами, чтобы создать задачу. Просто скажите Gemini: «Создай задачу в репозиторииsample-flask-appпод названием "Исправление ошибки входа" с таким описанием...» — и вуаля ! Задача создана. -
github.get_pull_request: Нужно проверить PR? Вы можете попросить: «Покажите мне информацию о PR номер 42 в репозиторииsample-flask-app». Gemini получит название, описание, статус и список рецензентов. -
github.get_file_contents: Это просто супер! Вы можете прочитать файл из удалённого репозитория, не клонируя его предварительно! Это отлично подходит для быстрой проверки файла конфигурации или README проекта, которого нет локально.
8. Исследование GitHub

Хватит разговоров, пора лететь! Мы воспользуемся новыми возможностями GitHub, чтобы изучить организацию и проект, не выходя из терминала.
Цель : использовать Gemini для изучения и понимания проекта, размещенного на GitHub.
Сценарий : Вам необходимо ознакомиться с проектом на GitHub, над которым вы раньше не работали.
Задача 1: Составление списка репозиториев в организации
Для начала давайте посмотрим на все проекты в организации GitHub. Для этой лабораторной работы вы можете использовать своё имя пользователя GitHub или имя организации, к которой вы принадлежите. Давайте попросим Gemini вывести их список.
List the repositories in the `[your-org-or-username]` GitHub organization.
(Не забудьте заменить [your-org-or-username] на свои данные!) Gemini воспользуется инструментом github.list_repositories и покажет вам список всех проектов. Отлично!
Задача 2: найти конкретный репозиторий
Итак, вы увидите список репозиториев. Теперь, как настоящий разработчик, вам нужно просмотреть этот список и найти интересующий вас проект. Для нашей лабораторной работы представим, что мы ищем репозиторий quickpoll , который мы клонировали ранее. Для этого вам не нужна команда — просто просмотрите вывод на предыдущем шаге и найдите репозиторий!
Задача 3: Составление списка открытых запросов на извлечение
Теперь, когда мы определили целевой репозиторий, давайте посмотрим, что с ним происходит. Есть ли открытые запросы на извлечение? Давайте спросим:
List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.
Gemini будет использовать инструмент github.list_pull_requests , фильтруя запросы по состоянию open . Затем он выведет список всех открытых запросов на выдачу (PR) с указанием номера запроса, его названия и автора. Это позволит вам мгновенно оценить текущую разработку проекта. Вы можете попробовать это с репозиторием, в который вы активно вносите свой вклад, и проверить результаты.

Задача 4: Исследование запроса на извлечение
Допустим, в этом списке есть интересный PR. Мы хотим узнать о нём больше! Мы хотим увидеть описание и какие файлы были изменены. Выберите номер PR из списка (если таковых нет, можете пропустить этот шаг, но давайте представим, что он есть!).
Show me the details and files changed in PR number 1 in the `quickpoll` repo.
Это отличный пример многоэтапной задачи для Gemini! Сначала он, скорее всего, воспользуется github.get_pull_request для получения основных данных — названия, текста, автора и т. д. Затем, чтобы получить изменения в файле, он воспользуется вторым инструментом, github.get_pull_request_files . Затем он объединит всю эту информацию в наглядное и понятное резюме. Вы только что проверили пул-реквест, не выходя из терминала! Удивительно!
9. От PRD до первоначального обязательства

Вы научились исследовать, создавать и тестировать. Теперь мы применим всё это на практике. Именно сейчас мы превращаем план в продукт. Мы пройдём весь путь от документа с требованиями к продукту (PRD) до первого коммита. Давайте создадим что-нибудь потрясающее!
Цель : смоделировать реальную задачу разработки от начала до конца, сочетая локальный и удаленный контекст.
Сценарий : Вам назначена новая функция! Требования ждут вас в PRD-файле в репозитории проекта на GitHub.
Задание 1: Понять - Прочитать PRD
Это самый важный шаг! Прежде чем даже думать о написании хоть одной строчки кода, вы должны обязательно понять план. Требования к нашей новой функции содержатся в файле prd/NEW_FEATURE.md. Давайте откроем его и посмотрим, что внутри.
explain the requirements mentioned in prd/NEW_FEATURE.md
Интерфейс командной строки Gemini CLI будет использовать read_file для отображения содержимого PRD. Вникайте! Мы расскажем о новой функции: кнопке «Обновить», позволяющей пользователям вручную обновлять список активных опросов. Всегда сверяйтесь с планом действий!

Задача 2: Код — воплощение требований в реальность
Вот он, волшебный момент! Мы возьмём требования из PRD и попросим Gemini написать код за нас. Давайте будем конкретны и расскажем, чего именно мы хотим.
Implement the changes as per the PRD
Gemini CLI запустится, и через мгновение вы увидите примерно такой вывод. Наш новый блестящий код теперь обрёл уютное пристанище!

Задача 3: Проверьте свои изменения
Мы создали новый файл с новым кодом. Последний шаг этой лабораторной работы — развернуть изменения в Cloud Run и проверить их.
let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.
Обратите внимание, как в этом запросе отображается дополнительная информация, например, имя существующей службы Cloud Run и регион её развёртывания. Конкретность данных помогает сэкономить время, хотя Gemini CLI всегда запросит у вас недостающие данные, если вы их пропустите.
Если в обновлённом сервисе Cloud Run возникнет ошибка, просто запустите Gemini CLI для отладки и исправления кода. Помните, это ваш надёжный помощник!
10. Поздравления

And that's a wrap! You just completed a full development cycle. You went from a requirement document to a new feature, ready to be committed and pushed. You combined local context, remote context, file system operations, and code generation. You're not just a developer; you're a super-productive cloud architect! Congratulations!