No description
Find a file
Hermes Team ad08c17d83 fix(adapters): обработчик ошибок падал сам, скрывая настоящую причину
Найдено при проверке Grok на живых данных владельца. Вызов падал с
AttributeError: 'str' object has no attribute 'get' — grok_adapter.py:103.

Поле error провайдеры отдают то объектом {"message": ...}, то строкой.
Код безусловно звал .get у результата, и на строковой форме ОБРАБОТЧИК
ОШИБОК ПАДАЛ САМ: сбой происходил ровно там, где обрабатывался другой
сбой, маршрутизация обрывалась вместо перехода к резерву, а настоящая
причина терялась.

После правки причина видна: Grok API Error (403): The OAuth2 access token
could not be validated. То есть у Grok просто протух токен, а выглядело
как поломка кода.

Та же конструкция стояла ещё в пяти адаптерах: claude, codex, opencode,
deepseek, local. Разбор вынесен в base_adapter.extract_api_error_message,
все шесть переведены на него.

Тест проверяет обе формы ответа и отдельно следит, чтобы копии хрупкой
конструкции не вернулись.

Тесты: 411 passed, ruff чисто.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 14:54:39 +07:00
.github/workflows test(ci): add import invariants, repair DeepSeek adapter, guard headless runs 2026-08-20 22:13:54 +07:00
agents docs(task): A25 — разведка выполнена, задание построено на фактах с сервера 2026-08-24 10:46:04 +07:00
artifacts feat(web): A21 — паритет веб-интерфейса: аналитика, состояние, события, настройки 2026-08-23 22:59:02 +07:00
assets fix(ui): align dashboard and navigation with approved mockup 2026-08-21 19:32:53 +07:00
config fix(deployment): implement self-healing bootstrap, Claude & Grok profiles, non-interactive test mode, mirror installer, and comprehensive doctor CLI 2026-08-22 21:22:21 +07:00
docs feat(web): routing control center with drag-and-drop, inline models, and 7-view navigation (A24) 2026-08-24 10:53:57 +07:00
installer fix(launcher): браузер убивал сервер, установщик запускал десктоп вместо веба 2026-08-24 10:07:33 +07:00
launcher fix(launcher): браузер убивал сервер, установщик запускал десктоп вместо веба 2026-08-24 10:07:33 +07:00
legacy fix(wizard): restore Antigravity OAuth by matching the 3-tuple session API 2026-08-21 08:00:42 +07:00
scripts fix(installer): ошибка 12 при установке — проверка требовала конфигурацию от 20 августа 2026-08-24 09:35:36 +07:00
src/antigravity_provider fix(adapters): обработчик ошибок падал сам, скрывая настоящую причину 2026-08-24 14:54:39 +07:00
tests fix(adapters): обработчик ошибок падал сам, скрывая настоящую причину 2026-08-24 14:54:39 +07:00
.gitignore feat: initialize standalone Hermes Hub 2026-08-20 10:53:49 +07:00
a15_web_api_and_linux_port_report.md feat(A15): веб-API, общий ActionExecutor и порт путей на Linux 2026-08-23 19:45:13 +07:00
CHANGELOG.md feat: initialize standalone Hermes Hub 2026-08-20 00:17:11 +07:00
COCKPIT_TOOLS_ARCHITECTURE_COMPARISON.md docs(tasks): A9 и B8 по итогам живого прогона владельца 2026-08-23 01:20:23 +07:00
CODEX_CONTRACT_V11_REPORT.md feat(ui): wire state contract v1.1 fields 2026-08-21 09:04:53 +07:00
CODEX_MOCKUP_REDESIGN_REPORT.md fix(ui): align dashboard and navigation with approved mockup 2026-08-21 19:32:53 +07:00
CODEX_UI_REDESIGN_REPORT.md feat(ui): complete redesign phases 2 through 6 2026-08-21 08:41:50 +07:00
LICENSE feat: initialize standalone Hermes Hub 2026-08-20 00:17:11 +07:00
pyproject.toml feat(A15): веб-API, общий ActionExecutor и порт путей на Linux 2026-08-23 19:45:13 +07:00
README.md feat(hub): product stabilization, native windows ux v3, provider icons, and architecture roadmap 2026-08-20 11:01:52 +07:00
uv.lock feat: multi-provider accounts, tariffs, quota buckets, Claude & Grok integration 2026-08-20 21:02:13 +07:00

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.
  • 👥 Команда агентов (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.