Концепция для агента, который будет собирать такой же голос с нуля: из чего состоит, как части разговаривают друг с другом и какие грабли уже пройдены.
Пользователь говорит с одной личностью. Внутри два исполнителя: быстрый голос, который отвечает за доли секунды, и медленный разум, который разбирается и действует. Голос никогда не говорит «передам Джарвису» или «другая модель»: ответ разума приходит к нему как его собственная мысль.
Слышит речь, сам ловит конец фразы, говорит голосом, отвечает на простое по срезу состояния. Ничего не решает и ничего не меняет.
Постоянная сессия Claude Code в tmux со своим MCP. Получает просьбу обычной репликой, думает, вызывает инструменты, меняет мир.
Пример одной просьбы от начала до конца. Это сердце всей конструкции.
think_deeper(request). Сервер сразу отвечает ему «ещё не выполнено, жду подтверждения», чтобы живая сессия не зависла, и уводит работу в фон.say: короткая фраза попадает в очередь сразу, посреди хода. Потом работает как обычно.Принял, запускаю.say и ленту сессии. Каждые 6–9 с просит Gemini сказать новую короткую фразу, чтобы не было тишины.Ещё пара секунд.interrupted сбрасывает очередь воспроизведения мгновенно.say с фразой из 2–3 слов.| Инструмент | Что делает | Кто исполняет |
|---|---|---|
get_status | Сессии, задачи или лимиты недели | сервер, до 8 с |
session_status | Подробно про одну сессию | сервер, до 8 с |
think_deeper | Разобраться и сделать: задача, запуск работы, ответ сессии, решение | Claude Code, до 170 с |
end_session | Попрощаться и закрыть разговор («пока», «отбой») | сервер |
Быстрые инструменты только читают. Всё, что меняет мир, идёт через Claude Code и только после «да».
| Что | Время |
|---|---|
| Первый звук после конца фразы, VAD 600 мс (как в приложении очков) | 1,63 с |
| То же, VAD 1000 мс и низкая чувствительность (выбрано) | 2,9–3,2 с |
| Полный цикл: просьба, «делаю?», «да», ответ Claude Code озвучен | 6,3 с |
| Старый путь через Piper, только озвучка | 5–11 с |
При 600 мс длинные фразы обрываются на паузе. При 1000 мс фраза с паузой 0,8 с посередине дошла целиком, поэтому выбран медленный, но надёжный вариант.
Gemini не получает права действовать. Он слышит, говорит и отвечает по тому, что уже знает. Всё остальное делает Claude Code, у которого вся система, память и инструменты.
Прототип с заглушкой вместо AGENT-A лежит в папке projects/lab/live-voice/: server.py, jarvis_test/stub.py (вымышленные сессии и задачи), brain.py (настоящий Claude Code смотрит на заглушку). Боевую сессию Джарвиса на нём не задеть.
projects/mostik/server/assistant/gemlive.py · web/src/panels/assistant/livetalk.ts · server/jarvis/ (runtime, say, role, mcp_server)projects/mostik/docs/VOICE-GEMINI-LIVE.md