[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"content-home":3},{"posts":4,"photos":464},[5,119,207,299,374],{"id":6,"title":7,"slug":8,"excerpt":9,"cover_alt":10,"cover_position":11,"reading_time":12,"seo_title":13,"seo_description":14,"date_published":15,"date_modified":11,"source_lead":11,"tag":16,"blocks":20,"cover":116},"041ba44f-22a2-450c-877d-d1481107b220","Предприятие одного человека: как устроен мой ИИ-штаб","kak-ustroen-moy-ai-shtab","Я работаю один: без штата и без ассистента в привычном смысле. При этом параллельно живут AI-направление крупной платформы, клиентские проекты и собственные продукты. Обычно на этом месте начинается рассказ про дисциплину и подъём в пять утра. У меня скучнее: я инженер и собрал себе штаб.","Схема ИИ-штаба: красный узел в центре и сеть связанных с ним агентов на тёмном фоне",null,4,"Предприятие одного человека: мой ИИ-штаб изнутри","Как один человек работает как команда: база знаний на markdown, голосовой ввод, автоматический разбор звонков и AI-агенты. Опыт инженера-практика.","2026-07-31T07:00:00.000Z",{"name":17,"slug":18,"color":19},"Инструменты","instrumenty","#3F7300",[21,26,30,36,39,43,47,51,55,59,63,67,71,75,79,83,87,91,104,108,112],{"sort":22,"collection":23,"item":24},1,"block_text",{"body":9,"is_lead":25,"footnote":11},false,{"sort":27,"collection":23,"item":28},2,{"body":29,"is_lead":25,"footnote":11},"One Man Enterprise - предприятие одного человека - это не фриланс в духе \"беру задачи, пока хватает рук\". Это компания, в которой роли закрыты не людьми, а системами: секретарь ведёт протоколы звонков, аналитик помнит все решения, ассистент готовит черновики. В этой рубрике я буду показывать своё предприятие изнутри - без теории, на том, что реально крутится у меня каждый день.",{"sort":31,"collection":32,"item":33},3,"block_heading",{"heading":34,"level":35},"Фундамент: папки и markdown","h2",{"sort":12,"collection":23,"item":37},{"body":38,"is_lead":25,"footnote":11},"Основа штаба разочаровывающе простая: папки и текстовые файлы. Проекты, звонки, решения, брейнштормы, справочники - всё лежит в одном рабочем пространстве обычным markdown. Никакой экзотики: такие файлы читает и человек, и AI-агент.",{"sort":40,"collection":23,"item":41},5,{"body":42,"is_lead":25,"footnote":11},"Это осознанный выбор. Модные базы знаний приходят и уходят, а текст в папках переживёт любой сервис. Когда я подключаю к пространству AI-ассистента (работаю в Claude Code), ему не нужна интеграция с очередным API - он просто читает файлы, как читал бы новый сотрудник, которому выдали доступ к архиву компании.",{"sort":44,"collection":23,"item":45},6,{"body":46,"is_lead":25,"footnote":11},"Ключевой эффект: контекст перестаёт жить в голове. Решение, принятое в марте, лежит в папке решений вместе с обоснованием, почему выбрали именно так. Договорённость с клиентом - в протоколе звонка. Когда я сажусь за задачу, ассистент собирает досье за секунды: что решали, что обещали, где уже наступали на грабли.",{"sort":48,"collection":32,"item":49},7,{"heading":50,"level":35},"Вход: голос вместо клавиатуры",{"sort":52,"collection":23,"item":53},8,{"body":54,"is_lead":25,"footnote":11},"Значительная часть моего ввода - голос. Я собрал себе нативную утилиту диктовки для macOS (WhisperKey - про неё отдельная статья в рубрике \"Инструменты\"): зажал клавишу, наговорил, отпустил - текст появился в активном приложении. Распознавание идёт прямо на ноутбуке.",{"sort":56,"collection":23,"item":57},9,{"body":58,"is_lead":25,"footnote":11},"Звучит как мелочь, но на практике меняется сам жанр работы: задачи агентам, черновики писем и заметки я наговариваю на ходу, как будто диктую живому помощнику. Скорость мысли выше скорости печати - глупо упираться в клавиатуру.",{"sort":60,"collection":32,"item":61},10,{"heading":62,"level":35},"Звонки, которые разбирают себя сами",{"sort":64,"collection":23,"item":65},11,{"body":66,"is_lead":25,"footnote":11},"Созвоны - главный источник контекста и главный кандидат на его потерю. У меня записи звонков ежедневно автоматически скачиваются, транскрибируются и раскладываются в архив: один файл на звонок - дата, участники, о чём говорили, что решили, какие задачи и открытые вопросы остались.",{"sort":68,"collection":23,"item":69},12,{"body":70,"is_lead":25,"footnote":11},"Собеседник через месяц спрашивает: \"А что мы решили по интеграции?\" Ответ занимает минуту, потому что протокол существует, а не \"надо переслушать час записи\". Пайплайн распознавания и диаризации (кто именно что сказал) я тоже собрал сам - он работает на моём железе.",{"sort":72,"collection":32,"item":73},13,{"heading":74,"level":35},"Навыки: повторяемое превращается в инструкции",{"sort":76,"collection":23,"item":77},14,{"body":78,"is_lead":25,"footnote":11},"Третий слой - навыки. Каждый повторяемый процесс - оценка проекта, разбор звонка, выгрузка отчёта - оформлен как инструкция для агента: когда применять, какие шаги, какие грабли известны. После каждого использования инструкция обновляется: наступил на новые грабли - дописал.",{"sort":80,"collection":23,"item":81},15,{"body":82,"is_lead":25,"footnote":11},"В этом главное отличие от \"поиграться с нейросетями\". Разовый промпт умирает вместе с чатом. Инструкция-навык накапливает опыт, как накапливает его сотрудник, - только не увольняется и ничего не забывает.",{"sort":84,"collection":32,"item":85},16,{"heading":86,"level":35},"Принципы",{"sort":88,"collection":23,"item":89},17,{"body":90,"is_lead":25,"footnote":11},"Три правила, на которых всё держится:",{"sort":92,"collection":93,"item":94},18,"block_list",{"list_style":95,"items":96},"dash",[97,100,102],{"lead":98,"text":99,"highlight":25},"","Доступы, а не обещания. Агент получает ровно те ключи и права, которые нужны для задачи. Сможет - сделает, а не \"напомни мне потом\".",{"lead":98,"text":101,"highlight":25},"Проверка реальным запуском. Работу агента я принимаю как работу подрядчика: прогоном, тестом, скриншотом. Финальный арбитр - запуск, а не уверенный тон.",{"lead":98,"text":103,"highlight":25},"Порядок после себя. Каждая задача заканчивается актуализацией документации. Иначе через месяц штаб превращается в свалку.",{"sort":105,"collection":32,"item":106},19,{"heading":107,"level":35},"Что это даёт",{"sort":109,"collection":23,"item":110},20,{"body":111,"is_lead":25,"footnote":11},"Честный ответ - не \"в десять раз больше денег\". Эффект другой: перестаёт теряться контекст. Я не готовлюсь к звонкам по часу, не восстанавливаю договорённости по памяти, не начинаю задачи с чистого листа. Объём, который раньше потребовал бы ассистента, аналитика и половину проджект-менеджера, закрывают системы - а я занимаюсь тем, что действительно требует меня: архитектурой, переговорами, решениями.",{"sort":113,"collection":23,"item":114},21,{"body":115,"is_lead":25,"footnote":11},"Дальше в рубрике - разборы конкретных узлов штаба: как устроен архив звонков, как агенты работают над задачами параллельно, где всё это ломается и что я с этим делаю.",{"id":117,"modified_on":118},"6fcac856-3ace-4310-bfee-fa46678a10ca","2026-08-12T12:31:57.022Z",{"id":120,"title":121,"slug":122,"excerpt":123,"cover_alt":124,"cover_position":11,"reading_time":12,"seo_title":125,"seo_description":126,"date_published":127,"date_modified":11,"source_lead":11,"tag":128,"blocks":132,"cover":205},"8def2704-7cb6-43f0-86f5-cede63eab0d9","Барьер не в деньгах: почему автоматизация в малом бизнесе не начинается","s-chego-nachat-avtomatizaciyu","Летом 2026 года SpeShu.AI опубликовала исследование по итогам 86 глубинных интервью с малым и средним бизнесом. Главная цифра оттуда, на мой взгляд, важнее всех прогнозов про триллионы: 43 процента назвали барьером для внедрения ИИ непонимание точки входа - какой процесс автоматизировать первым.","Человек перед тёмной стеной, в которой открыт узкий проём с красным светом","С чего начать автоматизацию бизнеса: выбор процесса","43% малого бизнеса не знают, какой процесс автоматизировать первым, и 0% называют барьером бюджет. Разбор боли: фильтр выбора и типовые ошибки.","2026-07-30T07:00:00.000Z",{"name":129,"slug":130,"color":131},"Заявки","zayavki","#8F5A00",[133,136,139,142,145,148,151,154,157,163,168,173,178,181,184,193,196,199,202],{"sort":22,"collection":23,"item":134},{"body":135,"is_lead":25,"footnote":11},"Летом 2026 года SpeShu.AI опубликовала исследование по итогам 86 глубинных интервью с малым и средним бизнесом. Главная цифра оттуда, на мой взгляд, важнее всех прогнозов про триллионы: 43 процента назвали барьером для внедрения ИИ непонимание точки входа - какой процесс автоматизировать первым. А бюджет барьером не назвал никто. Ноль процентов.",{"sort":27,"collection":23,"item":137},{"body":138,"is_lead":25,"footnote":11},"То есть барьер управленческий, а не финансовый. Деньги на автоматизацию у бизнеса есть. Нет ответа на вопрос \"с чего начать\" - и это честная боль, потому что процессов много, болят они по-разному, а эффект заранее неочевиден. При этом рынок не ждёт: по данным Сбераналитики на конец 2025 года, 39 процентов российских компаний уже используют ИИ-агентов, а внятная ИИ-стратегия есть только у 22 процентов малого и среднего бизнеса. Используют многие, понимают зачем - единицы.",{"sort":31,"collection":23,"item":140},{"body":141,"is_lead":25,"footnote":11},"Разберу эту боль так, как разбираю её на платных сессиях с собственниками.",{"sort":12,"collection":32,"item":143},{"heading":144,"level":35},"Почему \"начать со всего сразу\" - это не начать",{"sort":40,"collection":23,"item":146},{"body":147,"is_lead":25,"footnote":11},"Типичная заявка звучит так: \"Хотим внедрить ИИ в отдел продаж, маркетинг и документооборот\". За ней обычно стоит не план, а тревога: конкуренты что-то внедряют, надо не отстать.",{"sort":44,"collection":23,"item":149},{"body":150,"is_lead":25,"footnote":11},"Проблема в том, что \"внедрить ИИ везде\" - это не проект, у него нет ни границ, ни бюджета, ни критерия успеха. Такие начинания заканчиваются одинаково: пара оплаченных подписок, один энтузиаст, который \"что-то пробовал\", и вывод \"нам это не подошло\". Хотя не подошёл только способ старта.",{"sort":48,"collection":32,"item":152},{"heading":153,"level":35},"Фильтр: как выбрать первый процесс",{"sort":52,"collection":23,"item":155},{"body":156,"is_lead":25,"footnote":11},"Я прогоняю кандидатов на автоматизацию через четыре вопроса.",{"sort":56,"collection":93,"item":158},{"list_style":159,"items":160},"number",[161],{"lead":98,"text":162,"highlight":25},"Есть ли данные в электронном виде? Excel, CRM, переписки, 1С - неважно. Если процесс живёт на бумаге и в устных договорённостях, сначала его придётся оцифровать, и это отдельный проект. Первым берём тот, где данные уже есть.",{"sort":60,"collection":93,"item":164},{"list_style":159,"items":165},[166],{"lead":98,"text":167,"highlight":25},"Это рутина или разовая задача? Автоматизация окупается повторением. Отчёт, который собирается каждую неделю по три часа, - отличный кандидат. Презентация раз в квартал - нет.",{"sort":64,"collection":93,"item":169},{"list_style":159,"items":170},[171],{"lead":98,"text":172,"highlight":25},"Считается ли эффект в деньгах или часах? \"Станет удобнее\" - не критерий. \"Менеджер тратит 10 часов в неделю на перенос заявок из почты в CRM\" - критерий: часы умножаются на ставку, и цена вопроса известна до старта.",{"sort":68,"collection":93,"item":174},{"list_style":159,"items":175},[176],{"lead":98,"text":177,"highlight":25},"Не ломает ли это работающее? Первый проект должен встать рядом с текущим процессом, а не вместо него. Продажи, которые кормят компанию, - худшее место для экспериментов. Пусть автоматизация сначала готовит черновики отчётов, а не отвечает клиентам от имени фирмы.",{"sort":72,"collection":23,"item":179},{"body":180,"is_lead":25,"footnote":11},"Процесс, прошедший все четыре вопроса, почти всегда выглядит скучно: отчёты, переносы данных между системами, первичная обработка заявок, расшифровка и разбор звонков. Это нормально. Первая автоматизация и должна быть скучной - её задача не удивить, а окупиться и создать доверие к следующему шагу.",{"sort":76,"collection":32,"item":182},{"heading":183,"level":35},"Три типовые ошибки старта",{"sort":80,"collection":93,"item":185},{"list_style":95,"items":186},[187,189,191],{"lead":98,"text":188,"highlight":25},"Начать с самого сложного. \"Пусть ИИ сам продаёт\" - худший первый проект: максимум неопределённости, максимум цены ошибки. К нему стоит приходить третьим-четвёртым шагом, когда на простых задачах уже понятно, как ваша команда живёт с автоматизацией.",{"lead":98,"text":190,"highlight":25},"Автоматизировать хаос. Если процесс в голове у одного сотрудника и каждый раз идёт по-разному, автоматизировать нечего - сначала процесс надо описать. Хорошая новость: описание процесса тоже ускоряется ИИ, это дешевле, чем кажется.",{"lead":98,"text":192,"highlight":25},"Выбирать по хайпу. Инструмент, о котором все говорят, - не аргумент. Аргумент - ваша самая дорогая рутина. Иногда лучший \"ИИ-проект\" - это вообще связка двух систем по API без всякого ИИ.",{"sort":84,"collection":32,"item":194},{"heading":195,"level":35},"С чего начать практически",{"sort":88,"collection":23,"item":197},{"body":198,"is_lead":25,"footnote":11},"Инвентаризация. Час честной работы: выписать, где лежат данные (таблицы, CRM, чаты, учётка), что сотрудники делают руками каждую неделю и чья экспертиза живёт только в чьей-то голове. Из этого списка по фильтру выше почти всегда выделяются два-три кандидата - и по каждому можно прикинуть эффект в рублях до того, как потрачен первый рубль.",{"sort":92,"collection":23,"item":200},{"body":201,"is_lead":25,"footnote":11},"Кстати, готовность платить у рынка уже сформирована: по тому же исследованию SpeShu.AI, малый бизнес готов отдавать за ИИ-инструменты 10-15 тысяч рублей в месяц, команды от десяти человек - 75-100 тысяч. Вопрос не в том, тратить ли, а в том, чтобы первый потраченный рубль попал в правильный процесс.",{"sort":105,"collection":23,"item":203},{"body":204,"is_lead":25,"footnote":11},"Я делаю такую инвентаризацию в формате платной диагностики \"Карта автоматизации\": сессия полтора часа плюс письменная карта - где данные, какие процессы-кандидаты, что каждый даст в рублях и со сметой первого шага. Но самостоятельный проход по фильтру из четырёх вопросов бесплатен и уже отсекает большинство дорогих ошибок. Начните с него.",{"id":206,"modified_on":118},"cbb9b115-b0c7-4d52-97c9-3a3a0766d3d6",{"id":208,"title":209,"slug":210,"excerpt":211,"cover_alt":212,"cover_position":11,"reading_time":31,"seo_title":213,"seo_description":214,"date_published":215,"date_modified":11,"source_lead":11,"tag":216,"blocks":220,"cover":297},"21f2cadf-a9dd-4c74-b1bc-b51af271c23c","Кейс: 134 воркфлоу в проде и один инженер","134-workflow-v-prode","AI-направление закрытой community-платформы я спроектировал и собрал с нуля практически в одиночку. Этот кейс - о том, как один инженер держит 134 продакшн-воркфлоу так, чтобы система развивалась, а не осыпалась.","Карта продакшн-воркфлоу: десятки узлов, соединённых линиями, часть маршрутов горит красным","134 воркфлоу n8n в проде: как их строит и ведёт один инженер","Кейс: один инженер собрал AI-направление low-code платформы с нуля и держит его в проде - документация внутри воркфлоу, код в git, стенды dev\u002Fstage\u002Fprod и AI-ассистент вместо второго инженера.","2026-07-29T07:00:00.000Z",{"name":217,"slug":218,"color":219},"Продажи","prodazhi","#C10000",[221,224,227,230,233,236,239,243,246,249,252,255,258,261,264,267,270,273,276,279,282,285],{"sort":22,"collection":23,"item":222},{"body":223,"is_lead":25,"footnote":11},"Последние годы я веду AI-направление закрытой community-платформы (проект под NDA, поэтому без имён и деталей продукта). Веду - потому что сам его и сделал: спроектировал и собрал с нуля, практически в одиночку. AI-агент клуба, рекомендации знакомств, поиск людей под запрос, рассылки, схемы данных и прикладная архитектура - и примерно 134 продакшн-воркфлоу n8n, которые всё это исполняют.\n\nСтек: Directus + n8n + React, поиск на векторной базе Qdrant, пять арендаторов на одной кодовой базе, полный набор стендов - dev, stage, prod. Стенды, промоушен и дисциплину сопровождения, о которых пойдёт речь дальше, я тоже довёл до нынешнего вида сам.",{"sort":27,"collection":23,"item":225},{"body":226,"is_lead":25,"footnote":11},"Этот кейс - не про то, как построить 134 воркфлоу. Построить как раз несложно. Он про то, как один инженер держит их в проде так, чтобы система развивалась, а не осыпалась.",{"sort":31,"collection":32,"item":228},{"heading":229,"level":35},"Где на самом деле потолок low-code",{"sort":12,"collection":23,"item":231},{"body":232,"is_lead":25,"footnote":11},"Low-code продаётся как \"быстро собрал - работает\". Это правда, но потолок наступает не при сборке, а при сопровождении. Сто с лишним воркфлоу невозможно держать в голове: через полгода собственная схема читается как чужая, любое изменение может задеть соседний процесс, а онбординг нового человека занимает недели.",{"sort":40,"collection":23,"item":234},{"body":235,"is_lead":25,"footnote":11},"Обычный финал такой истории - \"у нас есть человек, который знает, как оно работает, не трогайте его\". Это не масштабируется и делает проект заложником одной головы. Меня такой финал не устраивал, потому что эта голова - моя.",{"sort":44,"collection":32,"item":237},{"heading":238,"level":35},"Что держит систему",{"sort":48,"collection":32,"item":240},{"heading":241,"level":242},"Документация живёт внутри воркфлоу","h3",{"sort":52,"collection":23,"item":244},{"body":245,"is_lead":25,"footnote":11},"У каждого воркфлоу есть заметка \"О процессе\" прямо на холсте: зачем процесс существует, откуда приходят данные, куда уходят, какие есть неочевидные места. Та же заметка зеркалится в markdown-базу знаний проекта.",{"sort":56,"collection":23,"item":247},{"body":248,"is_lead":25,"footnote":11},"Правило простое: заметка пишется для того, кто открыл воркфлоу впервые. На практике \"тот, кто открыл впервые\" - это я сам через полгода и AI-ассистент, которому нужен контекст. Расследование \"почему тут так\" сокращается с часа археологии по нодам до двух минут чтения.",{"sort":60,"collection":32,"item":250},{"heading":251,"level":242},"Воркфлоу - это код в git",{"sort":64,"collection":23,"item":253},{"body":254,"is_lead":25,"footnote":11},"Изменения в воркфлоу идут через репозиторий, а не мышкой на проде. Экспорт в файлы, версии, диффы, откат - всё, к чему привыкли в обычной разработке, работает и для low-code. Когда что-то сломалось, я смотрю дифф, а не вспоминаю, \"что я там вчера кликал\".",{"sort":68,"collection":32,"item":256},{"heading":257,"level":242},"Стенды и управляемый промоушен",{"sort":72,"collection":23,"item":259},{"body":260,"is_lead":25,"footnote":11},"Dev - верстак: здесь можно ломать. Stage - репетиция. Prod - только то, что прошло первые два. Идентификаторы воркфлоу и учёток на стендах выровнены, поэтому перенос изменения - это управляемая процедура, а не ручное пересобирание \"по образцу\".",{"sort":76,"collection":23,"item":262},{"body":263,"is_lead":25,"footnote":11},"Скучно? Да. Но именно скучные процедуры позволяют одному человеку спокойно катить изменения в систему, которой ежедневно пользуются живые люди у пяти арендаторов.",{"sort":80,"collection":32,"item":265},{"heading":266,"level":242},"AI-ассистент как второй инженер",{"sort":84,"collection":23,"item":268},{"body":269,"is_lead":25,"footnote":11},"Рутину сопровождения я отдаю AI-агенту: инвентаризация воркфлоу, сверка стендов между собой, поиск \"куда ещё ходит эта коллекция\", черновики тех самых заметок \"О процессе\". Здесь замыкается круг: агент эффективен ровно потому, что первые три пункта дали ему читаемую систему - документацию, файлы в git, предсказуемые стенды.",{"sort":88,"collection":23,"item":271},{"body":272,"is_lead":25,"footnote":11},"Это, пожалуй, главный вывод кейса: AI-ассистент не компенсирует бардак, он умножает порядок. На хаосе он умножает хаос.",{"sort":92,"collection":32,"item":274},{"heading":275,"level":35},"Результат",{"sort":105,"collection":23,"item":277},{"body":278,"is_lead":25,"footnote":11},"Один инженер спроектировал, построил и ведёт AI-направление платформы на пять арендаторов: развитие, сопровождение и прод-инциденты - без \"человека-энциклопедии\" в единственном экземпляре, потому что знание о системе лежит в самой системе. Новая фича начинается с чтения заметок, а не с раскопок. Инцидент - с диффа, а не с паники.",{"sort":109,"collection":23,"item":280},{"body":281,"is_lead":25,"footnote":11},"Отдельный бонус всплыл позже: когда понадобилось передавать часть процессов коллегам, онбординг свёлся к \"открой воркфлоу и прочитай заметку\". Документация, написанная для себя-через-полгода, оказалась готовой документацией для кого угодно.",{"sort":113,"collection":32,"item":283},{"heading":284,"level":35},"Что забрать себе",{"sort":286,"collection":93,"item":287},22,{"list_style":95,"items":288},[289,291,293,295],{"lead":98,"text":290,"highlight":25},"Если у вас в n8n, Make или Zapier больше двадцати сценариев и ни у одного нет описания - у вас уже техдолг, просто он ещё не предъявлен к оплате.",{"lead":98,"text":292,"highlight":25},"Документация внутри инструмента работает лучше, чем вики \"где-то рядом\", - потому что её видно в момент работы.",{"lead":98,"text":294,"highlight":25},"Стенды нужны low-code так же, как обычному коду. \"Поправим на проде, там одна нода\" - так начинается каждая вторая авария.",{"lead":98,"text":296,"highlight":25},"Порядок в системе - это не эстетика. Это условие, при котором и человек, и AI-агент могут её обслуживать дёшево.",{"id":298,"modified_on":118},"92803fba-04d2-4d4e-8bf0-32a5579b5d3e",{"id":300,"title":301,"slug":302,"excerpt":303,"cover_alt":304,"cover_position":11,"reading_time":31,"seo_title":305,"seo_description":306,"date_published":307,"date_modified":11,"source_lead":11,"tag":308,"blocks":309,"cover":371},"0f6763a5-5ff7-4e0b-ae3b-c96ddc39c118","WhisperKey: диктовка для Мака, которую я собрал под себя","whisperkey-diktovka-dlya-maka","Значительная часть моей работы - это текст: задачи агентам, письма, заметки, протоколы. В какой-то момент я посчитал очевидное: говорю я сильно быстрее, чем печатаю. Осталось найти инструмент, который превращает речь в текст в любом приложении - в мессенджере, в редакторе, в терминале.","Красная звуковая волна превращается в строки текста рядом с силуэтом ноутбука","WhisperKey: локальная диктовка для macOS на whisper.cpp","Как я собрал нативную macOS-утилиту диктовки: whisper.cpp на Neural Engine, глобальный хоткей, вставка текста в любое приложение. Грабли и выводы.","2026-07-28T07:00:00.000Z",{"name":17,"slug":18,"color":19},[310,312,315,318,321,324,327,330,333,336,347,350,353,356,359,362,365,368],{"sort":22,"collection":23,"item":311},{"body":303,"is_lead":25,"footnote":11},{"sort":27,"collection":23,"item":313},{"body":314,"is_lead":25,"footnote":11},"Готовые варианты не подошли: встроенная диктовка macOS слаба для русского, облачные сервисы означают подписку и зависимость от сети, а большинство утилит работают только в своём окне. Мне нужна была системная вещь: зажал клавишу где угодно - наговорил - текст появился там, где стоит курсор.",{"sort":31,"collection":23,"item":316},{"body":317,"is_lead":25,"footnote":11},"Я такую вещь собрал. Называется WhisperKey, живёт в строке меню Мака, и через неё сейчас проходит заметная часть моего ввода - включая черновик этой статьи.",{"sort":12,"collection":32,"item":319},{"heading":320,"level":35},"Что получилось",{"sort":40,"collection":23,"item":322},{"body":323,"is_lead":25,"footnote":11},"Механика push-to-talk, как в рации: зажал правый Option - по краям экрана загорается оранжевое свечение и появляется плашка \"Говорите...\" - говоришь - отпустил. Секунда-другая на распознавание, и текст вставляется в активное приложение, в то поле, где стоял курсор. Работает везде: Telegram, браузер, IDE, терминал.",{"sort":44,"collection":23,"item":325},{"body":326,"is_lead":25,"footnote":11},"Под капотом - whisper.cpp, открытая реализация распознавания речи от Георгия Герганова, модель large-v3-turbo. Вся обработка идёт прямо на ноутбуке: тяжёлая часть модели исполняется на Neural Engine - нейропроцессоре, который стоит в каждом Маке на Apple Silicon и у большинства пользователей просто простаивает. Интернет для работы не нужен, подписки нет.",{"sort":48,"collection":23,"item":328},{"body":329,"is_lead":25,"footnote":11},"Из приятного в быту: пунктуацию и заглавные буквы модель расставляет сама, во время диктовки видно живое превью распознанного, а после вставки утилита восстанавливает содержимое буфера обмена - то, что вы копировали до диктовки, не теряется.",{"sort":52,"collection":32,"item":331},{"heading":332,"level":35},"Инженерная часть: где были грабли",{"sort":56,"collection":23,"item":334},{"body":335,"is_lead":25,"footnote":11},"Рассказываю не ради жалоб - эти грабли сэкономят время любому, кто соберётся делать системную утилиту под macOS.",{"sort":60,"collection":93,"item":337},{"list_style":95,"items":338},[339,341,343,345],{"lead":98,"text":340,"highlight":25},"Разрешения macOS. Глобальный хоткей и синтез вставки требуют разрешения Accessibility, запись - разрешения на микрофон. Главная подлость: при смене подписи приложения macOS молча отзывает Accessibility, и хоткей \"просто перестаёт работать\". Пришлось учить приложение замечать это и восстанавливать активацию самому.",{"lead":98,"text":342,"highlight":25},"Вставка текста. Надёжнее всего оказался путь через буфер обмена и синтетический Cmd+V - с восстановлением прежнего содержимого буфера после вставки.",{"lead":98,"text":344,"highlight":25},"Потоковое распознавание. Whisper обрабатывает звук скользящим окном, поэтому живое превью может \"передумывать\" слова на ходу. Решение - два прохода: черновое превью во время речи и точный финальный проход после отпускания клавиши.",{"lead":98,"text":346,"highlight":25},"Дистрибуция. Установочный образ получился крошечным, примерно 1.8 мегабайта: модель (примерно 1.6 гигабайта) не вшита в приложение, а скачивается при первом запуске с индикатором прогресса.",{"sort":64,"collection":32,"item":348},{"heading":349,"level":35},"Как это было построено",{"sort":68,"collection":23,"item":351},{"body":352,"is_lead":25,"footnote":11},"Отдельный пласт этой истории - процесс. Swift не был моим основным стеком: я бэкенд- и AI-инженер, а не macOS-разработчик. Приложение построено в паре с AI-агентом: архитектуру, ревью и приёмку держал я, значительную часть кода писал агент, а на каждые грабли из списка выше мы наступали и разбирали их вместе. Ядро при этом накрыто тестами, а сборка - от компиляции whisper.cpp до готового образа - собрана в воспроизводимые скрипты.",{"sort":72,"collection":23,"item":354},{"body":355,"is_lead":25,"footnote":11},"Десять лет назад такой проект означал бы нанять macOS-разработчика или похоронить идею. Сейчас это несколько вечеров инженерной работы. Это и есть главный сдвиг, который я вижу в 2026 году: персональный софт - инструмент, заточенный ровно под твой рабочий процесс, - перестал быть роскошью.",{"sort":76,"collection":32,"item":357},{"heading":358,"level":35},"Ограничения, честно",{"sort":80,"collection":23,"item":360},{"body":361,"is_lead":25,"footnote":11},"Абзацы модель не расставляет - для длинных текстов нужна пост-обработка через LLM, диктую я всё же кусками. Превью во время речи не дословное - точен только финальный проход. И это Mac-only история: всё завязано на Apple Silicon.",{"sort":84,"collection":32,"item":363},{"heading":364,"level":35},"Что забрать из этого кейса",{"sort":88,"collection":23,"item":366},{"body":367,"is_lead":25,"footnote":11},"Даже если вам не нужна диктовка, тут есть переносимая мысль. Инвентаризация собственной рутины - \"что я делаю руками по многу раз в день\" - работает не только для бизнеса, но и для личного рабочего процесса. Ввод текста оказался моей самой частой операцией, и инструмент под неё окупается каждый день.",{"sort":92,"collection":23,"item":369},{"body":370,"is_lead":25,"footnote":11},"А если нужна именно диктовка - смотрите в сторону whisper.cpp: связка \"открытая модель плюс нейропроцессор, который уже есть в вашем ноутбуке\" сегодня даёт качество распознавания русского, за которое ещё недавно просили подписку.",{"id":372,"modified_on":373},"bf2d6a74-c875-4be3-af3e-aa09550926ea","2026-08-12T14:26:50.583Z",{"id":375,"title":376,"slug":377,"excerpt":378,"cover_alt":379,"cover_position":11,"reading_time":31,"seo_title":380,"seo_description":381,"date_published":382,"date_modified":11,"source_lead":11,"tag":383,"blocks":384,"cover":462},"1c2466c3-e456-46c8-8ab8-4645622e31f9","Кейс: движок Telegram-ботов, где новый бот - это записи в базе","telegram-boty-na-state-machine","В 2025 году я делал серию Telegram-ботов для AI-генерации изображений и видео. Боты похожи, но не одинаковы: разные сценарии диалога, разные тарифы, разные наборы кнопок. Классическая ситуация, в которой второй бот делается копипастой первого, а к четвёртому у тебя четыре...","Конечный автомат из блоков-записей, собирающийся в силуэт Telegram-бота, один блок подсвечен красным","Telegram-боты на конечном автомате: сценарий в данных","Кейс: движок Telegram-ботов на Directus и n8n. Сценарий диалога хранится записями в базе, и новый бот запускается без переписывания воркфлоу.","2026-07-27T07:00:00.000Z",{"name":217,"slug":218,"color":219},[385,388,391,394,397,400,403,406,415,418,421,424,427,438,441,444,447,450,453,456,459],{"sort":22,"collection":23,"item":386},{"body":387,"is_lead":25,"footnote":11},"В 2025 году я делал серию Telegram-ботов для AI-генерации изображений и видео. Боты похожи, но не одинаковы: разные сценарии диалога, разные тарифы, разные наборы кнопок. Классическая ситуация, в которой второй бот делается копипастой первого, а к четвёртому у тебя четыре расползшихся копии одной и той же логики.",{"sort":27,"collection":23,"item":389},{"body":390,"is_lead":25,"footnote":11},"Этот кейс - про то, как я вместо четырёх ботов сделал один движок. И про принцип, который окупается почти в любом проекте: изменчивое надо выносить из кода в данные.",{"sort":31,"collection":32,"item":392},{"heading":393,"level":35},"Как это делается обычно - и где ломается",{"sort":12,"collection":23,"item":395},{"body":396,"is_lead":25,"footnote":11},"Стандартный путь: сценарий диалога зашивается прямо в воркфлоу n8n или в код бота. Пользователь нажал \"Старт\" - ветка, выбрал стиль - ветка, оплатил - ещё ветка. Пока бот один и сценарий короткий, всё отлично.",{"sort":40,"collection":23,"item":398},{"body":399,"is_lead":25,"footnote":11},"Ломается это в двух местах. Первое - тираж: новый бот означает копию воркфлоу, и с этого момента любую правку нужно вносить во все копии. Второе - правки сценария: поменять текст шага или добавить вопрос может только тот, кто умеет редактировать воркфлоу. Каждая мелочь превращается в задачу разработчику.",{"sort":44,"collection":32,"item":401},{"heading":402,"level":35},"Решение: конечный автомат, сценарий - в базе",{"sort":48,"collection":23,"item":404},{"body":405,"is_lead":25,"footnote":11},"Я построил движок на связке Directus + n8n с конечным автоматом (state machine) в основе. Идея простая:",{"sort":52,"collection":93,"item":407},{"list_style":95,"items":408},[409,411,413],{"lead":98,"text":410,"highlight":25},"Сценарий диалога - это данные, а не код. В Directus живут коллекции этапов и переходов: у этапа - текст сообщения, кнопки, действие (например, запустить генерацию картинки); у перехода - из какого этапа в какой и по какому событию.",{"lead":98,"text":412,"highlight":25},"Состояние пользователя - тоже данные. У каждого пользователя хранится текущий этап диалога.",{"lead":98,"text":414,"highlight":25},"n8n - универсальный исполнитель. Один набор воркфлоу на все боты: пришло сообщение - читаем текущее состояние пользователя - выполняем действие этапа - переводим по подходящему переходу - отвечаем.",{"sort":56,"collection":23,"item":416},{"body":417,"is_lead":25,"footnote":11},"Воркфлоу при этом ничего не знает о конкретном сценарии. Он умеет ровно одно: исполнять любой сценарий, описанный в базе.",{"sort":60,"collection":32,"item":419},{"heading":420,"level":35},"Что это дало",{"sort":64,"collection":23,"item":422},{"body":423,"is_lead":25,"footnote":11},"Главный результат: новый бот заводится записями в базе, без переписывания воркфлоу. Завести этапы, тексты, кнопки и переходы - и бот работает. Движок получился переиспользуемым: запуск следующего бота - это работа с данными, а не новая разработка.",{"sort":68,"collection":23,"item":425},{"body":426,"is_lead":25,"footnote":11},"Побочные эффекты оказались не менее ценными:",{"sort":72,"collection":93,"item":428},{"list_style":95,"items":429},[430,432,434,436],{"lead":98,"text":431,"highlight":25},"Правки сценария перестали быть задачей разработчика. Поменять текст шага или добавить кнопку можно прямо в админке Directus.",{"lead":98,"text":433,"highlight":25},"Отладка стала прозрачной. Состояние каждого пользователя видно в базе: на каком он этапе, как сюда попал. Не нужно реконструировать путь по логам.",{"lead":98,"text":435,"highlight":25},"Логика перестала расползаться. Исправление бага в исполнителе автоматически чинит все боты сразу - копий больше нет.",{"lead":98,"text":437,"highlight":25},"Появилась воронка бесплатно. Раз состояние каждого пользователя лежит в базе, ответ на вопрос \"сколько людей дошло до оплаты и где отваливаются\" - это один запрос к базе, а не отдельный проект по аналитике.",{"sort":76,"collection":32,"item":439},{"heading":440,"level":35},"Границы подхода",{"sort":80,"collection":23,"item":442},{"body":443,"is_lead":25,"footnote":11},"Честности ради - конечный автомат нужен не всегда.",{"sort":84,"collection":23,"item":445},{"body":446,"is_lead":25,"footnote":11},"Если бот - это три линейных шага и он один, автомат избыточен: вы потратите время на движок, который не окупится. Прямолинейный воркфлоу будет дешевле.",{"sort":88,"collection":23,"item":448},{"body":449,"is_lead":25,"footnote":11},"С другой стороны, для свободного диалога автомата мало: когда пользователь пишет что угодно, нужна LLM. Но и здесь автомат не мешает, а помогает: агент со свободным диалогом хорошо живёт поверх автомата, который держит каркас сценария - оплату, лимиты, обязательные шаги. LLM отвечает за разговор, автомат - за то, чтобы бот не потерял пользователя и деньги.",{"sort":92,"collection":23,"item":451},{"body":452,"is_lead":25,"footnote":11},"Точка окупаемости подхода - второй похожий бот или первый сценарий, который придётся часто править. У меня оба условия сработали.",{"sort":105,"collection":32,"item":454},{"heading":455,"level":35},"Вывод",{"sort":109,"collection":23,"item":457},{"body":458,"is_lead":25,"footnote":11},"Принцип старше меня: то, что часто меняется, должно жить в данных, а не в коде. Новизна в том, что связка low-code инструментов - Directus как админка и хранилище, n8n как исполнитель - делает этот принцип дешёвым в реализации. Не нужно писать свою админку и свой интерпретатор сценариев: 80 процентов инфраструктуры уже готово.",{"sort":113,"collection":23,"item":460},{"body":461,"is_lead":25,"footnote":11},"Если у вас в планах \"нам нужен бот, а потом ещё пара похожих\" - закладывайте автомат сразу. Второй бот скажет вам спасибо деньгами и сроками.",{"id":463,"modified_on":118},"e0f5ea2b-4959-4185-9d66-d24283607218",{"0b84279a-a0ec-4052-a77c-5279421ba831":465,"73bb4208-f95d-4b00-a7da-3a8ebc3c7e47":468,"8b856c2a-c0ef-43e8-9651-9ecce01d59e6":471,"d38e23ce-b261-4ce4-a1d8-1966f9d2b5aa":474},{"id":466,"modified_on":467},"0b84279a-a0ec-4052-a77c-5279421ba831","2026-08-10T17:57:03.927Z",{"id":469,"modified_on":470},"73bb4208-f95d-4b00-a7da-3a8ebc3c7e47","2026-08-10T17:57:01.798Z",{"id":472,"modified_on":473},"8b856c2a-c0ef-43e8-9651-9ecce01d59e6","2026-08-10T17:56:59.020Z",{"id":475,"modified_on":476},"d38e23ce-b261-4ce4-a1d8-1966f9d2b5aa","2026-08-10T17:57:04.896Z"]