No description
Мастер подключения писал, что на сервере без экрана вход «через веб-интерфейс невозможен», и отправлял в консоль по SSH либо переносить каталог agy_profiles руками. GET /api/health отдавал для этих провайдеров жёстко вписанное supported: false. Утверждение оказалось ложным. В коде уже были ProfileOAuthSession.handle_manual_callback_url и ClaudeOAuthSession.handle_auth_code — оба принимают вставленное вручную значение и доводят обмен кода на токены. Наружу их просто не вывели. Браузер нужен где угодно, а не на машине с Hub: владелец открывает ссылку у себя и возвращает адрес из адресной строки. Добавлены действия start_redirect_auth, submit_redirect_callback, poll_redirect_auth, cancel_redirect_auth. auth_flows теперь отражает настоящие возможности, а не литерал. Обе заглушки в мастере заменены живым потоком; мёртвая ветка Claude с полем API Key удалена. Три дефекта, найденных при проверке исполнением: 1. Одна опечатка при вставке убивала сессию: handle_callback ставил status="failed" при отсутствии кода или чужом state, и вход приходилось начинать заново, хотя ссылка оставалась годной. Для ручного ввода такие ошибки больше не конечные; отказ провайдера конечен по-прежнему. 2. Окно слушателя в 5 минут рассчитано на браузер той же машины. При входе с другого ПК его не хватает: 20 минут — значение, проверенное на практике. 3. find_free_slot всегда возвращал ag-orch-fallback: занятость определяется по файлу учётных данных, а agy на Windows держит их в keyring, поэтому все десять слотов выглядят свободными. Вход затёр бы работающий аккаунт. Слот теперь выбирает владелец из списка, построенного по снапшоту, с пометкой, какие заняты и кем. Два теста закрепляли снятую заглушку: test_headless_server_auth_matrix требовал слов «Headless» и «agy» в интерфейсе, test_c_state_mismatch требовал status == "failed". Первый переведён на проверку настоящего потока, второй усилен: свойство безопасности (отказ без обмена кода) проверяется по-прежнему, и дополнительно проверено, что после промаха верная вставка доходит до обмена. Проверено вживую в браузере: список из 10 слотов с пометкой занятости, выбранный слот доходит до сервера, ссылка настоящая от accounts.google.com, поле вставки на месте. 431 passed, 2 skipped; ruff чисто. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .github/workflows | ||
| agents | ||
| artifacts | ||
| assets | ||
| config | ||
| docs | ||
| installer | ||
| launcher | ||
| legacy | ||
| scripts | ||
| src/antigravity_provider | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| a15_web_api_and_linux_port_report.md | ||
| CHANGELOG.md | ||
| COCKPIT_TOOLS_ARCHITECTURE_COMPARISON.md | ||
| CODEX_CONTRACT_V11_REPORT.md | ||
| CODEX_MOCKUP_REDESIGN_REPORT.md | ||
| CODEX_UI_REDESIGN_REPORT.md | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
Hermes Hub
Multi-Agent & Multi-Provider Control Hub for Hermes Agent
Hermes Hub — централизованная панель управления и отказоустойчивый маршрутизатор запросов (Multi-Provider Router) для Hermes Agent. Объединяет учетные записи различных провайдеров (Google Antigravity, OpenAI Codex, OpenCode Go, DeepSeek) в единую согласованную команду с автоматическим переключением при исчерпании квот (failover) и поддержкой сессионной привязки (Session Affinity).
🌟 Ключевые возможности
- 🖥️ Нативное приложение Windows (CustomTkinter & Brandbook):
- Фирменная дизайн-система Obsidian Forest (
#0F1510,#1A2A1F,#2F4A36,#F7F1E3,#CDAA64). - Мгновенное переключение вкладок (P95 < 200 ms, в среднем ~30 ms).
- Полноценная интеграция с панелью задач Windows через
AppUserModelID(HermesHub.Desktop) и multi-resolution.ico.
- Фирменная дизайн-система Obsidian Forest (
- 👥 Команда агентов (Team View):
- 6 логических ролей («Главный оркестратор», «Кодер», «Ревьюер», «Исследователь», «Тестировщик», «Агент общего назначения»).
- Реальные логотипы провайдеров с динамическим кэшированием.
- Четкое разделение флагов MAIN Hermes Account и Primary Orchestrator.
- 🔀 Многоуровневый Failover & Маршрутизация:
- Визуальные пайплайны маршрутизации со статусами узлов в реальном времени.
- Автоматический failover цепочки
Codex -> Antigravity -> OpenCode Goпри квотных ограничениях (HTTP 429 / Quota Exceeded).
- 🛡️ Строгий Status Resolver & Unified Health:
- Неподключенные слоты отображаются как
NOT_CONFIGURED(«Аккаунт не добавлен») и никогда не показывают ложныхQUOTA_EXHAUSTEDилиHEALTHY. - Автоматическая очистка устаревших квотных записей при удалении credentials.
- Неподключенные слоты отображаются как
- 💼 Cockpit Tools Accounts View:
- Верхний тулбар: Поиск, фильтры (Подключенные, Требуется вход, Квота), сортировка.
- Компактный блок свободных слотов без визуального шума.
- 4-шаговый мастер добавления аккаунтов (Wizard).
- ⚙️ Архитектурные модули (Roadmap P0, P1, P2):
LifecycleSupervisor: Реестр процессов с контролем владения по UUID и PID, исключающий использованиеkillall/taskkill.PolicyEnforcer:WebPolicy(ограничение исходящих доменов, блокировка метаданных) иToolPolicy(валидация команд).UnifiedSkillRegistry: Межпровайдерный реестр навыков.CapabilityMatrix: Ранжирование моделей по контексту, рассуждениям и инструментам.ScheduledTaskSafetyCoordinator: Защита периодических задач (overlap_policy: skip).
- 📦 Windows Installer (
HermesHubSetup.exe):- Обязательная pre-flight проверка наличия установленного Hermes Agent.
- Автоматическое создание ярлыков на Рабочем столе и в Главном меню с
AppUserModelID.
🚀 Быстрый старт
Запуск из исходного кода
# Установка зависимостей
uv sync
# Запуск приложения Hermes Hub
uv run python -m antigravity_provider.router.hermes_hub_app
Запуск тестов и верификации
# Полный набор автоматических тестов (35 тестов)
uv run pytest -v tests/
# Комплексная проверка роутера (10 проверок)
python scripts/verify_multi_provider_router.py
🏗️ Структура проекта
| Каталог | Назначение |
|---|---|
src/antigravity_provider/router/ |
Ядро Multi-Provider Router и Native GUI |
src/antigravity_provider/router/ui/ |
Дизайн-система, компоненты и экраны (Views) |
src/antigravity_provider/router/supervisor/ |
Lifecycle Supervisor и политики безопасности (WebPolicy/ToolPolicy) |
src/antigravity_provider/router/skills/ |
Унифицированный реестр навыков |
src/antigravity_provider/router/capability/ |
Матрица возможностей моделей и DeepSeek адаптер |
src/antigravity_provider/router/scheduler/ |
Координатор безопасности запланированных задач |
assets/ |
Фирменные логотипы, иконки провайдеров и .ico |
installer/ |
Инсталлятор HermesHubSetup.py с проверкой Hermes Agent |
tests/ |
Автоматизированные тесты pytest |
docs/ |
Архитектура, гайдлайны бренда, безопасность и производительность |
📄 Лицензия
MIT License. Hermes Hub is an open-source component of the Hermes Agent ecosystem.