15 KiB
Задание A54: проверка аккаунтов не работает, окна консоли, закрытие программы
Дата поступления
2026-08-31
База
origin/main (f0d06e4).
git fetch origin --prune
git checkout -b antigravity/a54-accounts-fix origin/main
В main напрямую не пушить.
Порядок исполнения
Два прохода: Flash реализует, Pro проводит аудит. Пункт P0-8 написан для аудитора.
Задание срочное. После установки сборки f0d06e4 владелец не может пользоваться программой: ни один аккаунт не проверяется, модели не подтягиваются, поверх окна выскакивают чёрные консоли.
Задача
Владелец, дословно: «я так понял ни один аккаунт не подключается. Все проверки проходят с ошибкой, модели перестали нормально подтягиваться. Даже на локальных моделях». И отдельно: «в чём сложность-то?» — про OpenRouter и NVIDIA, которые не подключаются третье задание подряд.
Что проверено ревьюером — заново не выяснять
Кнопка «Проверить подключение» ничего не проверяет
Воспроизведено вызовом:
check_account profile_id=local-1
→ ok=False
→ «Фоновая служба проверки не запущена. Перезапустите веб-сервер.»
Действие перекладывает работу на фоновую службу вместо того, чтобы выполнить проверку. Если служба не поднялась, владелец получает отказ на каждом аккаунте. В интерфейсе это выглядит как «Тест завершился с ошибкой» и «Отказ выполнения действия» — второе вообще запасной текст на случай пустого сообщения, то есть причина до владельца не доходит.
Служба включается в web/server.py:496 внутри фонового потока. Любой сбой этого потока оставляет все проверки нерабочими, и узнать об этом нельзя.
Удаление аккаунта занимает полминуты
Причина найдена: _rescan_after_auth() вызывает
HubStateStore.get().refresh(force_scan=True)
AccountProbeService.get().schedule_all()
то есть принудительный полный пересбор всех провайдеров с сетевыми запросами. Таймауты в сборщике квот — 15, 20 и 30 секунд, у Antigravity через CLI — 60. Удаление одного ключа ждёт опроса всех.
Окна консоли
В f0d06e4 скрытие окна добавлено к двум живым запускам agy и к остальным фоновым вызовам. Проверено, что hidden_process_kwargs() на Windows возвращает CREATE_NO_WINDOW и SW_HIDE.
Окна у владельца остались. Наиболее вероятная причина: старый процесс сервера пережил обновление. Закрытие окна браузера сервер не останавливает, и после установки продолжает работать прежний код. Проверить это первым делом.
launch_native_agy_login с CREATE_NEW_CONSOLE — мёртвый код, его никто не вызывает. Либо удалить, либо подключить к входу.
OpenRouter и NVIDIA
Сохранение работает — проверено вызовом add_account, профиль создаётся с верным идентификатором, чужой слот отклоняется. Значит дело не в сохранении, а в том, что после ввода ключа ничего не проверяется и модели не запрашиваются, и владелец остаётся с пустым списком.
P0-1. Проверка выполняется, а не делегируется
- «Проверить подключение» делает настоящий запрос к провайдеру здесь и сейчас и возвращает результат. Фоновая служба — для периодической проверки, а не для ручной.
- Отказ невозможен из-за незапущенной службы. Если фоновая служба нужна, но не работает, ручная проверка всё равно обязана отработать.
- Причина доходит до владельца. Запасной текст «Отказ выполнения действия» означает пустое сообщение — таких путей быть не должно.
- Состояние службы видно в «Состоянии системы»: работает или нет, когда был последний обход.
P0-2. Удаление и очистка
- Удаление ключа не запускает полный пересбор. Обновлять только затронутый профиль; полный обход — в фон, не блокируя ответ.
- Кнопка «Очистить все аккаунты» с подтверждением и перечислением того, что будет удалено.
- Учётные данные Antigravity — под защитой A37. Массовое удаление не должно затрагивать
~/.hermes/agy_profiles/без явного отдельного подтверждения: повторный вход в два десятка аккаунтов делается вручную и стоит владельцу часов.
P0-3. Закрытие программы на Windows
Владелец: «при нажатии на крестик спрашивать, закрыть программу или свернуть в фон. При закрытии полностью всё закрывает».
- Диалог при закрытии: закрыть полностью или свернуть в фон.
- Закрытие останавливает всё: веб-сервер, фоновые опросы, дочерние процессы. После этого окон появляться не должно.
- Свёрнутое состояние видно — значок в области уведомлений с пунктами «Открыть» и «Выход».
- Обновление не должно оставлять старый процесс: перед установкой прежний сервер останавливается. Это вероятная причина того, что окна не исчезли после установки исправления.
P0-4. Подключение по ключу проверяется сразу
Для openrouter, nvidia, nvidia-nim и прочих провайдеров с ключом:
- После ввода ключа — немедленная проверка: запрос к провайдеру, и его ответ показывается владельцу.
- Ключ неверен — сказать сразу, не создавая профиль-пустышку.
- Ключ верен — тут же запросить модели и дать выбрать предпочитаемую в том же окне.
- Не «сохранено», а «подключено и проверено» — сообщение должно отражать, что именно произошло.
P0-5. Модели у локальных и Ollama
- «Запросить список моделей» у локального профиля возвращает ошибку — разобраться и починить. Локальный путь не требует ключа, отказ там означает дефект, а не отсутствие доступа.
- Ollama: список не грузится. Локальные модели через
/api/tagsпо адресу профиля; облачный каталог уже работает — не сломать. - Отличать «сервер не отвечает» от «моделей нет»: у владельца на Windows Ollama не запущена, и
WinError 10061— это честный ответ, его надо показывать именно так, а не как ошибку обновления.
P0-6. Antigravity: было 14 моделей, стало 3
На прошлой сборке у аккаунтов Antigravity значилось «Получено 14 моделей» с перечнем. Сейчас в карточке три, статус «Не проверялся», а проверка завершается ошибкой.
- Найти, где список сузился. Проверить, не подменяется ли обнаруженный список предпочтениями профиля — эта ошибка уже была в инспекторе агента и чинилась в правках ревьюера.
- Число и время получения показывать рядом со списком, как было.
P0-7. Проверка исполнением
Тестов недостаточно: все перечисленные дефекты прошли через зелёный прогон.
- Открыть хаб и нажать «Проверить подключение» на локальном профиле, на Ollama и на Antigravity. Результат приложить скриншотами.
- Подключить OpenRouter с заведомо неверным ключом и убедиться, что ошибка видна сразу; затем убедиться, что при верном ключе подтягиваются модели.
- Удалить аккаунт и замерить время — должно быть быстро, без ожидания опроса всех провайдеров.
- Закрыть программу крестиком, выбрать «закрыть», и убедиться, что процессов не осталось и окна не появляются.
- Проверить, что после обновления старый процесс не остаётся.
P0-8. Аудит вторым проходом
- Проверить, что ручная проверка работает при остановленной фоновой службе.
- Искать оставшиеся пути с пустым сообщением об ошибке — их не должно быть.
- Замерить удаление аккаунта независимо.
- Проверить, что массовая очистка не трогает
~/.hermes/agy_profiles/. - Проверить, что окна консоли не появляются при работающей автопроверке.
- Побочные изменения объяснить.
- Пропущенный пункт назвать пропущенным.
Ограничения
- Учётные данные и
~/.hermes/agy_profiles/не трогать; массовое удаление — только с отдельным подтверждением. - Автоматическую проверку не отключать ради тишины: чинить, а не убирать.
- Вёрстку A48 не ломать.
- Версию
0.1.1не поднимать. - Правило честности без исключений: причина отказа доходит до владельца текстом.
Критерии приёмки
- Ветка в
origin,git statusчист. - Ручная проверка выполняет запрос и возвращает результат даже при незапущенной фоновой службе; проверено.
- Путей с пустым сообщением об ошибке не осталось.
- Удаление аккаунта не ждёт полного обхода провайдеров; время замерено до и после.
- Есть кнопка очистки всех аккаунтов с подтверждением; учётные данные Antigravity не затрагиваются без отдельного согласия.
- Крестик спрашивает «закрыть или свернуть»; закрытие останавливает сервер и фоновые опросы; проверено отсутствием процессов.
- Обновление не оставляет старый процесс.
- Ввод ключа сразу проверяется, модели подтягиваются в том же окне.
- Список моделей у локального профиля и Ollama работает; «сервер не отвечает» отличается от «моделей нет».
- У Antigravity список моделей вернулся к полному; показано число и время получения.
- Скриншоты проверок приложены.
ruff check .чисто; релизный гейт 10/10; тестов не меньше 574.- Отчёт:
START_HEAD,FINAL_HEAD,origin/main,git status,X passed / Y skipped / Z failed.
Главное
Владелец поставил сборку и не может ей пользоваться: проверка отказывает на каждом аккаунте, модели не грузятся даже у локальных, удаление ключа занимает полминуты, а поверх окна выскакивают консоли.
Общее у большинства этих дефектов одно: действие не делает работу само, а перекладывает её на фоновую службу или на полный обход всех провайдеров. Отсюда и отказы, и задержки. Чинить надо это, а не симптомы.
Порядок сдачи
Передать точный FINAL_COMMIT_SHA.