Files
ai-rpg/README.md
2026-06-19 11:28:04 +03:00

111 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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