Глубокое погружение в Gemini CLI

1. Введение

be8ebdfe42ca39ac.png

Привет всем! Меня зовут Спарки! Очень рад, что вы смогли приехать. Я проделал долгий путь из кластера 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 как вашего личного облачного помощника прямо в терминале. Это диалог, это партнерство! Он учитывает контекст , а это значит, что он не просто слушает, а понимает . Он может читать ваши файлы, изучать соглашения вашего проекта — например, используете ли вы табуляцию или пробелы — и понимать, что вы пытаетесь сделать. Это как если бы я мог учуять желуди, которые вы пытаетесь собрать!

Архитектура высокого уровня (Давайте заглянем под капот!)

Так как же всё это работает? Это сочетание нескольких интересных вещей, работающих в гармонии:

  1. Мощная языковая модель: это мозг! А точнее, это большая мультимодальная модель, обученная Google. « Мультимодальная » означает, что она понимает не только текст, но и структуру и смысл кода. Это позволяет ей рассуждать о вашем программном обеспечении, а не просто читать его.
  2. Ваш локальный контекст: это крайне важно. Gemini CLI запускается как процесс на вашем локальном компьютере с теми же правами доступа, что и ваша учетная запись пользователя. Это означает, что он может получить доступ к вашей файловой системе для предоставления справки, специфичной для вашего проекта. Это не какой-то удаленный облачный сервис, гадающий о вашем коде; он находится прямо здесь, с вами.
  3. Инструментальная экосистема: так модель взаимодействует с окружающим миром. Она имеет четко определенный набор функций, которые может вызывать, например, read_file или run_shell_command . Представьте это как безопасный API. Модель решает, что делать и какой инструмент использовать, а затем генерирует блок tool_code для его выполнения. Это делает ее действия предсказуемыми и надежными.
  4. Выполнение команд оболочки: вот в чём настоящая магия! Она может запускать любую команду в подоболочке bash -c <command> . Она перехватывает stdout , stderr и exit code . Это невероятно! Это означает, что Gemini CLI может выполнить команду, проверить, не завершилась ли она с ошибкой, а затем попытаться исправить её на основе сообщения об ошибке.
  5. Система безопасности: это моя любимая часть! Перед выполнением блока 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. Прежде чем начать

86dffda616ab7a1d.png

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

Если у вас уже есть проект в Google Cloud, вы можете использовать Gemini CLI в Google Cloud Shell, поскольку он предустановлен вместе с Gemini CLI. В качестве альтернативы, выполните следующие шаги, чтобы настроить его на локальном компьютере.

Шаг 1: Самое необходимое (предварительные условия)

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

  1. Google Cloud SDK ( gcloud ) : это основной набор инструментов для Google Cloud. Gemini CLI является частью этого семейства!
  • Проверьте, установлено ли оно : выполните команду gcloud --version . Если вы видите номер версии, значит, всё в порядке!
  • Если не установлено : следуйте официальным инструкциям по адресу cloud.google.com/sdk/docs/install .
  1. Git : Он нам понадобится для клонирования репозитория с практической работой.
  • Проверьте, установлен ли он : выполните команду git --version .
  • Если не установлено : вы можете загрузить его с сайта git-scm.com/downloads .
  1. Проект GCP и аутентификация :
  • Убедитесь, что у вас есть проект Google Cloud с включенной функцией выставления счетов . Это крайне важно!
  • Войдите в свой аккаунт Google, выполнив следующую команду:
gcloud auth login
  • Настройте свой проект для сессии. Найдите идентификатор своего проекта в консоли GCP и выполните следующую команду:
gcloud config set project YOUR_PROJECT_ID

(Замените YOUR_PROJECT_ID на фактический идентификатор вашего проекта!)

  1. 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 в терминале. Вы должны увидеть следующий экран:

9378d804bc647191.png

Для простоты вы можете пройти аутентификацию с помощью своей учетной записи 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: Проверка искры! (Проверка вашей системы)

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

  1. Введите следующую подсказку:
What is my current directory?

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

15a12d7b3fdd2d83.png

  1. Проверка подключения к 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. Основные концепции и взаимодействие в локальном рабочем пространстве

a7bf3a905d8e2638.png

Итак, готовы приступить к работе? Сейчас мы рассмотрим сами инструменты из вашего нового набора инструментов 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. Изучение проекта

314faf951de66388.png

Цель: Использовать 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

46c2feb0d1184db7.png

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.

568fdb8ff4889c5d.png

Используя свою функцию search_file_content , Gemini найдет именно те файлы, которые содержат указанное выражение импорта. Это сразу же сузит круг поиска до тех частей кода, которые обрабатывают взаимодействие с Cloud SQL. В этом проекте он должен найти backend/main.py .

Задание 3: Покажите мне содержимое основного Dockerfile.

Я вижу Dockerfile ! Это шаблон для нашего контейнера. Давайте заглянем внутрь. Просто спросите:

Show me the contents of the main Dockerfile.

e49a83b3efbcf807.png

Gemini будет использовать read_file для отображения Dockerfile . Вы можете проанализировать базовый образ ( FROM ), устанавливаемые зависимости ( RUN pip install... ) и заключительную команду ( CMD ). Это даст вам информацию о среде выполнения приложения.

Задание 4: Каково назначение файла main.py ?

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

What's the purpose of the `main.py` file?

81d480c285285150.png

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

5. От локального развертывания к рабочему серверу! Развертывание с помощью Cloud Run и Cloud SQL.

db708c2edf0036a9.png

Итак, облачный искатель приключений, вы разведали территорию. Теперь пришло время построить свой собственный домик на дереве в облаке! Мы собираемся превратить наше приложение для быстрых опросов в настоящее веб-приложение, доступное для всех желающих.

Цель: Развернуть приложение 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!.

6c09e8e548efe217.png

Gemini CLI, используя расширение Cloud SQL, начнет работу. Он покажет вам вызов инструмента create_instance. Можете подтвердить его!

После создания экземпляра вы должны получить результат, похожий на этот:

1378c05137bf9260.png

Вы можете создать файл .env с указанной выше переменной окружения и выполнить команду `source` перед перезапуском Gemini CLI, чтобы у него был доступ к этим переменным.

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

In the quickpoll-db instance, create a new database named quickpolldb.

Gemini CLI будет использовать инструмент create_database из расширения Cloud SQL for PostgreSQL для создания базы данных.

3a0ffbf97fbc35cc.png

Теперь добавим пользователя, который будет этим заниматься:

In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.

В этот раз Gemini CLI будет использовать инструмент create_user .

562db72ed9a59d4a.png

Задание 2: Секретный путь (подключение бэкэнда)

Нашему бэкенду необходимо знать секретный путь к нашей новой базе данных. Давайте заглянем в файл backend/main.py, чтобы посмотреть, как он его находит.

show me how would the backend/main.py connect to the database

6592c52d634253ce.png

Ага! Видите? Он использует коннектор 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?

aa539ea8798aad71.png

Вы увидите множество подробностей. Найдите имя подключения и скопируйте это значение. Оно будет выглядеть примерно так 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

5201cbf678dd3fc9.png

Программа автоматически определила, что инструмент 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-адрес!

f3330321e52c98e9.png

Задание 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

a80fe48e54b47c4.jpeg

Задание 5: Торжественное открытие!

Вот и всё! Момент истины! Скопируйте URL-адрес вашего сервиса quickpoll-fe и откройте его в веб-браузере.

Вы должны увидеть свое приложение QuickPoll в рабочем состоянии! Создайте опрос, проголосуйте и наблюдайте за обновлением результатов в режиме реального времени.

Вы это сделали! Вы взяли проект со своего локального компьютера и воплотили его в жизнь в Google Cloud. И всё это вы сделали, не выходя из своего терминала, с помощью вашего верного помощника, Gemini CLI.

Вот это я понимаю, продуктивность!

6. Для разработчика — ускорение жизненного цикла разработки.

8feb670e686f4038.png

Итак, разработчики, вот где начинается настоящее веселье! Мы уже рассмотрели проект, но теперь пришло время его реализовать . Я покажу вам, как Gemini может стать вашим идеальным партнером по программированию, помогая вам превратить простую идею в готовый к использованию код быстрее, чем белка найдет орех!

От идеи к коду

Подумайте о типичном цикле разработки. Это не просто написание кода, верно? Это создание каркаса, добавление обработки ошибок, рефакторинг и написание тестов. Gemini может помочь со всем этим!

Шаблонные и повторяющиеся задачи: больше никакого копирования и вставки!

Итак, у вас есть базовая функциональность приложения. Теперь вам нужно добавить логирование и обработку потенциальных ошибок, верно? Обычно это приводит к множеству повторяющихся блокировок try...except . Но теперь всё иначе! Давайте начнём с того, что попросим Gemini CLI проанализировать код и предложить рекомендации по лучшим практикам логирования ошибок и обработки исключений:

What are the best practices for error handling and logging that should also be included in this application?

3a132d7bbf57bf67.png

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

Теперь давайте попросим его реализовать эти рекомендации для вас:

please go ahead and implement these in the existing app

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

7fcd0153f88740ce.png

Рефакторинг: Ваш личный рецензент кода

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

please perform a comprehensive code review for best practices and security

e5482012a524210e.png

32039b0638d1efd.png

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

Генерация тестов: Лучшая часть!

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

Add a test suite to this application

d7475f5ca8c9d99d.png

ac55b84b842187b.png

3653819afe847cf3.png

Gemini проанализирует вашу функцию, определит её входные и выходные данные, а также выяснит её зависимости. Затем он сгенерирует полный файл test_main.py с несколькими тестовыми случаями, включая «счастливый сценарий» и, возможно, условие ошибки. Это значительно повысит производительность!

Проведите тесты! (Задание повышенной сложности для вас)

А вот тут начинается самое интересное! Я оставляю эту часть в качестве задания для самостоятельного изучения. Можете смело запускать сгенерированные тестовые примеры с помощью Gemini CLI. А потом просто расслабьтесь и наблюдайте, как происходит волшебство!

7. За пределами локального сервера: интеграция с GitHub

d2664a4c173f1d6.png

Мы проделали потрясающую работу на нашем локальном компьютере, в нашем маленьком уголке леса. Но настоящая сила облака заключается в сотрудничестве и взаимодействии! Пришло время взлететь и посмотреть, как 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).

cf9cab5f70ca1fc2.png

Демонстрация ключевых команд

Знак Близнецов (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

7e66f28519488019.png

Хватит разговоров, поехали! Мы воспользуемся нашими новыми возможностями 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), показав номер запроса, заголовок и автора. Это ваш мгновенный обзор активной разработки проекта. Вы можете попробовать это с репозиторием, в который вы активно вносите свой вклад, и проверить результаты.

38aecd94347e633c.png

Задание 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 к первоначальному подтверждению.

bbaad74efa344d07.png

Вы научились исследовать, создавать и тестировать. Теперь мы объединим все это в реальном мире. Это тот момент, когда мы превращаем план в продукт. Мы пройдем путь от документа с требованиями к продукту (PRD) до нашего первого коммита. Давайте создадим что-то потрясающее!

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

Сценарий : Вам назначена новая функция! Требования к ней находятся в файле PRD в репозитории GitHub проекта.

Задание 1: Понять — Прочитать документ с описанием требований к продукту (PRD).

Это самый важный шаг! Прежде чем вы даже подумаете о написании хотя бы одной строчки кода, вы обязательно должны понять план. Требования к нашей новой функции содержатся в файле prd/NEW_FEATURE.md. Давайте откроем его и посмотрим, что внутри.

explain the requirements mentioned in prd/NEW_FEATURE.md

Gemini CLI будет использовать read_file для отображения содержимого PRD. Погрузитесь в него! Он опишет новую функцию: кнопку «Обновить», позволяющую пользователям вручную обновлять список активных опросов. Всегда сначала сверяйтесь с планом проекта!

b07e95a5977e927d.png

Задание 2: Написание кода — воплощение требований в реальность

Это волшебный момент! Мы возьмём требования из PRD и попросим Gemini написать для нас код. Давайте будем конкретны и точно скажем, что нам нужно.

Implement the changes as per the PRD

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

aff664dee6796f8b.png

Задание 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. Поздравляем!

393fa778d8ee9f18.png

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

Справочная документация