You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Worker (cmd/worker) — NATS-подписчик для асинхронной обработки документов: извлечение текста -> метаданные -> чанкинг -> эмбеддинг -> индексация в Qdrant -> граф (Neo4j).
Гексагональная архитектура (Ports & Adapters)
Пакет
Назначение
internal/core/domain
Доменные модели (Document, Conversation, Task, Memory, Orchestration)
# Клонировать репозиторий
git clone https://github.com/kk7453603/AIAssistent.git
cd AIAssistent
# Создать файл конфигурации
cp .env.example .env
# Вариант A: Docker Ollama (CPU)
docker compose up -d --build
# Вариант B: Хостовый GPU Ollama
docker compose -f docker-compose.yml -f docker-compose.host-gpu.yml up -d --build
# Загрузить модели в Ollama
docker compose exec ollama ollama pull llama3.1:8b
docker compose exec ollama ollama pull nomic-embed-text
После запуска:
Tauri UI: http://localhost:1420
OpenWebUI: http://localhost:3000
API: http://localhost:8080
Разработка
# Тесты
make test# Статический анализ
make vet
# Покрытие core + HTTP-адаптеров
make test-core-cover
# Перегенерация OpenAPI-кода
make generate
# Валидация конфигурации мониторинга
make monitoring-validate
# RAG evaluation suite
make eval# RAGAS evaluation (faithfulness, relevancy, correctness)
make eval-ragas
UI (Tauri + React)
cd ui
# Vite dev server (только фронтенд)
npm run dev
# Полное Tauri-приложение
npm run tauri dev
Один тест
go test ./internal/core/usecase/ -run TestQueryUseCase -v
Spec-first API
OpenAPI-спецификация: api/openapi/openapi.yaml
# 1. Обновить спецификацию# 2. Сгенерировать серверный код
make generate-openapi
# 3. Реализовать логику в internal/adapters/http/# 4. Проверить
make test
Конфигурация
Все настройки задаются через переменные окружения. Полный список -- в файле .env.example.
Доп. провайдеры через запятую (huggingface,openrouter)
RAG / Retrieval
Переменная
По умолчанию
Описание
QDRANT_URL
http://qdrant:6333
URL Qdrant
QDRANT_EMBED_DIM
0
Размерность вектора (0 = авто)
QDRANT_SEARCH_ORDER
upload,web,obsidian
Порядок каскадного поиска по коллекциям
CHUNK_SIZE
900
Размер чанка (символы)
CHUNK_OVERLAP
150
Перекрытие чанков
CHUNK_STRATEGY
fixed
Стратегия: fixed, markdown
CHUNK_CONFIG
Per-source JSON конфиг чанкинга
RAG_TOP_K
5
Топ-K результатов retrieval
RAG_RETRIEVAL_MODE
semantic
Режим: semantic, hybrid
RAG_HYBRID_CANDIDATES
30
Кандидатов для hybrid search
RAG_FUSION_STRATEGY
rrf
Стратегия fusion: rrf
RAG_RERANK_TOP_N
20
Топ-N для reranking
QUERY_EXPANSION_ENABLED
false
Включить multi-query expansion
Agent
Переменная
По умолчанию
Описание
AGENT_MODE_ENABLED
true
Включить серверный agent loop
AGENT_MAX_ITERATIONS
10
Макс. итераций агента
AGENT_TIMEOUT_SECONDS
90
Общий таймаут агента
AGENT_PLANNER_TIMEOUT_SECONDS
20
Таймаут планировщика
AGENT_TOOL_TIMEOUT_SECONDS
30
Таймаут инструмента
AGENT_SHORT_MEMORY_MESSAGES
12
Кол-во последних сообщений в контексте
AGENT_SUMMARY_EVERY_TURNS
6
Суммаризация каждые N ходов
AGENT_MEMORY_TOP_K
4
Топ-K воспоминаний из долговременной памяти
AGENT_KNOWLEDGE_TOP_K
5
Топ-K результатов knowledge_search
AGENT_INTENT_ROUTER_ENABLED
true
Включить intent router
OPENAI_COMPAT_API_KEY
Bearer-токен для API (пусто = без авторизации)
Knowledge Graph (Neo4j)
Переменная
По умолчанию
Описание
GRAPH_ENABLED
false
Включить Neo4j knowledge graph
NEO4J_URL
bolt://neo4j:7687
URL Neo4j
NEO4J_USER
neo4j
Пользователь Neo4j
NEO4J_PASSWORD
password
Пароль Neo4j
GRAPH_SIMILARITY_THRESHOLD
0.75
Порог similarity для создания связей
GRAPH_BOOST_FACTOR
0.7
Коэффициент boost от графа при retrieval
Multi-Agent Orchestration
Когда ORCHESTRATOR_ENABLED=true, сложные запросы автоматически декомпозируются на подзадачи и распределяются между специализированными агентами. Оркестратор создаёт план → выполняет шаги последовательно → собирает финальный ответ. Если critic находит проблемы, добавляются корректирующие шаги (writer → critic) в рамках лимита ORCHESTRATOR_MAX_STEPS.
Встроенные агенты:
Агент
Роль
Инструменты
Макс. итераций
researcher
Поиск фактов, источников и контекста
knowledge_search, web_search
5
coder
Генерация, анализ и отладка кода
knowledge_search
5
writer
Синтез информации в структурированный ответ
knowledge_search
3
critic
Проверка на ошибки, галлюцинации, пробелы
knowledge_search
3
Кастомные агенты добавляются через AGENT_SPECS и расширяют (или переопределяют) встроенных.
Переменная
По умолчанию
Описание
ORCHESTRATOR_ENABLED
false
Включить multi-agent orchestration
ORCHESTRATOR_MAX_STEPS
8
Макс. шагов оркестратора (включая корректирующие)
AGENT_SPECS
JSON-массив кастомных агентов (см. пример ниже)
MODEL_ROUTING
JSON для adaptive model routing (см. пример ниже)
Пример AGENT_SPECS — добавить агента-переводчика:
AGENT_SPECS='[{"name":"translator","system_prompt":"You are a translation specialist. Translate text accurately preserving meaning and style.","tools":["knowledge_search"],"max_iterations":3}]'
Пример MODEL_ROUTING — направить простые запросы на лёгкую модель, сложные на мощную:
Тиры сложности (simple, complex, code) определяются автоматически intent router-ом. Если MODEL_ROUTING не задан, все запросы идут на OLLAMA_GEN_MODEL. Также поддерживается auto-discovery: если Ollama доступна и в ней есть модели с именами, содержащими coder, они автоматически назначаются на тир code.
Self-Improving Agent
Периодически (каждые SELF_IMPROVE_INTERVAL_HOURS часов) анализирует собранные события агента и пользовательский feedback. LLM генерирует предложения по улучшению (категории: system_prompt, tool_config, retrieval_config). При SELF_IMPROVE_AUTO_APPLY=true безопасные улучшения применяются автоматически; остальные ожидают ручного одобрения через API (PATCH /v1/improvements/{id}).