.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>
158 lines
16 KiB
Markdown
158 lines
16 KiB
Markdown
---
|
||
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 — пилот (2–3 недели):** 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 / 2–4 ГБ) + 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
|