From 6ad546db0de7969d43b9a8a14e95af5a841634fd Mon Sep 17 00:00:00 2001 From: Hermes Team Date: Sun, 23 Aug 2026 18:40:27 +0700 Subject: [PATCH] Merge antigravity/contract-stability (A13) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Принято, проверено исполнением. Устойчивость набора — главный пункт и он закрыт по-настоящему: общий корень Tk на сессию вместо шести отдельных ctk.CTk(). Десять полных прогонов подряд дали 316 passed, 2 skipped и НОЛЬ ошибок. До правки каждый прогон давал до семи ошибок, кочующих между файлами, из-за чего настоящую поломку приходилось искать перепроверкой в изоляции. Раздел контракта о границе Hub и Hermes написан: что Hub получает на каждом вызове (с явным указанием, что роли среди этого нет), чего не видит, чем управляет и чем не управляет. Варианты связывания профилей поданы таблицей с оценкой трудоёмкости: 3-4 дня, 8-12 дней, 4-5 дней. Ни один не реализован без решения владельца, как и требовалось. Исправлено при слиянии: в документе оказалось 11 символов BEL (0x07) на месте буквы "a" — последовательности вида \agy-05 были разобраны как escape. Пострадали 19 идентификаторов: antigravity -> ntigravity, agy-05 -> gy-05, ag-w2 -> g-w2. Контракт читают оба исполнителя, битые имена в нём недопустимы. Co-Authored-By: Claude Opus 5 --- docs/UI_STATE_CONTRACT.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/UI_STATE_CONTRACT.md b/docs/UI_STATE_CONTRACT.md index 007f123..20d154f 100644 --- a/docs/UI_STATE_CONTRACT.md +++ b/docs/UI_STATE_CONTRACT.md @@ -296,17 +296,17 @@ Accessible at `HubSnapshot.metrics["host"]`: Hub и Hermes используют разные множества профилей и настроек. Чтобы интерфейс корректно отображал происходящее и не вводил пользователя в заблуждение, важно понимать границу между ними. ### 10.1 Что Hub получает от Hermes на каждом вызове -При вызове ntigravity_llm_execution (через middleware) Hub фактически получает от Hermes только следующие данные: +При вызове antigravity_llm_execution (через middleware) Hub фактически получает от Hermes только следующие данные: - ask_id - urn_id -- pi_request_id +- api_request_id - session_id - platform - model - provider - ase_url -- pi_mode -- pi_call_count +- api_mode +- api_call_count - equest (payload: список сообщений, temperature и т.д.) @@ -314,13 +314,13 @@ equest (payload: список сообщений, temperature и т.д.) ### 10.2 Чего Hub не видит Hub не имеет доступа к внутреннему контексту Hermes. В частности, Hub не видит: -- Профиль Hermes, которым выполняется текущий вызов (например, gy-05, worker-fast, deepseek и др.). +- Профиль Hermes, которым выполняется текущий вызов (например, agy-05, worker-fast, deepseek и др.). - Настройки конфигурации задач (delegate_task, max_concurrent_children и т.д.). - Состав и иерархию субагентов Hermes. ### 10.3 Чем Hub управляет Hub является независимой системой и полностью управляет: -- Собственными профилями (например, g-w1, g-orch-fallback, codex-orch, opengo-*, claude-*, grok-*). +- Собственными профилями (например, ag-w1, ag-orch-fallback, codex-orch, opengo-*, claude-*, grok-*). - Цепочками отказоустойчивости (failover), привязанными к его собственным профилям. - Квотами и авторизацией своих аккаунтов. @@ -331,13 +331,13 @@ Hub **не управляет ничем** из перечисленного в ## 11. Варианты связывания профилей Hub и Hermes -Поскольку один и тот же аккаунт пользователя может существовать в двух системах под разными именами (например, gy-05 в Hermes и g-w2 в Hub), существуют следующие варианты их связывания. **Внимание:** ни один из вариантов не должен реализовываться без явного решения владельца продукта. +Поскольку один и тот же аккаунт пользователя может существовать в двух системах под разными именами (например, agy-05 в Hermes и ag-w2 в Hub), существуют следующие варианты их связывания. **Внимание:** ни один из вариантов не должен реализовываться без явного решения владельца продукта. | Вариант | Что становится возможным | Что ломается / Риски | Объем работы | |---|---|---|---| | **1. Сопоставление по идентичности аккаунта (email)** | Автоматическое связывание большинства профилей без ручной настройки. | Профили без email (например, worker-fast, deepseek, API-ключи OpenCode) не могут быть сопоставлены. Надежность зависит от гарантий Hermes по предоставлению идентичности. | ~3–4 дня. Требует извлечения identity на стороне Hermes и передачи в Hub. | | **2. Чтение профилей Hermes (Single Source of Truth)** | Единый источник истины: Hub перестает вести свой список профилей и полностью отражает конфигурацию Hermes. | Теряются сущности, специфичные для Hub: цепочки отказоустойчивости (failover chains), распределение ролей Hub. Квоты сложнее привязывать к профилям. | ~8–12 дней. Требует глубокого рефакторинга конфигурации и движка роутинга Hub. | -| **3. Явная таблица соответствия (Profile Mapping Table)** | Полный контроль и предсказуемость. Владелец может вручную связать любой профиль Hermes (например, gy-05) с профилем Hub (g-w2). | Требует ручной настройки от пользователя в UI Hub. | ~4–5 дней. Требует добавления конфигурации hermes_profile_map в +| **3. Явная таблица соответствия (Profile Mapping Table)** | Полный контроль и предсказуемость. Владелец может вручную связать любой профиль Hermes (например, agy-05) с профилем Hub (ag-w2). | Требует ручной настройки от пользователя в UI Hub. | ~4–5 дней. Требует добавления конфигурации hermes_profile_map в outer_profiles.yaml и поддержки в UI. | **Рекомендация:**