System Overview
Высокоуровневая архитектура мультиагентной системы Synth Nova.
Слои системы
┌─────────────────────────────────────────────────────────────┐
│ USER LAYER │
│ Telegram (@maxnovaocbot) │
│ Web UI — Phase 3 │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ GATEWAY │
│ OpenClaw (178.156.217.128:18789) │
│ Auth · Rate Limit · Routing │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ ORCHESTRATION │
│ synth-brain (FastAPI + Python) │
│ Task Router · Agent Runner · Policy Enforcer │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ AGENT LAYER │
│ L1: CEO │
│ L2: Intel Director · Sales Dir · Marketing Dir · ... │
│ L3: Scout · Researcher · Writer · Monitor · ... │
│ X: Judge · Librarian │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ DATA LAYER │
│ PostgreSQL: tasks · agents · runs · artifacts · memory │
│ Redis: cache · sessions │
│ pgvector: embeddings · semantic search │
└─────────────────────────────────────────────────────────────┘
Компоненты подробно
1. User Layer
Telegram — основной интерфейс. Бот @maxnovaocbot через OpenClaw. Web UI — планируется в Phase 3. Dashboard для мониторинга и управления.
Принцип: пользователь не должен знать о внутренней архитектуре. Он общается с “Алексой” (CEO Agent) как с ассистентом.
2. Gateway — OpenClaw
Уже существует на openclaw-synth (178.156.217.128). См. ADR-0002-OpenClaw-As-Gateway.
Функции:
- Единая точка входа для всех user-facing каналов
- Authentication — Telegram user ID → internal user
- Rate limiting — защита от flood
- Routing — сообщения → synth-brain API
НЕ содержит бизнес-логику агентов. Gateway = прокси, не мозг.
3. Orchestration — synth-brain (новый сервис)
Ядро системы. FastAPI-сервис на Python.
Модули:
- Task Router — приём задач, маршрутизация по agent type
- Agent Runner — запуск агентов, управление контекстом, вызов LLM API
- Policy Enforcer — pre/post проверки, Policy-Layer
- Queue Worker — обработка очереди задач из PostgreSQL
Что synth-brain делает:
- Принимает tasks от Gateway
- Помещает в очередь (PostgreSQL)
- Запускает агентов по очереди
- Проверяет policy до и после
- Логирует runs
Что synth-brain НЕ делает:
- Не хранит промпты (в конфигах roles/*.yaml)
- Не хранит долгосрочную память (Data Layer)
- Не общается с пользователем напрямую (через Gateway)
4. Agent Layer
Иерархия агентов. См. ADR-0003-Three-Tier-Hierarchy, _Roles-Index.
| Уровень | Количество | Роль | Примеры |
|---|---|---|---|
| L1 Orchestrator | 1 | Стратегия, декомпозиция | Agent-CEO |
| L2 Directors | 5-7 | Управление департаментом | Agent-IntelDirector, SalesDirector |
| L3 Executors | 15-30 | Выполнение задач | Agent-CompetitorScout, Agent-MarketResearcher |
| X Cross-cutting | 2-3 | QA, Knowledge | Agent-Judge, Agent-Librarian |
Принцип: агенты не вызывают друг друга напрямую. Всё через очередь задач. См. Orchestration-Model.
5. Data Layer
PostgreSQL 16 — основное хранилище:
tasks— очередь и история задачagents— конфигурация агентовruns— логи выполненияartifacts— результаты работыagent_memory— долгосрочная память
Очередь через FOR UPDATE SKIP LOCKED. См. ADR-0001-Use-Postgres-As-Queue.
Redis — cache и sessions:
- Кэш частых запросов к memory
- Session state для Gateway
pgvector — vector search:
- Embeddings для semantic search
- RAG для агентов
Архитектурные принципы
- Асинхронность через очередь — агенты не блокируют друг друга
- Stateless agents — весь контекст в task payload, агент не хранит state между вызовами
- Policy as code — ограничения в коде Policy-Layer, не в промптах
- Full observability — каждый run логируется, см. Observability
Физическое размещение
| Компонент | Сервер | IP |
|---|---|---|
| synth-brain | synth-nova-prod | 91.99.207.119 |
| PostgreSQL | synth-nova-prod | 91.99.207.119 |
| Redis | synth-nova-prod | 91.99.207.119 |
| OpenClaw Gateway | openclaw-synth | 178.156.217.128 |
Всё на двух серверах пока. Разделение — по данным о реальной нагрузке, не заранее.