Проблема самоидентификации растёт из того, что понятие "я" применимо только к ограниченной области философии, и уж никак не к науке, а его пытаются пихать везде. Нет никакого "я" объективно, это социальный конструкт. Поэтому вопрос "который из наблюдателей в ветвлении в многомировой интерпретации является мной" попросту не имеет смысла. Определение этого "я" недостаточно конкретно по аналогии с идентичностью в парадоксе корабля тесея, и подходить к вопросу стоит ровно так же как к этому парадоксу - переформулировать в однозначных терминах.
Статья хорошая, хоть и длинная, наверное удобнее было бы разбить на несколько
С того, что там об этом прямо просят? Как минимум в любой статье "как проходить собеседования в ит" одной из первых строчек прописано - проговаривайте свои рассуждения вслух. Это аксиома. Иначе сложно оценить уровень - ты можешь случайно угадать нужную строчку, а можешь всё в принципе правильно соображать и иметь достаточную квалификацию, но на собесе забыть какой-то момент который в рабочих условиях гуглится и работе не мешает.
И то, что ответы могут ожидаться разные, этот фактор никак не нивелирует.
На собеседованиях над ответом думают вслух, в этом и смысл. Интервьюеру важнее проверить ход мыслей, чем точно запомненные детали реализации, и из того, с чего соискатель начинает свои рассуждения, какие делает предположения, как быстро отбрасывает неверные, и складывается понимание - понимает ли вообще хоть что-то человек, который к тебе пришёл, или по бумажке читает. Поэтому 4 секунды на то, чтобы начать отвечать - это даже многовато ещё
Если у проекта объективные цели - недостижимые, то заниматься им нет смысла.
Даже с человеческим (английским) синтаксисом задача "сделать лучший язык для нескольких разных сфер" невыполнима просто потому что потому. У вас же пет-проект, которым в пике будут пользоваться три с половиной человека, включая кошку автора, которая случайно влезла в IDE. Ещё и с неисправимым недостатком в виде языка с падежами в основе. Поэтому и относиться к проекту стоит соответствующе. Если хочется поковыряться в том, как работают языки, что-то для себя понять - в принципе можно, но чтобы потом не расстраиваться, лучше заранее снизьте ожидания.
Тут речь про реализацию, а не идею. Сколько за последнее время в рамках работы над суверенным рунетом было сделано для "того, чтобы могло работать при отключении извне", а сколько для того чтобы "самим отключить изнутри", т.е. те самые агрессивные действия, только не предполагаемые, а реальные? К первому варианту относится сделать рутуб/мессенджер макс, всё. Но нет, конечная цель этих товарищей вовсе не суверенность рунета, а денег заработать, поэтому на "сделать" они не останавливаются, им надо чтобы туда все ушли даже если извне никого не отключали. И начинаются блокировки, на которые, между прочим, деньги тратятся. Более того, это убирает конкуренцию и демотивирует развивать и улучшать сервисы - зачем, если все и так вынуждены пользоваться.
Я не знаю, какая каша в мозгах должна быть, чтобы этого не понимать - хотя учитывая уже сказанное про "блокаду целых стран", примерно представляю, в какую сторону вектор мысли направлен, в сторону "все вокруг злые, спят и видят как бы нас уничтожить, так люди наверху сказали, назло внешним врагам можно с радостью себе уши уровень жизни отморозить".
Умная мысль пыталась настичь автора на строке "бразильские программисты не написали бразильский язык программирования", но он оказался быстрее, не додумав окончание "хотя у них тоже латиница".
Ответ лежит на поверхности - проблема "нативных языков" не в чармапе. И даже не в нераспространенности языка - сколько в мире носителей китайского и хинди, но никто не пишет код на них. Проблема в формализованности и лаконичности.
Английский структурирован так, что на нём удобно описывать логические структуры, он остаётся человекочитаемым в условиях строгой формализации и оптимизации синтаксиса и не расходится в разговорном и кодирующем использовании. define boolean translateYPosition звучит так, как это сказал бы человек в разговорной речи. РасширяемыйВыводОперацияЗапустить - не звучит. Программисты тоже люди, и язык пишется для того, чтобы его читал человек. Русский, с его падежами, склонениями и произвольным порядком слов, соответствует этому требованию хуже, чем практически что угодно. Поэтому никогда и ни в каком мире всякие йоптаскрипты не станут ничем большим, чем просто прикол и мемчик.
Платформа абсолютно мёртвая. Без вливания денег в раскрутку своего аккаунта заказов не получить ни одного. В целом, заказов смешное количество, для крупнейшей в РФ площадки.
Если 10 лет назад иметь там аккаунт было ещё хоть сколько-то резонно, то сейчас точно нет, парсинг по чатам в тележеньке даёт кратно лучший результат, чем площадка, нацеленная на это - о многом говорит. Закапывайте стюардессу обратно.
Хотел возразить ранее в ветке, но теперь понимаю, что бессмысленно, такие кадры либо на зарплате и сами не верят в то что пишут, либо ложку с трудом до рта доносят, куда там до мыслительной деятельности и тем более дискуссий. Спасибо, что раскрыли свой богатый внутренний мир подробнее и сэкономили время.
А с чего бы им от этого беситься? У национального суверенного мессенджера разве есть американская аудитория, чтобы каналы представляли интерес для ЦРУ и ФБР? На кой им этот неуловимый Джо?
Проблема в том, что ИИ-отклики сделаны для того, чтобы проходить ИИ-фильтры. Если твоё резюме не будет соответствовать тому, что ожидает машина, до человека-рекрутёра оно просто не дойдёт. Статья, начисто игнорирующая этот факт, абсолютно лишена смысла.
В теории можно, лежит у меня ещё Redmi Note 4X, можно и его под что-то простенькое, просто X1 был под рукой, а для Vosk, как ни крути, нужно довольно много памяти под полную модельку, если выбросить часть с ассистентом - то можно и на совсем старом такое завести без проблем
1. Общая архитектура
Система состоит из трёх независимых компонентов, работающих на одном устройстве (Xperia XZ1) и взаимодействующих через HTTP API:
Основной бэкенд умного дома (Central Hub) — ядро системы. Отвечает за:
Управление умными устройствами (свет, розетки, датчики и т.д.).
Хранение состояния и истории.
Предоставление API для модулей и внешних клиентов.
Логику автоматизации (правила, сценарии).
Обработку текстовых команд (от голосового ассистента или других интерфейсов).
Модуль голосового ассистента (Voice Module) — обеспечивает голосовой интерфейс:
Постоянное прослушивание микрофона, детекция ключевой фразы.
Распознавание речи (Vosk) и синтез речи (TTS).
Отправка распознанного текста в основной бэкенд.
Озвучивание ответов.
Управление аудиоресурсами через аудиоарбитр.
Модуль RKHomeHub — существующий (или новый) локальный сервер для Android-приложений:
Предоставляет API для мобильных приложений (чтение/запись локальных данных).
Работает независимо от основного бэкенда, но может интегрироваться через основной бэкенд (опционально).
Дополнительный компонент: Аудиоарбитр — встроен в Voice Module или вынесен отдельно, управляет доступом к микрофону и динамику, реализует приоритетную очередь для разных источников (Voice Module, будущие модули OpenClaw, нотифаер и т.п.).
2. Основной бэкенд умного дома (Central Hub)
2.1. Назначение
Центральный сервер, который управляет всей умной домашней инфраструктурой: устройствами, автоматизациями, сценариями. Взаимодействует с модулями и внешними клиентами (мобильные приложения, веб-интерфейс).
2.2. Функциональные требования
Управление устройствами:
Регистрация устройств (ID, тип, имя, метаданные, состояние).
Обновление состояния устройства (вручную или через датчики).
Выполнение команд над устройствами (включить/выключить, установить значение, запустить сценарий).
Поддержка разных типов устройств: свет, розетки, термостаты, датчики (температура, влажность, движение, дверь/окно), камеры, медиа-плееры.
Автоматизация и сценарии:
Создание правил "если-то" (триггеры: время, состояние устройства, событие; действия: команды устройствам, уведомления, вызов вебхуков).
Периодические задачи (cron-подобные).
Хранение и выполнение сценариев (последовательности действий).
Голосовой интерфейс (через Voice Module):
Приём текстовых команд (POST /api/voice/command).
Распознавание намерений (intent parsing) для преобразования естественного языка в команды устройствам.
Поддержка контекстных диалогов (сессий) – опционально.
Ответ в виде текста для озвучивания.
API для модулей и внешних клиентов:
REST API (JSON) для всех операций.
WebSocket для реального времени (уведомления об изменениях состояний).
Аутентификация (API-ключи или JWT) для безопасности.
Хранение данных:
SQLite (или другая встраиваемая БД) для устройств, правил, истории событий.
Конфигурация в YAML/JSON.
Логирование и мониторинг:
Запись всех команд, событий, ошибок.
Ротация логов (размер, время).
2.3. Примеры API (для спецификации)
Метод Эндпоинт Описание
POST /api/devices/register Регистрация нового устройства
GET /api/devices Список всех устройств
GET /api/devices/{id} Состояние устройства
POST /api/devices/{id}/command Отправить команду устройству
POST /api/rules Создать правило автоматизации
POST /api/voice/command Отправить текстовую команду (от ассистента)
GET /api/status Статус бэкенда
2.4. Требования к производительности
Низкое потребление RAM (< 200 МБ в простое).
Быстрый отклик на команды (< 500 мс).
Работа 24/7 без перезагрузок.
3. Модуль голосового ассистента (Voice Module)
3.1. Назначение
Обеспечивает голосовое управление умным домом через микрофон и динамик телефона.
3.2. Функциональные требования
Аудиозахват и детекция ключевой фразы:
Постоянное прослушивание микрофона.
Обнаружение ключевой фразы (например, "Окей сервер" или "Слушай") без отправки звука в сеть.
После активации — захват последующей речи до паузы (таймаут тишины) или явной команды окончания.
Распознавание речи (STT):
Локальное распознавание через Vosk (русский язык, компактная модель).
Возврат текста для отправки в основной бэкенд.
Синтез речи (TTS):
Преобразование текстового ответа от бэкенда в речь.
Использование системного TTS Android (через termux-tts-speak или нативное API).
Возможность настройки голоса, скорости, громкости.
Интеграция с основным бэкендом:
Отправка распознанного текста по HTTP в Central Hub.
Получение ответа (текст для озвучивания или команда "ничего не говорить").
Озвучивание ответа.
Аудиоарбитр (встроенный):
Управление доступом к микрофону и динамику.
Приоритетная очередь (приоритеты: 1 – системные модули, 2 – голосовой ассистент, 3 – уведомления).
Поддержка будущих модулей (OpenClaw, нотифаер и др.), которые могут запрашивать аудио через API арбитра.
При конфликте – сохранение контекста прерванного диалога (если нужно).
Управление состоянием:
Запуск и остановка по требованию (может работать постоянно).
Возможность временно отключать микрофон (например, по API).
3.3. API модуля (для внешних модулей)
Модуль предоставляет HTTP API (например, порт 8082) для других модулей:
Метод Эндпоинт Описание
POST /audio/request Запрос на захват аудио (с указанием приоритета, режима)
POST /audio/release Освобождение аудиоресурсов
POST /tts/speak Воспроизвести текст через динамик (однонаправленное уведомление)
3.4. Конфигурация
Ключевая фраза (настраивается).
Путь к модели Vosk.
URL основного бэкенда.
Параметры TTS.
Порт для API арбитра.
4. Модуль RKHomeHub
4.1. Назначение
Локальный сервер для обслуживания нескольких Android-приложений на других устройствах (например, приложение для управления умным домом, дашборд). Хранит данные, специфичные для этих приложений, и предоставляет к ним API.
4.2. Функциональные требования
Локальное хранилище данных:
Регистрация клиентов (Android-приложений) с уникальными ID.
Хранение произвольных JSON-данных для каждого клиента (ключ-значение).
Поддержка синхронизации данных между клиентами (опционально).
Автоматическая очистка устаревших данных.
API для Android-приложений:
CRUD операции над данными (чтение, запись, удаление, обновление).
Поддержка подписок на изменения (WebSocket или long polling).
Аутентификация по токену (простому, без сложной безопасности, т.к. локальная сеть).
Независимость от основного бэкенда:
Может работать без Central Hub.
При наличии Central Hub – может интегрироваться через него (например, публиковать свои данные как устройства умного дома).
Минимальное потребление ресурсов:
RAM < 50 МБ.
Хранение данных в SQLite или плоских файлах.
4.3. Пример API
Метод Эндпоинт Описание
POST /api/client/register Регистрация нового клиента
GET /api/data/{client_id}/{key} Получить значение
POST /api/data/{client_id} Сохранить/обновить значение
DELETE /api/data/{client_id}/{key} Удалить ключ
GET /api/status Статус
5. Взаимодействие между компонентами
flowchart TD
subgraph Xperia XZ1
A[Central Hub<br>умный дом]
B[Voice Module]
C[RKHomeHub]
D[Будущие модули<br>OpenClaw, Notifier]
end
subgraph Внешние устройства
E[Android-приложения]
F[Пользовательский голос]
end
F -->|голос| B
B -->|текст команды| A
A -->|текст ответа| B
B -->|озвучка| F
A <-->|опционально| C
E <-->|API| C
D <-->|аудио запросы| B
D <-->|команды/статус| A
Правила взаимодействия:
Voice Module отправляет текстовые команды в Central Hub (POST /api/voice/command).
Central Hub обрабатывает команды, управляет устройствами, возвращает ответ.
Voice Module озвучивает ответ.
RKHomeHub работает независимо, его клиенты – Android-приложения.
Будущие модули (OpenClaw, нотифаер) регистрируются в Central Hub и могут запрашивать аудио через Voice Module (через API арбитра).
6. Общие требования к реализации
Платформа:
Xperia XZ1 (Android 8+, ARM64, 4 ГБ RAM).
Root (Magisk), ACC для контроля заряда.
Termux с поддержкой termux-api, termux-tts-speak, termux-microphone-record.
Автозапуск всех трёх бэкендов при загрузке (через Termux:Boot).
Языки и технологии (на усмотрение агента):
Central Hub: предпочтительно Go (высокая производительность, малый размер).
Voice Module: Python (быстрая разработка, готовые биндинги Vosk) или Go (с обёртками).
RKHomeHub: Go (лёгкий, простой).
Коммуникация:
HTTP/JSON между компонентами (локальный порт, например 8080 для Central Hub, 8081 для Voice Module API, 8082 для RKHomeHub).
WebSocket для событий реального времени (опционально).
Конфигурация:
Единый конфигурационный файл (YAML) для всех компонентов, либо отдельные файлы.
Параметры: IP-адреса, порты, пути к моделям, URL внешних API.
Логирование:
Каждый компонент пишет логи в отдельный файл в /sdcard/logs/.
Ротация: размер 10 МБ, хранить 5 файлов.
Документация для агента:
Инструкция по сборке (если требуется компиляция).
Инструкция по развёртыванию на телефоне.
Примеры API-запросов.
7. Критерии успешной реализации
Central Hub запускается и отвечает на API-запросы. Можно зарегистрировать тестовое устройство, отправить команду, получить ответ.
Voice Module активируется по ключевой фразе, распознаёт тестовую команду ("включи свет"), отправляет в Central Hub, получает ответ и озвучивает его.
Аудиоарбитр корректно обрабатывает конфликтные запросы (например, одновременный запрос от Voice Module и симулированного модуля с более высоким приоритетом).
RKHomeHub позволяет Android-приложению (симулированному) сохранить и прочитать данные.
Все три компонента работают одновременно без взаимных блокировок и утечек памяти в течение 24 часов.
Управление через ADB/SSH возможно (логи, рестарт).
8. Дальнейшее расширение (не требуется сейчас, но для спецификации)
Добавление веб-интерфейса для управления умным домом.
Поддержка MQTT для интеграции с внешними платформами.
Графический интерфейс на телефоне (через нативное приложение) – но из-за разбитого экрана не актуально.
Локальный LLM (например, через llama.cpp) для обработки команд без интернета.
Итог для агента: Агент должен создать три независимых проекта (каждый в своей директории) с полным исходным кодом, конфигурациями, скриптами развёртывания и инструкцией. Основной бэкенд (Central Hub) и RKHomeHub – на Go, Voice Module – на Python или Go. Взаимодействие через локальный HTTP. Всё должно работать на Xperia XZ1 под управлением Termux.
Ваше - (вольное) обращение, со знаками - препинания, (доводит) - до, нервного, - тика
Не надо так, пожалуйста, лучше не использовать их вообще, чем щедро рассыпать игнорируя всякие правила языка - читаемость только повысится
Проблема самоидентификации растёт из того, что понятие "я" применимо только к ограниченной области философии, и уж никак не к науке, а его пытаются пихать везде. Нет никакого "я" объективно, это социальный конструкт. Поэтому вопрос "который из наблюдателей в ветвлении в многомировой интерпретации является мной" попросту не имеет смысла. Определение этого "я" недостаточно конкретно по аналогии с идентичностью в парадоксе корабля тесея, и подходить к вопросу стоит ровно так же как к этому парадоксу - переформулировать в однозначных терминах.
Статья хорошая, хоть и длинная, наверное удобнее было бы разбить на несколько
С того, что там об этом прямо просят? Как минимум в любой статье "как проходить собеседования в ит" одной из первых строчек прописано - проговаривайте свои рассуждения вслух. Это аксиома. Иначе сложно оценить уровень - ты можешь случайно угадать нужную строчку, а можешь всё в принципе правильно соображать и иметь достаточную квалификацию, но на собесе забыть какой-то момент который в рабочих условиях гуглится и работе не мешает.
И то, что ответы могут ожидаться разные, этот фактор никак не нивелирует.
На собеседованиях над ответом думают вслух, в этом и смысл. Интервьюеру важнее проверить ход мыслей, чем точно запомненные детали реализации, и из того, с чего соискатель начинает свои рассуждения, какие делает предположения, как быстро отбрасывает неверные, и складывается понимание - понимает ли вообще хоть что-то человек, который к тебе пришёл, или по бумажке читает. Поэтому 4 секунды на то, чтобы начать отвечать - это даже многовато ещё
Если у проекта объективные цели - недостижимые, то заниматься им нет смысла.
Даже с человеческим (английским) синтаксисом задача "сделать лучший язык для нескольких разных сфер" невыполнима просто потому что потому. У вас же пет-проект, которым в пике будут пользоваться три с половиной человека, включая кошку автора, которая случайно влезла в IDE. Ещё и с неисправимым недостатком в виде языка с падежами в основе. Поэтому и относиться к проекту стоит соответствующе. Если хочется поковыряться в том, как работают языки, что-то для себя понять - в принципе можно, но чтобы потом не расстраиваться, лучше заранее снизьте ожидания.
Удобнее читать на английском. Не пиши русскоязычный яп.
Это очень. Плохая. Идея. Всегда.
Тут речь про реализацию, а не идею. Сколько за последнее время в рамках работы над суверенным рунетом было сделано для "того, чтобы могло работать при отключении извне", а сколько для того чтобы "самим отключить изнутри", т.е. те самые агрессивные действия, только не предполагаемые, а реальные? К первому варианту относится сделать рутуб/мессенджер макс, всё. Но нет, конечная цель этих товарищей вовсе не суверенность рунета, а денег заработать, поэтому на "сделать" они не останавливаются, им надо чтобы туда все ушли даже если извне никого не отключали. И начинаются блокировки, на которые, между прочим, деньги тратятся. Более того, это убирает конкуренцию и демотивирует развивать и улучшать сервисы - зачем, если все и так вынуждены пользоваться.
Я не знаю, какая каша в мозгах должна быть, чтобы этого не понимать - хотя учитывая уже сказанное про "блокаду целых стран", примерно представляю, в какую сторону вектор мысли направлен, в сторону "все вокруг злые, спят и видят как бы нас уничтожить, так люди наверху сказали, назло внешним врагам можно с радостью себе
ушиуровень жизни отморозить".Умная мысль пыталась настичь автора на строке "бразильские программисты не написали бразильский язык программирования", но он оказался быстрее, не додумав окончание "хотя у них тоже латиница".
Ответ лежит на поверхности - проблема "нативных языков" не в чармапе. И даже не в нераспространенности языка - сколько в мире носителей китайского и хинди, но никто не пишет код на них. Проблема в формализованности и лаконичности.
Английский структурирован так, что на нём удобно описывать логические структуры, он остаётся человекочитаемым в условиях строгой формализации и оптимизации синтаксиса и не расходится в разговорном и кодирующем использовании. define boolean translateYPosition звучит так, как это сказал бы человек в разговорной речи. РасширяемыйВыводОперацияЗапустить - не звучит. Программисты тоже люди, и язык пишется для того, чтобы его читал человек. Русский, с его падежами, склонениями и произвольным порядком слов, соответствует этому требованию хуже, чем практически что угодно. Поэтому никогда и ни в каком мире всякие йоптаскрипты не станут ничем большим, чем просто прикол и мемчик.
Платформа абсолютно мёртвая. Без вливания денег в раскрутку своего аккаунта заказов не получить ни одного. В целом, заказов смешное количество, для крупнейшей в РФ площадки.
Если 10 лет назад иметь там аккаунт было ещё хоть сколько-то резонно, то сейчас точно нет, парсинг по чатам в тележеньке даёт кратно лучший результат, чем площадка, нацеленная на это - о многом говорит. Закапывайте стюардессу обратно.
Хотел возразить ранее в ветке, но теперь понимаю, что бессмысленно, такие кадры либо на зарплате и сами не верят в то что пишут, либо ложку с трудом до рта доносят, куда там до мыслительной деятельности и тем более дискуссий. Спасибо, что раскрыли свой богатый внутренний мир подробнее и сэкономили время.
А с чего бы им от этого беситься? У национального суверенного мессенджера разве есть американская аудитория, чтобы каналы представляли интерес для ЦРУ и ФБР? На кой им этот неуловимый Джо?
Проблема в том, что ИИ-отклики сделаны для того, чтобы проходить ИИ-фильтры. Если твоё резюме не будет соответствовать тому, что ожидает машина, до человека-рекрутёра оно просто не дойдёт. Статья, начисто игнорирующая этот факт, абсолютно лишена смысла.
У этой модели всё довольно неплохо с охлаждением, плюс телефон висит на стене а не лежит - пока полёт нормальный, не греется
Отрепорчу через пару лет, если не забуду)
Python вполне запускается без докера в termux
Не решал :) не так часто мне приходится озвучивать цифры и аббревиатуры в диалогах с ассистентом
В любом случае, лучшего локального решения для TTS так и не нашёл
Не просто, автор даже на хабре где-то писал, что модель под андроид собирать не планирует потому что запроса на это нет и не стоит оно того
Тут вопрос не в деньгах даже, а в интересном проекте. Думаю, на этот вопрос работает правило "если надо объяснять - значит, не надо объяснять" :)
Так речь о старых моделях, которые без проблем рутируются и кастомные прошивки ставятся, а железо в них ещё очень даже ничего
В теории можно, лежит у меня ещё Redmi Note 4X, можно и его под что-то простенькое, просто X1 был под рукой, а для Vosk, как ни крути, нужно довольно много памяти под полную модельку, если выбросить часть с ассистентом - то можно и на совсем старом такое завести без проблем
Благодарю!
Скрытый текст