Multi-agent discussion framework: - Custom/AutoGen/CrewAI backends - Multi-provider API (role→model binding) - Tools system (files, web, commands) - Markdown scenarios with YAML frontmatter - Workspace init (meeting-room init) - Session save (--save)
3.4 KiB
Meeting Room — Архитектура и решения
Концепция
Meeting-room — это CLI-инструмент (как git, terraform). Устанавливается глобально,
работает в рабочей директории .meeting-room/.
projects/
├── meeting-room/ ← исходники пакета (pip install -e .)
├── .meeting-room/ ← рабочая директория обсуждений (git-репа)
│ ├── config.yaml ← конфиг, переопределяет дефолтный
│ ├── scenarios/ ← сценарии .md
│ ├── sessions/ ← результаты (json, gitignored)
│ └── .gitignore
└── my-project/ ← любой проект, можно указать как workdir
Принятые решения
Сценарии — Markdown с YAML frontmatter
YAML неудобен для многострочного текста. Markdown естественно поддерживает заголовки, списки, код, выделение. Frontmatter — для метаданных (участники, раунды).
Multi-provider архитектура
Каждая роль привязана к конкретному API-провайдеру и модели через provider + model.
Позволяет смешивать модели: GPT-4o, Claude, Qwen, Gemini в одном обсуждении.
API-ключи через env-переменные
Формат: MEETING_ROOM_<PROVIDER>_API_KEY, MEETING_ROOM_<PROVIDER>_BASE_URL.
В config.yaml можно ${ENV_VAR} плейсхолдеры. Ключи не утекают в гит.
Система инструментов (tools)
OpenAI function calling: read_file, list_files, search_in_files, write_file, web_search, web_fetch, run_command. Привязаны к ролям через наборы: all, files, readonly, web, none.
Три бэкенда
- custom — свой Python, round-robin с tool support, из коробки
- autogen — Microsoft AutoGen
- crewai — CrewAI
Workspace (.meeting-room)
meeting-room init создаёт структуру в CWD. CLI ищет config.yaml:
- CLI --config arg
- .meeting-room/config.yaml (поиск от CWD вверх)
- Встроенный package config
Сохранение результатов
--save — JSON файл в sessions/ с таймстемпом, именем сценария, полной историей.
Структура пакета
meeting_room/
├── __init__.py
├── cli.py — CLI (init, run, list, save)
├── api_client.py — мультипровайдерный OpenAI-совместимый клиент
├── tools.py — инструменты (файлы, веб, shell)
├── scenario_loader.py — загрузчик .md/.yaml
├── config/
│ └── config.yaml — дефолтный конфиг (без ключей)
├── scenarios/
│ └── example-saas.md — встроенный пример
└── backends/
├── custom/
├── autogen/
└── crewai/
Gitea
Репозиторий: git.kzntsv.site/OpeItcLoc03/meeting-room Токен: env GITEA_TOKEN, без admin-грантов.