Российский разработчик открыл код ИИ-ассистента «Свой» с end-to-end шифрованием и RAG поверх локальных файлов
Проект на Go + Vue 3 поднимается одним docker-compose, работает с Ollama и любым OpenAI-совместимым провайдером, а данные пользователя не покидают его устройство.

Содержание
Российский разработчик выложил в открытый доступ персонального ИИ-ассистента «Свой» под лицензией AGPL-3.0. Проект включает стриминговый чат с долговременной памятью, поиск по локальным файлам с end-to-end шифрованием и генерацию тем интерфейса силами самого LLM. Оба репозитория — основное приложение и внешний RAG — уже доступны на GitHub.
Стек: бэкенд на Go (стандартный `net/http`, ручной SQL через `pgx + sqlx`), фронт на Vue 3, база PostgreSQL 17 с расширением `pgvector`. Деплой — один `docker-compose` с четырьмя контейнерами: postgres, searxng, backend и nginx. Всё слушает `127.0.0.1`, наружу открыт только nginx.
Архитектура: без привязки к вендору и с circuit breaker
Ключевое архитектурное решение — единый OpenAI-совместимый клиент для всех LLM-вызовов. Модель чата, модель для извлечения фактов, vision-модель и embed-модель — это просто четыре поля в конфиге. Провайдеры хранятся в таблице с приоритетами, а поверх них работает circuit breaker: если основной провайдер падает или отдаёт 5xx, запрос автоматически уходит на резервный.
Весь SQL написан вручную — без ORM и кодогенераторов. `pgvector` используется через raw SQL, а при старте приложение само выравнивает размерность колонок под текущую embed-модель. Это позволяет менять модель эмбеддингов без миграций базы данных.
Уже в первой версии работали: стриминговый чат по SSE, хранение фактов в pgvector, extraction и «забывание» данных, tool calling, планировщик задач, мультиагентский пайплайн и vision. В новой версии добавились три крупных блока.
Вайб-темы: LLM как арт-директор
Помимо стандартных светлой и тёмной тем появился режим vibe — пользователь описывает желаемый стиль произвольным текстом («панк, красный, закат с переливами»), и система генерирует полную палитру интерфейса. Тему можно дорабатывать прямо из чата командами вроде `@тема сделай темнее` или `@тема поменяй фон на черно-синий`.
Чтобы тема не разваливалась в несочетаемые цвета, LLM отвечает только за три параметра: фон, текст и акцент — плюс «материал» (glass / retro / flat) и текстуру фона. Остальные 13 полей палитры выводятся детерминированно через смешивание базовых цветов. Поверх этого работает валидация: цвета обязаны быть валидным `#RRGGBB`, а контраст текст/фон проверяется по стандарту WCAG. Если модель выдала светлый текст на светлом фоне — цвет автоматически заменяется на читаемый.
Тема применяется через inline CSS-переменные на `document.documentElement`, что по специфичности перекрывает любые классовые темы. Режим `glass` добавляет `backdrop-filter: blur(20px)`, `retro` убирает скругления и ставит жёсткие рамки со смещённой тенью — отсылка к Windows 95, `flat` снимает все эффекты.
External RAG «Мой ПК»: бэкенд не видит содержимого файлов
Это технически наиболее нетривиальная часть проекта. Обычный RAG требует загружать документы в облако — здесь реализован принципиально иной подход. На компьютер пользователя устанавливается десктоп-агент `svoi-rag` (Go-бинарник с GUI на Windows/macOS и TUI на Linux), который индексирует выбранные папки в локальную базу sqlite-vec. Поиск идёт по локальному индексу, а бэкенд «Свой» в любой момент видит только зашифрованный текст.
Схема шифрования: P-256 ECDH → HKDF-SHA256 → AES-256-GCM. При первичном сопряжении стороны обмениваются только публичными ключами через бэкенд, а общий симметричный секрет каждая сторона вычисляет локально — бэкенд в этом вычислении не участвует и приватных ключей не хранит.
Две важных детали поверх базового ECDH. Первая — привязка к каналу: в HKDF-info подмешаны `device_id` и оба публичных ключа в каноническом порядке. Попытка подменить идентичность канала даст другой производный ключ, и расшифровка упадёт по GCM-тегу. Вторая — разделение ролей: в `additionalData` для AES-GCM передаётся роль сообщения (`request`, `response`, `file`). Шифртекст одной роли нельзя подставить в слот другой.
Результат: бэкенд хранит в базе только шифртекст запросов и ответов. Содержимое файлов и эмбеддинги не покидают компьютер пользователя никогда. Сообщения этого типа помечаются `source = "externalrag"` и явно исключаются из контекста облачной модели — даже если оператор развернул «Свой» на cloud-агрегаторе.
Поддерживаемые форматы: `txt`, `docx`, `xlsx`, `pdf`, `pptx`, `odt`, `epub`, `csv`, `md`, JSON/YAML и исходный код. PDF парсится через внешний `pdftotext` (poppler), на Windows бандлится вместе с бинарником. Есть авто-детекция кодировки UTF-8/UTF-16/cp1251. Индекс обновляется в реальном времени через `fsnotify`.
Веб-поиск и тематические помощники
Веб-поиск построен на SearXNG — self-hosted метапоисковике, который сам роутит запросы на Google, Bing и DuckDuckGo. Реализован как агентный tool calling: модели передаётся инструмент `web_search`, и она сама решает, когда его вызывать. В системный промпт вшито жёсткое правило — не писать «сейчас поищу» без фактического вызова инструмента. Без этого ограничения модели имитировали поиск, не выполняя его.
Механика — multi-turn: первый вызов модели инициирует `tool_call`, бэкенд прогоняет SearXNG, форматирует сниппеты и передаёт результаты в контекст второго вызова через сообщение с `role: "tool"`. Параллельно собирается галерея из до шести картинок по теме и список источников-цитат — для предотвращения галлюцинаций ссылок.
«Объектив» — системный чат-анализатор фото, аналог Google Lens. Создаётся автоматически для каждого пользователя. Технически это двухслойная сборка промпта: при наличии фото к любому чату добавляется базовый vision-промпт, а тематический помощник (Кулинар, Автомеханик, Грибник и другие) добавляет к нему свою специализацию. Одно и то же фото двигателя в чате «Автомеханик» и в «Кулинаре» даст принципиально разные ответы.
Что дальше и как попробовать
В планах разработчика — улучшение работы с большими коллекциями PDF, интеграция с почтой (автоматический разбор входящих и фильтрация спама), мониторинг и анализ логов через LLM, агент для работы с кодом по аналогии с Claude (с коммитами и пушем) и генерация изображений через Stable Diffusion на локальном GPU.
Проект поднимается командой `make up`. Работает как с локальной Ollama (полностью бесплатно, все данные остаются у пользователя), так и с любым OpenAI-совместимым облачным провайдером в режиме BYOK. Внешний RAG-агент можно использовать отдельно от основного приложения.
Для тех, кто не хочет разворачивать собственный сервер, доступна hosted-версия на `svoi-ai.ru` — с оплатой по факту использования без подписки. Сейчас ею пользуются несколько человек из ближайшего окружения разработчика.
Для белорусских разработчиков и команд из ПВТ, которые работают с чувствительными корпоративными документами, архитектура External RAG с E2E-шифрованием может быть особенно интересна: она позволяет использовать облачные LLM для поиска по внутренней документации, не передавая её содержимое провайдеру модели.
— По материалам Хабр / Разработка: оригинальная статья. Перевод и адаптация — редакция Digital Business.
Свежие новости
Все новости
ИИ как причина увольнений: 20 крупных технокомпаний сократили 140 000 сотрудников в 2026 году
С начала 2026 года американские технокомпании уволили почти 140 000 сотрудников, называя ИИ одним из ключевых факторов. Monday.com стала последней в этом списке, сократив 20% штата. Разбираем, кто, сколько и почему.

Claude Opus 5 установил рекорд на бенчмарке ARC-AGI-3, опередив GPT-5.6 Sol почти в четыре раза
Claude Opus 5 возглавил рейтинг ARC-AGI-3, набрав 30,2% — против 7,8% у предыдущего лидера GPT-5.6 Sol. Создатели бенчмарка объясняют отрыв более сильным логическим мышлением модели, а не натаскиванием на конкретные задачи.

Резидент ПВТ: налоговые льготы, преференции и правовое регулирование деятельности
Парк высоких технологий представляет собой уникальную правовую форму, которая позволяет резидентам динамично развиваться в результате применения особых правовых правил и налоговых льгот.

Код — за день, доверие — неделями: как Олег Старков строит «Где Бензин?»
Олег Старков за две недели собрал краудсорсинговую карту 26 450 АЗС в шести странах. Почему главным барьером стали не технологии, а доверие водителей.

Kimi выпустила открытую модель K3 на 2,8 трлн параметров — и подняла цены вслед за западными конкурентами
Kimi K3 — мультимодальная модель с 2,8 трлн параметров и контекстным окном в 1 млн токенов. По независимым тестам она уступает только двум топовым проприетарным моделям, однако цена на неё выросла в разы по сравнению с предшественником.

Си Цзиньпин на WAIC-2026: четыре принципа глобального управления ИИ и новая международная организация
Председатель КНР выступил на WAIC-2026 с программной речью об управлении ИИ и объявил о создании Всемирной организации сотрудничества в области искусственного интеллекта — её учредили 29 стран.

Databricks достигла оценки $188 млрд — крупнейшей среди частных AI-компаний
Databricks объявила о новом раунде финансирования с оценкой $188 млрд под руководством Coatue. Сумма раунда — около $3 млрд. За 18 месяцев компания провела четыре раунда и утроила капитализацию.

Meta и Anthropic обсуждают аренду вычислительных мощностей на $10 млрд
Meta ведёт переговоры с Anthropic об аренде вычислительных мощностей своих дата-центров. По данным New York Times, сумма контракта может достичь $10 млрд за два года — и это только начало новой бизнес-модели компании.

Thinking Machines Муради выпустила модель Inkling: лидер среди американских open-weights, но уступает Китаю
Thinking Machines Lab Миры Муради выпустила Inkling — мультимодальную модель на 975 млрд параметров. Она возглавила рейтинг американских open-weights моделей, но по общей производительности уступает лучшим китайским аналогам.