AAYMA
RU
Войти

Хаттама

Self-hosted ИИ-секретарь: из аудиозаписи совещания на русском, казахском или смешанном языке делает протокол с поручениями, ответственными, сроками…

Доведённый продукт
Команда «KaskyrAlmaty» 23💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: KaskyrAlmaty
Кейс HackAlem.ai: Инновации — Самрук-Казына
Стадия: Доведённый продукт

Задача кейса: «Хаттама»: протокол и поручения по аудиозаписи совещания (каз./рус./смешанная речь)

Суть

Self-hosted ИИ-секретарь: из аудиозаписи совещания на русском, казахском или смешанном языке делает протокол с поручениями, ответственными, сроками и ссылками на реплики, с историей и выгрузкой в DOCX.

Как устроено

MP3 или запись из браузера (микрофон плюс звук вкладки Teams/Zoom/Meet) распознаётся faster-whisper large-v3 с определением языка. Казахские фрагменты перераспознаются SeamlessM4T-v2, голоса разделяются ECAPA, имена берутся из обращений в речи. ИИ-агент на локальной Qwen в vLLM через PydanticAI извлекает поручения. Код проверяет ссылки на реплики и имена ответственных и при ошибке возвращает агенту на исправление. Сроки вроде «до пятницы» переводятся в даты со статусами. Всё работает в Docker Compose на одном GPU, аудио после обработки удаляется. Для машин без GPU есть replay-режим.

Ключевые решения

  • faster-whisper large-v3
  • SeamlessM4T-v2
  • ECAPA speaker diarization
  • PydanticAI agent with validation retry
  • vLLM
  • relative date resolution
  • WER evaluation

Метрики

WER казахский 11% (у одного Whisper ~45%); смешанная речь WER 36%, поручения 3/4; эталоны организаторов 10/10 и 6/6; спикеры названы 4/5 и 5/5; 3,5–4,5 мин аудио обрабатываются за 32–65 с

Особенности

Гибридный ASR: Whisper плюс отдельная SeamlessM4T-v2 для казахских окон снижает WER с ~45% до 11%. LLM-агент проверяется кодом: неверная ссылка на реплику или имя не из списка участников отправляется на исправление. Контур полностью закрытый, адрес LLM вне частной сети отклоняется. Все замеры подкреплены журналами прогонов на реальном GPU.

Стек

Python · Docker Compose · vLLM · PydanticAI · uv · HTML · CSS · JavaScript · NVIDIA Brev RTX PRO 6000

Модели

Whisper large-v3 (faster-whisper) · SeamlessM4T-v2 · Qwen (vLLM) · ECAPA


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-d7cbffb9-kaskyralmaty.

README

README.md

Хаттама: ИИ-секретарь совещаний на вашем сервере

Примерно через минуту после короткого совещания Хаттама выдаёт протокол: какие поручения прозвучали, кто за них отвечает и к какому сроку. У каждого поручения есть ссылка на фразу, из которой оно взято. Хаттама понимает русский, казахский и смешанную речь и работает целиком на сервере заказчика: запись и текст не уходят ни в один внешний API.

Кейс HackAlem, трек 8 «Инновации». «Хаттама» по-казахски значит «протокол».

Зачем это нужно

После совещания секретарь час переслушивает запись, чтобы выписать поручения. Часть задач теряется, «на следующей неделе» никто не превращает в дату, и через месяц трудно вспомнить, кто что обещал. В Казахстане совещания часто идут на двух языках вперемешку, а запись совещания холдинга, банка или госоргана нельзя отдавать облачному сервису. Хаттама сделана для секретариатов и аппаратов руководителей именно в таких организациях.

Что умеет сейчас

  • Распознаёт русский, казахский и смешанную речь. Казахские фрагменты перераспознаёт отдельная модель SeamlessM4T: на тестовой казахской записи ошибка 11% (у одного Whisper около 45% в предварительном замере без журнала).
  • Разделяет голоса и называет людей по тому, как к ним обращаются на совещании. Если признака нет, имя не выдумывается.
  • Извлекает поручения с помощью ИИ-агента на локальной языковой модели. Агент может перечитать нужные реплики, а код проверяет каждый его ответ и возвращает на исправление, если ссылка ведёт в несуществующую реплику или имя ответственного человека не совпадает со списком участников.
  • Переводит «до пятницы» в дату и показывает статусы «в работе», «скоро срок», «просрочено».
  • Записывает встречу прямо из браузера: микрофон и звук вкладки Teams, Zoom или Meet, после подтверждения, что участников предупредили (Chrome или Edge, режим GPU, проверено вручную).
  • Сохраняет протоколы в историю и выгружает DOCX. Пример протокола.

Всё остаётся у вас

Распознавание, разделение голосов и языковая модель работают в ваших контейнерах на одном GPU-сервере. Сервис сам отклоняет адрес языковой модели за пределами частной сети. Аудио удаляется сразу после обработки, голосовые отпечатки не сохраняются, в интерфейсе нет внешних CDN. От чистого сервера до первого протокола уходит около 20 минут (журнал).

Результаты

Все цифры получены реальным прогоном моделей на RTX PRO 6000. Ошибку распознавания и поручения на тестовых записях можно пересчитать без GPU; сверка с эталонами организаторов сделана вручную по выводу scripts/compare_reference.py.

ПроверкаРезультат
Совещания №1 и №2 организаторов против эталонных протоколоввручную сверены 10 из 10 и 6 из 6 строк эталона: ответственный и срок совпадают, лишних поручений нет (журнал)
Казахская записьошибка распознавания 11%, поручения 3 из 3
Смешанная русско-казахская речьпоручения 3 из 4, лишних нет; ошибка распознавания 36%, это главное направление доработки
Кто говорит5 голосов на каждом совещании, по имени названы 4 из 5 и 5 из 5
Скоростьсовещание длиной от 3,5 до 4,5 минуты обрабатывается за 32-65 секунд (замеры)
Чистый сервер строго по READMEполная проверка с реальными моделями прошла (холодный старт, check.sh all)

Куда это растёт: ИИ-агент аппарата руководителя

Это план: в текущем прототипе агентного слоя нет.

Хаттама сейчас proof of concept. Самое ценное в ней уже работает на своём сервере: цепочка «речь, понимание, проверяемые действия», в которой языковая модель действует как агент. На той же инфраструктуре и без внешних API её можно превратить в агента, который ведёт исполнительскую дисциплину целиком.

Следующий шаг: открытый агентный фреймворк Hermes Agent (Nous Research), подключённый к той же локальной модели в vLLM. Хаттама останется источником фактов, а агент получит инструменты и будет действовать.

  1. Контроль сроков. Каждое утро агент будет находить поручения со статусом «скоро срок» и «просрочено» и писать ответственному во внутреннюю почту или мессенджер, с цитатой из совещания. Руководитель будет получать сводку просрочек по подразделениям.
  2. Ответ исполнителя. Сотрудник сможет ответить агенту «сделано», «нужен ещё день» или «это не моё». Агент обновит статус, зафиксирует перенос и передаст спорное секретарю.
  3. Память организации. Вопрос «что решили по Павлодарскому заводу за квартал?» получит ответ со ссылками на реплики из всех протоколов.
  4. Подготовка совещания. Агент соберёт повестку из незакрытых поручений и напомнит докладчикам.
  5. СЭД. Протокол и поручения будут регистрироваться в системе документооборота как документ и резолюции.
  6. Процессы компании. Шаблоны протоколов, регламенты и правила эскалации оформляются как навыки агента, ядро переписывать не придётся.

Каждое действие агента можно будет проверить по ссылке на исходную реплику и журналу действий. Остальные шаги (точность смешанной речи, лицензия, длинные совещания) описаны в конце.

Как устроено

flowchart LR
    A[MP3 / запись из браузера] --> B[faster-whisper<br/>реплики + язык]
    B -->|казахские фрагменты| C[SeamlessM4T-v2]
    B --> D[ECAPA<br/>голоса]
    C --> E
    D --> E[ИИ-агент<br/>Qwen в vLLM + PydanticAI]
    E -->|проверка кодом,<br/>повтор при ошибке| E
    E --> F[Поручения, сроки,<br/>саммари, имена]
    F --> G[Страница результата,<br/>история, DOCX]
    subgraph Ваш сервер
    B
    C
    D
    E
    end

Соответствие кейсу

Требование кейсаЧто сделаноСтатус
Распознавание RU, KZ, смешанной речиfaster-whisper large-v3, казахские фрагменты через SeamlessM4T-v2есть; смешанную речь улучшаем
Кто говоритECAPA и имя по обращениям в речиесть
Поручения: кто, что, срокИИ-агент на локальной Qwen, ссылки на реплики, даты сроковесть
Саммари и протоколстраница результата, история, DOCXесть
Уведомление о записиподтверждение секретаря перед записьюесть
Контроль сроковстатусы «скоро срок» и «просрочено»есть; рассылки напоминаний нет, она запланирована в агентном слое
Источник звукафайл, запись микрофона и вкладки Teams/Zoom/Meet из браузераесть; бот-участник в планах
Закрытый контурвсё в своих контейнерах, без внешних API при обработкеесть; работа без интернета после установки не проверялась

Запуск: полный конвейер на GPU (основной путь)

Так Хаттама работает у заказчика: все модели запускаются на одном GPU-сервере через Docker Compose. Проверенная машина: NVIDIA Brev, инстанс AWS g7e.2xlarge с RTX PRO 6000 Blackwell 96 ГБ. Как получить такую же и во что обходится запуск, описано в docs/ENVIRONMENT.md.

  1. В консоли NVIDIA Brev создайте GPU-инстанс g7e.2xlarge (RTX PRO 6000 Blackwell, Ubuntu 22.04 с Docker и NVIDIA Container Toolkit), затем brev refresh и ssh <имя-инстанса>.
  2. Клонируйте репозиторий и выполните команды ниже из его корня. На чистой машине первый запуск со скачиванием образов и моделей занимает около 20 минут (журнал).

Нужны Linux x86_64, Docker Engine с Compose v2 и NVIDIA Container Toolkit. Для проверяемой конфигурации используется NVIDIA RTX PRO 6000 Blackwell Server 96 ГБ VRAM, драйвер 595.91.07, примерно 64 ГБ RAM. Минимальные ресурсы для других GPU не измерены. Предусмотрите около 100 ГБ свободного диска на образы, модели и кэши; точный минимум не измерен. Первое скачивание моделей требует интернета, но не аккаунтов; аудио/текст при скачивании не передаются.

В конфигурации фиксированы CUDA-библиотеки для ASR, torch 2.8.0+cu128, точные ревизии моделей и digest образа vLLM. GPU-конвейер не откатывается на воспроизведение при ошибке.

Из корня репозитория:

mkdir -p outputs
docker compose build app
docker compose up -d --wait --wait-timeout 1800 llm
docker compose run --rm app -m meeting_protocol "docs/Трек 8 Инновации/Совещание №1.mp3" --mode gpu --date 2026-09-23 --output outputs/meeting-1
docker compose run --rm app -m meeting_protocol "docs/Трек 8 Инновации/Совещание №2.mp3" --mode gpu --date 2026-09-23 --output outputs/meeting-2

Та же страница с реальными моделями:

docker compose up -d app

Адрес — http://127.0.0.1:8001. Сервис LLM доступен только во внутренней сети Compose. Приложение привязано к localhost; для удалённой машины используйте SSH-туннель. Публичный сервис с авторизацией не реализован.

Остановка:

docker compose down

Проверка GPU из свежего клона выполняет приведённые выше команды, проверяет DOCX/JSON и завершает созданные проверкой контейнеры:

bash scripts/check.sh gpu

Оба режима за один запуск (нужны uv и свободная GPU):

bash scripts/check.sh all

Свои записи, список участников и тема, кэши моделей и dev-стек команды: docs/TECHNICAL.md и docs/ENVIRONMENT.md.

Нет GPU: быстрая проверка

Если GPU нет, работоспособность проверяется за 5 минут на любом компьютере. Это воспроизведение сохранённых реальных результатов двух комплектных MP3, модели не запускаются. Нужны Git и uv 0.12.18:

uv sync --locked
uv run --locked python -m meeting_protocol "docs/Трек 8 Инновации/Совещание №1.mp3" --output outputs/meeting-1
uv run --locked python -m meeting_protocol "docs/Трек 8 Инновации/Совещание №2.mp3" --output outputs/meeting-2
bash scripts/check.sh replay

Метрики пересчитываются командами uv run --locked python scripts/evaluate.py data/eval/kz_01.json data/eval/mix_01.json и uv run --locked python scripts/compare_reference.py. Веб-страница и подробности режима: раздел в конце.

Как это устроено подробнее

  • Гибридное распознавание русского и казахского, условия замера ошибки: docs/TECHNICAL.md.
  • Разделение голосов и выбор порога: docs/TECHNICAL.md.
  • Запись в браузере и хранение протоколов: docs/TECHNICAL.md.
  • Модули кода и проверки совместимости моделей: docs/TECHNICAL.md.
  • Все журналы проверок с пояснениями: docs/TECHNICAL.md.

Данные и сторонние компоненты

  • docs/Трек 8 Инновации/: ТЗ, два MP3 и два эталонных DOCX из комплекта организаторов. Из эталонов в data/meeting-context.json перенесены только тема и имена для открытого контекста агента. Поручения и сроки из эталонов не используются как ответы моделей. Перед публичной демонстрацией реальных персональных данных требуется анонимизация; происхождение имён в комплектных записях отдельно не подтверждено.
  • data/test/kz_01.m4a и mix_01.m4a: собственные записи участника команды, вымышленные имена. *.reference.md — сценарии и ожидаемые поручения; сценарии на слух ещё не сверены и пока не являются эталоном WER. В обеих записях один голос, проверка диаризации по ним не проводится.
  • data/replay/: JSON, полученные реальными ASR и LLM на комплектных MP3, с хешем входа и сведениями о запуске. При изменении конвейера обновляются только новым реальным прогоном.
  • faster-whisper, CTranslate2 и Whisper large-v3: MIT; ревизия весов edaa852ec7e145841d8ffdb056a99866b5f0a478.
  • SeamlessM4T-v2-large: CC-BY-NC-4.0, ревизия 5f8cc790b19fc3f67a61c105133b20b34e3dcb76; коммерческое применение требует отдельного решения по лицензии.
  • Qwen3.8-27B-NVFP4: Apache-2.0, ревизия 482ca0f3832238542f8f5295dde86b5f22711d80; vLLM 0.30.0, digest закреплён в Compose.
  • PydanticAI, Pydantic, FastAPI, python-docx, PyAV, Transformers, PyTorch, NVIDIA CUDA-библиотеки и uv используются как сторонние зависимости; точные версии находятся в pyproject.toml и uv.lock. SpeechBrain 1.0.3 (Apache-2.0) и модель spkrec-ecapa-voxceleb (Apache-2.0, ревизия 0f99f2d0ebe89ac095bcc5903c4dd8f72b367286) — диаризация; torchaudio 2.8.0 — её зависимость. WER считается собственной функцией в scripts/evaluate.py (jiwer не используется).
  • Docker-образы: python:3.11.13-slim-bookworm, ghcr.io/astral-sh/uv:0.12.18, vllm/vllm-openai (все по закреплённому digest в Dockerfile и compose.yaml).
  • Разработка велась с ИИ-агентами Claude Code и Codex, с навыками агентов mattpocock/skills (закреплены в skills-lock.json) и Leonxlnx/taste-skill (дизайн интерфейса). Внешние модели не участвуют в обработке записей. Единственные сервисы полного запуска — собственные контейнеры на сервере заказчика; первоначальная установка скачивает пакеты и веса из публичных реестров.

Ограничения

  • Поручения и саммари — черновик ИИ, их проверяет секретарь. Разбиение задач может отличаться от эталонных таблиц.
  • ASR искажает имена и названия: «Батагус» вместо «Ботагоз», «Анастас» вместо «Жандос»; в первом примере искажено название области в поручении по модернизации завода. Агент нормализует по списку участников только ответственных в поручениях, транскрипт не переписывается. Таблица эталона не подставляется для скрытого исправления.
  • При неполном списке участников неустановленный личный исполнитель остаётся неуказанным.
  • Ведущий в обоих примерах остаётся без имени: к нему не обращаются по имени. Реплика, в которой звучат два голоса, приписывается одному. DER не измерялся.
  • Сроки переводятся в даты от даты встречи; срок, зависящий от события («по итогам совещания»), остаётся без даты.
  • Статус R4 («просрочено», «скоро срок» — не больше 3 дней, «в работе») считается на текущую дату при показе страницы и выгрузке DOCX. Автоматических напоминаний и рассылок нет.
  • WER и совпадение поручений измерены на двух коротких собственных записях одного диктора; совещания №1/№2 сверены вручную.
  • Нет нативного подключения к Teams/Zoom/Meet, отдельной загрузки видео и live-протоколирования. PDF нет, только DOCX.
  • Веб-сервис рассчитан на localhost в закрытом контуре: нет входа, защиты от CSRF и проверки заголовка Host (DNS rebinding), поэтому порт нельзя публиковать наружу. Лимит 100 МБ проверяется после приёма файла, тип файла заранее не проверяется.
  • Публичного адреса нет; демонстрация локально или через SSH-туннель.
  • README проверен на uv 0.12.18; более старые версии uv не гарантируются.
  • Стенограмма передаётся агенту целиком. По оценке (около 900–1300 токенов на минуту речи при контексте модели 32 тыс. токенов) совещания длиннее 20–30 минут могут не поместиться; не проверялось. Решение — обработка стенограммы частями (дорожная карта).
  • Модели скачиваются из публичных реестров при первой установке; запуск на сервере без доступа в интернет (HF_HUB_OFFLINE) не проверялся. Аудио и текст наружу не передаются в любом случае.
  • Проверенная конфигурация — RTX PRO 6000 Blackwell 96 ГБ; модель Qwen в формате NVFP4 рассчитана на Blackwell, работа на других GPU не проверялась.

Что в подходе нестандартного

  • Казахский распознаётся гибридно: Whisper определяет язык каждого 20-секундного окна, казахские окна перераспознаёт SeamlessM4T-v2. Для смешанной речи Seamless сознательно не используется: там он переводит и теряет текст.
  • Каждое поручение и каждое имя говорящего ссылается на номера реплик. Ответ агента проверяется кодом: несуществующая реплика, имя не из списка или одно имя на два голоса отправляют ответ на повтор.
  • Голос получает имя только по явному признаку в речи (обращение и ответ, представление). Голосовые отпечатки не сохраняются; без признака голос остаётся без имени.
  • Число голосов ограничено списком участников, мелкие отколовшиеся группы присоединяются к ближайшему голосу.
  • Закрытый контур проверяется в коде: адрес LLM вне частной сети отклоняется, аудио не хранится.
  • Результаты реального GPU-прогона сохранены и проверяются без GPU (data/eval/, data/replay/, связь с аудио по SHA-256).

Точность и масштаб

Эти шаги снимают измеренные ограничения прототипа.

  1. Смешанная речь (ошибка 36%). Язык сейчас определяется фрагментами по 20 секунд, а в шала-казахском язык меняется внутри фразы. Эксперимент: язык по каждой реплике и сравнение с Omnilingual ASR от Meta (Apache-2.0, есть казахский) на 10+ сверенных записях разных дикторов. Успех: ошибка на смешанной речи ≤ 25% без ухудшения казахского.
  2. Лицензия. SeamlessM4T — некоммерческая лицензия CC-BY-NC-4.0; та же проверка Omnilingual ASR через scripts/evaluate.py покажет замену для коммерческого внедрения.
  3. Каждый голос с именем. Ручное переименование голоса на странице результата; дальше — собственная видеосвязь (self-hosted Jitsi Meet) с отдельной дорожкой на участника: говорящий известен по дорожке, а не угадывается по голосу, и связь тоже остаётся внутри компании.
  4. Длинные совещания и нагрузка. Разбиение стенограммы на части для совещаний на час и больше, очередь обработки, вход по ролям, протокол на казахском языке и шаблоны протоколов организации.
  5. Измеримость. Ручная разметка комплектных совещаний для метрики разделения голосов (DER) и ошибки распознавания русского.

Запуск без GPU и Docker: воспроизведение

Это воспроизведение заранее вычисленных результатов, не проверка моделей. Новая запись в этом режиме не распознаётся. Поддерживаются только два MP3 из комплекта организаторов; переименование файла допустимо, изменение содержимого — нет.

Нужны Git, интернет для первоначальной установки зависимостей и uv 0.12.18 (установка uv). Python 3.11.13 устанавливается uv автоматически; все зависимости закреплены в uv.lock. Личные аккаунты и платные подписки не нужны.

Из корня клонированного репозитория (bash, zsh или PowerShell; в Windows cmd.exe не проверялось):

uv sync --locked
uv run --locked python -m meeting_protocol "docs/Трек 8 Инновации/Совещание №1.mp3" --output outputs/meeting-1
uv run --locked python -m meeting_protocol "docs/Трек 8 Инновации/Совещание №2.mp3" --output outputs/meeting-2

В outputs/ появятся JSON и DOCX для каждой записи. В документе есть исходный транскрипт, таблица поручений, саммари, сведения о происхождении и пометка о воспроизведении. Дата демонстрационных встреч принята за 23.09.2026, это заданная база примера, не установленная из аудио дата.

Минимальный веб-интерфейс:

uv run --locked python -m uvicorn meeting_protocol.web:app --host 127.0.0.1 --port 8001

Откройте http://127.0.0.1:8001, загрузите один из комплектных MP3 и оставьте дату 23.09.2026. Откроется страница результата с кнопкой «Скачать DOCX»; протокол также появится на странице «История». Для неизвестного аудио отображается ошибка, вместо него не подставляется пример.

На форме есть «Участники» (по одному имени на строку) и «Тема». Для двух MP3 поля заполняются по SHA-256 записи из data/meeting-context.json: только имена и темы из эталонных протоколов, без готовых поручений и сроков. В CLI эти же данные подставляются по хешу, если параметры не заданы. В списке второго примера также указан упомянутый юрист Ерлан; фамилий, которых нет в источнике, мы не добавляем. В режиме воспроизведения изменение темы, участников или даты отклоняется: для перерасчёта нужен GPU.

Проверка из свежего клона, включая оба документа и тесты:

bash scripts/check.sh replay

check.sh требует bash (в Windows — Git Bash). Ожидаемый итог: PASS replay: не проверка моделей; два теста диаризации в этом режиме пропускаются (skipped), потому что GPU-зависимости не установлены.

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
48
Авторы
1
Файлы
347
Ветки
1

Авторы коммитов

aleka07 48

История коммитов

  • 2026-09-23 17:35Журнал: README с GPU-путём первым и проверка ef69f7baleka07
  • 2026-09-23 17:35README: GPU-путь на Brev первым после соответствия кейсу, быстрая проверка без GPU как запасной; технические разделы вынесены в docs/TECHNICAL.md; уточнены формулировки по итогам независимой проверки aleka07
  • 2026-09-23 17:29Журнал: перенос раздела воспроизведения и проверка 1b02c67aleka07
  • 2026-09-23 17:29README: команды проверки без GPU в блоке «Проверить за 5 минут», подробный раздел воспроизведения перенесён в конецaleka07
  • 2026-09-23 17:28Журнал: упрощённый README и проверка 1e1f112aleka07
  • 2026-09-23 17:28README: короче и проще верх, дорожная карта ИИ-агента на Hermes поднята сразу после результатовaleka07
  • 2026-09-23 17:25Журнал: README-питч и проверка 1d724fcaleka07
  • 2026-09-23 17:24README как питч: проблема, для кого, возможности, закрытый контур, доказательства, схема Mermaid; дорожная карта с агентным слоем на Hermes Agent; ограничения по длине совещаний, офлайн-запуску и GPUaleka07
Все коммиты (48)
  • 2026-09-23 17:20README: уточнение сверки 6/6 (срок в реплике №60), check.sh all PASS на новой машине; добавлены навыки агентов и конфигурация предпросмотраaleka07
  • 2026-09-23 17:10Журнал: финальная полировка и проверка ee1a8f5aleka07
  • 2026-09-23 17:10README: сверка с эталоном 10/10 и 6/6 (scripts/compare_reference.py), пометки о цифрах без журнала, путь проверки за 5 минут, пример DOCX, ограничения списком, нестандартное и потенциал; ожидание vLLMaleka07
  • 2026-09-23 16:57Журнал: первый экран README и проверка 90d7f1ealeka07
  • 2026-09-23 16:57README: первый экран (требования, статусы, метрики), WER проверяется без GPU по data/eval, dev-стек Brev перенесён в ENVIRONMENT.mdaleka07
  • 2026-09-23 16:52Запись в браузере: кнопка старта после перезагрузки, остановка через панель браузера, освобождение микрофона при уходе со страницыaleka07
  • 2026-09-23 16:51Журнал: полировка README и проверка replay 795b9c1aleka07
  • 2026-09-23 16:50UTF-8 при чтении JSON (Windows), кавычки для PowerShell, README без устаревших фраз этапов, раскрытие компонентов, ограничения безопасности, PROTOCOL_DIR в .env.examplealeka07
  • 2026-09-23 16:49Журналы: хвост полной GPU-проверки и независимая QA-проверка replay (PASS)aleka07
  • 2026-09-23 16:45README: потенциал развития (раздельные дорожки в self-hosted связи, лицензия ASR)aleka07
  • 2026-09-23 16:43Журнал: полный check.sh gpu PASSaleka07
  • 2026-09-23 16:32Описание проверенной машины Brev и скрипт снятия конфигурацииaleka07
  • 2026-09-23 16:31Журнал: хранение и диаризацияaleka07
  • 2026-09-23 16:31Ограничение числа голосов и поглощение мелких групп, хранение протоколов с историей и удалением; аудио не хранитсяaleka07
  • 2026-09-23 16:19Журнал: выкладка светлой темыaleka07
  • 2026-09-23 16:19Светлая тема по умолчанию; тёмная только по data-theme=darkaleka07
  • 2026-09-23 16:14Журнал: полировка интерфейсаaleka07
  • 2026-09-23 16:14Интерфейс по design-taste: без эмодзи и длинных тире, короткий hero, шаги без номеров, единые скругления, reduced-motionaleka07
  • 2026-09-23 16:12Журнал: этап 3aleka07
  • 2026-09-23 16:12Seamless для казахских окон, запись в браузере, редизайн, оценка WER и поручений; полный check.sh gpu ещё не запускалсяaleka07
  • 2026-09-23 16:06Журнал: этап 2, сроки и страница результатаaleka07
  • 2026-09-23 16:05Сроки в даты, статусы R4, страница результата со ссылками на реплики, баннер R3; браузерной записи и Seamless в конвейере нетaleka07
  • 2026-09-23 16:00Журнал: этап 2, диаризацияaleka07
  • 2026-09-23 16:00Добавлена диаризация ECAPA и сопоставление голосов с участниками; сроки, R4 и страница результата впередиaleka07
  • 2026-09-23 15:46Сохранить оставшиеся журналы разработки и проверок; этап 2 не завершёнaleka07
  • 2026-09-23 15:41Зафиксировать проверку контекста имён на Brev; этап 2 продолжаетсяaleka07
  • 2026-09-23 15:40Добавить контекст имён и темы, постоянный dev-стек; M6 ещё не реализованaleka07
  • 2026-09-23 15:21Этап 1 проверен на Brev: оба режима и DOCX; диаризация и оценка качества впередиaleka07
  • 2026-09-23 15:13Исправлены права каталога результатов при отдельной GPU-проверкеaleka07
  • 2026-09-23 15:04Добавлены реальные результаты и проверка двух режимов; свежий клон ещё проверяетсяaleka07
  • 2026-09-23 14:55Добавлен каркас MP3 → DOCX; проверка моделей и воспроизведение ещё не завершеныaleka07
  • 2026-09-23 14:48Добавлены тестовые записи и защита секретов; конвейер ещё не реализованaleka07
  • 2026-09-23 14:47Утверждён план: приоритет M6, ранняя проверка моделей и запуск через uvaleka07
  • 2026-09-23 14:34Подготовлен план до кандидата 16:45; расписание ожидает подтвержденияaleka07
  • 2026-09-23 14:25Предложен объём протоколирования; план и стек ожидают согласованияaleka07
  • 2026-09-23 14:19Зафиксированы ответы о сервисе и агенте; способы интеграции ещё не выбраныaleka07
  • 2026-09-23 14:13Исследованы агенты и подключение встреч; архитектура и стек ещё не выбраныaleka07
  • 2026-09-23 14:02Уточнено ТЗ трека 8 и настроены локальные задачи; реализация ещё не проверенаaleka07
  • 2026-09-23 13:59docs: сохранены навыки, материалы трека 8 и журналы; реализация и проверка запуска ещё не готовыaleka07
  • 2026-09-23 13:19docs: изучены 12 треков, выбран трек 8; план и стек не утвержденыaleka07
Структура репозитория (347 файлов)
.agents/skills/ask-matt/PHASE-BOUNDARIES.md
.agents/skills/ask-matt/SKILL.md
.agents/skills/ask-matt/agents/openai.yaml
.agents/skills/code-review/SKILL.md
.agents/skills/code-review/agents/openai.yaml
.agents/skills/codebase-design/DEEPENING.md
.agents/skills/codebase-design/DESIGN-IT-TWICE.md
.agents/skills/codebase-design/SKILL.md
.agents/skills/codebase-design/agents/openai.yaml
.agents/skills/design-taste-frontend/SKILL.md
.agents/skills/diagnosing-bugs/SKILL.md
.agents/skills/diagnosing-bugs/agents/openai.yaml
.agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh
.agents/skills/domain-modeling/ADR-FORMAT.md
.agents/skills/domain-modeling/CONTEXT-FORMAT.md
.agents/skills/domain-modeling/SKILL.md
.agents/skills/domain-modeling/agents/openai.yaml
.agents/skills/grill-me/SKILL.md
.agents/skills/grill-me/agents/openai.yaml
.agents/skills/grill-with-docs/SKILL.md
.agents/skills/grill-with-docs/agents/openai.yaml
.agents/skills/grilling/SKILL.md
.agents/skills/grilling/agents/openai.yaml
.agents/skills/handoff/SKILL.md
.agents/skills/handoff/agents/openai.yaml
.agents/skills/implement/SKILL.md
.agents/skills/implement/agents/openai.yaml
.agents/skills/improve-codebase-architecture/HTML-REPORT.md
.agents/skills/improve-codebase-architecture/SKILL.md
.agents/skills/improve-codebase-architecture/agents/openai.yaml
.agents/skills/prototype/LOGIC.md
.agents/skills/prototype/SKILL.md
.agents/skills/prototype/UI.md
.agents/skills/prototype/agents/openai.yaml
.agents/skills/research/SKILL.md
.agents/skills/research/agents/openai.yaml
.agents/skills/resolving-merge-conflicts/SKILL.md
.agents/skills/resolving-merge-conflicts/agents/openai.yaml
.agents/skills/setup-matt-pocock-skills/SKILL.md
.agents/skills/setup-matt-pocock-skills/agents/openai.yaml
.agents/skills/setup-matt-pocock-skills/domain.md
.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md
.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md
.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md
.agents/skills/setup-matt-pocock-skills/triage-labels.md
.agents/skills/tdd/SKILL.md
.agents/skills/tdd/agents/openai.yaml
.agents/skills/tdd/mocking.md
.agents/skills/tdd/tests.md
.agents/skills/teach/GLOSSARY-FORMAT.md
.agents/skills/teach/LEARNING-RECORD-FORMAT.md
.agents/skills/teach/MISSION-FORMAT.md
.agents/skills/teach/RESOURCES-FORMAT.md
.agents/skills/teach/SKILL.md
.agents/skills/teach/agents/openai.yaml
.agents/skills/to-questionnaire/SKILL.md
.agents/skills/to-questionnaire/agents/openai.yaml
.agents/skills/to-spec/SKILL.md
.agents/skills/to-spec/agents/openai.yaml
.agents/skills/to-tickets/SKILL.md
.agents/skills/to-tickets/agents/openai.yaml
.agents/skills/triage/AGENT-BRIEF.md
.agents/skills/triage/OUT-OF-SCOPE.md
.agents/skills/triage/SKILL.md
.agents/skills/triage/agents/openai.yaml
.agents/skills/wait-what/SKILL.md
.agents/skills/wait-what/agents/openai.yaml
.agents/skills/wayfinder/SKILL.md
.agents/skills/wayfinder/agents/openai.yaml
.agents/skills/wizard/SKILL.md
.agents/skills/wizard/agents/openai.yaml
.agents/skills/wizard/template.sh
.agents/skills/writing-for-agents/SKILL-MECHANICS.md
.agents/skills/writing-for-agents/SKILL.md
.agents/skills/writing-for-agents/agents/openai.yaml
.claude/launch.json
.claude/skills/ask-matt
.claude/skills/code-review
.claude/skills/codebase-design
.claude/skills/design-taste-frontend
.claude/skills/diagnosing-bugs
.claude/skills/domain-modeling
.claude/skills/flw/SKILL.md
.claude/skills/grill-me
.claude/skills/grill-with-docs
.claude/skills/grilling
.claude/skills/handoff
.claude/skills/implement
.claude/skills/improve-codebase-architecture
.claude/skills/prototype
.claude/skills/research
.claude/skills/resolving-merge-conflicts
.claude/skills/setup-matt-pocock-skills
.claude/skills/tdd
.claude/skills/teach
.claude/skills/to-questionnaire
.claude/skills/to-spec
.claude/skills/to-tickets
.claude/skills/triage
.claude/skills/wait-what
.claude/skills/wayfinder
.claude/skills/wizard
.claude/skills/writing-for-agents
.dockerignore
.env.example
.gitignore
.python-version
.scratch/meeting-protocol/agent-options.md
.scratch/meeting-protocol/architecture.md
.scratch/meeting-protocol/spec.md
AGENTS.md
CONTEXT.md
Dockerfile
README.md
compose.yaml
data/eval/kz_01.json
data/eval/mix_01.json
data/meeting-context.json
data/replay/meeting-1.json
data/replay/meeting-2.json
data/test/kz_01.m4a
data/test/kz_01.reference.md
data/test/mix_01.m4a
data/test/mix_01.reference.md
docs/CASE.md
docs/ENVIRONMENT.md
docs/HANDOFF.md
docs/LOG.md
docs/PLAN.md
docs/TECHNICAL.md
docs/TRACKS.md
docs/agents/domain.md
docs/agents/issue-tracker.md
docs/agents/triage-labels.md
docs/examples/meeting-2.docx
docs/runs/1300-feasibility-agents.log
docs/runs/1300-feasibility-skill.log
docs/runs/1314-customer-inventory.log
docs/runs/1314-customer-rules.log
docs/runs/1314-track-context.log
docs/runs/1314-track-inventory.log
docs/runs/1315-case-text.log
docs/runs/1315-cases-4-9.log
docs/runs/1315-customer-cases-rest.log
docs/runs/1315-customer-cases.log
docs/runs/1315-customer-sol.log
docs/runs/1315-feasibility-requirements.log
docs/runs/1315-read-11-12-2.log
docs/runs/1315-read-5-8.log
docs/runs/1316-customer-sol.log
docs/runs/1316-education-read.log
docs/runs/1316-education-source.log
docs/runs/1316-feasibility-sol.log
docs/runs/1316-shortlist-inputs.log
docs/runs/1316-supporting-inputs.log
docs/runs/1318-track-report.log
docs/runs/1319-log-correction.log
docs/runs/1319-select-track-8.log
docs/runs/1319-selection-check.log
docs/runs/1319-selection-commit-result.log
docs/runs/1319-selection-commit.log
docs/runs/1319-selection-log.log
docs/runs/1319-selection-record.log
docs/runs/1339-brev-env-check.log
docs/runs/1347-vllm-start.log
docs/runs/1351-vllm-status.log
docs/runs/1355-skills-setup-exploration.log
docs/runs/1357-track8-documentation-rules.log
docs/runs/1357-track8-full-documents.log
docs/runs/1357-track8-source-inventory.log
docs/runs/1358-commit-push-review.log
docs/runs/1358-commit-push-validation.log
docs/runs/1359-commit-push-result.log
docs/runs/1359-push-result.log
docs/runs/1359-push-verification.log
docs/runs/1400-track8-spec-write.log
docs/runs/1401-track8-spec-verification.log
docs/runs/1402-skills-setup-write.log
docs/runs/1402-track8-handoff-review.log
docs/runs/1402-track8-setup-commit.log
docs/runs/1409-architecture-research-context.log
docs/runs/1410-agent-options-context.log
docs/runs/1410-agent-options-instructions.log
docs/runs/1411-agent-options-existing.log
docs/runs/1412-agent-options-write-check.log
docs/runs/1412-architecture-findings-review.log
docs/runs/1412-architecture-proposal-write.log
docs/runs/1413-architecture-research-commit.log
docs/runs/1413-architecture-scope-correction.log
docs/runs/1414-ask-matt-resume.log
docs/runs/1415-grill-with-docs-context.log
docs/runs/1417-meeting-decisions-context.log
docs/runs/1418-meeting-decisions-write.log
docs/runs/1419-meeting-decisions-commit.log
docs/runs/1421-audio-input-planning.log
docs/runs/1423-scope-context.log
docs/runs/1423-scope-decisions.log
docs/runs/1423-scope-inventory.log
docs/runs/1423-scope-open-decisions.log
docs/runs/1424-scope-source-check.log
docs/runs/1425-scope-commit-result.log
docs/runs/1425-scope-proposal-write.log
docs/runs/1432-plan-source-read.log
docs/runs/1433-plan-write.log
docs/runs/1434-plan-commit-result.log
docs/runs/1446-stage1-start-context.log
docs/runs/1447-plan-approved-commit.log
docs/runs/1447-plan-approved-update.log
docs/runs/1448-stage1-foundation-server.log
docs/runs/1448-stage1-foundation-write.log
docs/runs/1448-stage1-inputs.log
docs/runs/1448-stage1-model-inspect.log
docs/runs/1449-stage1-package-versions-retry.log
docs/runs/1449-stage1-package-versions.log
docs/runs/1449-stage1-vllm-root-error.log
docs/runs/1450-stage1-local-install.log
docs/runs/1450-stage1-runtime-write.log
docs/runs/1450-stage1-vllm-start.log
docs/runs/1451-stage1-agent-api.log
docs/runs/1451-stage1-server-install-retry.log
docs/runs/1451-stage1-server-install.log
docs/runs/1451-stage1-test-red.log
docs/runs/1451-stage1-vllm-health.log
docs/runs/1453-stage1-seamless-smoke.log
docs/runs/1453-stage1-test-green.log
docs/runs/1453-stage1-whisper-smoke.log
docs/runs/1455-stage1-meeting1-real.log
docs/runs/1455-stage1-model-revisions.log
docs/runs/1455-stage1-scaffold-commit.log
docs/runs/1455-stage1-web-runtime-check.log
docs/runs/1457-stage1-check-script-validation.log
docs/runs/1457-stage1-docker-build.log
docs/runs/1457-stage1-meeting2-real.log
docs/runs/1457-stage1-pin-models.log
docs/runs/1457-stage1-replay-first.log
docs/runs/1459-stage1-readme-check.log
docs/runs/1500-stage1-agent-bound-write.log
docs/runs/1500-stage1-agent-loop-diagnosis.log
docs/runs/1500-stage1-first-result-inspect.log
docs/runs/1500-stage1-meeting2-bounded-agent.log
docs/runs/1501-stage1-extraction-fields-diagnosis.log
docs/runs/1501-stage1-extraction-fields-fix.log
docs/runs/1501-stage1-required-fields-real.log
docs/runs/1502-stage1-local-tests-partial.log
docs/runs/1502-stage1-runtime-resources.log
docs/runs/1502-stage1-schema-status.log
docs/runs/1503-stage1-pinned-uv.log
docs/runs/1503-stage1-replay-and-tests.log
docs/runs/1503-stage1-results-inspect.log
docs/runs/1504-stage1-fresh-all-check.log
docs/runs/1504-stage1-fresh-replay-check.log
docs/runs/1504-stage1-known-quality-note.log
docs/runs/1505-stage1-web-scenario.log
docs/runs/1506-stage1-local-boundary-check.log
docs/runs/1509-stage1-build-progress.log
docs/runs/1511-stage1-compose-model-progress.log
docs/runs/1512-stage1-output-directory-fix.log
docs/runs/1513-stage1-compose-readiness.log
docs/runs/1513-stage1-output-directory-commit.log
docs/runs/1515-stage1-compose-warmup.log
docs/runs/1518-stage1-final-gpu-progress.log
docs/runs/1520-stage1-evidence-inventory.log
docs/runs/1521-stage1-close-commit.log
docs/runs/1521-stage1-close-documentation.log
docs/runs/1527-stage2-context.log
docs/runs/1528-dev-inspection.log
docs/runs/1528-name-context-source.log
docs/runs/1531-dev-start.log
docs/runs/1531-reference-context.log
docs/runs/1536-context-diff.log
docs/runs/1536-context-edit.log
docs/runs/1536-dev-context-gpu.log
docs/runs/1537-dev-sync.log
docs/runs/1538-callers-check.log
docs/runs/1538-dev-health.log
docs/runs/1538-progress-log.log
docs/runs/1538-verify-sync.log
docs/runs/1540-canonical-owner-inspection.log
docs/runs/1540-canonical-owners.log
docs/runs/1540-context-commit.log
docs/runs/1540-dev-update-and-tests.log
docs/runs/1540-fixture-refresh.log
docs/runs/1541-context-review.log
docs/runs/1541-context-tests-and-deploy.log
docs/runs/1541-fresh-context-replay.log
docs/runs/1541-single-vllm-guard.log
docs/runs/1541-updated-fixture-sync.log
docs/runs/1542-context-verification-push.log
docs/runs/1542-precommit-context.log
docs/runs/1545-push-all-inspection.log
docs/runs/1546-push-all-log-review.log
docs/runs/1546-push-all-result.log
docs/runs/1550-stage2-diarization-gpu.log
docs/runs/1559-stage2-diarization-replay-check.log
docs/runs/1600-stage2-diarization-commit-replay-check.log
docs/runs/1603-stage2-deadlines-gpu.log
docs/runs/1605-stage2-result-page-replay-check.log
docs/runs/1608-stage3-seamless-gpu.log
docs/runs/1612-deploy-ui-brev.log
docs/runs/1612-stage3-replay-check.log
docs/runs/1614-deploy-ui-polish-brev.log
docs/runs/1614-ui-polish-replay-check.log
docs/runs/1619-deploy-light-theme-brev.log
docs/runs/1627-diarization-cap-gpu.log
docs/runs/1631-check-gpu-full.log
docs/runs/1631-storage-replay-check.log
docs/runs/1632-check-gpu-full.log
docs/runs/1632-env-report-brev.log
docs/runs/1645-fresh-machine-cold-readme.log
docs/runs/1645-qa-check-replay.log
docs/runs/1649-windows-encoding-check.log
docs/runs/1650-polish-check-replay.log
docs/runs/1652-deploy-recorder-fix-brev.log
docs/runs/1657-first-screen-check-replay.log
docs/runs/1708-reference-match.log
docs/runs/1710-final-polish-check-replay.log
docs/runs/1713-eldest-check-all.log
docs/runs/1724-pitch-readme-check-replay.log
docs/runs/1728-humanized-readme-check-replay.log
docs/runs/1729-replay-moved-check-replay.log
docs/runs/1735-gpu-first-readme-check-replay.log
docs/Трек 8 Инновации/HackAlem AI_ Система автопротоколирования совещаний с фиксацией поручений.docx
docs/Трек 8 Инновации/Протокол_совещания№1.docx
docs/Трек 8 Инновации/Протокол_совещания№2.docx
docs/Трек 8 Инновации/Совещание №1.mp3
docs/Трек 8 Инновации/Совещание №2.mp3
meeting_protocol/__init__.py
meeting_protocol/__main__.py
meeting_protocol/diarization.py
meeting_protocol/pipeline.py
meeting_protocol/protocol.py
meeting_protocol/ui/app.js
meeting_protocol/ui/index.html
meeting_protocol/ui/style.css
meeting_protocol/web.py
pyproject.toml
scripts/check.sh
scripts/compare_reference.py
scripts/env_report.sh
scripts/evaluate.py
scripts/gpu-python.sh
scripts/smoke_models.py
scripts/verify_outputs.py
skills-lock.json
tests/conftest.py
tests/test_protocol.py
uv.lock

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.