initial
This commit is contained in:
110
README.md
Normal file
110
README.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# AI RPG — гибкая ролевая игра с ИИ
|
||||
|
||||
Веб-приложение для проведения ролевых игр с искусственным интеллектом.
|
||||
FastAPI (backend) + React/Vite/TypeScript (frontend) + PostgreSQL + Redis + Qdrant.
|
||||
Упаковано в Docker Compose.
|
||||
|
||||
## Возможности
|
||||
|
||||
- Регистрация / аутентификация пользователей
|
||||
- Первичная инициализация администратора по одноразовому токену (выводится в консоль backend при первом запуске)
|
||||
- Панель администратора: настройка OpenAI-совместимого endpoint'а, токена, модели, параметров генерации, лимитов контекста
|
||||
- Создание мира: пресет (встроенный Fantasy) или с нуля через многошаговый диалог с ИИ
|
||||
- ИИ генерирует: расширенный сеттинг, правила, JSON-схему состояния мира (характеристики, инвентарь, статы), начальную дату/время, общие рельсы сюжета
|
||||
- Игрок правит и подтверждает → запускается первая итерация
|
||||
- Сессия: чат-интерфейс со стримингом, глоссарий (RAG), лист персонажа, кнопки опций + свободный ввод
|
||||
- Итерация: ИИ использует инструменты (dice, RAG, обновление состояния, sub-агенты, отложенные триггеры) и пишет сценарный шаг + технический "за-кадровый" шаг
|
||||
- Контекстный менеджер: гарантированные последние N сообщений + динамическая граница с суммаризацией
|
||||
- Отложенные триггеры, привязанные к дате/времени мира (background worker)
|
||||
- Двуязычный UI (RU/EN)
|
||||
- Логирование всех LLM-вызовов в БД
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
```bash
|
||||
# 1. Скопировать .env и при необходимости отредактировать
|
||||
cp .env.example .env
|
||||
|
||||
# 2. Поднять стек
|
||||
docker compose up --build
|
||||
|
||||
# 3. В логах backend найти строку:
|
||||
# "ADMIN_SETUP_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
# (или задать ADMIN_SETUP_TOKEN в .env вручную)
|
||||
|
||||
# 4. Открыть http://localhost:5173
|
||||
# - Перейти на /admin/setup
|
||||
# - Ввести токен → создать учётку администратора
|
||||
# - Зайти в Admin Panel → настроить LLM endpoint
|
||||
|
||||
# 5. Зарегистрировать обычного пользователя и начать создавать мир
|
||||
```
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
┌────────────┐ SSE ┌────────────────────────────┐
|
||||
│ Frontend │ <──────► │ FastAPI backend │
|
||||
│ React/Vite │ HTTP │ - auth (JWT) │
|
||||
└────────────┘ │ - admin / settings │
|
||||
│ - worlds / sessions │
|
||||
│ - engine (orchestrator) │
|
||||
│ - tools (dice/rag/...) │
|
||||
│ - context manager │
|
||||
│ - trigger runner │
|
||||
└──┬──────────┬──────────┬───┘
|
||||
│ │ │
|
||||
┌────────▼─┐ ┌─────▼────┐ ┌───▼─────┐
|
||||
│PostgreSQL│ │ Redis │ │ Qdrant │
|
||||
│ (data) │ │ (queues) │ │ (RAG) │
|
||||
└──────────┘ └──────────┘ └─────────┘
|
||||
```
|
||||
|
||||
## Локальная разработка
|
||||
|
||||
```bash
|
||||
# Backend hot reload
|
||||
docker compose up backend postgres redis qdrant
|
||||
|
||||
# Frontend dev
|
||||
docker compose up frontend
|
||||
|
||||
# Миграции (автоматически при старте backend, но можно вручную)
|
||||
docker compose exec backend python -m app.migrations.init_db
|
||||
```
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
ai-rpg/
|
||||
├── docker-compose.yml
|
||||
├── .env.example
|
||||
├── backend/
|
||||
│ ├── Dockerfile
|
||||
│ ├── requirements.txt
|
||||
│ └── app/
|
||||
│ ├── main.py # FastAPI entrypoint
|
||||
│ ├── config.py # Settings
|
||||
│ ├── api/ # Routers
|
||||
│ ├── core/ # LLM client, security, rag
|
||||
│ ├── engine/ # Game orchestrator
|
||||
│ │ └── tools/ # LLM tool-call handlers
|
||||
│ ├── models/ # SQLAlchemy models
|
||||
│ ├── schemas/ # Pydantic schemas
|
||||
│ ├── prompts/ # Bilingual prompt templates
|
||||
│ └── workers/ # Background workers (triggers)
|
||||
└── frontend/
|
||||
├── Dockerfile
|
||||
├── package.json
|
||||
└── src/
|
||||
├── api/ # API client
|
||||
├── components/ # UI components
|
||||
├── pages/ # Page components
|
||||
├── store/ # Zustand stores
|
||||
├── hooks/ # React hooks
|
||||
└── i18n/ # RU/EN translations
|
||||
```
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user