1. Введение
В этой лабораторной работе вы узнаете о Google Antigravity (далее в документе — Antigravity), платформе агентной разработки, которая переводит IDE в эпоху, ориентированную на агентов.
В отличие от стандартных помощников по кодированию, которые просто автоматически дополняют строки, Antigravity предоставляет «центр управления полетами» для управления автономными агентами, которые могут планировать, кодировать и даже просматривать веб-страницы, помогая вам разрабатывать решения.
Antigravity разработана как платформа, ориентированная на «агент-первичность». Она предполагает, что ИИ — это не просто инструмент для написания кода, а автономный субъект, способный планировать, выполнять, проверять и итерировать сложные инженерные задачи с минимальным вмешательством человека.
Чему вы научитесь
- Установка и настройка Antigravity
- Изучение ключевых концепций Antigravity, таких как менеджер агентов, редактор, браузер и т. д.
- Изучение нескольких вариантов использования Antigravity
Что вам понадобится
В настоящее время Antigravity доступен в ознакомительной версии для личных аккаунтов Gmail. Сервис предоставляет бесплатную квоту на использование премиум-моделей.
Antigravity необходимо установить локально на вашей системе. Продукт доступен для Mac, Windows и некоторых дистрибутивов Linux. Помимо вашего компьютера, вам потребуется следующее:
- веб-браузер Chrome
- Учетная запись Gmail (личная учетная запись Gmail).
Эта лабораторная работа рассчитана на пользователей и разработчиков всех уровней (включая новичков).
2. Установка
Начнём с установки Antigravity. В настоящее время продукт доступен для ознакомительного просмотра, и вы можете начать работу с ним, используя свой личный аккаунт Gmail.
Перейдите на страницу загрузок и выберите версию операционной системы, соответствующую вашему случаю. Запустите установщик приложения и установите его на свой компьютер. После завершения установки запустите приложение Antigravity. Вы увидите экран, подобный следующему:

Пожалуйста, продолжайте нажимать кнопку «Далее» каждый раз. Основные шаги подробно описаны ниже:
-
Choose setup flow:появится возможность импортировать настройки из существующих VS Code или Cursor. Мы начнём с чистого листа. -
Choose an Editor theme type.Мы выберем тёмную тему, но выбор полностью на ваше усмотрение. -
How do you want to use Antigravity agent:

Давайте разберемся в этом подробнее и вспомним, что это не раз и навсегда и может быть изменено в любой момент, даже во время взаимодействия с Агентом.
Прежде чем углубляться в параметры, давайте рассмотрим два конкретных свойства (которые вы видите справа от диалогового окна):
Политика выполнения терминала
Речь идёт о предоставлении Агенту возможности выполнять команды (приложения/инструменты) в вашем терминале. Есть три варианта.
-
Off.: никогда не выполнять автоматически команды терминала (за исключением тех, которые указаны в настраиваемом списке разрешенных) -
Auto: Агент решает, следует ли автоматически выполнять ту или иную команду терминала. Если ему потребуется ваше разрешение, он запросит его. -
Turbo: всегда автоматически выполнять команды терминала (за исключением тех, которые находятся в настраиваемом списке «Запрещено»)
Обзор политики
В процессе выполнения задачи агент создаёт различные артефакты (план задачи, план реализации и т. д.). Политика проверки настроена таким образом, что вы можете определить, кто принимает решение о необходимости проверки. Вы можете выбрать, хотите ли вы проверять задачу всегда или позволить агенту принимать решение об этом. Соответственно, здесь также есть три варианта.
-
Always Proceed: Агент никогда не запрашивает проверку -
Agent Decides: Агент решает, когда следует запросить пересмотр. -
Request Review: Агент всегда запрашивает проверку
Теперь, когда мы это поняли, четыре параметра — это не что иное, как конкретные предустановки для политик выполнения и проверки терминала для трёх из них, а четвёртый параметр доступен для полного управления. Эти четыре параметра позволяют нам выбрать, сколько автономии предоставить агенту для выполнения команд в терминале и проверки артефактов перед продолжением выполнения задачи.
Вот эти 4 варианта:
- Разработка, управляемая агентами
- Разработка с помощью агента
- Разработка на основе обзоров
- Индивидуальная конфигурация
Вариант разработки с помощью агента является хорошим балансом и рекомендуется, поскольку он позволяет агенту принимать решение и возвращать его пользователю для одобрения.
Поэтому выбирайте свой вариант, и на данный момент лучше всего придерживаться рекомендуемого подхода.
-
Configure your Editor: выберите свои предпочтения. -
Sign in to Google: как упоминалось ранее, Antigravity доступен в режиме предварительного просмотра и бесплатно, если у вас есть личный аккаунт Gmail. Войдите в систему прямо сейчас, используя свой аккаунт. Убедитесь, что вы разрешили создать новый профиль Chrome. Откроется браузер, в котором можно будет войти. После успешной аутентификации вы увидите сообщение, похожее на приведенное ниже, и вернётесь в приложение Antigravity. Следуйте инструкциям. -
Terms of Use: Вы можете принять решение, хотите ли вы согласиться или нет, а затем нажать «Далее» .
Это приведёт вас к моменту истины, когда Антигравитация будет ждать вас, чтобы сотрудничать. Мы готовы начать.
3. Менеджер агента
Antigravity является ответвлением платформы Visual Studio Code (VS Code) с открытым исходным кодом, но радикально меняет пользовательский интерфейс, отдавая приоритет управлению агентами над редактированием текста. Интерфейс разделён на два отдельных основных окна: Редактор и Менеджер агентов . Такое разделение задач отражает различие между индивидуальным вкладом и управлением разработкой.
Менеджер агентов: Центр управления полетами
При запуске Antigravity пользователя обычно встречает не дерево файлов, а менеджер агентов, как показано ниже:

Этот интерфейс действует как панель Mission Control . Он предназначен для высокоуровневой оркестровки, позволяя разработчикам создавать, отслеживать и взаимодействовать с несколькими агентами, работающими асинхронно в разных рабочих областях или задачах.
В этом случае разработчик выступает в роли архитектора. Он определяет цели высокого уровня, например:
- Рефакторинг модуля аутентификации
- Обновить дерево зависимостей
- Создайте набор тестов для API выставления счетов
Как показано на диаграмме выше, каждый из этих запросов создаёт выделенный экземпляр агента. Пользовательский интерфейс визуализирует эти параллельные рабочие потоки, отображая статус каждого агента, созданные им артефакты (планы, результаты, различия) и любые ожидающие запросы на одобрение человеком.
Эта архитектура устраняет ключевое ограничение предыдущих IDE, которые в большей степени были ориентированы на чат-ботов, отличавшихся линейностью и синхронностью. В традиционном чат-интерфейсе разработчику приходится ждать, пока ИИ завершит генерацию кода, прежде чем задать следующий вопрос. В представлении менеджера Antigravity разработчик может одновременно запускать пять агентов для работы над пятью различными ошибками, что эффективно увеличивает их производительность.
Если вы нажмете кнопку «Далее» выше, у вас будет возможность открыть рабочее пространство.

Представьте себе рабочее пространство, знакомое вам по VS Code, и всё готово. Мы можем открыть локальную папку, нажав кнопку и выбрав папку для начала работы. В моём случае в домашней папке была папка my-agy-projects , и я её выбрал. Вы можете использовать совершенно другую папку.
Обратите внимание: при желании вы можете полностью пропустить этот шаг и открыть рабочее пространство в любое время позже.
После завершения этого шага вы попадете в окно диспетчера агентов, показанное ниже:

Вы заметите, что приложение сразу же готово начать новый диалог в выбранной папке рабочей области ( my-agy-projects ). Обратите внимание, что вы можете использовать уже имеющиеся знания о работе с другими приложениями ИИ (Cursor, Gemini CLI), а также использовать @ и другие способы включения дополнительного контекста в подсказки.
Обратите внимание на раскрывающиеся списки Planning и « Model Selection . В раскрывающемся списке «Выбор модели» вы можете выбрать одну из доступных в данный момент моделей для использования вашим агентом. Список представлен ниже:

Аналогично, мы обнаруживаем, что агент будет работать в режиме Planning по умолчанию. Но мы также можем выбрать Fast режим.

Давайте посмотрим, что по этому поводу говорится в документации :
-
Planning: Агент может планировать выполнение задач перед их выполнением. Используйте этот режим для глубоких исследований, сложных задач или совместной работы. В этом режиме Агент организует свою работу в рабочих группах, создаёт артефакты и предпринимает другие шаги для тщательного исследования, продумывания и планирования своей работы с оптимальным качеством. Здесь вы увидите гораздо больше информации. -
Fast: Агент будет выполнять задачи напрямую. Используйте для простых задач, которые можно выполнить быстрее, например, переименования переменных, запуска нескольких команд Bash или других небольших локальных задач. Это полезно, когда скорость важна, а задача достаточно проста, и нет опасений по поводу ухудшения качества.
Если вы знакомы с «бюджетом мышления» и аналогичными терминами в Agents, воспринимайте это как возможность контролировать мыслительные процессы агента, тем самым напрямую влияя на этот бюджет. Пока что мы будем использовать значения по умолчанию, но помните, что на момент запуска модель Gemini 3 Pro будет доступна всем пользователям в соответствии с ограниченными квотами, поэтому ожидайте соответствующих сообщений, уведомляющих об исчерпании бесплатных квот на использование Gemini 3.
Давайте теперь уделим немного времени окну «Менеджер агентов» и разберем несколько моментов, чтобы было понятно, из чего он состоит, как ориентироваться в Antigravity и многое другое. Окно «Менеджер агентов» представлено ниже:

Пожалуйста, обратитесь к приведенной выше диаграмме с номерами:
-
Inbox: думайте об этом как о способе отслеживать все ваши переписки в одном месте. Когда вы отправляете агентов на выполнение задач, они появляются в папке «Входящие», и вы можете нажать на неё, чтобы получить список всех текущих переписок. Нажав на любую переписку, вы увидите все сообщения, которыми обменивались агенты, статус задач, информацию о том, что сделал агент, и даже о том, ожидает ли он одобрения задач с вашей стороны. Это отличный способ вернуться к предыдущей задаче, над которой вы работали. Очень удобная функция. -
Start Conversation: Нажмите, чтобы начать новый разговор. Это перенаправит вас к полю ввода с надписьюAsk anything. -
Workspaces: Мы уже упоминали о рабочих пространствах и о том, что вы можете работать в любом рабочем пространстве. Вы можете добавить дополнительные рабочие пространства в любое время и выбрать любое рабочее пространство в начале разговора. -
Playground: это отличный способ, с помощью которого вы можете просто начать разговор с агентом, а затем, если захотите, преобразовать его в рабочее пространство, где у вас будет более строгий контроль над файлами и т. д. Думайте об этом как о рабочей зоне. -
Editor View: Пока что мы находимся в представлении менеджера агентов. Вы можете в любой момент переключиться в представление редактора, если захотите. В нём будет отображена папка вашего рабочего пространства и все сгенерированные файлы. Вы можете редактировать файлы непосредственно в нём или даже предоставить встроенные инструкции или команды в редакторе, чтобы агент мог выполнить какие-либо действия или внести изменения в соответствии с вашими рекомендациями/инструкциями. Мы подробно рассмотрим представление редактора в следующем разделе. -
Browser: Наконец, мы подошли к одному из явных отличий, делающих Antigravity таким мощным инструментом, — его тесной интеграции с браузером Chrome. Перейдём к настройке браузера в следующем разделе.
4. Настройка браузера Antigravity
Согласно документации , когда агенту требуется взаимодействовать с браузером, он вызывает субагент браузера для выполнения этой задачи. Субагент браузера использует специализированную модель для работы со страницами, открытыми в браузере, управляемом Antigravity, которая отличается от модели, выбранной вами для основного агента.
Этот субагент имеет доступ к различным инструментам, необходимым для управления вашим браузером, включая клики, прокрутку, ввод текста, чтение журналов консоли и многое другое. Он также может считывать содержимое открытых страниц, используя захват DOM, скриншоты или парсинг разметки, а также снимать видео.
Это значит, что нам нужно запустить и установить расширение Antigravity для браузера. Давайте сделаем это, начав диалог в Playground и выполнив следующие шаги.
Выберите Playground и дайте Агенту следующую задачу go to antigravity.google , как показано ниже:

Отправьте задачу . Вы увидите, как агент анализирует задачу, и сможете проследить ход мысли. В какой-то момент он выполнит корректную операцию и сообщит о необходимости настройки браузерного агента, как показано ниже. Нажмите «Настройка» .

Откроется браузер и появится сообщение с предложением установить расширение, как показано ниже:

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

После успешной установки расширения Antigravity Agent начнёт работу и сообщит, что ожидает вашего разрешения на выполнение задачи. В открывшемся окне браузера должна произойти какая-то активность:

Вернитесь к виду диспетчера агентов, и вы увидите следующее:

Именно этого мы и ожидали, поскольку попросили Агента посетить сайт antigravity.google . Дайте ему разрешение, и вы увидите, что он благополучно перешёл на сайт, как показано ниже:

Осмотр артефактов
А теперь самое интересное. Как только агент завершит свою работу, вы сможете увидеть её целиком. Это создаст артефакты — фундамент, на котором вы будете строить своё доверие, учитывая, какую работу вы запланировали, что вы уже сделали и как вы это проверили.
Артефакты решают проблему «пробелов в доверии». Когда агент заявляет: «Я исправил ошибку», разработчику раньше приходилось читать код, чтобы убедиться в этом. В Antigravity агент создаёт артефакт, чтобы подтвердить это.
Antigravity фокусируется на создании ключевых артефактов в зависимости от задачи. Это может быть план задачи, план реализации и, наконец, план прохождения (с проверкой). В рамках этих планов следует рассмотреть следующие моменты:
-
Task Lists & Plans: перед написанием кода агент генерирует структурированный план. Пользователь может просмотреть этот план, отредактировать и утвердить его. -
Code Diffs: стандартизированные представления различий, показывающие, какие именно строки изменятся. -
Screenshots: Агент фиксирует состояние пользовательского интерфейса до и после изменения. -
Browser Recordings: для динамических взаимодействий (например, «Нажмите кнопку входа, дождитесь появления индикатора, убедитесь, что загрузилась панель управления») агент записывает видео своего сеанса. Разработчик может просмотреть это видео, чтобы убедиться в выполнении функциональных требований, не запуская приложение самостоятельно. -
Test Results: структурированные журналы успешных/неудачных тестов, созданные и выполненные агентом.
В правом верхнем углу, рядом с полем «Просмотр изменений в представлении диспетчера агентов», вы увидите кнопку для переключения артефактов. Если она включена, вы увидите список сгенерированных артефактов:

Вы должны увидеть окно «Артефакты», как показано ниже. В нашем случае мы дали Агенту указание посетить страницу antigravity.google, и, следовательно, он сделал снимок экрана, создал видеозапись и т.д.

Разработчики могут взаимодействовать с этими артефактами, используя комментарии в стиле Google Docs. Вы можете выбрать конкретное действие или задачу, задать команду в желаемом виде и отправить её Агенту. Агент обработает эту обратную связь и выполнит итерацию соответствующим образом. Подумайте об использовании интерактивных Google Docs, где вы предоставляете обратную связь автору, а автор затем повторяет её.
5. Перепроверьте папку «Входящие»
Если вы уже начали несколько разговоров с агентами, теперь вам следует просмотреть папку «Входящие» в окне «Менеджер агентов». Там будут показаны все разговоры. Щёлкните по любому разговору, чтобы просмотреть историю этого разговора, созданные артефакты и многое другое. В нашем случае после запуска первого разговора в папке «Входящие» отображается список разговоров, как показано ниже:

Нажав на эту беседу, вы получите подробную информацию:

Вы также можете продолжить разговор здесь.
6. Редактор
Редактор сохраняет привычный интерфейс VS Code, гарантируя бережное отношение к мышечной памяти опытных разработчиков. Он включает в себя стандартный проводник, подсветку синтаксиса и экосистему расширений.
Чтобы перейти в редактор, нажмите кнопку «Открыть редактор» в правом верхнем углу диспетчера агентов.

Редактор дополнен функцией «Осведомленность агента».
-
Inline Command: редактор поддерживает кодирование вибраций и встроенные инструкции, с помощью которых пользователи могут выделять код и давать агенту указание"Make this more efficient"или"Add comments explaining this logic". -
Agent Side Panel: используйте панель в правой части редактора для непосредственной работы с агентом. Здесь вы можете начинать новые диалоги или давать инструкции по изменению кода.
Поскольку мы рассматриваем некоторые варианты использования, связанные с веб-разработкой, где Агент создает несколько файлов кода, мы можем затем заглянуть в Редактор, чтобы просмотреть файлы, внести изменения и напрямую взаимодействовать с Агентом отсюда.
7. Переключение между редактором и менеджером агентов
Имейте в виду, что Antigravity придерживается мнения, что редактор и менеджер агентов — это отдельные окна, и необходимость в обоих очевидна. Вы можете переключаться между ними, используя кнопку « Открыть менеджер агентов» в правом верхнем углу в редакторе или кнопку « Открыть редактор» в правом верхнем углу в менеджере агентов.
Кроме того, для переключения между двумя режимами у вас также есть следующее сочетание клавиш: Cmd + E
8. Варианты использования
Теперь, когда у нас есть базовое представление о продукте, давайте рассмотрим несколько вариантов его использования, чтобы увидеть его в действии. Обратите внимание, что Antigravity — это платформа, ориентированная на агента. Это означает, что в большинстве случаев мы просто даём агенту инструкцию, а агент затем автоматически выполняет свою задачу, запрашивает разрешения при необходимости, создаёт артефакты и уведомляет нас о завершении задачи. В результате мы не можем создать каждый отдельный результат диалога с агентом в каждом из следующих вариантов использования. Мы поделимся инструкциями и несколькими необходимыми скриншотами ожидаемых результатов, но ваши результаты могут немного отличаться.
Мы рассмотрим различные варианты использования: от автоматизации нескольких задач с внешними сайтами до создания и проверки модульных тестовых случаев для проекта и полноценной разработки веб-сайта. Итак, начнём.
Главные новости
Это простой вариант использования, но он может стать основой, с помощью которой вы можете использовать веб-браузер для посещения веб-сайтов, извлечения информации, выполнения некоторых действий и последующего возврата данных пользователю.
В этом случае мы посетим сайт Google News и извлечём оттуда некоторую информацию. Но вы можете легко поэкспериментировать с любым сайтом по вашему выбору и посмотреть, что получится.
Убедитесь, что вы находитесь в Agent Manager и выбрали Playground , как показано ниже:

Затем дайте следующую инструкцию:

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

После завершения работы вы также увидите генерацию артефактов, как показано ниже:

Пример выполнения агентом показан ниже:

Обратите внимание, что слева у нас представлен мыслительный процесс, вы также можете прокручивать точки и просматривать воспроизведение и другие данные.
Что стоит попробовать
- Как только вы это поймете, выберите доступный веб-сайт, с которого вы хотите, чтобы агент зашел и получил/обобщил данные. Выберите какой-нибудь известный вам веб-сайт с панелями мониторинга и диаграммами и попросите его выбрать несколько значений.
- Попробуйте выполнить следующую подсказку:
Visit https://docs.cloud.google.com/release-notes and get me a summary of the release notes, categorized by product.
Создайте динамический веб-сайт с помощью Python + Flask
Давайте приступим к созданию полноценного веб-приложения. Веб-приложение, которое мы собираемся создать, представляет собой сайт с информацией об однодневном техническом мероприятии, в рамках которого в течение дня выступят несколько спикеров.
Еще раз убедитесь, что вы находитесь в Agent Manager и выбрали Playground .
Дайте следующую подсказку:
I would like to generate a website that is a 1-day technical conference informational site.
The website should have the following functionality:
1. A home page that shows the current date, location, schedule and time table.
2. The 1-day event is a list of 8 talks in total.
3. Each talk has 1 or 2 max. speakers.
4. A talk has an ID, Title, Speakers, Category (1 or 2), Description and time of the talk.
5. Each speaker has a First Name, Last Name and LinkedIn url.
6. Allow for users to search by category, speaker, title.
7. Give a lunch break of 60 minutes.
8. Use dummy data for events and speakers, come up with a schedule, the event is about Google Cloud Technologies.
9. Tech Stack: Python and Flask framework on server side. Front-end is basic HTML, CSS and JavaScript.
10. Test out the site on your own for all functionality and provide a detailed README on how to setup, run and make any further changes.
11. Launch the web application for me to review.
Вы можете начать разговор, задав указанную выше подсказку:
По мере выполнения своей задачи Агент будет продолжать создавать артефакты:
- Артефакт задачи
- Артефакт реализации
- Прохождение Артефакта
Артефакт задачи, представленный ниже, представлял собой начальную последовательность задач, которые агент, по его мнению, должен был выполнить, исходя из поставленной задачи. Пример скриншота выполнения представлен ниже:

Затем вы можете нажать на артефакт «План реализации» . Пример скриншота представлен ниже:

И наконец, у вас есть артефакт «Прохождение» . Он содержит всё, что сделал Агент, как показано ниже:

Обратите внимание, что сервер запустился и предоставил мне URL-адрес, по которому я нажимаю, и у меня открывается приложение. Пример снимка экрана показан ниже:

Если я перейду в редактор , то на экране отобразится папка, в которой сгенерировано приложение Python Flask. Вы также заметите, что Agent mode отмечен справа, и вы можете продолжить обсуждение там же.

Предположим, мы хотим добавить ещё несколько докладов в мероприятие. Оставаясь в редакторе, на панели «Агент» можно дать команду, например Add two more talks to the schedule .
В результате агент проанализирует требование, обновит задачу и план реализации, а затем также проверит обновлённую функциональность. Пример диалога представлен ниже:

При желании вы можете вернуться в Менеджер агентов. Этот процесс поможет вам понять, как происходит переход из Менеджера агентов в Редактор, внесение соответствующих изменений и т. д.
Примечание: При выполнении этой задачи агент попытался запустить сервер Flask на порту 5000, который использовался на текущей машине. Он продолжал попытки использовать следующий свободный порт, пока не решил использовать порт 8080 и не смог запустить сервер.
Что стоит попробовать
- Добавьте в приложение желаемую функциональность. Предоставьте подробную информацию агенту и наблюдайте, как он выполняет свою задачу: сначала изменяет список задач, затем план реализации и так далее.
- Попросите агента создать файл README или дополнительную документацию для приложения.
Создайте простое приложение для повышения производительности
Сейчас мы создадим простое веб-приложение таймера Pomodoro.
Убедитесь, что вы находитесь в Agent Manager и выбрали Playground . Введите следующий запрос:
Create a productivity app that features a Pomodoro timer. Give a calm and aesthetic look to the application.
Обратите внимание, как сначала создаётся список задач, затем план реализации, а затем всё это. Следите за ходом процесса: могут возникнуть ситуации, когда вам потребуется его проверить. Пример выполнения показан ниже.

В этом случае он также должен запустить браузер Antigravity , провести собственное тестирование и подтвердить его успешность. Среди прочего, он сгенерировал медиа-артефакт , содержащий видеозапись проверки. Это отличный способ увидеть, что именно он тестировал. Я также предложил некоторые изменения в стиле, поскольку это не сработало, а ему удалось это сделать.
Окончательный вариант приложения выглядит примерно так, как показано ниже, и выглядит весьма неплохо.

Давайте добавим в приложение красивое изображение таймера. Для этого достаточно отправить следующую инструкцию:
Add an image to the application that displays a timer.
В результате агент добавил новую задачу в артефакт «Задача»:

Затем, выполняя свою задачу, он сгенерировал изображение:

Наконец, в приложении появилось изображение, как мы и просили:

Что стоит попробовать
- Обратите внимание, что фон значка песочных часов в приложении непрозрачен. Попробуйте попросить агента сделать его прозрачным.
- Попробуйте несколько вариантов любого приложения, которое вы хотите создать. Поэкспериментируйте со стилями, изображениями, запросите изменения и т. д.
Генерация модульных тестов, заглушек и проверка тестов
Последний вариант использования, который мы здесь попробуем, — это генерация модульных тестов для определенного файла кода, который у нас есть, а также выполнение этих тестов агентом и их проверка.
Для этого нам понадобится рабочее пространство с одним файлом Python, как показано ниже:
from typing import Dict
# --- Custom Exceptions ---
class InventoryShortageError(Exception):
"""Raised when there is not enough item stock."""
pass
class PaymentFailedError(Exception):
"""Raised when the payment gateway rejects the transaction."""
pass
class InvalidOrderError(Exception):
"""Raised when the order violates business rules."""
pass
# --- External Service Interfaces (To be Mocked) ---
class InventoryService:
def get_stock(self, product_id: str) -> int:
"""Connects to DB to check stock."""
raise NotImplementedError("Real connection required")
def decrement_stock(self, product_id: str, quantity: int):
"""Connects to DB to reduce stock."""
raise NotImplementedError("Real connection required")
class PaymentGateway:
def charge(self, amount: float, currency: str) -> bool:
"""Connects to Stripe/PayPal."""
raise NotImplementedError("Real connection required")
# --- Main Business Logic ---
class Order:
def __init__(self,
inventory_service: InventoryService,
payment_gateway: PaymentGateway,
customer_email: str,
is_vip: bool = False):
self.inventory = inventory_service
self.payment = payment_gateway
self.customer_email = customer_email
self.is_vip = is_vip
self.items: Dict[str, Dict] = {} # {product_id: {'price': float, 'qty': int}}
self.is_paid = False
self.status = "DRAFT"
def add_item(self, product_id: str, price: float, quantity: int = 1):
"""Adds items to the cart. Rejects invalid prices or quantities."""
if price < 0:
raise ValueError("Price cannot be negative")
if quantity <= 0:
raise ValueError("Quantity must be greater than zero")
if product_id in self.items:
self.items[product_id]['qty'] += quantity
else:
self.items[product_id] = {'price': price, 'qty': quantity}
def remove_item(self, product_id: str):
"""Removes an item entirely from the cart."""
if product_id in self.items:
del self.items[product_id]
@property
def total_price(self) -> float:
"""Calculates raw total before discounts."""
return sum(item['price'] * item['qty'] for item in self.items.values())
def apply_discount(self) -> float:
"""
Applies business logic:
1. VIPs get flat 20% off.
2. Regulars get 10% off if total > 100.
3. No discount otherwise.
"""
total = self.total_price
if self.is_vip:
return round(total * 0.8, 2)
elif total > 100:
return round(total * 0.9, 2)
return round(total, 2)
def checkout(self):
"""
Orchestrates the checkout process:
1. Validates cart is not empty.
2. Checks stock for all items.
3. Calculates final price.
4. Charges payment.
5. Updates inventory.
"""
if not self.items:
raise InvalidOrderError("Cannot checkout an empty cart")
# 1. Check Inventory Logic
for product_id, data in self.items.items():
available_stock = self.inventory.get_stock(product_id)
if available_stock < data['qty']:
raise InventoryShortageError(f"Not enough stock for {product_id}")
# 2. Calculate Final Price
final_amount = self.apply_discount()
# 3. Process Payment
try:
success = self.payment.charge(final_amount, "USD")
if not success:
raise PaymentFailedError("Transaction declined by gateway")
except Exception as e:
# Catching generic network errors from the gateway
raise PaymentFailedError(f"Payment gateway error: {str(e)}")
# 4. Decrement Stock (Only occurs if payment succeeded)
for product_id, data in self.items.items():
self.inventory.decrement_stock(product_id, data['qty'])
self.is_paid = True
self.status = "COMPLETED"
return {"status": "success", "charged_amount": final_amount}
Убедитесь, что указанный выше файл Python находится у вас локально в папке , и вы загружаете его как рабочее пространство в Antigravity.
Это простая услуга заказа, которая имеет следующие ключевые функции оформления checkout :
- Проверяет, что корзина не пуста.
- Проверьте наличие всех товаров.
- Рассчитывает окончательную цену.
- Оплата сборов.
- Обновляет инвентарь.
Мы собираемся поручить Агенту задачу генерации тестовых случаев, предоставления реализаций Mock и выполнения тестов, чтобы убедиться в их успешности.
Откроем нашу рабочую папку, и вы заметите, что теперь мы можем использовать символ @ для ссылки на файл. Например, можно сделать следующее:

Это дает некоторое объяснение того, что это за файл:

Мы можем попросить его создать лучшую визуализацию с помощью подсказки:
Can you visually show this class for better understanding

Следующий шаг — сгенерировать модульные тесты и попросить агента их протестировать. Я выдаю следующее приглашение:
generate unit tests for this module and test it out with mock implementations.
Он сгенерировал следующий артефакт «Задача» и приступил к выполнению своей задачи.

Вы также можете увидеть подробную информацию о проведенных тестах:

Один из сгенерированных файлов также был тестовым. Скриншот его показан ниже:

Что стоит попробовать
Возьмите свой собственный код и посмотрите, что вы можете попросить сделать Агента: от добавления дополнительных функций до рефакторинга частей вашего кода.
9. Поздравления
Поздравляем! Вы успешно установили и разобрались, как использовать Antigravity, платформу разработки, ориентированную на агенты. Различные варианты использования, которые мы рассмотрели, помогут вам определиться с вашими требованиями и понять, как Antigravity может помочь вам в их реализации.
Справочные документы
- Официальный сайт: https://antigravity.google/
- Документация: https://antigravity.google/docs
- Примеры использования: https://antigravity.google/use-cases
- Скачать: https://antigravity.google/download
- Канал Google Antigravity на YouTube: https://www.youtube.com/@googleantigravity