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клиент командной строки покажет вам точную команду или код и запросит ваше подтверждение. Это проверка на стороне клиента, поэтому последнее слово остается за вами, прежде чем что-либо коснется вашей системы. Вы всегда главный!
Это не просто чат-бот, это активный помощник! Он станет вашим незаменимым помощником в процессе программирования.
Ключевое понятие: декларативное и повелительное наклонение.
Самое большое и впечатляющее изменение — это переход от указания компьютеру, как что-то сделать, к указанию ему того, чего вы хотите.
- Императивный подход (старый, тернистый путь): необходимо описать каждый шаг. Необходимо быть экспертом в языке предметной области, к которой относится данный инструмент. Например, вот эта огромная команда:
Ужас! Посмотрите, сколько всего нужно знать! Необходимо знать синтаксис для типа машины, семейства изображений, метаданных и тегов. Пропустите хотя бы одну деталь — и получите непонятную ошибку.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: Введение в расширения командной строки
Хотя Gemini CLI — это мощный инструмент, готовый к использованию сразу после установки, его истинный потенциал раскрывается с помощью расширений. Расширения — это наборы подсказок, инструментов и пользовательских команд, которые расширяют функциональность CLI, позволяя адаптировать его к вашим конкретным потребностям и рабочим процессам.
Поиск и установка расширений
Gemini CLI обладает растущей экосистемой расширений, созданных как Google, так и сторонними разработчиками. Вы можете ознакомиться с официальным каталогом расширений на сайте geminicli.com/extensions .
Для установки расширения можно использовать команду `gemini extensions install` с URL-адресом репозитория Git этого расширения. Например, для установки официального расширения Cloud SQL for 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 с контекстным окном токенов на 1 миллион запросов и до 60 запросов в минуту и 1000 запросов в день без необходимости управления ключом API.
Если вам нужен доступ к определенным моделям Gemini или вы хотите при необходимости перейти на более высокие лимиты, используйте ключ API Gemini в качестве метода аутентификации.
Для корпоративных команд и рабочих нагрузок в производственной среде, у которых уже настроены учетные записи Google Project и Google Billing Account, используйте 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 CLI должен ответить, указав ваш текущий рабочий каталог. Это проверяет интеграцию с основной языковой моделью и оболочкой.

- Проверка подключения к GCP:
list my gcs buckets
Если у вас есть какие-либо хранилища GCS, система должна их отобразить. В противном случае она сообщит об их отсутствии. Это подтверждает корректное подключение к вашему проекту GCP.
Шаг 5: Наделить его ещё большими суперспособностями! (Установка расширений)
Теперь давайте расширим возможности Gemini CLI, установив несколько расширений, которые пригодятся позже в ходе лабораторной работы.
Cloud Run
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Gemini CLI Security
gemini extensions install https://github.com/gemini-cli-extensions/security
gcloud
gemini extensions install https://github.com/gemini-cli-extensions/gcloud
Cloud 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: Перечислите все файлы в проекте.
Теперь, когда мы внутри, давайте составим карту всего леса. Мы хотим увидеть каждый файл. Спросите об этом у Близнецов:
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 ?
Итак, пора взглянуть на суть кода. Давайте попросим Близнецов стать нашим проводником. Скажите следующее:
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 с указанной выше переменной окружения и выполнить команду `source` перед перезапуском 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 и ищет переменные среды, такие как 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: Бэкенд, взлетаем! (Развертывание в облаке)
Пришло время нашему бэкенду покинуть гнездо! Мы дадим 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 . Все это благодаря интеграции с протоколом контекста модели (MCP) . Название звучит замысловато, но это просто означает, что Gemini может безопасно взаимодействовать с другими сервисами от вашего имени, и первым, с которым мы начнем работать, будет GitHub.
Подумайте сами. Как часто вам приходится отходить от терминала, чтобы проверить запрос на слияние, создать задачу или просмотреть репозиторий на GitHub? Это ещё одно переключение контекста! С помощью набора инструментов github вы можете делать всё это прямо здесь. Он превращает Gemini в нативный интерфейс для GitHub.
В официальной документации GitHub MCP Server содержится подробная информация о доступных инструментах и параметрах конфигурации. Вы можете свободно выбирать между локальным и удаленным режимом работы, поскольку Gemini CLI полностью поддерживает оба варианта удаленного запуска MCP Server.
В этом руководстве вы настроите удаленный сервер 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 теперь может использовать с протоколом контекста модели (Model Context Protocol).

Демонстрация ключевых команд
Знак Близнецов (Gimini) наделяет GitHub целым набором новых суперспособностей. Вот несколько моих любимых:
-
github.list_repositories: Хотите увидеть все репозитории в вашей организации, не открывая браузер? Это инструмент для вас! Просто спросите: «Показать все репозитории в моей организации». -
github.create_issue: Нашли ошибку? Не переключайтесь между окнами, чтобы создать задачу. Вы можете просто сказать Gemini: «Создайте задачу в репозиторииsample-flask-appпод названием "Исправление ошибки входа в систему" с таким описанием...», и вуаля , задача создана. -
github.get_pull_request: Нужно проверить запрос на слияние (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: Перечислите открытые запросы на слияние (Pull Requests).
Теперь, когда мы определили целевой репозиторий, давайте посмотрим, что с ним происходит. Есть ли какие-либо открытые запросы на слияние? Давайте спросим:
List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.
Gemini будет использовать инструмент github.list_pull_requests , фильтруя по состоянию open . Затем он отобразит список всех открытых запросов на слияние (PR), показав номер запроса, заголовок и автора. Это ваш мгновенный обзор активной разработки проекта. Вы можете попробовать это с репозиторием, в который вы активно вносите свой вклад, и проверить результаты.

Задание 4: Изучение запроса на слияние (Pull Request)
Допустим, в этом списке есть интересный запрос на слияние (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. Поздравляем!

Вот и всё! Вы только что завершили полный цикл разработки. Вы перешли от документа с требованиями к новой функции, готовой к внедрению и отправке. Вы объединили локальный контекст, удаленный контекст, операции с файловой системой и генерацию кода. Вы не просто разработчик; вы — суперпродуктивный облачный архитектор! Поздравляем!