Files
knowledge-base/projects/niikn/ai-assistant-concept.md
dttb 4010fbd235 Homepage: перенос на 10.0.0.148 — был конфликт IP на .145 (502/refused)
.145 оказался занят чужим устройством (MAC ac:ba:c0:39:82:64): pve резолвил в контейнер,
а NPM и NetBird-клиенты — в чужого → 502 на dash.dttb.ru. Перенесли на свободный .148
(проверено ARP), NPM forward_host обновлён, HOMEPAGE_ALLOWED_HOSTS поправлен.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 00:32:48 +03:00

158 lines
16 KiB
Markdown
Raw Permalink 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.
---
type: project
status: draft
tags: [niikn, ai, assistant, nextcloud, open-webui, omniroute, concept]
aliases: ["AI-ассистент НИИКН", "ИИ для сотрудников НИИКН", "NIIKN AI assistant"]
created: 2026-06-24
---
# Концепция: AI-ассистент для сотрудников НИИКН
> Цель — заменить Яндекс Алису корпоративным ИИ-ассистентом, который **видит документы и почту НИИКН**, **уважает права доступа** сотрудников и **работает в их привычных инструментах** (Nextcloud), оставаясь под контролем в нашем контуре. ~20 сотрудников, из них 6 — административный отдел.
## 1. Зафиксированные решения (развилки)
| Развилка | Выбор Олега | Следствие |
|---|---|---|
| Куда уходят данные | **Облако через Max (Opus 4.8)** | Инференс через omniroute → `cc/claude-opus-4-8`. Быстрый старт, ~0 ₽/токены. Содержимое уходит в Anthropic (US) — годится, т.к. данные НИИКН не гостайна |
| Интерфейс (фаза 1) | **Оба: Nextcloud Assistant + Open WebUI** | NC-ассистент в рабочем потоке (файлы) + отдельный веб-чат как замена Алисе |
| Почта | **Не приоритет** | Старт — поиск по 2.7 ТБ документов и работа с файлами. Mailcow подключаем в фазе 3 |
## 2. Что уже есть в контуре НИИКН (ничего не строим с нуля)
- **VM 108** — Nextcloud AIO **32.0.6** (~102 аккаунта, `niikn.com`). NC 32 несёт **Assistant** + **Context Chat** (RAG по своим файлам) из коробки.
- **SMB (LXC 110)** — 2.7 ТБ документов (groupfolders «Общий ресурс» 1.5 ТБ + «ГИКЭ_ВОКН_Москва» 1.2 ТБ). **Уже смонтирован на VM108** как `/mnt/ncsmb` → доступен Nextcloud для индексации без перекачки.
- **omniroute** — шлюз к моделям (Opus 4.8 через Max + бесплатные фолбэки). OpenAI-совместимый `/v1`.
- **swarmclaw** — оркестратор (back-office автоматизация, фаза 3+).
- **VM 106 Mailcow** — свой почтовый сервер (`mail.niikn.com`) для фазы 3.
- Дома обкатан **Open WebUI** ([[decisions/2026-06-22-open-webui-deploy]]) — готовая многопользовательская веб-морда с ролями и RAG. Деплой на pve-niikn = копия проверенного рецепта.
## 3. По поводу clawdbot vs Hermes Agent — важный нюанс
Ты прав, что **Hermes во многом лучше clawdbot** — но это про *персонального* агента. Оба (clawdbot, Hermes/German) — **одно-пользовательские Telegram-агенты**: заперты на один Telegram-ID, **без ролей и без разграничения прав**. Для офиса на 20 человек с разными правами они не подходят как основная платформа.
**Вывод:**
- **Офисная платформа** (20 чел., RBAC, документы) = **Nextcloud Assistant + Open WebUI поверх omniroute**. Это и есть ответ на «как у всех, удобно, с правами».
- **Hermes оставляем для точечных силовых юзеров** — например, личный бот Мауля ([[projects/niikn/clawdbot-niikn|LXC 114]]) можно проапгрейдить clawdbot → Hermes, если ему нравится Telegram-формат. Это не противоречит офисному развёртыванию, а дополняет его.
## 4. Целевая архитектура (слои)
```mermaid
flowchart TB
subgraph users["Сотрудники НИИКН (~20)"]
admin["Админ-отдел (6)<br/>группа niikn-admin"]
staff["Остальные (14)<br/>группа niikn-staff"]
end
subgraph iface["Слой интерфейсов"]
nc["Nextcloud Assistant<br/>(VM108)<br/>Smart Picker, резюме,<br/>«спроси по этому файлу»"]
owui["Open WebUI<br/>(новый LXC на pve-niikn)<br/>чат как Алиса/ChatGPT<br/>+ базы знаний по отделам"]
end
subgraph rag["Слой знаний (RAG)"]
cc["Context Chat backend<br/>индекс по файлам NC<br/>УВАЖАЕТ права на файлы"]
col["Коллекции Open WebUI<br/>по отделам"]
emb["Локальный embedder<br/>multilingual-e5 / bge-m3"]
end
subgraph engine["Слой движка"]
omni["omniroute /v1<br/>единая точка к моделям"]
end
subgraph models["Модели (облако через Max)"]
opus["cc/claude-opus-4-8 (осн.)"]
fb["fallback: sonnet-4-6 →<br/>kr/sonnet-4.5 (free) → gpt"]
end
docs[("2.7 ТБ документов<br/>SMB /mnt/ncsmb")]
admin --> nc & owui
staff --> nc & owui
nc --> cc
owui --> col
cc --> emb
col --> emb
docs --> cc
docs -.экспорт по отделам.-> col
nc --> omni
owui --> omni
omni --> opus --> fb
```
**Ключевая идея:** один движок (omniroute) — две морды. omniroute = единственная точка управления моделями, ключами, лимитами и стоимостью. Меняем модель/фолбэк в одном месте — меняется везде.
### Слой 1 — движок (omniroute)
- Все запросы идут в omniroute → `cc/claude-opus-4-8` (Max).
- **Цепочка фолбэков обязательна** (см. §6 «Надёжность»): Opus → `cc/claude-sonnet-4-6``kr/claude-sonnet-4.5` (free) → `cx/gpt-5.5`. Чтобы при исчерпании Max-капа ассистент **деградировал, а не падал**.
### Слой 2 — знания (RAG)
- **Nextcloud Context Chat** индексирует файлы пользователя и **автоматически уважает права на файлы**: сотрудник получает ответы только из тех документов, к которым у него есть доступ. Это и есть «разные права» — бесплатно, на уровне ACL Nextcloud. Главная фича против Алисы.
- **Open WebUI коллекции** — базы знаний по отделам (например, отдельная коллекция «ГИКЭ» для админ-отдела). Привязываются к группам.
- **Embeddings — единственная локально-тяжёлая часть** даже в облачном сценарии (Anthropic эмбеддинги не даёт). Берём многоязычный embedder (`multilingual-e5-large` / `bge-m3`) — критично для русского. Тут пригодится небольшой GPU (см. §6).
### Слой 3 — интерфейсы
- **Nextcloud Assistant** (VM108): приложения `assistant` + `integration_openai`/`llm2` (провайдер → omniroute) + `context_chat`/`context_chat_backend`. Даёт: Smart Picker, свободный промпт, резюме, перевод, «спроси по этому файлу/папке».
- **Open WebUI** (новый LXC на pve-niikn): замена Алисе. Multi-user, группы → доступ к моделям и коллекциям.
### Слой 4 — автоматизация (фаза 3+, опционально)
- **swarmclaw** как back-office оркестратор: дайджесты новых документов, триаж/черновики почты, типовые рабочие процессы. Не морда для всех 20 — управляемый инструмент админ-отдела.
## 5. Модель прав (RBAC)
| Группа | Кто | Nextcloud | Open WebUI |
|---|---|---|---|
| **niikn-admin** (6) | Мауль, Оксана Павловна + админ-отдел | Assistant + Context Chat по всем groupfolders | Opus 4.8 + коллекция «ГИКЭ/внутр. документы» |
| **niikn-staff** (~14) | Остальные | Assistant + Context Chat по своим/общим папкам | Sonnet по умолчанию + общая коллекция |
- В Nextcloud разграничение **из коробки**: Context Chat не покажет документ тому, у кого нет к нему прав.
- В Open WebUI группы маппятся на «какие модели и какие коллекции видит юзер».
- **SSO (OIDC)** через Nextcloud как IdP — фаза 2 (один логин на оба интерфейса). На пилоте 6 аккаунтов можно завести руками.
## 6. Надёжность («всё должно работать без сбоя») — это главный риск, разбираю отдельно
| Риск | Почему | Митигация |
|---|---|---|
| **Max-кап (5ч) общий** | Сейчас один Max-аккаунт делят openclaw, German, swarmclaw, Open WebUI (дома). + 20 офисных юзеров в часы пик → `400 out of extra usage` гарантированно | **(1)** Цепочка фолбэков на бесплатные модели (деградация, не падение). **(2)** Рекомендую **отдельный биллинг для НИИКН**: или свой Max-seat, или Anthropic API-ключ с месячным бюджетом-капом. Без этого «без сбоя» не гарантировать |
| **omniroute — SPOF** | Одна точка к моделям | systemd auto-restart (есть) + healthcheck + мониторинг в Zabbix (LXC 105 уже есть) |
| **Egress в Anthropic через тоннель** | WAN НИИКН (MTS) блокирует много чего; трафик к Anthropic идёт через NetBird/Finland-bypass. Тоннель упал — ИИ молчит | Watchdog'и NetBird уже есть; добавить алерт «omniroute не отвечает» → Олегу через бота |
| **Context Chat тяжёлый/капризный** | Python-бэкенд, индексация 2.7 ТБ / ~470k файлов — большая задача | **Не индексировать всё вслепую.** Скоупим корпус (нужные groupfolders, типы docx/pdf/xlsx), пилот на одной папке. Open WebUI остаётся доступным чатом, даже если индексация Context Chat отстаёт |
| **Железо под embeddings** | 2.7 ТБ на CPU индексируются медленно | Небольшой GPU на pve-niikn кратно ускоряет индекс. Главная (и почти единственная) аппаратная инвестиция в облачном сценарии |
## 7. Сценарии использования (чем мы лучше Алисы)
- «Найди в наших документах все экспертизы по объекту X за 2024» — Context Chat по groupfolders, **с учётом прав**.
- «Сделай резюме этого 80-страничного заключения ГИКЭ».
- «Составь черновик официального письма в Минкульт по нашему шаблону».
- «Переформулируй/переведи этот раздел».
- «Что требует этот регламент?» — общий чат с базой знаний.
- Админ-отдел: дайджест новых документов, черновики типовой переписки (фаза 3).
**Алиса** не видит документы НИИКН, не знает прав сотрудников, шлёт всё в Яндекс и не имеет корпоративной памяти. Наш ассистент — приватнее, знает документы, знает роли.
## 8. Дорожная карта
- **Фаза 0 — подготовка (~1 неделя):** решить вопрос биллинга (отдельный Max/API для НИИКН); прописать цепочку фолбэков в omniroute; поднять Open WebUI LXC на pve-niikn; создать группы `niikn-admin`/`niikn-staff`; выбрать пилотный корпус (одна groupfolder).
- **Фаза 1 — пилот (23 недели):** Open WebUI для админ-отдела (6 чел.) как замена Алисе + одна коллекция знаний; Nextcloud Assistant (Smart Picker, резюме, свободный промпт) для них же; Context Chat индексирует пилотный корпус. Сбор обратной связи.
- **Фаза 2 — раскатка на всех 20:** обе морды, полный RBAC, расширение корпуса Context Chat, SSO (OIDC), коллекции по отделам.
- **Фаза 3 — почта + автоматизация:** Mailcow → Nextcloud Mail + почтовые задачи ассистента (резюме/черновики); swarmclaw-автоматизации (дайджесты, триаж).
- **Фаза 4 — продвинутое:** агентные сценарии, шаблоны, помощники вокруг 1С/КриптоАРМ, голосовой ввод.
## 9. Стоимость (порядок величин)
- **Модели:** ~0 ₽ через Max — **при условии решения вопроса с капом** (отдельный seat ~$/мес или API с бюджетом).
- **Железо:** существующий Proxmox + 1 новый LXC (Open WebUI, 2 vCPU / 24 ГБ) + RAM/диск под векторы. Опционально небольшой GPU под embeddings (главная инвестиция).
- **Трудозатраты:** в основном конфиг — переиспользуем готовые домашние рецепты (Open WebUI deploy уже описан, omniroute работает).
## 10. Что нужно от Олега для старта
1. **Решение по биллингу** — отдельный Max/API-ключ для НИИКН или живём на общем капе + фолбэки? (влияет на «без сбоя»).
2. Подтвердить состав групп: кто именно 6 человек админ-отдела.
3. Выбрать пилотную groupfolder для первой индексации.
4. Есть ли возможность дать GPU на pve-niikn (или индексируем на CPU медленно).
## Навигация
- [[projects/niikn/README]] — инфраструктура НИИКН
- [[projects/niikn/clawdbot-niikn]] — бот Мауля (LXC 114)
- [[decisions/2026-06-22-open-webui-deploy]] — рецепт Open WebUI (дом)
- [[projects/niikn/groupfolders-migration]] — структура документов SMB