1. P0-1: get_default_router_config() возвращает чистую конфигурацию (0 профилей, 13 канонических ролей с пустыми цепочками). Миграция не внедряет фиктивные профили. 2. P0-2: Учетные данные (~/.hermes/*_profiles/, hub_settings.json) изолированы и никогда не затрагиваются при сбросе или установке. 3. P0-3: Профили создаются динамически при подключении аккаунтов (ag-1, codex-1, etc.). Пустые цепочки ролей являются нормальным рабочим состоянием. 4. P0-4: Добавлен экшен reset_router_config и кнопка «Начать настройку заново» в настройках с подтверждением и созданием бэкапа router_profiles.yaml.bak_<timestamp>. 5. P0-5: scripts/verify_multi_provider_router.py адаптирован и проходит 10/10 PASS как на пустой конфигурации, так и на заполненной. 6. tests/test_a41_clean_install.py: 6 тестов, 490 passed, ruff чисто.
136 lines
3.2 KiB
YAML
136 lines
3.2 KiB
YAML
# Hermes Hub: Multi-Provider Account Router Default Profiles Template
|
|
# Clean initial configuration (0 profiles, 13 canonical roles with empty chains).
|
|
# Accounts are dynamically created and mapped as you connect them.
|
|
|
|
router:
|
|
enabled: true
|
|
default_role: "manager"
|
|
max_failover_attempts: 3
|
|
cooldown_base_seconds: 300
|
|
cooldown_max_seconds: 3600
|
|
session_affinity_ttl_seconds: 1800
|
|
quota_threshold_percent: 10.0
|
|
quota_threshold_action: "notify"
|
|
|
|
roles:
|
|
manager:
|
|
role_name: "manager"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "orchestrator"
|
|
- "reasoning"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
default_model: "gemini-3.7-flash"
|
|
|
|
developer-1:
|
|
role_name: "developer-1"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "coding"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
default_model: "gemini-3.7-flash"
|
|
|
|
developer-2:
|
|
role_name: "developer-2"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "coding"
|
|
- "reviewer"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
default_model: "gemini-3.1-pro-high"
|
|
|
|
code-reviewer:
|
|
role_name: "code-reviewer"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "reviewer"
|
|
- "coding"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
default_model: "claude-opus-4-6-thinking"
|
|
|
|
researcher:
|
|
role_name: "researcher"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "research"
|
|
- "search"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
|
|
tester:
|
|
role_name: "tester"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "fast"
|
|
- "testing"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
|
|
tech-writer:
|
|
role_name: "tech-writer"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "documentation"
|
|
- "reasoning"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
|
|
analyst:
|
|
role_name: "analyst"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "reasoning"
|
|
- "research"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
|
|
guardian:
|
|
role_name: "guardian"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "guardian"
|
|
- "security"
|
|
max_failover_attempts: 0
|
|
session_affinity_enabled: true
|
|
|
|
cost-controller:
|
|
role_name: "cost-controller"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "cost-controller"
|
|
- "budget"
|
|
max_failover_attempts: 0
|
|
session_affinity_enabled: true
|
|
|
|
integration-expert:
|
|
role_name: "integration-expert"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "integration"
|
|
- "coding"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
|
|
security-expert:
|
|
role_name: "security-expert"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "security"
|
|
- "code-reviewer"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
|
|
dependency-agent:
|
|
role_name: "dependency-agent"
|
|
preferred_chain: []
|
|
fallback_capabilities:
|
|
- "dependency-agent"
|
|
- "preflight"
|
|
max_failover_attempts: 3
|
|
session_affinity_enabled: true
|
|
|
|
profiles: {}
|