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)
74 lines
3.4 KiB
Markdown
74 lines
3.4 KiB
Markdown
# 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:
|
||
1. CLI --config arg
|
||
2. .meeting-room/config.yaml (поиск от CWD вверх)
|
||
3. Встроенный 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-грантов.
|