Первый запрос: проверка успешной установки
Что вы сможете делать после изучения
- Отправлять первый запрос к модели Antigravity
- Понимать назначение параметров
--modelи--variant - Выбирать подходящую модель и конфигурацию размышлений в соответствии с задачей
- Диагностировать распространенные ошибки при запросах к моделям
Ваша текущая ситуация
Вы только что установили плагин, завершили OAuth-аутентификацию, настроили определения моделей, но сейчас не уверены:
- Будет ли плагин работать корректно?
- Какую модель использовать для первого теста?
- Как использовать параметр
--variant? - Если запрос не выполнится, как определить, на каком этапе возникла проблема?
Когда использовать этот подход
Применяйте методы проверки из этого урока в следующих сценариях:
- После первой установки — подтвердите, что аутентификация, конфигурация и модели работают корректно
- После добавления новой учетной записи — проверьте доступность нового аккаунта
- После изменения конфигурации модели — убедитесь, что новая конфигурация корректна
- Перед возникновением проблемы — установите базовый уровень для последующего сравнения
🎒 Подготовка перед началом
Предварительная проверка
Прежде чем продолжить, убедитесь:
- ✅ Завершена быстрая установка
- ✅ Выполнена команда
opencode auth loginдля завершения OAuth-аутентификации - ✅ В файл
~/.config/opencode/opencode.jsonдобавлены определения моделей - ✅ Терминал OpenCode или CLI доступен
Основная концепция
Зачем нужна предварительная проверка
Плагин включает взаимодействие нескольких компонентов:
- OAuth-аутентификация — получение токена доступа
- Управление учетными записями — выбор доступного аккаунта
- Преобразование запросов — конвертация формата OpenCode в формат Antigravity
- Потоковый ответ — обработка SSE-ответов и конвертация обратно в формат OpenCode
Отправка первого запроса позволяет проверить, весь ли путь работает корректно. Если успешно — все компоненты функционируют правильно; если нет — можно локализовать проблему по сообщению об ошибке.
Взаимосвязь Model и Variant
В плагине Antigravity модель и variant — это два независимых понятия:
| Концепция | Назначение | Пример |
|---|---|---|
| Model (модель) | Выбор конкретной ИИ-модели | antigravity-claude-sonnet-4-5-thinking |
| Variant (вариант) | Конфигурация бюджета размышлений или режима | low (облегченные размышления), max (максимальные размышления) |
Что такое бюджет размышлений?
Бюджет размышлений (thinking budget) — это количество токенов, которое модель может использовать для "размышлений" перед генерацией ответа. Больший бюджет означает больше времени на рассуждения, но также увеличивает время ответа и стоимость.
- Модели Claude Thinking: настраивается через
thinkingConfig.thinkingBudget(единица: токен) - Модели Gemini 3: настраивается через
thinkingLevel(строковый уровень: minimal/low/medium/high)
Рекомендуемые комбинации для начала
Рекомендуемые комбинации моделей и вариантов для различных потребностей:
| Потребность | Модель | Variant | Особенности |
|---|---|---|---|
| Быстрое тестирование | antigravity-gemini-3-flash | minimal | Самый быстрый ответ, подходит для проверки |
| Повседневная разработка | antigravity-claude-sonnet-4-5-thinking | low | Баланс скорости и качества |
| Сложные рассуждения | antigravity-claude-opus-4-5-thinking | max | Максимальные способности к рассуждениям |
| Задачи с визуальными данными | antigravity-gemini-3-pro | high | Поддержка мультимодальности (изображения/PDF) |
Следуйте инструкциям
Шаг 1: Отправьте простейший тестовый запрос
Сначала протестируйте базовое подключение с помощью простейшей команды.
Почему Этот запрос не использует функцию thinking, возвращается очень быстро, подходит для быстрой проверки аутентификации и состояния учетной записи.
Выполните команду
opencode run "Hello" --model=google/antigravity-claude-sonnet-4-5Что вы должны увидеть
Hello! I'm Claude Sonnet 4.5, an AI assistant...Признак успеха
Если вы видите ответ от ИИ, это означает:
- ✅ OAuth-аутентификация успешна
- ✅ Учетная запись имеет права доступа
- ✅ Преобразование запросов работает корректно
- ✅ Потоковый ответ правильно разобран
Шаг 2: Используйте модель Thinking и Variant
Теперь протестируйте полный процесс размышлений, включая параметр variant.
Почему Модели Thinking требуют дополнительной логики преобразования запросов, что является одной из ключевых функций плагина.
Выполните команду
opencode run "Объясните, что такое замыкание, с помощью простой аналогии" --model=google/antigravity-claude-sonnet-4-5-thinking --variant=maxЧто вы должны увидеть
- Потоковый вывод размышлений: Вы увидите, как модель сначала выводит процесс размышлений (с тегом
<thinking>) - Процесс размышлений: Модель подробно проанализирует, как организовать ответ
- Финальный ответ: После завершения размышлений выводится финальное содержание
Посмотреть полный пример ответа
<thinking>
Пользователь спрашивает, что такое замыкание, и нужно объяснить это с помощью простой аналогии.
Концепция замыкания:
1. Функция может получить доступ к переменным из внешней области видимости
2. Даже если внешняя функция уже выполнена
3. Эта способность похожа на "рюкзак"
Идея аналогии:
- Можно использовать аналогию с "рюкзаком"
- Функция возвращается, захватив некоторые переменные
- Как будто на выходе из дома в рюкзак положили вещи из дома
</thinking>
Замыкание — это как "рюкзак" функции.
Когда функция создается, она "упаковывает" переменные из внешней области, к которым имеет доступ, как будто перед выходом из дома кладет нужные вещи в рюкзак. Даже если функция покинула место своего создания (внешняя функция выполнена), она все равно может получить доступ к этим переменным через свой "рюкзак".
Например:
```javascript
function createCounter() {
let count = 0; // эта переменная попадает в "рюкзак"
return function() {
count++; // все еще можно получить доступ к переменной из рюкзака
return count;
};
}Контрольная точка ✅
- [ ] Увидели блок
<thinking>(если настроеноkeep_thinking: true) - [ ] Содержание ответа разумно и логично
- [ ] Время ответа в приемлемых пределах (обычно 2-10 секунд)
Шаг 3: Протестируйте модель Gemini 3
Протестируйте различные уровни размышлений модели Gemini 3 Pro.
Почему Gemini 3 использует строковый thinkingLevel, что позволяет проверить поддержку разных семейств моделей.
Выполните команду
# Тестирование Gemini 3 Flash (быстрый ответ)
opencode run "Напишите пузырьковую сортировку" --model=google/antigravity-gemini-3-flash --variant=low
# Тестирование Gemini 3 Pro (глубокое размышление)
opencode run "Проанализируйте временную сложность пузырьковой сортировки" --model=google/antigravity-gemini-3-pro --variant=highЧто вы должны увидеть
- Модель Flash отвечает быстрее (подходит для простых задач)
- Модель Pro размышляет глубже (подходит для сложного анализа)
- Обе модели работают корректно
Шаг 4: Протестируйте мультимодальные возможности (опционально)
Если ваша конфигурация модели поддерживает ввод изображений, вы можете протестировать мультимодальную функцию.
Почему Antigravity поддерживает ввод изображений/PDF, что необходимо для многих сценариев использования.
Подготовьте тестовое изображение: любой файл изображения (например, test.png)
Выполните команду
opencode run "Опишите содержание этого изображения" --model=google/antigravity-gemini-3-pro --image=test.pngЧто вы должны увидеть
- Модель точно описывает содержание изображения
- Ответ включает результаты визуального анализа
Контрольная точка ✅
После выполнения всех тестов подтвердите следующий список:
| Проверяемый пункт | Ожидаемый результат | Статус |
|---|---|---|
| Базовое подключение | Шаг 1: простой запрос выполнен успешно | ☐ |
| Модель Thinking | Шаг 2: процесс размышлений отображен | ☐ |
| Модель Gemini 3 | Шаг 3: обе модели работают корректно | ☐ |
| Параметр Variant | Разные variant дают разные результаты | ☐ |
| Потоковый вывод | Ответ отображается в реальном времени без прерываний | ☐ |
Все проверки пройдены?
Если все проверяемые пункты успешно пройдены, поздравляем! Плагин полностью настроен и готов к использованию.
Следующие шаги:
Подсказки по устранению проблем
Ошибка 1: Model not found
Сообщение об ошибке
Error: Model 'antigravity-claude-sonnet-4-5' not foundПричина Определение модели не было корректно добавлено в provider.google.models в файле opencode.json.
Решение
Проверьте файл конфигурации:
cat ~/.config/opencode/opencode.json | grep -A 10 "models"Подтвердите, что формат определения модели корректен:
{
"provider": {
"google": {
"models": {
"antigravity-claude-sonnet-4-5": {
"name": "Claude Sonnet 4.5 (Antigravity)",
"limit": { "context": 200000, "output": 64000 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
}
}
}
}
}Обратите внимание на орфографию
Имя модели должно полностью совпадать с ключом в файле конфигурации (с учетом регистра):
- ❌ Неправильно:
--model=google/claude-sonnet-4-5 - ✅ Правильно:
--model=google/antigravity-claude-sonnet-4-5
Ошибка 2: 403 Permission Denied
Сообщение об ошибке
403 Permission denied on resource '//cloudaicompanion.googleapis.com/...'Причина
- OAuth-аутентификация не завершена
- Учетная запись не имеет прав доступа
- Проблема с настройкой Project ID (для моделей Gemini CLI)
Решение
Проверьте статус аутентификации:
bashcat ~/.config/opencode/antigravity-accounts.jsonВы должны увидеть хотя бы одну запись об учетной записи.
Если учетная запись пуста или аутентификация не удалась:
bashrm ~/.config/opencode/antigravity-accounts.json opencode auth loginЕсли ошибка возникает с моделью Gemini CLI: Необходимо вручную настроить Project ID (подробнее см. FAQ - 403 Permission Denied)
Ошибка 3: Invalid variant 'max'
Сообщение об ошибке
Error: Invalid variant 'max' for model 'antigravity-gemini-3-pro'Причина Разные модели поддерживают разные форматы конфигурации variant.
Решение
Проверьте определение variant в конфигурации модели:
| Тип модели | Формат variant | Пример значения |
|---|---|---|
| Claude Thinking | thinkingConfig.thinkingBudget | { "thinkingConfig": { "thinkingBudget": 32768 } } |
| Gemini 3 | thinkingLevel | { "thinkingLevel": "high" } |
| Gemini 2.5 | thinkingConfig.thinkingBudget | { "thinkingConfig": { "thinkingBudget": 8192 } } |
Пример правильной конфигурации:
{
"antigravity-claude-sonnet-4-5-thinking": {
"name": "Claude Sonnet 4.5 Thinking",
"variants": {
"low": { "thinkingConfig": { "thinkingBudget": 8192 } },
"max": { "thinkingConfig": { "thinkingBudget": 32768 } }
}
},
"antigravity-gemini-3-pro": {
"name": "Gemini 3 Pro",
"variants": {
"low": { "thinkingLevel": "low" },
"high": { "thinkingLevel": "high" }
}
}
}Ошибка 4: Таймаут запроса или отсутствие ответа
Симптомы Команда выполняется долго без вывода или в итоге завершается по таймауту.
Возможные причины
- Проблемы с сетевым подключением
- Медленный ответ сервера
- Все учетные записи находятся в состоянии ограничения скорости
Решение
Проверьте сетевое подключение:
bashping cloudaicompanion.googleapis.comПросмотрите логи отладки:
bashOPENCODE_ANTIGRAVITY_DEBUG=1 opencode run "test" --model=google/antigravity-claude-sonnet-4-5Проверьте статус учетных записей:
bashcat ~/.config/opencode/antigravity-accounts.jsonЕсли вы видите, что у всех учетных записей есть временная метка
rateLimit, значит все находятся под ограничением скорости и необходимо дождаться сброса.
Ошибка 5: Прерывание SSE-потокового вывода
Симптомы Ответ прерывается на середине или отображается только часть содержания.
Возможные причины
- Нестабильная сеть
- Токен учетной записи истекает в процессе запроса
- Ошибка сервера
Решение
Включите логи отладки для просмотра подробной информации:
bashOPENCODE_ANTIGRAVITY_DEBUG=2 opencode run "test"Проверьте файлы логов:
bashtail -f ~/.config/opencode/antigravity-logs/latest.logЕсли прерывания происходят часто:
- Попробуйте переключиться на более стабильную сетевую среду
- Используйте модель без Thinking для сокращения времени запроса
- Проверьте, не приближается ли учетная запись к лимиту квоты
Резюме урока
Отправка первого запроса — это ключевой шаг для проверки успешной установки. В этом уроке вы научились:
- Базовый запрос: использование
opencode run --modelдля отправки запросов - Использование Variant: конфигурация бюджета размышлений через
--variant - Выбор модели: выбор моделей Claude или Gemini в соответствии с потребностями
- Диагностика проблем: локализация и решение проблем на основе сообщений об ошибках
Рекомендуемая практика
В повседневной разработке:
- Сначала простой тест: после каждого изменения конфигурации сначала отправьте простой запрос для проверки
- Постепенно увеличивайте сложность: от отсутствия thinking → low thinking → max thinking
- Записывайте базовое время ответа: запомните время ответа в нормальных условиях для последующего сравнения
- Используйте логи отладки: при возникновении проблем включите
OPENCODE_ANTIGRAVITY_DEBUG=2
Анонс следующего урока
В следующем уроке мы изучим Обзор доступных моделей.
Вы узнаете:
- Полный список доступных моделей и их особенности
- Руководство по выбору моделей Claude и Gemini
- Сравнение ограничений контекста и вывода
- Лучшие сценарии использования моделей Thinking
Приложение: Ссылки на исходный код
Нажмите, чтобы развернуть ссылки на исходный код
Обновлено: 2026-01-23
| Функция | Путь к файлу | Номер строки |
|---|---|---|
| Точка входа преобразования запросов | src/plugin/request.ts | 1-100 |
| Выбор учетной записи и управление токенами | src/plugin/accounts.ts | 1-50 |
| Преобразование модели Claude | src/plugin/transform/claude.ts | полный текст |
| Преобразование модели Gemini | src/plugin/transform/gemini.ts | полный текст |
| Обработка потоковых ответов | src/plugin/core/streaming/index.ts | полный текст |
| Система логов отладки | src/plugin/debug.ts | полный текст |
Ключевые функции:
prepareAntigravityRequest(): преобразование запроса OpenCode в формат Antigravity (request.ts)createStreamingTransformer(): создание преобразователя потоковых ответов (core/streaming/)resolveModelWithVariant(): разбор конфигурации модели и variant (transform/model-resolver.ts)getCurrentOrNextForFamily(): выбор учетной записи для запроса (accounts.ts)
Примеры конфигурации:
- Формат конфигурации модели:
README.md#models - Подробное описание Variant:
docs/MODEL-VARIANTS.md