Этап 8: настраиваемые команды
- commands.yaml с рабочими примерами: медиа, громкость, поиск, папки, блокировка; перечитывается автоматически, ошибки не ломают остальные команды - Действия run / open / http / keys; вывод и ответы возвращаются модели - Вызов через модель (tool calling) и мгновенно по точным фразам, в том числе с параметрами - Подтверждение «да/нет» для опасных команд, после голосового вопроса микрофон включается сам - Безопасность: запуск без оболочки, защита аргументов cmd/PowerShell/.bat, переменные окружения раскрываются только в шаблоне - Вкладка «Команды» в настройках - Тесты разбора, действий, фраз и полных сценариев через Assistant Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
84d8aaa848
commit
04029f3750
@@ -7,6 +7,8 @@
|
||||
в течение пары минут после ответа видят предыдущие вопросы
|
||||
- Журнал запросов и ответов со стримингом
|
||||
- Долговременная память: «запомни…», «забудь…», а устойчивые факты о вас модель сохраняет сама
|
||||
- Настраиваемые команды: запуск программ и скриптов, ссылки и папки, HTTP-запросы (Home Assistant),
|
||||
клавиши и медиа — через модель или мгновенно по точной фразе, опасные — с подтверждением
|
||||
- Озвучка ответов голосом Silero: фразы проговариваются по мере генерации, блоки кода пропускаются
|
||||
- Голосовой ввод по глобальной горячей клавише: faster-whisper на видеокарте, конец фразы по паузе (Silero VAD)
|
||||
- Слово активации («ассистент») через Vosk — без нажатия клавиш
|
||||
@@ -50,6 +52,43 @@ Silero читает только кириллицу: числа переводя
|
||||
(например, `qwen2.5:7b` в Ollama или большинство моделей OpenRouter). С другими моделями
|
||||
ассистент просто отвечает без памяти и один раз предупреждает об этом.
|
||||
|
||||
### Команды
|
||||
|
||||
Команды описываются в `commands.yaml` рядом с `config.yaml`: при первом запуске он создаётся
|
||||
с рабочими примерами (пауза, громкость, поиск, папка «Загрузки», блокировка) и
|
||||
закомментированными шаблонами для скриптов, Home Assistant и выключения компьютера.
|
||||
После сохранения файл перечитывается сам; список команд и ошибки видны в настройках.
|
||||
|
||||
```yaml
|
||||
commands:
|
||||
- name: room_light
|
||||
description: Включить или выключить свет в комнате
|
||||
phrases: ["свет {state}"] # мгновенно, без модели
|
||||
parameters:
|
||||
state: {type: string, enum: ["on", "off"]}
|
||||
confirm: false # true — спросить «да/нет» перед выполнением
|
||||
action:
|
||||
type: http
|
||||
method: POST
|
||||
url: http://homeassistant.local:8123/api/services/light/turn_{state}
|
||||
headers: {Authorization: "Bearer ${HA_TOKEN}"}
|
||||
json: {entity_id: light.room}
|
||||
```
|
||||
|
||||
Как команда выполняется:
|
||||
|
||||
- **Модель** выбирает команду по описанию и подставляет параметры («сделай потише на десять
|
||||
шагов»). Результат (вывод скрипта, ответ сервера) возвращается модели, и она отвечает.
|
||||
- **Точная фраза** выполняется сразу, без модели и даже без интернета, если запрос совпал
|
||||
с ней целиком (регистр, «ё» и знаки препинания не важны).
|
||||
- **Подтверждение** (`confirm: true`): ассистент спрашивает «Выполнить …?» и ждёт «да» или «нет»;
|
||||
если вопрос был голосовым, микрофон включается сам.
|
||||
|
||||
Безопасность: модель может только выбрать команду из файла и передать параметры, которые
|
||||
проверяются по описанию. Программы запускаются без командной оболочки; для `cmd`, PowerShell
|
||||
и `.bat`/`.cmd` значения со спецсимволами отклоняются. `${ПЕРЕМЕННЫЕ}` подставляются только
|
||||
из шаблона, поэтому секреты не попадают ни в модель, ни в параметры.
|
||||
|
||||
### Голосовой ввод
|
||||
|
||||
Нажмите `Win+Alt+Space` (настраивается в `voice.hotkey`), дождитесь короткого сигнала и говорите —
|
||||
|
||||
Reference in New Issue
Block a user