Перейти к содержимому
OmniRoute source

Kiro Setup Guide (Русский)

Общая информация: почему учётные записи Kiro могут конфликтовать

Заголовок раздела «Общая информация: почему учётные записи Kiro могут конфликтовать»

Бэкенд Kiro использует регистрации клиентов AWS SSO OIDC для отслеживания активных сеансов. Критически важное ограничение: каждая регистрация клиента OIDC поддерживает только один активный сеанс одновременно. Когда второе устройство или пользователь проходит аутентификацию с помощью того же зарегистрированного клиента, бэкенд аннулирует токен обновления первой учётной записи.

Именно этот механизм вызывает проблемы при выполнении kiro-cli login на компьютере, где уже выполнен вход в другую учётную запись Kiro: новый вход отзывает токен первой учётной записи.


Начиная с v3.8.0, OmniRoute вызывает registerClient() (AWS SSO OIDC) при каждом импорте подключения Kiro. Благодаря этому каждое подключение OmniRoute получает собственную выделенную регистрацию клиента OIDC. Поскольку регистрации клиентов независимы друг от друга, обновление или повторная аутентификация одной учётной записи не влияет на токены обновления других учётных записей.

Изоляция применяется к методам импорта токенов обновления, а аутентификация по ключу API полностью исключает использование сеансов обновления OIDC:

Метод импорта Статус изоляции
AWS Builder ID / поток кода устройства IDC Изолирован с момента появления потока кода устройства
Импорт токена (ручная вставка токена обновления) Изолирован начиная с v3.8.0
Вход через Google / GitHub Изолирован начиная с v3.8.0
Автоимпорт (SQLite из kiro-cli) Изолирован начиная с v3.8.0 (путь SQLite уже был изолирован; резервный вариант с кэшем SSO теперь также изолирован)
Ключ API (долгосрочный ключ CodeWhisperer) Сеанс обновления отсутствует; ключ проверяется и сохраняется как учётные данные bearer

Примечание о миграции подключений, созданных до v3.8.0

Заголовок раздела «Примечание о миграции подключений, созданных до v3.8.0»

Подключения, импортированные до v3.8.0, не имеют выделенной регистрации клиента OIDC, сохранённой в providerSpecificData. Эти подключения продолжают работать, но используют общий эндпоинт обновления социальной аутентификации, поэтому два таких подключения всё ещё могут аннулировать токены друг друга.

Чтобы обеспечить изоляцию: удалите старое подключение в разделе Панель управления → Провайдеры и повторно импортируйте его с помощью любого из поддерживаемых способов импорта. Все новые подключения будут автоматически получать собственную регистрацию клиента.


Добавление двух учётных записей Kiro для параллельной работы

Заголовок раздела «Добавление двух учётных записей Kiro для параллельной работы»
  • OmniRoute v3.8.0 или более поздней версии.
  • Рабочая учётная запись Kiro (электронная почта и пароль либо вход через Google или GitHub).
  • При необходимости — вторая учётная запись Kiro.
  1. Откройте Панель управления → Провайдеры → Добавить провайдера → Kiro.
  2. Выберите один из вариантов:
    • Импорт токена — вставьте токен обновления, начинающийся с aorAAAAAG.
    • Ключ API — вставьте долгосрочный ключ API Kiro / CodeWhisperer.
    • Вход через Google / GitHub — завершите процесс OAuth в браузере.
    • Автоимпорт — нажмите кнопку; OmniRoute считает учётные данные из локальной базы данных kiro-cli или ~/.aws/sso/cache.
  3. Подключение будет сохранено. Для потоков с токенами обновления автоматически регистрируется выделенный клиент OIDC. При использовании ключа API ключ проверяется через AWS, а токен обновления не сохраняется.

Повторите шаг 1 для второй учётной записи. Поскольку при каждом импорте создаётся отдельная регистрация клиента OIDC, два подключения полностью изолированы друг от друга.

Шаг 3. Проверка активности обоих подключений

Заголовок раздела «Шаг 3. Проверка активности обоих подключений»
  1. Панель управления → Провайдеры — оба подключения Kiro должны иметь статус Активно.
  2. Панель управления → Состояние — оба подключения должны успешно пройти проверку работоспособности токенов.

Шаг 4. Использование комбинации для маршрутизации между учётными записями

Заголовок раздела «Шаг 4. Использование комбинации для маршрутизации между учётными записями»

Создайте комбинацию с обоими подключениями в качестве целей для балансировки нагрузки или переключения на резервное подключение:

kiro/kiro-dev → kiro/kiro-pro

Сведения о настройке комбинаций см. в FEATURES.md и документации по маршрутизации.


Корпоративные пользователи / пользователи IDC

Заголовок раздела «Корпоративные пользователи / пользователи IDC»

Для учетных записей AWS IAM Identity Center (IDC) используйте поток AWS Builder ID / кода устройства IDC в разделе Панель управления → Провайдеры → Kiro → Код устройства. Поток кода устройства всегда был полностью изолирован. Для этих подключений повторный импорт не требуется.

Корпоративные пользователи, работающие в регионе AWS, отличном от региона по умолчанию, могут указать регион при импорте через API импорта токена:

Окно терминала
curl -X POST http://localhost:20128/api/oauth/kiro/import \
-H "Content-Type: application/json" \
-d '{"refreshToken": "aorAAAAAG...", "region": "eu-west-1"}'

Если поле region не указано, по умолчанию используется us-east-1.


Аутентификация с помощью API-ключа предназначена для долгосрочных учетных данных носителя Kiro / AWS CodeWhisperer. Она не использует обновление OAuth, поэтому позволяет избежать аннулирования общего сеанса OIDC.

  1. Откройте Панель управления -> Провайдеры -> Kiro.
  2. Выберите API-ключ.
  3. Вставьте API-ключ и при необходимости укажите регион AWS (по умолчанию — us-east-1).
  4. OmniRoute проверит ключ и сохранит подключение.
Окно терминала
curl -X POST http://localhost:20128/api/oauth/kiro/api-key \
-H "Content-Type: application/json" \
-d '{"apiKey": "kiro_or_codewhisperer_key", "region": "us-east-1"}'

Маршрут API проверяет ключ, вызывая KiroService.validateApiKey(), который использует ListAvailableProfiles для конечной точки CodeWhisperer/Amazon Q, соответствующей региону, и определяет profileArn.

Сохраненное подключение использует:

{
"authType": "apikey",
"providerSpecificData": {
"authMethod": "api_key",
"region": "us-east-1",
"profileArn": "arn:aws:codewhisperer:..."
}
}

Во время выполнения KiroExecutor.buildHeaders() передает ключ в виде Authorization: Bearer <key> и добавляет tokentype: API_KEY. Вызовы квот и профиля используют тот же маркер, чтобы AWS обрабатывал токен носителя как долгосрочный API-ключ, а не как токен доступа OIDC или социальной сети.


Срок действия общедоступных клиентов AWS SSO OIDC обычно истекает через 90 дней (clientSecretExpiresAt). OmniRoute сохраняет эту временную метку в providerSpecificData для наблюдаемости. Если подключение перестает обновляться примерно через 90 дней, повторно импортируйте его, чтобы получить новую регистрацию клиента OIDC. Автоматическая повторная регистрация после истечения срока действия запланирована как будущее улучшение.

У подключений с API-ключом нет срока действия клиента OIDC, поскольку они не обновляются через AWS SSO OIDC.


Для второй учетной записи постоянно завершается сеанс

Заголовок раздела «Для второй учетной записи постоянно завершается сеанс»
  • Проверьте оба подключения в разделе Панель управления → Провайдеры и убедитесь, что в необработанном JSON каждого из них указано ненулевое значение clientId (его можно просмотреть с помощью значка информации). Если в каком-либо подключении отсутствует clientId, оно было импортировано до v3.8.0 — импортируйте его повторно.
  • Убедитесь, что токен обновления начинается с aorAAAAAG.
  • Убедитесь, что OmniRoute может подключиться к https://oidc.us-east-1.amazonaws.com (или к настроенному региону). Если вы работаете через корпоративный прокси-сервер, настройте прокси-сервер на уровне провайдера в разделе Панель управления → Настройки → Прокси-серверы.
  • Убедитесь, что ключ является API-ключом Kiro / CodeWhisperer, а не токеном обновления.
  • Убедитесь, что регион AWS соответствует ключу или учетной записи. По умолчанию используется us-east-1.
  • Ключ должен позволять вызывать ListAvailableProfiles; в противном случае OmniRoute не сможет определить требуемый profileArn.

По другим вопросам см. основной файл TROUBLESHOOTING.md.


Исходный код OmniRoute (a58000c7685f)

HagiCode

HagiCode — агентная среда разработки со структурированными процессами, параллельным выполнением несколькими агентами и интерфейсами Hero Dungeon.

Превращайте идеи в полезное ПО с более умным, быстрым и увлекательным агентным рабочим процессом.

Главный экран HagiCode в светлой теме
  • SmartСтруктурированные процессы превращают намерение в исполнимый путь от идеи до готового изменения.
  • EfficientМультиагентные процессы параллельно продвигают исследование, реализацию и проверку.
  • FunHero Dungeon делает длительную совместную разработку наглядной и увлекательной.
Перейти на HagiCode