y83 code / инструмент

Аккаунты WebAI

Вход в веб-сервисы ИИ (DeepSeek и другие) по подписке, без API-ключей: вход через WebView ловит OAuth-сессию, токены и куки складываются в SQLite на backend. Дальше backend ходит в веб-интерфейс от имени аккаунта — с квотой, retry и учётом ошибок.

раздел реестра
AI и агенты
код
5 421 строк в 17 файлах
документ
10-webai-accounts.md

Снимок: 2026-10-11. Секция хаба AI & Agents, тайл «WebAI» / «WebAI», подпись «Вход в поддерживаемые аккаунты веб-ИИ». Доступен всегда.

Экраны и навигация

  • Screen.WebAiAccounts → WebAiScreen (374 строки) — список аккаунтов.
  • Screen.AddEditWebAiAccount(accountId?) → WebAiAccountFormScreen (362) — добавление/правка аккаунта.
  • WebAILoginActivity (609 строк) — скрытая/видимая WebView-авторизация.
  • WebgetSettingsSheet (213) — токены интеграций (GitHub и др.) — см. Интеграции.

Возможности (подробно)

Жизненный цикл аккаунта

  • Статусы: auth/broken, включён/выключен, квота дня (100/день), статистика обращений (okCount, errorCount, powRejected, emptyAnswers, authErrors, lastError, lastLatencyMs).
  • checkAccount — проверка живости (/webai/accounts/check).
  • toggleEnabled — вкл/выкл без удаления.
  • reset-broken (/webai/accounts/{id}/reset-broken) — сброс счётчиков ошибок у сломанного аккаунта.
  • Retry и backoff при 429 — логика на backend (30 с), не в UI.

Вход (WebAILoginActivity)

  • Отдельная Activity с WebView: OAuth-редиректы, shouldInterceptRequest для перехвата токенов, maybeAutoFillCredentials (автозаполнение логина), verify — проверка успеха входа.
  • closeOAuthWindow, onCreateWindow/onCloseWindow — popup-окна.
  • capture — сохранение итоговых куки/токенов в аккаунт.
  • Ошибки: onReceivedError — понятное сообщение вместо белой страницы.

Несколько аккаунтов

  • WebAiAccountCards — карточки аккаунтов с переключением вкл/выкл.
  • WebAiScreenHeader — шапка со сводкой (сколько аккаунтов, квота).
  • Несколько аккаунтов = распределение квоты: при 429 backend берёт другой.

Форма аккаунта

  • WebAiAccountFormScreen: имя, провайдер, логин, включён, заметка; сохранение в БД backend.

Экспорт и импорт

  • export (/api/v1/webai/export) — все аккаунты с токенами и куками в файл.
  • import (/api/v1/webai/import) — перенос на другое устройство; session/import — импорт сессии.
  • Соответствующие MCP-тулы: ai_export, ai_import.

Где в коде

ФайлСтрокРоль
ui/webai/WebAILoginActivity.kt609OAuth-вход через WebView
ui/projects/WebAiScreen.kt374Список аккаунтов, проверка, вкл/выкл
ui/projects/WebAiAccountFormScreen.kt362Форма аккаунта
ui/projects/WebAiAccountCards.kt—Карточки аккаунтов
ui/projects/WebgetSettingsSheet.kt213Токены интеграций
data/api/WebAiDtos.kt—DTO аккаунтов
data/api/BackendApiWebAi.kt—REST-обвязка

Данные и API

Единая SQLite backend ~/.y83-ws/ws-backend.db — источник правды для аккаунтов (REST и MCP читают её).

ЭндпоинтНазначение
GET /api/v1/webai/accountsСписок
POST /api/v1/webai/accountsСоздать
GET /api/v1/webai/accounts/{id}Один
PUT /api/v1/webai/accounts/{id}Обновить
DELETE /api/v1/webai/accounts/{id}Удалить
POST /api/v1/webai/accounts/{id}/reset-brokenСбросить сломанный
POST /api/v1/webai/accounts/checkПроверка живости
POST /api/v1/webai/login-startСтарт OAuth-сессии
POST /api/v1/webai/session/importИмпорт сессии
GET /api/v1/webai/exportЭкспорт аккаунтов
POST /api/v1/webai/importИмпорт аккаунтов
GET /api/v1/webai/providersПоддерживаемые провайдеры

Агент

MCP-тулы

  • ai_status — главный источник правды для агента: по каждому провайдеру и аккаунту auth/broken/квота, счётчики (okCount, errorCount, powRejected, emptyAnswers, authErrors), lastError, lastLatencyMs, состояние очереди (busy, backoffSeconds). Это объясняет «почему молчит DeepSeek»: отказ PoW — разовый челлендж, а не сломанная сессия.
  • ai_export / ai_import — перенос аккаунтов с токенами и куками.
  • ai_ask(provider, model) — спросить через конкретный webai-провайдер.

Мост

  • backend_web_deepseek — мостовая команда явного веб-поиска DeepSeek (обход PoW-челленджа).
  • vision_config/vision_agent — если webai-аккаунт выбран источником Vision.

Подводные камни

  • Квота 100 запросов в день на аккаунт. Несколько аккаунтов = несколько квот; backend распределяет и отдаёт 429 при исчерпании.
  • PoW-челлендж. Отказ powRejected — не поломка; повтор через backend_web_deepseek или позже.
  • Экспорт содержит секреты (токены, куки). Файл — чувствительный; импорт заменяет набор полностью.
  • Broken-аккаунт не чинится повтором — нужен reset-broken или новый вход.
  • Вход может зависнуть на OAuth, если сервис сменил редиректы — тогда аккаунт не создаётся (ошибка входа).

Как обновлять

  • Каталог: data/InstrumentCatalog.kt (id webai).
  • Маршрут: ui/navigation/Screen.kt (Screen.WebAiAccounts, Screen.AddEditWebAiAccount).
  • Код: ui/projects/WebAi*, ui/webai/WebAILoginActivity.kt.
  • API: data/api/BackendApiWebAi.kt, WebAiDtos.kt, роуты — routes.go.
  • БД: ~/.y83-ws/ws-backend.db (таблица webai-аккаунтов).
  • Скилл: y83-webai.

Источник: docs/project/hub/10-webai-accounts.md · AI и агенты · 5 421 строк в 17 файлах. Страница собирается из документации проекта при сборке сайта.