Как построить своего real-time-ассистента для важных бесед
Artorix это ассистент, который слушает встречу вместе со мной. Перед разговором я загружаю план, а во время разговора Artorix показывает, идём ли мы по плану, что ещё не спросили и что спросить дальше. Управляю им с внешнего MIDI-контроллера: пэдами тихо размечаю разговор, а ручками и фейдерами меняю параметры обработки прямо во время встречи.
- Статус
- Исследование, мой рабочий инструмент
- Доступ
- Исходники по запросу, пилот по заявке. Когда Artorix выйдет в работу для других, здесь появится ссылка
- Гайд
- 23 сентября 2026
- Стек
- Python, FastAPI, Soniox, Claude
- Чтение
- 15 минут

Что это за гайд
Здесь я рассказываю, как устроен Artorix, что показали замеры на реальных встречах и как собрать такой ассистент самому. Гайд описывает подход и выводы, а не исходный код; исходниками поделюсь лично, если вам это правда интересно.
Для меня Artorix не продукт, а рабочий инструмент: я веду с ним интервью и переговоры. Он помнит разговор, а людей помнит CoFlow, моя личная система. Artorix и CoFlow это текущие версии инструментов, которые я строил и перестраивал много раз.
Исследование Когда Artorix выйдет в работу для других, здесь появится ссылка.
- ×17разброс цены часа между крайними положениями фейдера «Темп»
- $0,71час встречи в обычном режиме
- 16пэдов: четыре слоя тихой разметки
- 2дорожки звука: микрофон это я, выход компьютера это собеседник
Идея
Задач в разговоре больше, чем внимания.
Когда ведёшь интервью или переговоры, приходится одновременно слушать, думать над следующим вопросом, держать в голове план и читать состояние собеседника, а потом ещё всё это разбирать. Люди справляются с этим плохо не от недостатка умения: задач больше, чем внимания.
Ставка Artorix: разговор это данные, и часть работы с ними можно снять с человека в тот момент, когда это ещё может что-то изменить. Не «расшифровка потом», а подсказка внутри встречи. Отсюда три правила, которые определили всё устройство:
- реальное время важнее точности;
- тихая разметка важнее удобной: во время разговора печатать нельзя, собеседник это видит, поэтому кнопки вместо клавиатуры;
- любая функция, которая отвлекает внимание от собеседника, вредна, даже если она полезна.
Где применяю: переговоры, custdev-интервью, запись подкастов. План вставляется свободным текстом, модель сама делит его на разделы и вопросы. Требовать заполнить форму перед встречей значит наверняка добиться того, что системой никто не будет пользоваться.

Как это устроено
Две дорожки звука, расшифровка в реальном времени, анализ тиками.
Звук приходит двумя дорожками и расшифровывается в облаке в реальном времени. Модель анализирует разговор «тиками»: каждые N секунд или когда я нажимаю пэд.
Схему можно прокрутить вбок.
| Часть | Что делает | Почему так |
|---|---|---|
| Захват звука | Микрофон это ведущий; захват выхода компьютера (WASAPI loopback) это собеседник на звонке. 16 кГц, моно, блоки по 100 мс | Собеседник приходит на устройство вывода, а не в микрофон |
| Кто говорит | Карта энергии в кадрах по 20 мс отвечает на вопрос «кто говорил в этом интервале» арифметикой, без модели | Физика точно знает роль: микрофон это я |
| Расшифровка | Soniox, в реальном времени по WebSocket; записи через отдельный асинхронный проход | Русский и английский вперемешку в одном разговоре; потоковый режим падает на длинных файлах |
| Тик анализа | Модель получает план, «нить» разговора и последний кусок диалога. Возвращает: идём по плану или уходим в сторону, закрытые вопросы, от одного до трёх следующих вопросов, ключевые цитаты, баланс говорения | Живой анализ на дешёвой модели, итоговый разбор на дорогой, один или два раза за встречу |
| Одни часы | Каждый слой (расшифровка, метки, анализы) пишет время от начала звука | Иначе метка с пэда не попадёт на нужную строку |
| Экран | План с чек-листом, потом расшифровка с метками, потом анализ. Всё это функция потока событий | Поток сохраняется, поэтому встречу можно пересмотреть как «мини-фильм» |
| Мост в CoFlow | В начале находит человека и открывает сессию, в конце записывает итог. Ноль обращений во время встречи | Недоступная личная база никогда не должна стоить встречи |

Стек: Python и FastAPI, всё локально на ноутбуке с Windows. Внешние сервисы только два: Soniox (расшифровка) и Anthropic (анализ). Есть и офлайн-режим: загружаешь запись и план и получаешь таймлайн, где участки по плану зелёные, а отклонения красные.
Внешний MIDI-контроллер
Кнопки вместо клавиатуры: разметка, которую собеседник не видит.
Управление живёт на обычной музыкальной пэд-консоли HXW / Avatar EMP16: 16 пэдов, чувствительных к силе удара, в сетке 4×4, 4 бесконечные ручки, 4 фейдера, OLED-экран, USB или Bluetooth (характеристики). Можно ударить по пэду или сдвинуть фейдер, не отводя взгляда от собеседника и без шума клавиатуры: ради этого он и нужен.
Схему можно прокрутить вбок.
Пэды: четыре слоя разметки, по ряду на слой. Что я почувствовал; как вёл себя собеседник; что, по-моему, почувствовал он; что происходит со встречей. Каждое нажатие ложится меткой на таймлайн ровно в этот момент. Пэд «Анализ сейчас» запускает внеочередной анализ.
Ручки и фейдеры: параметры обработки. Ручками выбираю дискретное: модель, режим пресета, лимит расходов. Фейдеры плавно меняют четыре значения, о них в следующем разделе. Анализатор читает их на каждом тике, поэтому поворот действует со следующего анализа, а не со следующей встречи.
Два практических момента
- Привязка обучением. Каждый экземпляр присылает свои MIDI-номера, и заранее их не узнать. Выбираешь роль на экране, крутишь нужную ручку, и привязка сохраняется. Пэды калибруются так же, первым нажатием.
- Контроллер работает в отдельном процессе. Если он отвалится или упадёт, пропадут метки, а не запись встречи (об этом в разделе «На что обратить внимание»). Система работает и без контроллера: те же пэды и ручки есть на экране, но тогда приходится смотреть в монитор.
Параметры обработки и что даёт их изменение
Стоимость встречи задаёт частота анализа, а не размер окна.
Главная находка: стоимость встречи определяет то, как часто модель анализирует, а не размер окна диалога. Это против интуиции: кажется, что дорого «отправлять много текста». Но текст дешёвый, а каждый лишний вызов модели тянет за собой системный промпт, ответ и накладные расходы.
Что я меняю на лету
Порядок влияния подтвердили замеры на реальных встречах. Стоимость часа дана для ориентира: важны не сами числа, а разброс между крайними положениями ручки.
| Управление | Что задаёт | Значения | Цена часа, $ | Разброс |
|---|---|---|---|---|
| F1 · Темп | пауза между анализами | 10 / 25 / 90 / 180 с | 3,84 / 1,54 / 0,43 / 0,22 | ×17 |
| Ручка · Модель | какая модель анализирует | Haiku / Sonnet / Opus | 1,54 / 3,09 / 7,71 | ×5 |
| F2 · Глубина | лимит ответа модели | 256 / 1 024 / 2 048 токенов | 1,08 / 1,54 / 2,17 | ×2 |
| F4 · Память | сколько «нити» разговора идёт в промпт | 0 / 8 000 / 16 000 знаков | 1,06 / 1,54 / 2,03 | ×2 |
| F3 · Окно | сколько свежего диалога на один анализ | 800 / 1 500 / 12 000 знаков | 1,47 / 1,54 / 2,70 | ×1,8 |
На панели управление стоит в этом порядке, по силе влияния. В разговоре это работает так: начинается важный кусок, поднимаю темп; начинается светская болтовня, опускаю. Текстовое поле для этого бесполезно, а фейдер это тот же жест, что и метка пэдом. Когда двигаешь управление, прогноз на экране обновляется сразу: цену решения видно до того, как его примешь.

Режимы-пресеты
Пресет выставляет всё управление сразу, дальше его можно двигать руками.
| Режим | Модель | Пауза, с | Час встречи, $ | 14 часов встреч в месяц, $ |
|---|---|---|---|---|
| Эконом | Haiku | 90 | 0,23 | 3 |
| Обычный (по умолчанию) | Haiku | 45 | 0,71 | 10 |
| Плотный | Haiku | 15 | 2,84 | 40 |
| Суфлёр | Sonnet | 15 | 5,68 | 80 |
| Максимум | Sonnet | 10 | 15,72 | 220 |
Три неочевидные вещи, которые показали замеры
- Лимит ответа это главный кран. Модель пишет «сколько разрешили», а не «сколько нужно»: на длинной встрече большинство анализов упираются в лимит, и ответ становится самой дорогой строкой счёта. Снижайте лимит, пока анализы не станут беднее, и проверяйте это, прогоняя одну и ту же запись на двух настройках.
- Память делает каждый следующий анализ дороже. Факты и открытые вопросы накапливаются, и к концу встречи один тик стоит в несколько раз больше, чем в начале. Подрезайте её окном последних фактов, а не выключателем: именно память делает анализ умнее.
- Русский текст стоит примерно втрое дороже английского: он хуже делится на токены. Поэтому прикидки на салфетке всегда выходят оптимистичнее счёта.
Аудиобуферы и окна
Числа, которые пришлось подбирать на живых встречах.
Управление здесь не нужно, но эти числа пришлось подбирать на живых встречах.
| Параметр | Значение | Почему |
|---|---|---|
| Аудиоблок | 100 мс при 16 кГц | Микрофон задаёт такт. Дорожка собеседника в тишине замолкает, и её паузы заполняются нулями в кольцевом буфере |
| Кадр энергии | 20 мс | Достаточно, чтобы арифметикой понять, кто говорил |
| Окно свежести второй дорожки | 90 с | Если собеседника не было слышно рядом со строкой, физика не судит о роли |
| Голосование о роли | раз за встречу | Роль «я или собеседник» не пересматривается на лету, иначе строки рвутся |
| Лимит сессии | 90 минут, потом «продолжить?» | Забытая сессия пишет и расшифровывает всё, что говорят вокруг |
Правило замеров: не судите о стоимости по прогонам короче 15 минут. На коротком тесте заметная часть счёта уходит на запись кеша промпта, который не успевает окупиться, и стоимость часа выходит вдвое выше.
На что обратить внимание
Отказ одной части не должен стоить встречи.
Главное правило: отказ одной части не должен стоить встречи. Контроллер, вторая дорожка, анализ, связь с базой: отказать может любое из этого, но запись должна дойти до конца.
- Тихий отказ хуже громкого. Худшие поломки выглядят на экране как нормальная работа. Система должна отличать «подождите» (сервис перегружен) от «идите чините» (кончился баланс, неверный ключ) и говорить об этом громко.
- Контроллер работает в отдельном процессе, который умирает вместе с сервером. MIDI-драйверы на Windows могут уронить весь процесс так, что это не перехватить. И MIDI-вход может держать только один процесс: забытый старый слушатель заберёт контроллер себе. Если устройство «не видно», сначала проверьте кабель.
- Собеседник приходит на выход, а не в микрофон. Захватывайте выход любого устройства, включая Bluetooth-гарнитуры, и держите две дорожки раздельно.
- Дорожка может умереть посреди встречи. Собеседник переходит из звонка в комнату, и вся речь начинает приписываться вам. Нет свежего звука на дорожке, нет и суждения о роли.
- Не смешивайте две разметки спикеров по словам. Сервис расшифровки режет строки, а физика дорожки один раз решает, какой голос ваш. Подстановка по токенам рвёт монологи в клочья.
- Ответ модели это данные, а не гарантия. Иногда она возвращает список строкой. Приводите всё внешнее к ожидаемым типам на границе, иначе ассистент замолчит до конца встречи.
- Давайте модели память, а не хвост расшифровки. Без накопленных фактов и вопросов она переспрашивает то, что уже сказано. Память плюс только новый кусок диалога: и дешевле, и умнее.
- Ничего периодического рядом с записью. Опрос устройств по таймеру это дорога к падению. Проверяйте только по поводу, с растущей паузой.
- Стоимость это часть интерфейса. Счётчик трат и прогноз всегда на экране. Если какая-то строка расходов не учтена, «дорого или нет» решается по неверному числу.
- Показывайте, что уходит в модель. Диагностическая панель («этот тик, на этих словах, дал такой ответ и стоил столько») позволяет заметить поломку во время встречи, а не после.
- Экран это функция потока событий. Тогда повтор встречи получается даром и никогда не расходится с тем, что вы видели вживую.
- Не выдумывайте числа и людей. Если база недоступна, встреча пишется под временным именем и связывается потом. Неоднозначного участника выбирает человек, а не система.
Ожидания и реальность
Где ломается качество и откуда берётся стоимость.
Самый большой разрыв между ожиданием и реальностью там, где ломается качество и откуда берётся стоимость.
| Что | Ожидал | Оказалось |
|---|---|---|
| Помощь в моменте | Суфлёр, который нужен каждому переговорщику | Мне он помогает держаться плана и не терять открытые вопросы. Но некоторым руководителям нужна подготовка до встречи и разбор после, а не подсказки во время. Реальное время подходит не всем |
| Стоимость | Дорого из-за распознавания речи | Расшифровка это малая доля счёта, остальное языковая модель. Дешёвая модель для живого анализа снижает счёт в несколько раз, но растущая память потом тянет его обратно вверх. С управлением стоимость стала управляемой величиной |
| Своё железо | Локальные модели сэкономят деньги | При личных объёмах это никогда не окупается, и железо не покупает лучшую разметку спикеров |
| Качество расшифровки | Сломается распознавание | Распознавание дало правильную разметку, а сломала её наша собственная арифметика поверх |
| Управление обработкой | Дорого отправлять большое окно диалога | Окно это самый слабый рычаг и самый вредный для экономии: урежешь его, потеряешь связность. Главное это темп |
| Метки пэдами | Метка сразу влияет на анализ | Метки точно ложатся на таймлайн и видны при повторе. Донести метку до модели, и до точной фразы внутри длинной строки, это отдельная задача |
| Экран во время встречи | Быстрый взгляд | Тяжелее, чем хотелось бы: любое окно, которое закрывает расшифровку, мешает ровно тогда, когда нужно посмотреть |
| Профиль собеседника | Система помнит человека | Artorix помнит разговор, а не человека. Человек живёт в CoFlow: бриф приходит оттуда, и итог возвращается туда |
Как собрать самому
Семь шагов: от разбора записи до связи с памятью о людях.
Минимальный набор: ноутбук с Windows, Python 3.11 или новее, API-ключи сервиса распознавания речи и языковой модели, любой MIDI-контроллер с пэдами и фейдерами (сначала можно без него).
- Начните офлайн. Запись звонка и план, потом расшифровка, потом разбор «где мы шли по плану, а где ушли в сторону». Так видно, нужна ли вам помощь вообще, прежде чем связываться с реальным временем.
- Захватывайте две дорожки раздельно. Микрофон это вы, выход компьютера это собеседник. Не сводите в моно: иначе заставите модель угадывать то, что физически известно наверняка.
- Добавьте живой анализ с памятью. На каждом тике: план, накопленные факты и только новый кусок диалога; ответ строго по схеме. Проверяйте типы ответа на границе: модель иногда возвращает не то.
- Держите параметры в состоянии сессии, а не в файле настроек. Темп, глубина, окно, память и модель читаются на каждом тике. Сразу добавьте панель стоимости: сколько потрачено, цена тика, прогноз на час. Без неё ручки крутятся вслепую.
- Подключите MIDI-контроллер в отдельном процессе. Пэды это метки, фейдеры это параметры, привязка обучением. Процесс контроллера должен умирать вместе с сервером.
- Записывайте поток событий, а не только текст. Тогда любую встречу можно пересмотреть ровно так, как её видел ведущий, и прогнать одну и ту же запись на двух настройках управления.
- Свяжите с памятью о людях, но некритично. У меня это CoFlow: обращения только в начале и в конце, и если база недоступна, встреча всё равно идёт и пишется локально.
И главное: записывайте других людей только с их согласия.
Если вам это правда интересно, я могу поделиться исходниками: дам версию, с которой вы начнёте собирать своё. Напишите, для каких встреч хотите такой ассистент.
Об авторе и что я делаю с этими инструментами
Artorix для меня рабочий инструмент, а не продукт.
Я Pavel Mihutski, RND.energy, Валенсия. 20 лет строю и перестраиваю бизнесы, а сейчас исследую, как люди принимают решения. Анализирую коммуникацию и строю ERP- и CRM-системы с 2010 года. Artorix и CoFlow это текущие версии инструментов, которые я строил и перестраивал много раз. 9 отраслей, больше 130 проектов.
Для меня Artorix не продукт, а рабочий инструмент. Я использую его на интервью и переговорах внутри Founder Sprint: десять рабочих дней с фаундером вокруг одного главного вопроса. Где теряются деньги, почему всё держится на нём, что сломается, когда компания вырастет. По реальным данным компании, включая разговоры с командой и записи звонков, я собираю честную картину того, что происходит на самом деле, и куда идти дальше. На выходе обоснованный ответ, план действий с ответственными и способ проверить результат.
Если вам нужен такой ассистент, но строить его самому не хочется, настроить его под ваши встречи можно отдельной платной работой.
Как устроен Founder Sprint. Первый разговор на 20 минут: через rnd.energy, LinkedIn или Telegram.
Условия
Гайд описывает подход, а не код.
© Pavel Mihutski · RND.energy. Гайд для личного использования: он описывает подход и выводы, а не исходный код. Перепечатка, передача третьим лицам и коммерческое использование только с письменного согласия автора. Исходники не лежат в открытом доступе: версией я делюсь лично, по запросу.
Хотите исходники или такой ассистент для своих встреч?
Если хотите собрать своё, поделюсь версией исходников. Если хотите, чтобы я настроил ассистент под ваши встречи, это отдельная работа. Напишите, что вам ближе и для каких встреч. Отвечу лично.
Сохранено. Сообщение у меня.
Отвечу лично, обычно с парой вопросов о том, как вы видите своё участие. Условия обсуждаем в разговоре, а не в форме.
Номер обращения: