- add pending confirm prefix and storage helpers - preserve existing matrix store behavior and tests |
||
|---|---|---|
| .planning | ||
| adapter | ||
| core | ||
| docs | ||
| sdk | ||
| tests | ||
| .DS_Store | ||
| .env.example | ||
| .gitignore | ||
| conftest.py | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
Lambda Lab 3.0 — Surfaces
Команда поверхностей. Telegram и Matrix боты для взаимодействия пользователя с AI-агентом Lambda.
Статус
Прототип в разработке. SDK платформы ещё не готов — работаем через MockPlatformClient.
| Поверхность | Статус | Описание |
|---|---|---|
| Telegram | 🔨 В разработке | DM + Forum Topics mode, активная реализация сейчас в отдельном worktree |
| Matrix | 🔨 В разработке | Незашифрованные комнаты: новый чат = новая Matrix room |
Концепция
Пользователь получает персонального AI-агента через привычный мессенджер. Агент выполняет реальные задачи: разбирает почту, ищет информацию, работает с файлами, управляет календарём.
Поверхности — тонкие клиенты. Вся бизнес-логика на стороне платформы. Задача команды: сделать интерфейс удобным, надёжным и легко расширяемым.
Архитектура
surfaces-bot/
core/ — общее ядро, не зависит от транспорта
protocol.py — унифицированные структуры (IncomingMessage, OutgoingUI, ...)
handler.py — EventDispatcher: IncomingEvent → OutgoingEvent
handlers/ — обработчики по типам событий
store.py — StateStore Protocol + InMemoryStore + SQLiteStore
chat.py — ChatManager: метаданные чатов C1/C2/C3
auth.py — AuthManager: аутентификация
settings.py — SettingsManager: коннекторы, скиллы, SOUL, безопасность
adapter/
telegram/ — aiogram 3.x адаптер
matrix/ — matrix-nio адаптер
sdk/
interface.py — PlatformClient Protocol (контракт к SDK)
mock.py — MockPlatformClient (заглушка)
docs/ — документация
.claude/agents/ — агенты для Claude Code
Ключевой принцип: добавить новую поверхность = написать один адаптер-конвертер.
Ядро (core/) не трогается. Подробнее: docs/surface-protocol.md
Функционал прототипа
Telegram (подробнее)
- Чаты — основной Telegram UX сейчас развивается в отдельном worktree
feat/telegram-adapter - Forum Topics mode — бот умеет подключать forum-группу через
/forum; чат может быть привязан к отдельной теме - DM-режим — базовый диалог и переключение чатов сохраняются
- Аутентификация — привязка Telegram аккаунта к аккаунту платформы
- Диалог — typing indicator, передача файлов, подтверждение опасных действий через inline-кнопки
- Настройки через
/settings: коннекторы (Gmail, GitHub, Notion...), скиллы, личность агента (SOUL), безопасность, подписка
Matrix (подробнее)
- Чаты —
!newсоздаёт реальную новую Matrix room и приглашает туда пользователя - Онбординг — DM-first: инвайт в комнату, приветствие, затем работа через команды
! - Диалог — сообщения, вложения, реакции 👍/❌ и базовый routing через
EventDispatcher - Настройки — команды
!skills,!connectors,!soul,!safety,!plan,!status,!whoami - Текущее ограничение — encrypted DM пока не поддержан в этом репозитории; ручное тестирование Matrix сейчас ведётся в незашифрованных комнатах
Замена SDK
Вся работа с платформой идёт через PlatformClient Protocol:
class PlatformClient(Protocol):
async def get_or_create_user(self, external_id: str, platform: str, ...) -> User: ...
async def send_message(self, user_id: str, chat_id: str, text: str, ...) -> MessageResponse: ...
async def get_settings(self, user_id: str) -> UserSettings: ...
async def update_settings(self, user_id: str, action: Any) -> None: ...
Бот не управляет lifecycle контейнеров — это делает Master (платформа).
Бот передаёт user_id + chat_id + сообщение; платформа сама решает нужно ли поднять контейнер.
Сейчас: MockPlatformClient в sdk/mock.py.
Когда SDK готов: добавляем SdkPlatformClient, меняем одну строку в DI. Адаптеры и ядро не трогаем.
Быстрый старт
# Зависимости
uv sync # или: pip install -e ".[dev]"
# Тесты
pytest tests/ -v
# Запустить Matrix бота
cp .env.example .env # заполнить MATRIX_* переменные
PYTHONPATH=. uv run python -m adapter.matrix.bot
Telegram worktree
Текущая Telegram-разработка идёт в отдельном worktree:
cd .worktrees/telegram
export BOT_TOKEN=...
PYTHONPATH=. python -m adapter.telegram.bot
Matrix manual QA
Пока Matrix-бот тестируется в незашифрованных комнатах:
cd /path/to/surfaces-bot
rm -f lambda_matrix.db
PYTHONPATH=. uv run python -m adapter.matrix.bot
Документация
| Файл | Содержание |
|---|---|
docs/surface-protocol.md |
Унификация поверхностей — все структуры, как добавить новую поверхность |
docs/telegram-prototype.md |
Функционал Telegram прототипа |
docs/matrix-prototype.md |
Функционал Matrix прототипа |
docs/api-contract.md |
Контракт к SDK платформы |
docs/user-flow.md |
FSM и user journey |
docs/claude-code-guide.md |
Гайд по работе с Claude Code |
Команда
Поверхности и интеграции Lambda Lab 3.0, МАИ