3-Tier Архитектура и Устройство Движка
3-Tier Архитектура и Устройство Движка
Движок ForjBot Engine спроектирован по трехзвенной архитектуре с полным декуплированием внешних мессенджеров от бизнес-логики ИИ.
graph TD
subgraph Layer1 ["1. Слой Каналов (Channel Layer)"]
TG["Telegram (aiogram)"]
VK["VK (Callback API)"]
WC["WebChat (WebSocket / REST)"]
end
subgraph Layer2 ["2. Слой Адаптеров (Adapter Layer)"]
TA["TelegramAdapter"]
VA["VKAdapter"]
WA["WebChatAdapter"]
end
subgraph Layer3 ["3. Ядро ИИ (Core Engine Layer)"]
Disp["core_dispatcher.py"]
Pipe["Pipeline Middleware"]
LLM["LLM Client & Prompt Composer"]
RAG["Vector RAG & Agent Loop"]
end
TG -->|TelegramUpdateConverter| TA
VK -->|VKPayloadParser| VA
WC -->|WebChatPayloadParser| WA
TA -->|IncomingMessage| Disp
VA -->|IncomingMessage| Disp
WA -->|IncomingMessage| Disp
Disp --> Pipe --> LLM --> RAG
RAG -->|Abstract BasePlatformAdapter| TA & VA & WA
Главный Инвариант Ядра
Ядро системы (app/bot/core_dispatcher.py) никогда не импортирует сторонние библиотеки мессенджеров (aiogram, vk_api и т.д.). Оно работает исключительно с абстрактным объектом IncomingMessage:
IncomingMessage(
platform="telegram",
platform_user_id="123456789",
chat_id="123456789",
message_id="9981",
text="Привет! Расскажи о возможностях системы.",
media=[],
metadata={}
)
Абстрактный Адаптер Платформы (BasePlatformAdapter)
Все действия отправки контента нормализованы через контракт класса BasePlatformAdapter:
send_text(chat_id, text, reply_to_message_id)send_photo(chat_id, photo_bytes, caption)send_voice(chat_id, voice_bytes)send_tool_status(chat_id, text, draft_id)— отправка промежуточных статусов визуала (“Поиск…”, “Загрузка…”)clear_tool_status(chat_id)