Раздел: AI & Agents
Идентификатор:agent_accounts· Экран:ui/agentauth/AgentAuthScreen.kt
Снимок: 2026-10-27
1. Зачем и что это
router— запросы идут в ws-backend, модели берутся из провайдеров приложения, цена хода считается по реестру тарифов;native— первопартийный CLI ходит напрямую по подписке пользователя (ChatGPT Plus/Pro для Codex, Claude Pro/Max для Claude Code). Роутер, каталог провайдеров и счётчики стоимости в этом режиме не участвуют.
Режим — свойство устройства, а не отдельного треда: конфиг ~/.codex/config.toml и ~/.claude один, поэтому два агента одного типа не могут жить в разных режимах без взаимной поломки.
2. Как попасть
Хаб инструментов → секция AI & Agents → карточка «Аккаунты агентов» (hub_agent_accounts_title, подпись «Codex и Claude: роутер y83 или собственная подписка»).
| Откуда ещё | Путь |
|---|---|
| Мост | app_navigate с screen: "agent_accounts" |
3. Экран: элементы и действия
| Элемент | Что делает |
|---|---|
| Карточка Codex | Текущий режим, статус входа, переключатель y83 / native |
| Карточка Claude | То же для Claude Code |
| Кнопка входа | Запускает codex login --device-auth или claude auth login |
| Код/ссылка входа | Показывает URL и код, которые выдал CLI |
| Отмена и выход | Отменяют незавершённый вход и выполняют logout CLI |
| Предупреждение native | Объясняет, что вход выполняет CLI, а токены подписки наш код не читает |
Пока режим native, а входа нет, ход не отправляется: чат показывает «вход не выполнен» вместо невнятного отказа провайдера. Тихого отката на роутер нет — иначе непонятно, кто заплатил за ход.
4. Что меняется при переключении
| Режим | Codex | Claude |
|---|---|---|
router | В конфиг возвращаются model_provider, model_catalog_json и секции y83_router | Выставляются ANTHROPIC_BASE_URL, токен роутера, модель и окно контекста |
native | Роутерные поля снимаются; политики, MCP y83, context7 и проектные секции остаются | ANTHROPIC_* не выставляются; служебные переменные остаются |
Переключение гасит простаивающие процессы и перезапускает нужный сервис. Идущие ходы не трогаются: тред продолжается через resume.
5. Данные и границы
| Что | Где | Кто читает | |||
|---|---|---|---|---|---|
| Режимы | ~/.y83-ws/agent-auth.json (0600) | app, backend | |||
| Вход Codex | ~/.codex/auth.json | сам CLI | |||
| Вход Claude | ~/.claude/.credentials.json | сам CLI | |||
| REST | GET /api/v1/agent-auth, `PUT /api/v1/agent-auth/{codex | claude}` | app | ||
| Логин | `POST /api/v1/agent-auth/{kind}/login | code | cancel | logout` | app |
Дефолт при отсутствии файла — router: обновление приложения не меняет поведение установки. Битый файл не перезаписывается молча — экран показывает ошибку бэкенда.
Границы: тумблер действует только на локальный бэкенд. У удалённого агента свой конфиг, свой вход и своя подписка; шаринг одной подписки между хостами не предусмотрен.