No description
P0 аудита, каждый сначала подтверждён исполнением, а не принят со слов. 1. Release Gate объявлял проверку хеша, которой не было. Печаталась строка PACKAGE_HASH_VERIFIED=True при том, что hashlib в scripts/release_gate.py не вызывался ни разу: скачивались байты 0-10 через заголовок Range, и этого хватало, чтобы счесть хеш проверенным. «Проверенным ассетом» при этом оказывался первый в списке — checksums.txt, а не пакет. 2. Ворота публикации были fail-open. Измерено в трёх условиях: полный обрыв сети -> PASS, манифест 404 -> PASS, пакет 404 -> PASS. Ворота пропускали релиз при любом исходе, включая полное отсутствие релиза. Разделено на офлайновую часть (проверки 1-7: версии, тесты, updater, статика, секреты, список разрешённых адресов) и Publication Gate: релиз есть, ассеты есть, пакет скачан ЦЕЛИКОМ, SHA-256 сошёлся с опубликованным checksums.txt. Публикационные ворота блокируют в режиме публикации (--publication или HERMES_RELEASE_PUBLICATION_GATE=1); в обычном прогоне CI, где релиза для ветки нет и быть не должно, результат сообщается как есть и не блокирует. Неизмеренное называется причиной, а не выдаётся за проверенное. Проверено на живом релизе v0.1.3-b1: два пакета скачаны целиком, хеши сошлись. 3. POST /api/action на loopback принимал межсайтовые запросы. Токен там не требуется, а действие меняет состояние: удаляет учётные данные, чистит аккаунты, переключает маршрутизацию, запускает входы OAuth. CORS от этого не защищает — он мешает прочитать ответ, а не отправить запрос. Измерено на конфигурации по умолчанию: POST с Content-Type text/plain уходит кросс-сайтом без предварительного запроса, request.json() разбирает тело независимо от Content-Type, и запрос с Origin чужого сайта без токена доходил до исполнителя действий. Проверяется Sec-Fetch-Site, при его отсутствии — Origin против адреса запроса. Собственный интерфейс, адресная строка и не-браузерные клиенты работают как раньше. Защита распространена на все пять небезопасных методов, не только на /api/action. 4. pricing fallback: safe_load вместо safe_dump. dump сериализовал текст обратно в строку, проверка isinstance(data, dict) не выполнялась никогда, таблица цен не загружалась ни разу, а except это глушил. 5. Симуляция Linux в тесте stop_running_hub падала на Windows: os.getuid там не существует. Тесты: 756 -> 776 passed, 2 skipped, 4 deselected. ruff check . чисто. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .agents/skills/frontend-design | ||
| .github/workflows | ||
| agents | ||
| artifacts | ||
| assets | ||
| benchmarks | ||
| config | ||
| docs | ||
| installer | ||
| launcher | ||
| legacy | ||
| scripts | ||
| src/antigravity_provider | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| a15_web_api_and_linux_port_report.md | ||
| AGENTS.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.