[ docs / актуально по README ]

Vera

Полностью локальный голосовой агент для Windows с оффлайн-распознаванием речи, встроенной локальной LLM и графическим интерфейсом.

Python 3.10+ Node.js 20.19+ Windows x64 52 tests
Важно. Vera может ошибаться. Проверяйте критически важные данные, особенно результаты веб-поиска, курсы валют, погоду и статистику.

Основные компоненты

  • Распознавание речи: Sherpa-ONNX, streaming и оффлайн.
  • LLM: локальная GGUF-модель или внешний сервер Ollama / LM Studio.
  • Синтез речи: Supertonic с локальным голосом Lily через ONNX Runtime.
  • Интерфейс: плавающий виджет и полноценное окно чата поверх всех окон.

Системные требования

С учетом встроенной локальной LLM (Qwen3.5-2B-GGUF) и нейросетевых движков распознавания/синтеза речи (Sherpa-ONNX STT, Supertonic TTS):

Компонент Минимальные Рекомендуемые
ОСWindows 10 (x64)Windows 11 (x64)
Процессор (CPU)2 ядра, с поддержкой AVX24+ ядер (Intel Core i5+ / AMD Ryzen)
ОЗУ (RAM)8 ГБ16 ГБ
Место на диске4 ГБ5 ГБ (на SSD)
Видеокарта (GPU)Встроенная (работа LLM на CPU)Совместимая с Vulkan (для ускорения LLM)
МикрофонЛюбой встроенныйВнешний USB или гарнитура

Для разработчиков

  • Python 3.10+
  • Node.js 18+ — требования Vite и @vitejs/plugin-react из ui/package.json.

Установка и запуск

Шаг 1: Клонирование

git clone https://github.com/tripleguard/Vera.git
cd agent_vera

Шаг 2: Зависимости

pip install -r requirements.txt

Для сетевых запросов веб-слой использует niquests как основной HTTP-клиент с автоматическим fallback на requests.

cd ui
npm install
cd ..

Шаг 3: Бинарные модели

  • Скачайте модель sherpa-onnx-streaming-zipformer-small-ru-vosk-2025-08-16 и распакуйте ее в корень проекта.
  • Для встроенного механизма запуска скачайте GGUF-модель, например Qwen3-4B-Q4_K_M, и поместите ее в корень проекта.

Запуск

cd ui
npm start

Команда запускает Vite + Electron и автоматически поднимает Python backend server.py из .venv, если окружение найдено.

Графический интерфейс

Vera работает в фоне через графический интерфейс с плавающим поверх остальных окон виджетом. Также доступны окно чата и отдельная панель сессий.

  • Системный трей с командами открытия чата и выхода.
  • Сессии с переименованием, закреплением, архивированием и раздельным контекстом.
  • Прикрепление файлов, drag-and-drop и вставка изображений из буфера обмена.
  • Рабочая панель с деревом файлов и интерактивным CMD-терминалом.
  • Раздел «Проекты» для созданных презентаций.
  • Шесть тем: Обсидиан, Дневной, Терминал, Сакура, Графит и Аврора.
  • Индикаторы «Думает» и текущего действия инструмента.
Чтобы прервать голосовой ответ, скажите «Вера» или «Вера, стоп».

Примеры команд

Приложения, окна и система

Вера, открой хром
Вера, переключись на телеграм
Вера, громкость 75 процентов
Вера, сделай скриншот
Вера, перезагрузи через час

Файлы, веб и продуктивность

Вера, найди файл резюме
Вера, погода в Москве
Вера, найди информацию о Python
Вера, таймер 10 минут
Вера, читай мне новости каждое утро в 9:30

Память и создание материалов

Вера, запомни меня зовут Имя
Вера, что ты знаешь обо мне
Вера, сделай презентацию про искусственный интеллект
Вера, создай таблицу с расходами
Вера, посчитай факториал 20

Архитектура памяти

Память Vera работает полностью локально без векторной базы и эмбеддингов. Основное хранилище — data/memory.json; старый data/MEMORY.md мигрирует в JSON при первом запуске.

Категории фактов

Категория Триггеры Пример
identityзовут, моё имя, кто я«Меня зовут Тимур»
contact@, телефон, почта, email«мой email t@x.ru»
preferenceлюблю, нравится, ненавижу, предпочитаю«Любит тёмный шоколад»
projectпроект, задача, работаю над, разрабатываю«Работаю над Vera»
fact(по умолчанию)«Есть кот по имени Барсик»

Для поиска используются BM25, свежесть, совпадение категории и бонус закрепленным фактам. В системный промпт попадают три наиболее релевантных и закрепленные факты.

Skills и Tools

Skills

Каждый skill хранится в отдельном каталоге с SKILL.md. Он описывает назначение, правила, разрешенные инструменты и профиль модели. Vera загружает только подходящий skill, чтобы не раздувать системный prompt.

Tools

  • Чтение документов с автоматической суммаризацией длинных файлов.
  • Python code interpreter в отдельном процессе с защитой от зависания.
  • Создание текстовых файлов, таблиц, презентаций, докладов, отчетов и статей.

Интеграции

Внешний LLM-сервер

  1. Откройте настройки Vera.
  2. Включите «Внешний LLM-сервер».
  3. Для Ollama укажите http://localhost:11434/v1.
  4. Для LM Studio укажите http://localhost:1234/v1.
  5. Сохраните настройки — перезапуск не требуется.

Telegram

Telegram-режим работает через Telethon и папку «Избранное» (Saved Messages). Vera может находить и отправлять файлы, присылать созданные PPTX и читать сообщения из переписок. Управление компьютером в этом режиме отключено из соображений безопасности.

Веб-поиск

Поиск сначала идет через Brave Search, затем при необходимости переключается на DuckDuckGo Lite. Страницы загружаются параллельно, очищаются и ранжируются перед передачей локальной модели.

Конфигурация

Основной файл настроек: data/config.json.

  • Слово активации и таймаут тишины.
  • tts.voice_name, tts.total_steps, tts.volume.
  • Внешние серверы LLM.
  • Алиасы сайтов.

Тестирование

python tests/run_all.py

В README указано 52 теста. Они покрывают аудио и мультимодальность, память и сессии, Skills, маршрутизацию tools, генерацию документов и веб-экстракцию.

python tests/test_memory.py
python tests/test_tool_router.py
python tests/test_presentation_generator.py

Устранение неполадок

Sherpa-ONNX не загружается

Проверьте, что каталог модели распознавания речи находится в корне проекта.

LLM не запускается

Проверьте GGUF и наличие llama-server.exe с DLL. Для установленной версии стандартный каталог — C:\Program Files\Vera.

Нет звука или не работает микрофон

Проверьте tts.voice_name, доступные устройства воспроизведения и настройки звука в Windows.

Память забывает факты

Проверьте целостность data/memory.json. Лимит памяти — 20 фактов; закрепленные факты сохраняются при вытеснении.

FAQ

Передает ли Vera данные в интернет?

Нет, кроме веб-поиска, погоды и курсов валют. STT и LLM работают локально или на вашем внешнем сервере, если он настроен.

Можно ли изменить слово активации?

Да, в config.json.

Как прервать Веру, когда она говорит?

Скажите «Вера» или «Вера, стоп» — она сразу остановится.

Как работает поиск по памяти?

Последняя реплика используется как поисковый запрос. Факты ранжируются по BM25, свежести, категории и бонусу закрепления; top-3 и закрепленные факты попадают в системный промпт.

Можно ли закрепить факт, чтобы он не потерялся?

Да, через API MemoryManager.pin(fact_id). Закрепленные факты попадают в контекст и не вытесняются при достижении лимита MAX_FACTS=20.