Настройка нескольких аккаунтов: объединение квот и балансировка нагрузки
Чему вы научитесь
- Добавлять несколько аккаунтов Google для увеличения общего лимита квот
- Понимать двойную систему квот для эффективного использования пулов Antigravity и Gemini CLI
- Выбирать подходящую стратегию балансировки нагрузки в зависимости от количества аккаунтов и сценария использования
- Устранять распространённые проблемы в конфигурации с несколькими аккаунтами
Проблемы, с которыми вы сталкиваетесь
При использовании одного аккаунта вы можете столкнуться с такими проблемами:
- Частые ошибки 429 (превышение лимита), необходимость ожидания восстановления квот
- В сценариях разработки/тестирования слишком много параллельных запросов, которые не выдерживает один аккаунт
- После исчерпания квоты на модели Gemini 3 Pro или Claude Opus приходится ждать до следующего дня
- При параллельном запуске нескольких экземпляров OpenCode или подагентов oh-my-opencode возникает конкуренция между аккаунтами
Когда использовать эту функцию
Настройка нескольких аккаунтов подходит для следующих сценариев:
| Сценарий | Рекомендуемое количество аккаунтов | Причина |
|---|---|---|
| Персональная разработка | 2-3 | Резервные аккаунты, защита от прерываний |
| Командная работа | 3-5 | Распределение запросов, снижение конкуренции |
| Высокочастотные API-запросы | 5+ | Балансировка нагрузки, максимизация пропускной способности |
| Параллельные агенты | 3+ с PID смещением | Независимые аккаунты для каждого агента |
Предварительные требования
Перед началом обучения убедитесь, что вы:
- ✅ Установили плагин opencode-antigravity-auth
- ✅ Успешно прошли OAuth-аутентификацию и добавили первый аккаунт
- ✅ Можете отправлять запросы с использованием модели Antigravity
Учебник по быстрой установке | Учебник по первой аутентификации
Основная концепция
Основные механизмы настройки нескольких аккаунтов:
- Объединение квот: каждый аккаунт Google имеет независимую квоту, объединение нескольких аккаунтов создаёт больший общий пул
- Балансировка нагрузки: плагин автоматически выбирает доступный аккаунт, при достижении лимита переключается на следующий
- Двойная система квот (только для Gemini): каждый аккаунт имеет доступ к двум независимым пулам квот — Antigravity и Gemini CLI
- Интеллектуальное восстановление: дедупликация ограничений скорости (окно 2 секунды) + экспоненциальный откат, предотвращение неэффективных повторных попыток
Пример расчёта квот:
Предположим, квота Claude для каждого аккаунта составляет 1000 запросов в минуту:
| Количество аккаунтов | Теоретическая общая квота | Фактически доступная (с учётом кэширования) |
|---|---|---|
| 1 | 1000/мин | 1000/мин |
| 3 | 3000/мин | ~2500/мин (стратегия sticky) |
| 5 | 5000/мин | ~4000/мин (round-robin) |
💡 Почему стратегия sticky имеет меньшую доступную квоту?
Стратегия sticky продолжает использовать один и тот же аккаунт до достижения лимита, что приводит к простою других аккаунтов. Однако преимуществом является сохранение кэша подсказок Anthropic, что повышает скорость отклика.
Следуйте инструкциям
Шаг 1: Добавьте второй аккаунт
Зачем После добавления второго аккаунта плагин будет автоматически переключаться на резервный аккаунт при достижении лимита основного, предотвращая сбои запросов.
Действия
Запустите команду OAuth-входа:
opencode auth loginЕсли у вас уже есть аккаунт, вы увидите такой запрос:
1 account(s) saved:
1. [email protected]
(a)dd new account(s) or (f)resh start? [a/f]:Введите a и нажмите Enter, браузер автоматически откроет страницу авторизации Google.
Что вы должны увидеть:
- Браузер откроет страницу OAuth Google
- Выберите или войдите в свой второй аккаунт Google
- После согласия на авторизацию в терминале отобразится:
Account added successfully!
2 account(s) saved:
1. [email protected]
2. [email protected]TIP
Если браузер не открылся автоматически, скопируйте URL OAuth из терминала и вставьте его в браузер вручную.
Шаг 2: Проверка состояния нескольких аккаунтов
Зачем Подтвердить, что аккаунты добавлены корректно и доступны.
Действия
Просмотрите файл хранения аккаунтов:
cat ~/.config/opencode/antigravity-accounts.jsonЧто вы должны увидеть:
{
"version": 3,
"accounts": [
{
"email": "[email protected]",
"refreshToken": "1//0abc...",
"projectId": "project-id-123",
"addedAt": 1737609600000,
"lastUsed": 1737609600000
},
{
"email": "[email protected]",
"refreshToken": "1//0xyz...",
"addedAt": 1737609700000,
"lastUsed": 1737609700000
}
],
"activeIndex": 0,
"activeIndexByFamily": {
"claude": 0,
"gemini": 0
}
}Предупреждение безопасности
Файл antigravity-accounts.json содержит OAuth refresh tokens, эквивалентные паролю. Не отправляйте его в системы контроля версий.
Шаг 3: Тестирование переключения аккаунтов
Зачем Проверить, что балансировка нагрузки между несколькими аккаунтами работает корректно.
Действия
Отправьте несколько параллельных запросов для вызова ограничения скорости:
# macOS/Linux
for i in {1..10}; do
opencode run "Test $i" --model=google/antigravity-claude-sonnet-4-5 &
done
wait
# Windows PowerShell
1..10 | ForEach-Object {
Start-Process -FilePath "opencode" -ArgumentList "run","Test $_","--model=google/antigravity-claude-sonnet-4-5"
}Что вы должны увидеть:
- Первые N запросов используют аккаунт 1 ([email protected])
- При получении ошибки 429 автоматическое переключение на аккаунт 2 ([email protected])
- Если уведомления включены, появится toast-уведомление "Switched to account 2"
Уведомление о переключении аккаунта
Если включен quiet_mode: false (по умолчанию), плагин показывает уведомления о переключении аккаунта. При первом переключении отображается email, при последующих — только индекс аккаунта.
Шаг 4: Настройка двойной системы квот (только для Gemini)
Зачем После включения fallback для двойной квоты, когда квота Antigravity исчерпана, плагин автоматически попытается использовать квоту Gemini CLI без переключения аккаунта.
Действия
Отредактируйте файл конфигурации плагина:
# macOS/Linux
nano ~/.config/opencode/antigravity.json
# Windows
notepad %APPDATA%\opencode\antigravity.jsonДобавьте следующую конфигурацию:
{
"$schema": "https://raw.githubusercontent.com/NoeFabris/opencode-antigravity-auth/main/assets/antigravity.schema.json",
"quota_fallback": true
}Сохраните файл и перезапустите OpenCode.
Что вы должны увидеть:
- При использовании моделей Gemini плагин сначала использует квоту Antigravity
- Когда Antigravity возвращает 429, автоматическое переключение на квоту Gemini CLI того же аккаунта
- Если обе квоты ограничены, переключение на следующий аккаунт
Двойная квота vs Несколько аккаунтов
- Двойная квота: два независимых пула квот для одного аккаунта (Antigravity + Gemini CLI)
- Несколько аккаунтов: объединение пулов квот нескольких аккаунтов
- Лучшая практика: сначала включите двойную квоту, затем добавьте несколько аккаунтов
Шаг 5: Выбор стратегии выбора аккаунта
Зачем Разное количество аккаунтов и сценарии использования требуют разных стратегий для достижения оптимальной производительности.
Действия
Настройте стратегию в файле antigravity.json:
{
"account_selection_strategy": "hybrid"
}Выберите в зависимости от количества аккаунтов:
| Количество аккаунтов | Рекомендуемая стратегия | Значение конфигурации | Причина |
|---|---|---|---|
| 1 | sticky | "sticky" | Сохранение кэша запросов |
| 2-5 | hybrid | "hybrid" | Баланс между пропускной способностью и кэшированием |
| 5+ | round-robin | "round-robin" | Максимизация пропускной способности |
Подробное описание стратегий:
- sticky (по умолчанию для одного аккаунта): продолжает использовать один и тот же аккаунт до достижения лимита, подходит для одиночной сессии разработки
- round-robin: каждый запрос переключается на следующий аккаунт, максимизирует пропускную способность, но жертвует кэшированием
- hybrid (по умолчанию для нескольких аккаунтов): комплексное решение на основе оценки состояния + Token bucket + LRU
Что вы должны увидеть:
- При использовании стратегии
hybridплагин автоматически выбирает оптимальный аккаунт - При использовании стратегии
round-robinзапросы равномерно распределяются по всем аккаунтам - При использовании стратегии
stickyв одной сессии всегда используется один и тот же аккаунт
Шаг 6: Включение PID смещения (для параллельных агентов)
Зачем При запуске нескольких экземпляров OpenCode или параллельных агентов oh-my-opencode разные процессы могут выбирать один и тот же аккаунт, что приводит к конкуренции.
Действия
Добавьте в файл antigravity.json:
{
"pid_offset_enabled": true
}Сохраните и перезапустите OpenCode.
Что вы должны увидеть:
- Разные процессы (с разными PID) начинают с разных индексов аккаунтов
- Снижается конкуренция за аккаунты между параллельными агентами
- Общая пропускная способность увеличивается
Как работает PID смещение
PID смещение отображает идентификатор процесса на смещение аккаунта, например:
- PID 100 → смещение 0 → начало с аккаунта 0
- PID 101 → смещение 1 → начало с аккаунта 1
- PID 102 → смещение 2 → начало с аккаунта 2
Контрольный пункт ✅
После завершения вышеуказанных шагов вы должны уметь:
- [ ] Добавлять несколько аккаунтов Google через
opencode auth login - [ ] Видеть записи нескольких аккаунтов в файле
antigravity-accounts.json - [ ] Наблюдать автоматическое переключение на следующий аккаунт при достижении лимита
- [ ] Включать двойной fallback квот для моделей Gemini
- [ ] Выбирать подходящую стратегию выбора аккаунта в зависимости от количества аккаунтов
- [ ] Включать PID смещение для параллельных агентов
Распространённые проблемы и решения
Все аккаунты ограничены по скорости
Симптом: Все аккаунты показывают ошибку 429, невозможно продолжать запросы
Причина: Квота исчерпана или слишком много параллельных запросов
Решение:
- Подождите, пока ограничение скорости автоматически сбросится (обычно 1-5 минут)
- Если проблема возникает регулярно, добавьте больше аккаунтов
- Проверьте конфигурацию
max_rate_limit_wait_seconds, установите разумный верхний лимит ожидания
Слишком частое переключение аккаунтов
Симптом: Каждый запрос переключает аккаунт, не используется один и тот же аккаунт
Причина: Неправильно выбрана стратегия или некорректная оценка состояния
Решение:
- Измените стратегию на
sticky - Проверьте конфигурацию
health_score, отрегулируйтеmin_usableиrate_limit_penalty - Убедитесь, что нет частых ошибок 429, приводящих к пометке аккаунтов как неработоспособных
Ошибка прав доступа Gemini CLI (403)
Симптом: При использовании моделей Gemini CLI возвращается ошибка Permission denied
Причина: Аккаунту не хватает действительного Project ID
Решение:
- Добавьте
projectIdвручную для каждого аккаунта:
{
"accounts": [
{
"email": "[email protected]",
"refreshToken": "...",
"projectId": "your-project-id"
}
]
}- Убедитесь, что в Google Cloud Console включено API Gemini for Google Cloud
Недействительный токен (invalid_grant)
Симптом: Аккаунт автоматически удаляется с ошибкой invalid_grant
Причина: Изменение пароля Google, инцидент безопасности или истечение срока токена
Решение:
- Удалите недействительный аккаунт и повторно пройдите аутентификацию:
rm ~/.config/opencode/antigravity-accounts.json
opencode auth login- Если проблема возникает часто, рассмотрите возможность использования более стабильного аккаунта Google
Резюме урока
- Настройка нескольких аккаунтов позволяет увеличить общий лимит квот и стабильность системы
- Добавление аккаунтов очень просто — просто повторно запустите
opencode auth login - Двойная система квот удваивает доступную квоту для каждого аккаунта Gemini
- Стратегия выбора аккаунта должна регулироваться в зависимости от количества аккаунтов и сценария использования
- PID смещение критически важно для сценариев с параллельными агентами
Следующий урок
В следующем уроке мы изучим стратегии выбора аккаунта.
Вы узнаете:
- Подробное рабочее принципе трёх стратегий: sticky, round-robin, hybrid
- Как выбрать оптимальную стратегию в зависимости от сценария
- Методы настройки оценки состояния и Token bucket
Приложение: Справочник по исходному коду
Нажмите, чтобы развернуть информацию о расположении исходного кода
Обновлено: 2026-01-23
| Функция | Путь к файлу | Строки |
|---|---|---|
| Класс AccountManager | src/plugin/accounts.ts | 174-250 |
| Стратегии балансировки нагрузки | src/plugin/rotation.ts | Полный файл |
| Схема конфигурации | src/plugin/config/schema.ts | Полный файл |
| Хранение аккаунтов | src/plugin/storage.ts | Полный файл |
Ключевые константы:
| Имя константы | Значение | Описание |
|---|---|---|
QUOTA_EXHAUSTED_BACKOFFS | [60000, 300000, 1800000, 7200000] | Время отката при исчерпании квоты (1мин→5мин→30мин→2ч) |
RATE_LIMIT_EXCEEDED_BACKOFF | 30000 | Время отката при превышении лимита (30 сек) |
MIN_BACKOFF_MS | 2000 | Минимальное время отката (2 сек) |
Ключевые функции:
calculateBackoffMs(reason, consecutiveFailures, retryAfterMs): вычисление задержки откатаgetQuotaKey(family, headerStyle, model): генерация ключа квоты (поддержка ограничения на уровне модели)isRateLimitedForQuotaKey(account, key): проверка ограничения скорости для конкретного ключа квотыselectHybridAccount(accounts, family): логика выбора аккаунта для стратегии hybrid
Параметры конфигурации (из schema.ts):
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
account_selection_strategy | enum | "hybrid" | Стратегия выбора аккаунта |
quota_fallback | boolean | false | Включить fallback двойной квоты для Gemini |
pid_offset_enabled | boolean | false | Включить PID смещение |
switch_on_first_rate_limit | boolean | true | Немедленное переключение при первом достижении лимита |