surfaces/.planning/codebase/CONVENTIONS.md

1.4 KiB

Конвенции (CONVENTIONS.md)

  • Асинхронность: Весь код бота асинхронный (asyncio). Вызовы SDK и Matrix-клиента выполняются через await. Блокирующие вызовы (если они есть) должны выноситься в тредпул.
  • Обработка ошибок: Бот не должен падать из-за ошибок отдельного агента. Ошибки SDK (например, PlatformError) отлавливаются в боте и возвращаются пользователю в виде системных сообщений или уведомлений.
  • Стейтлесс-подход: Поверхность хранит минимальный стейт (только локальный SQLite для связки room_id <-> platform_chat_id). Вся история сообщений и память лежат на стороне агентов.
  • Переменные окружения: Бот полностью конфигурируется через .env (префиксы MATRIX_ и SURFACES_).
  • Добавление новой поверхности: Новая поверхность должна быть самостоятельной папкой в adapter/, реализовывать converter.py, и переиспользовать sdk/real.py и core/protocol.py.