SONICOLOGY · MASI OS · установка

Установка MASI OS

Конвейер протоколов встреч: запись превращается в проверенный протокол. Система ставится на личный ноутбук, офисный сервер или в облако в РФ. Каждый протокол проходит независимую проверку до показа.

01
Что ставим

Состав и статус

БлокСтатус
Конвейер протоколаготов к тесту распознавание, черновик, проверка, HTML и текст
Macтестовая установка первый шаг, команды в разделе 05
Windowsличный ноутбук Егора команды в разделе 05
Linuxофисный сервер или облако в РФ команды в разделе 05
Канал MAXосновной ввод токена командой из раздела 05; подключается отдельным шагом
Telegramопционально ввод токена командой из раздела 05; выключен по умолчанию, включается переменной окружения
Дашборд SAIOSпозже в состав v0.1 не входит

Код хранится в приватном репозитории GitHub sonicology/masi-os, тег v0.1.2-test. В репозитории нет ключей, токенов, записей встреч и идентификаторов чатов.

02
Как работает

Путь одной записи

запись→расшифровка→черновик→независимая проверка→протокол

Если проверка не одобрила черновик, протокол не выходит. Задача останавливается и пишет причину в свой статус. Повторов после остановки нет: решение принимает человек.

РольМодель и сервис
Распознавание речиopenai/whisper-large-v3-turbo, Router AI API
Черновик протоколаopenai/gpt-6.1-sol, Router AI API
Независимая проверкаdeepseek/deepseek-v4-flash, Router AI API
Один сервис для всех моделей. Все языковые модели вызываются через Router AI API. Прямых вызовов сторонних API в коде нет. Каждый протокол содержит блок «Модель и расход»: какие модели работали и сколько потрачено.
03
Порядок

Этапы установки

  1. Тест на отдельном MacКлонировать репозиторий, поставить ffmpeg и Python, проверить тесты и прогнать учебную запись. Цель: убедиться, что путь работает на чистой машине.
  2. Личный ноутбук, офисный сервер, облако в РФТа же инструкция, команды своей системы в разделе 05. Замечания первой установки вносятся в репозиторий до следующей.
  3. Канал MAXТокен бота вводится командой, подключение отдельным шагом после выдачи токена. Затем прогон учебной записи через MAX и проверка доставки.
  4. Telegram по желаниюТокен вводится командой, канал включается переменной MASI_TG_ENABLED=1. Без неё канал не используется.
04
Установка

Клонировать код

Одинаково для всех систем: эти команды работают и в Терминале, и в PowerShell.

git clone https://github.com/sonicology/masi-os.git
cd masi-os
git checkout v0.1.2-test

Дальше команды для вашей системы: раздел 05.

05
Команды по системам

Mac, Windows, Linux

В каждой системе один и тот же набор: функция, ключи Router AI, токен MAX, токен Telegram, проверка, тесты. Значения записываются в файл .env в папке masi-os и вводятся скрыто: символы не отображаются, в историю команд не попадают. Функцию вставляют один раз на сессию терминала. Если окно закрыли, вставьте её снова.

Mac

Терминал по умолчанию работает в zsh, команды подходят и для zsh, и для bash. Нужно: Python 3.11 (python.org или brew install python@3.11), ffmpeg (brew install ffmpeg), Git (Xcode Command Line Tools). Откройте Терминал в папке masi-os.

  1. ФункцияВставьте блок целиком, один раз за сессию терминала.
    masi_put() {
      local value tmp
      [ -d protocol ] || { echo 'Перейдите в папку masi-os (в ней есть папка protocol).'; return 1; }
      [ -f .env ] || cp .env.example .env
      printf '%s: ' "$2"; read -rs value; echo
      [ -n "$value" ] || { echo 'Пустое значение, ничего не записано.'; return 1; }
      tmp=$(mktemp .env.XXXXXX) || return 1
      grep -v "^$1=" .env > "$tmp"
      printf '%s=%s\n' "$1" "$value" >> "$tmp"
      chmod 600 "$tmp" && mv "$tmp" .env
      unset value
      echo "Записано: $1"
    }
  2. Ключи Router AIДве строки, каждая спросит значение. Символы не отображаются.
    masi_put ROUTER_API_KEY 'Мастер-ключ Router AI (https://routerai.ru/api/v1)'
    masi_put ROUTER_MCP_TOKEN 'MCP-токен Router AI (https://routerai.ru/api/v1/mcp)'
  3. Токен бота MAXОсновной канал. Команда спросит токен.
    masi_put MAX_BOT_TOKEN 'Токен бота MAX'
  4. Токен бота Telegram (необязательно)Выключен по умолчанию. Чтобы включить, в .env поставьте MASI_TG_ENABLED=1 вместо 0 и при запуске укажите ID чата: --tg-chat ID.
    masi_put TG_BOT_TOKEN 'Токен бота Telegram'
  5. ПроверкаВыводит только имена записанных значений.
    for k in ROUTER_API_KEY ROUTER_MCP_TOKEN MAX_BOT_TOKEN TG_BOT_TOKEN; do grep -qE "^$k=[^ #]" .env && echo "$k записан"; done
  6. ТестыВсе 12 должны пройти. Тесты не обращаются к сети и ничего не тратят.
    python3 -m unittest discover -s tests -v
  7. Тестовая обработкаУчебную запись передаёт владелец отдельно.
    python3 -m protocol /путь/к/записи.mp3 --input-mode fixture

Windows

Нужно: Python 3.11 с python.org (запуск через py -3.11), Git for Windows, ffmpeg с папкой в PATH. Откройте PowerShell в папке masi-os.

  1. ФункцияВставьте блок целиком, один раз за сессию PowerShell.
    function Set-MasiEnvValue($Name, $Prompt) {
        if (-not (Test-Path 'protocol')) { Write-Host 'Перейдите в папку masi-os (в ней есть папка protocol).'; return }
        $dir = (Get-Location).Path
        $file = Join-Path $dir '.env'
        if (-not (Test-Path $file)) { Copy-Item (Join-Path $dir '.env.example') $file }
        $secure = Read-Host $Prompt -AsSecureString
        $value = [System.Net.NetworkCredential]::new('', $secure).Password
        if (-not $value) { Write-Host 'Пустое значение, ничего не записано.'; return }
        $keep = @(Get-Content $file -Encoding UTF8 | Where-Object { $_ -notmatch "^$Name=" })
        [System.IO.File]::WriteAllLines($file, [string[]]($keep + "$Name=$value"), (New-Object System.Text.UTF8Encoding($false)))
        icacls $file /inheritance:r /grant:r "$($env:USERNAME):(R,W)" | Out-Null
        Write-Host "Записано: $Name"
    }
  2. Ключи Router AIДве строки, каждая спросит значение. Символы не отображаются.
    Set-MasiEnvValue 'ROUTER_API_KEY' 'Мастер-ключ Router AI (https://routerai.ru/api/v1)'
    Set-MasiEnvValue 'ROUTER_MCP_TOKEN' 'MCP-токен Router AI (https://routerai.ru/api/v1/mcp)'
  3. Токен бота MAXОсновной канал. Команда спросит токен.
    Set-MasiEnvValue 'MAX_BOT_TOKEN' 'Токен бота MAX'
  4. Токен бота Telegram (необязательно)Выключен по умолчанию. Чтобы включить, в .env поставьте MASI_TG_ENABLED=1 вместо 0 и при запуске укажите ID чата: --tg-chat ID.
    Set-MasiEnvValue 'TG_BOT_TOKEN' 'Токен бота Telegram'
  5. ПроверкаВыводит только имена записанных значений.
    Select-String -Path .env -Pattern '^(ROUTER_API_KEY|ROUTER_MCP_TOKEN|MAX_BOT_TOKEN|TG_BOT_TOKEN)=[^ #]' | ForEach-Object { $_.Line.Split('=')[0] + ' записан' }
  6. ТестыВсе 12 должны пройти. Тесты не обращаются к сети и ничего не тратят.
    py -3.11 -m unittest discover -s tests -v
  7. Тестовая обработкаУчебную запись передаёт владелец отдельно.
    py -3.11 -m protocol C:\путь\к\учебной_записи.mp3 --input-mode fixture

Linux

Нужно: Python 3.11 или новее, ffmpeg и Git. Debian или Ubuntu: sudo apt install python3 ffmpeg git. Откройте терминал в папке masi-os, команды подходят для bash и zsh.

  1. ФункцияВставьте блок целиком, один раз за сессию терминала.
    masi_put() {
      local value tmp
      [ -d protocol ] || { echo 'Перейдите в папку masi-os (в ней есть папка protocol).'; return 1; }
      [ -f .env ] || cp .env.example .env
      printf '%s: ' "$2"; read -rs value; echo
      [ -n "$value" ] || { echo 'Пустое значение, ничего не записано.'; return 1; }
      tmp=$(mktemp .env.XXXXXX) || return 1
      grep -v "^$1=" .env > "$tmp"
      printf '%s=%s\n' "$1" "$value" >> "$tmp"
      chmod 600 "$tmp" && mv "$tmp" .env
      unset value
      echo "Записано: $1"
    }
  2. Ключи Router AIДве строки, каждая спросит значение. Символы не отображаются.
    masi_put ROUTER_API_KEY 'Мастер-ключ Router AI (https://routerai.ru/api/v1)'
    masi_put ROUTER_MCP_TOKEN 'MCP-токен Router AI (https://routerai.ru/api/v1/mcp)'
  3. Токен бота MAXОсновной канал. Команда спросит токен.
    masi_put MAX_BOT_TOKEN 'Токен бота MAX'
  4. Токен бота Telegram (необязательно)Выключен по умолчанию. Чтобы включить, в .env поставьте MASI_TG_ENABLED=1 вместо 0 и при запуске укажите ID чата: --tg-chat ID.
    masi_put TG_BOT_TOKEN 'Токен бота Telegram'
  5. ПроверкаВыводит только имена записанных значений.
    for k in ROUTER_API_KEY ROUTER_MCP_TOKEN MAX_BOT_TOKEN TG_BOT_TOKEN; do grep -qE "^$k=[^ #]" .env && echo "$k записан"; done
  6. ТестыВсе 12 должны пройти. Тесты не обращаются к сети и ничего не тратят.
    python3 -m unittest discover -s tests -v
  7. Тестовая обработкаУчебную запись передаёт владелец отдельно.
    python3 -m protocol /путь/к/записи.mp3 --input-mode fixture
06
Claude Code или Codex

Установка одной командой

Агент сам проверит систему, поставит недостающее после вашего разрешения, запустит тесты и остановится там, где нужны ваши ключи. Ключи агенту не передаются: их вы вводите в своём терминале.

Что нужно заранее

  • Claude Code или Codex установлены на машине, и вы вошли в свой аккаунт.
  • Есть доступ к приватному репозиторию GitHub sonicology/masi-os, например через gh auth login.
  • Python 3.11, ffmpeg и Git: агент проверит их и предложит команду установки, если чего-то не хватает.

Mac и Linux

Claude Code:

git clone -b v0.1.2-test https://github.com/sonicology/masi-os.git && cd masi-os && claude "Install MASI OS on this machine. Read INSTALL_AGENT.md and follow it exactly. Never ask me to paste API keys or tokens into this chat."

Codex:

git clone -b v0.1.2-test https://github.com/sonicology/masi-os.git && cd masi-os && codex "Install MASI OS on this machine. Read INSTALL_AGENT.md and follow it exactly. Never ask me to paste API keys or tokens into this chat."

Windows, PowerShell

Здесь вместо && ставится ;. Claude Code:

git clone -b v0.1.2-test https://github.com/sonicology/masi-os.git; cd masi-os; claude "Install MASI OS on this machine. Read INSTALL_AGENT.md and follow it exactly. Never ask me to paste API keys or tokens into this chat."

Codex:

git clone -b v0.1.2-test https://github.com/sonicology/masi-os.git; cd masi-os; codex "Install MASI OS on this machine. Read INSTALL_AGENT.md and follow it exactly. Never ask me to paste API keys or tokens into this chat."

Что делает агент

  1. Проверка системыОпределяет Mac, Windows или Linux. Проверяет Python 3.11, ffmpeg и Git. Недостающее ставит только после вашего разрешения.
  2. ТестыЗапускает 12 офлайн-тестов. Сеть им не нужна, денег они не тратят.
  3. КлючиАгент останавливается и просит запустить в вашем терминале python3 -m protocol.envsetup (Windows: py -3.11 -m protocol.envsetup). Команда спросит мастер-ключ, MCP-токен, токен бота MAX и включать ли Telegram. Ввод скрыт, агент значений не видит.
  4. Проверка ключейКоманда --check показывает только имена и статус «записан» или «не задан».
  5. Тестовая обработкаТолько по вашему разрешению: она вызывает платные модели. Учебную запись агент сам не ищет.

Без агента ту же настройку ключей можно сделать одной командой. Mac и Linux: python3 -m protocol.envsetup. Windows: py -3.11 -m protocol.envsetup.

Инструкция для агента лежит в репозитории: INSTALL_AGENT.md, на английском. Команды выше только передают агенту задачу.
07
Для запуска у Егора

Что передаём отдельно

ЧтоКак
Место установкиличный ноутбук, офисный сервер, облако в РФ; выбор за Егором
Мастер-ключ Router AIзаписывается командой из раздела 05 в .env
MCP-токен Router AIзаписывается командой из раздела 05 в .env
Токен бота MAXосновной канал; вводится командой из раздела 05; подключается отдельным шагом
Токен бота Telegramопционально; вводится командой из раздела 05; выключен по умолчанию
Данные встречвопрос о зарубежной обработке решается до первой реальной встречи; пока только учебные записи

Мастер-ключ и MCP-токен передаются командой из раздела 05. Значения записываются в .env.

Личный ноутбук Егора, Windows
  1. Установить Python 3.11, Git и ffmpegPython с python.org, Git for Windows, ffmpeg с папкой в PATH.
  2. Получить кодВ PowerShell:
    git clone https://github.com/sonicology/masi-os.git
    cd masi-os
    git checkout v0.1.2-test
  3. Записать ключи и токеныБлок Windows из раздела 05: сначала функция, затем строки ключей.
  4. Проверить тестыВсе 12 должны пройти.
    py -3.11 -m unittest discover -s tests -v
  5. Тестовая обработкаУчебную запись передаёт Тарас.
    py -3.11 -m protocol C:\путь\к\учебной_записи.mp3 --input-mode fixture

Репозиторий приватный: Егора нужно добавить участником или передать архив. Установка через агента: раздел 06.

08
Статус

Что проверено

Офлайн-тесты v0.1.2 пройдены на Mac: 12 из 12. Windows и Linux ещё не запускались. Команды для агентов ещё не проверены сквозным запуском. Живой прогон на новой установке ещё не сделан: первый шаг — тестовый Mac.