USAGE.md (new, ~250 lines)
- Complete voice command reference organised by 13 categories
- Table-formatted for fast skim ("Команда → Что делает")
- Sections: Управление ассистентом / LLM / Память+профили+macros /
Расписание / Окна+апп / Аудио+медиа / Система / Файлы+буфер /
Информация из интернета / Утилиты-калькуляторы / Разработка /
Развлечения / Скриншоты
- Bottom: "Как добавить свою команду" with Lua snippet template,
"Голосовое vs GUI" mapping, troubleshooting checklist (mic / TTS /
LLM / command-not-found / logs).
- Covers all 67 packs visible in resources/commands/.
interesting_fact pack (resources/commands/interesting_fact/, 2 cmds)
- fact.about "удиви меня" / "интересный факт про космос"
→ LLM with "curious conversationalist" prompt,
generic or topic-targeted (1-2 sentences, no fluff).
- fact.history_today "что было в этот день" / "этот день в истории"
→ Wikipedia "On this day" API (RU first, EN fallback)
→ LLM picks top 2-3 events, narrates concisely.
mailto pack (resources/commands/mailto/, 1 cmd)
- mailto.compose "напиши письмо" / "напиши письмо маме"
→ opens default mail client via mailto: URI.
Looks up recipient via jarvis.memory ("email_маме")
if a name is given.
- Pairs well with: jarvis.memory.remember("email_маме", "mom@example.com")
Pack count: 67 → 70. Tests: 112/112.
|
||
|---|---|---|
| crates | ||
| frontend | ||
| lib | ||
| resources | ||
| tools | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE.txt | ||
| make_ico.py | ||
| post_build.py | ||
| poster.jpg | ||
| README.md | ||
| run.bat | ||
| USAGE.md | ||
J.A.R.V.I.S. (Rust) — форк Bossiara13
Локальный голосовой ассистент для Windows. Форк Rust-переписки Priler/jarvis. Сильно расширен в этом форке (см. ниже). Может работать полностью офлайн через Ollama, или с облачным LLM через Groq — выбор переключается голосом на лету.
Зеркала:
- GitHub: https://github.com/DmitryBykov-ISPO/J.A.R.V.I.S-rust
- Forgejo (self-hosted):
http://192.168.0.10:3000/bossiara13/J.A.R.V.I.S-rust(только в LAN; используйNO_PROXY=192.168.0.10если у тебя локальный прокси)
Для контрибьюторов: см. ARCHITECTURE.md — карта кода, data flow, рецепты "как добавить пак / фичу / TTS backend".
Что внутри
- STT: Vosk + webrtc-vad для умного завершения по тишине.
- Wake-word: Vosk / Rustpotter / Picovoice Porcupine (выбор в Settings).
- TTS: трёхбэкендовая абстракция — SAPI (стоковый), Piper (нейронный,
рекомендуется, ~90 МБ), Silero (PyTorch). Выбор через
JARVIS_TTSили GUI. - LLM: двухбэкендовая — Groq (облако, бесплатно) или Ollama (локально,
офлайн). Hot-swap через голос / GUI /
JARVIS_LLM. Выбор сохраняется в БД. - Lua sandbox: каждая команда — Lua-скрипт с тремя уровнями песочницы.
Полный API:
jarvis.speak/llm/http/fs/state/system/memory/profile/scheduler/ vision/macros/cmd/text/...— см. ARCHITECTURE.md. - Tauri 2 GUI: 4 страницы (главная, /commands список 59 паков, /settings, футер с активными движками).
Возможности (то, чего нет в апстриме)
Управление LLM
- Agentic LLM router (IMBA-1): если fuzzy/intent не нашёл команду, LLM выбирает ближайшую из реестра по JSON-схеме. Алисе/Сири такое не снилось.
- Hot-swap локального и облачного LLM: "переключись на локальный" / "переключись на облако". Выбор персистентен (Settings → AI Backends).
- Reset/repeat контекст: "сбрось контекст" / "повтори последнее".
- Memory injection: LLM автоматически получает релевантные факты из долгосрочной памяти в system prompt.
Долгосрочная память
- "Запомни что я люблю чай улун" → JSON-стор в
<APP_CONFIG_DIR>/long_term_memory.json. - "Что ты помнишь про чай" / "забудь про X" / "что ты знаешь обо мне".
- LLM-чат получает релевантные факты через substring search.
Профили
- 5 предзаполненных: default ★, work 💼, game 🎮, sleep 🌙, driving 🚗.
- "Режим работа" / "режим игра" / "режим сон" / "режим за рулём" / "обычный режим".
- Каждый профиль может иметь allow/deny списки команд + personality для LLM.
Vision (multimodal)
- "Что на экране" / "опиши экран" / "прочитай ошибку" → скриншот через
PowerShell → base64 → Groq vision (
llama-3.2-11b-vision-preview) → голос. - Требует
GROQ_TOKEN(Ollama пока без vision в этой интеграции).
Проактивный планировщик
- "Напомни через 5 минут выключить кофеварку" → one-shot.
- "Каждые 2 часа напоминай попить воды" → interval.
- "Каждый день в 9:00 делай брифинг" → daily.
- "Отмени напоминание про воду" / "очисти расписание" / "что у меня запланировано".
- Фоновый поток (тик каждые 30 сек). Сохраняется в
<APP_CONFIG_DIR>/schedule.json.
Voice macros (VoiceAttack-style)
- "Запиши макрос работа" → начинает запись.
- Любые следующие команды (открой браузер, режим работа, ...) копятся.
- "Сохрани макрос" → персистится.
- "Запусти макрос работа" → проигрывает каждый шаг с интервалом 800мс.
- Список / удаление / отмена.
Утилиты
| Команда | Что делает |
|---|---|
| "Найди в гугле X" | DuckDuckGo Instant Answer + LLM-перессказ |
| "Википедия X" / "что такое X" | Wikipedia REST API (ru→en fallback) + LLM-перевод |
| "Сколько 1000 долларов в рублях" | CBR-XML курс + конвертация |
| "Сколько Сбер" | MOEX биржа, 22 тикера в карте |
| "Переведи буфер" | Clipboard → LLM → обратно в clipboard |
| "Напоминай мне пить воду" | Habit nudge: каждые 2 часа |
| "Напоминай размяться" | Каждые 50 минут |
| "Напоминай отдыхать глазам" | 20-20-20 rule, каждые 20 минут |
| "Запусти помодоро" | 25/5 циклы с голосовыми напоминаниями |
| "Запиши настроение 7" / "как прошла неделя" | Mood log + LLM-сводка |
| "Утренний брифинг" / "настрой утренний брифинг на 9:00" | Время+профиль+задачи+память+LLM-мотивашка |
| "Укажи проект C:..." / "что делает функция X" | Codebase Q&A — LLM по локальной кодобазе |
| "Открытые пиары" / "разбери последний PR" | gh CLI + LLM-ревью |
| "Пауза" / "следующий трек" | Windows media keys (Spotify / YouTube / Foobar) |
| "Диагностика" / "доложи о себе" | Состояние всех бэкендов одной строкой |
Всего паков: 59 (resources/commands/*/command.toml).
Полный список: GUI → /commands (с поиском и фильтрами).
Быстрый старт
# 1. Клонировать
git clone https://github.com/DmitryBykov-ISPO/J.A.R.V.I.S-rust.git C:\Jarvis\rust
cd C:\Jarvis\rust
# 2. Поставить нейронный TTS (один раз, ~90 МБ)
pwsh tools/piper/install.ps1
# 3a. Облачный LLM — получи токен на https://console.groq.com/keys
echo "GROQ_TOKEN=gsk_..." > dev.env
# 3b. ИЛИ локальный LLM
# Скачай https://ollama.com/download, выполни:
# ollama pull qwen2.5:3b
# (Jarvis сам подхватит, если GROQ_TOKEN отсутствует)
# 4. Сборка
cd frontend && npm install && npm run build && cd ..
cargo build --release -p jarvis-app -p jarvis-gui
# 5. Запуск
target\release\jarvis-app.exe # фоновый демон с микрофоном
target\release\jarvis-gui.exe # GUI для управления
Подробнее: см. секцию "Сборка" ниже.
Конфигурация (env vars)
Все JARVIS_* / GROQ_* / OLLAMA_* переменные документированы в
crates/jarvis-core/src/runtime_config.rs. Ключевые:
| Переменная | По умолчанию | Назначение |
|---|---|---|
GROQ_TOKEN |
— | Токен для облачного LLM (без него — Ollama / выкл) |
GROQ_MODEL |
llama-3.3-70b-versatile |
Groq-модель |
GROQ_VISION_MODEL |
llama-3.2-11b-vision-preview |
Vision-модель для "что на экране" |
OLLAMA_BASE_URL |
http://localhost:11434/v1 |
Адрес Ollama |
OLLAMA_MODEL |
qwen2.5:3b |
Локальная модель (любая через ollama pull) |
JARVIS_LLM |
auto | groq / ollama / пусто (auto-detect) |
JARVIS_TTS |
auto | sapi / piper / silero / пусто (auto) |
JARVIS_TTS_PIPER_BIN |
автопоиск | Путь к piper.exe |
JARVIS_TTS_PIPER_VOICE |
автопоиск | Путь к голосу .onnx |
JARVIS_LLM_ROUTER |
1 |
Включить agentic router |
JARVIS_LLM_ROUTER_THRESHOLD |
0.55 |
Confidence threshold |
JARVIS_LLM_TTS |
true |
Озвучивать LLM-ответ |
Файл dev.env подхватывается автоматически (jarvis-app ищет от exe вверх по 5
уровням), так что переменные можно держать в одном месте.
Персистентные настройки (voice, microphone, vosk_model, llm_backend,
tts_backend, ...) хранятся в <APP_CONFIG_DIR>/settings.json и правятся
через GUI Settings или Lua jarvis.settings.set(key, val).
Сборка
Требования:
- Rust 1.93+ (stable MSVC).
- Node 20+ и npm для фронтенда.
- MSVC build tools (
vcvars64.bat). VS 2022 / 2026 / 2026 — любая. - Python 3 (только для
post_build.py, опционально). - Vosk/Porcupine/PvRecorder DLL'и в
lib/windows/amd64/(уже в репо).
Команды:
# Один раз: загрузить MSVC окружение
$vc = "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
cmd /c "`"$vc`" >NUL && set" | % {
if ($_ -match '^([^=]+)=(.*)$') {
[Environment]::SetEnvironmentVariable($matches[1], $matches[2], 'Process')
}
}
# Собрать фронтенд
cd frontend
npm install
npm run build
cd ..
# Workspace
cargo build --release -p jarvis-app -p jarvis-gui
Холодная сборка ~10 мин (ONNX runtime, aws-lc-rs, tauri). Инкремент ~30 сек.
jarvis-gui/build.rs сам зовёт npm run build если фронтенд устарел, так что
для итераций по UI достаточно cargo build -p jarvis-gui.
Тесты
cargo test -p jarvis-core --lib # все unit-тесты
cargo test -p jarvis-core --lib scheduler:: # фильтр по модулю
Текущее покрытие: 55 unit-тестов, см. таблицу в ARCHITECTURE.md.
Структура
crates/
jarvis-core library — STT, wake-word, TTS, LLM, intent, commands, IPC,
Lua sandbox, scheduler, memory, profiles, macros, vision
jarvis-app daemon бинарь — микрофон, listening loop, dispatcher, tray, IPC
jarvis-gui Tauri + Svelte GUI — settings, commands list, footer chips
jarvis-cli debug CLI (classify/execute/list)
frontend/ Vite + Svelte UI для jarvis-gui
resources/
commands/ 59 voice-command packs (Lua скрипты + TOML)
models/ ONNX (intent classifier, GLiNER) — Git LFS
vosk/ Vosk модели (small-ru, small-en, ...)
voices/ пресеты звуков реакций (greet/ok/error/...)
tools/
piper/ Piper TTS бинарник + голоса (.onnx) — устанавливаются install.ps1
silero/ Python helper для Silero TTS (опционально)
ARCHITECTURE.md — для контрибьюторов: data flow, рецепты, тесты.
Голосовой workflow
Поднимаешь jarvis-app.exe, говоришь:
"Джарвис" ─ wake-word
↓ играет "reply" звук
"Какая сегодня погода?"
↓ STT (Vosk) распознаёт
↓ Intent classifier (MiniLM ONNX) пробует найти команду
↓ Levenshtein fallback
↓ Agentic LLM router (если включён)
↓ LLM fallback (chat)
↓ Озвучивает ответ
"Какая температура завтра?"
↓ 30-сек grace window — без повторного wake-word
↓ LLM помнит контекст разговора
После каждой команды есть 30-секундное окно для follow-up без повторного
"Джарвис" (CONVERSATION_GRACE_MS).
Это форк
Оригинальный автор — Abraham Tugalov (Priler).
Апстрим: https://github.com/Priler/jarvis.
Лицензия сохранена: CC BY-NC-SA 4.0 (см. LICENSE.txt).
В Cargo.toml декларирован license = "GPL-3.0-only" — это несоответствие
унаследовано от апстрима и не правилось, чтобы не расходиться с upstream-конфигом.
Приоритет имеет LICENSE.txt.
Python-версия
Старая версия ассистента была на Python. Последний коммит с Python-кодом в апстриме — 943efbf. Параллельный Python-форк живёт в отдельном репо (J.A.R.V.I.S-py) — там же, но 17 новых паков из Rust-форка пока туда не зеркалированы (TODO).
Поддерживаемость
runtime_config.rs— все env vars в одном файле с doc-комментами.tts/— trait-based, добавить новый бэкенд = реализоватьTtsBackend.llm/mod.rs— shared global client, hot-swap черезswap_to(LlmBackend).jarvis.cmd.{ok/error/not_found}— boilerplate-killer для Lua-паков.- 55 unit-тестов прикрывают всё, что не требует мика/динамика/сети.
- ARCHITECTURE.md содержит рецепты "как добавить X".
Что в roadmap (что ещё хочется)
- faster-whisper STT рядом с Vosk для длинных LLM-фраз.
- Реальные Win32 макросы (keyboard + mouse hooks), не только voice replay.
- Spotify Web API через OAuth — "что играет", "сохрани в плейлист".
- Outlook COM — голосовая почта / календарь.
- GUI /macros + /scheduler страницы — управление без голоса.
- Python parity для 17 новых паков.
См. ~/.claude/projects/C--Jarvis/memory/project_jarvis_roadmap.md (если ты
— Claude помогаешь автору) или открой issue.
Лицензия
CC BY-NC-SA 4.0 — Creative Commons Attribution-NonCommercial-ShareAlike.
Полный текст: LICENSE.txt. Атрибуция Abraham Tugalov сохранена.