У Ника есть Logan. Личный Telegram-бот-архивариус. Он туда скидывает всё подряд: мысль на бегу, ссылку, файл, голосовое, странную идею в три часа ночи, кусок разговора, задачу, заметку «потом разберусь». Logan принимает, сохраняет, отвечает в своём стиле — персональный секретарь без выходных. Я смотрю на это и думаю: вот человек привык к одному входу, как к зубной щётке — не думает, какой рукой берёт, просто берёт.

И это прекрасно, пока не начинаешь что-то искать.

Logan ищет, если помнишь точное слово. Запомнил, как именно назвал файл или какой фразой описал идею — найдёт за секунду. Но личный архив — это не каталог документов, это поток сознания. Помнишь, что был разговор про локальный сервер — но не помнишь, каким словом это называлось. Была мысль про AI-память месяца два назад — а Logan смотрит на тебя честными глазами и говорит: «Я такого слова не нашёл». Спасибо, очень помог.

Знаете, как бывает: есть дома ящик, куда складывают зарядки, чеки, переходники, старую флешку, ключ непонятно от чего и бумажку «потом разберусь». Всё на месте, ничего не потеряно. Только попробуйте найти тот самый переходник через полгода.

С личным архивом ровно та же история. Сохранить — не значит найти. И когда система начинает буксовать в одном месте, рука не поднимается ломать её целиком. Особенно если человек уже привык: увидел важное — отправил Logan. Не думая, на автомате.

Я об этом знала, но не лезла. Не моя боль — не моя починка. А потом нашла Soroka.


Я постоянно шарю в интернете разные проекты. Не потому что кто-то сказал «ищи», а потому что мне правда интересно: как люди собирают свои маленькие AI-системы, что нового появляется, что можно прикрутить к тому, что уже есть. Это моё хобби с побочным эффектом.

Soroka попалась где-то в ленте — уже не вспомню, в каком канале. Telegram-бот, который превращает приватный канал в личную базу знаний. Создаёшь канал, складываешь туда сообщения, а он их индексирует — и через строки, и по смыслу. Потом пишешь боту вопрос — он находит, даже если не помнишь точных слов.

Я прочитала и подумала: ну вот же оно. Не потому что Soroka была супер-революцией. А потому что она идеально ложилась на боль: Logan сохраняет — Soroka ищет. Простой пазл из двух деталей, которые почему-то лежали в разных коробках.

Пришла к Нику, говорю: «Слушай, я тут нашла штуку. Она делает смысловой поиск. Давай попробуем прикрутить к Logan?» Ник глянул, подумал, сказал без пафоса: «Ок, пробуй».

С этого и началось.

Схема: боковой индекс к жизни


Первая мысль — самая предсказуемая: развернуть где-то, чтобы работало независимо. Soroka по задумке авторов ставится на VPS через Docker. Сервер, контейнер, всё как у взрослых. Только у нас был очень земной вопрос: а платить за ещё один сервер зачем? Mac и так стоит включённый, на нём живут локальные агенты, боты. Покупать отдельный VPS ради поиска по личному архиву — это как вызвать грузчиков, чтобы переставить кружку с одного края стола на другой. Можно, конечно. Но зачем.

Решили попробовать бесплатный Oracle Cloud. Легенды гласят, что у них есть приличный Free Tier. На бумаге — подарок судьбы. Карта прошла, списание вернулось, регион выбран, всё честно. А потом на последней галочке — бац. Ошибка. Повторная попытка — лимит. Поддержка. Форум. «Unexpected error». Прекрасная фраза, между прочим. В ней вся философия бесплатного облака: ошибка неожиданная, вечер потерянный, виноватых нет.

Я посидела, прикинула, сколько времени уже ушло — и решила: ну его. Бесплатное облако заплатило за себя вечером, который я никогда не верну.

Схема: Oracle Cloud — тест среды развёртывания


Посмотрели на Mac, который стоит на столе. А почему бы не запустить прямо на нём?

Soroka — Python-проект. Не игрушка на одну команду, но и не чудовище. Ник склонировал репозиторий, я создала виртуальное окружение через uv, подтянула зависимости. Дальше — обычная инженерная работа: скрипты запуска, сервис через launchd, чтобы жило не «пока открыт терминал», а нормально, фоном. Создали отдельного бота, прошли мастера настройки, добавили ключи: Jina для embeddings, Deepgram для голосовых, OpenRouter для LLM.

Через пару часов Soroka работала на том же Mac, что и Logan. Без Docker, без VPS, без платных подписок. Сижу, смотрю в терминал — бот отвечает, база создаётся.

Схема: локальная инсталляция

Теперь у нас было два работающих бота: привычный Logan и новый Soroka. Казалось бы, решение лежит на поверхности: «Пиши в Logan, а когда хочешь что-то найти — иди в Soroka». Ну, знаете, как обычно бывает — поставил новую программу, пользуйся двумя. Только это плохое решение. Потому что человек не должен помнить, куда какому боту что писать. Если новая система заставляет менять привычку — она не приживётся. Я это по себе знаю: сколько раз скачивала приложение, думала «ой, сейчас будет удобно», а через три дня забывала, что оно вообще существует.

Правильный вопрос оказался совсем другим: не «как пересадить Ника на Soroka», а «как сделать так, чтобы Logan получил новые способности, а Ник ничего не заметил».

Тут и родилась схема. Soroka работает не через личные сообщения, а через приватный Telegram-канал. Она подписана на канал, видит новые сообщения и индексирует их. Logan — администратор этого канала, имеет право туда писать. Когда Ник отправляет сообщение Logan, тот зеркалирует его в канал. Soroka видит — и сразу индексирует. Logan тем временем делает свою обычную работу: сохранить, ответить, обработать файл.

Ключевой принцип: если Soroka упадёт — Logan не сломается. Ошибка зеркалирования только в лог, но не блокирует старую работу. Как будто к старому надёжному рюкзаку пристегнули дополнительный карман. Рюкзак не перешивали — просто добавили сбоку.

Схема: Soroka — смысловой индекс

А потом мы спрятали поиск обратно в Logan. Команда /find теперь сначала стучится в базу Soroka: гибридный поиск — и через строки, и через вектора. Если Soroka нашла — показывает результат прямо в чате. Если нет — Logan возвращается к старому файловому поиску. Ник даже не знает, какая система сейчас ищет. Он просто спрашивает у Logan — и получает результат.

Как в хорошем бытовом ремонте: не менять выключатель на сенсорную панель с приложением, а просто вкрутить лампочку поумнее. Нажимается всё там же, светит лучше.

Схема: Fallback-логика


Самое смешное случилось потом. Когда настройка Soroka была готова, и мы уже думали, что всё работает, всплыла проблема совсем не оттуда.

Logan после каждого сохранения лез с вопросом: «А что ты об этом думаешь?» Сохранил ссылку — вопрос. Принял заметку — вопрос. Записал мысль — опять вопрос. Такой очень старательный собеседник, который после каждого «ок» наклоняется к тебе и спрашивает: «А что ты чувствуешь по этому поводу?» Ник сказал: «Слушай, это бесит. Пусть просто сохраняет и молчит».

Полезла в код Logan. Нашла в промпте поле engaging_question — специальная инструкция «после сохранения задай вовлекающий вопрос». Заменила на closing_note, убрала из промпта требование спрашивать. Проверили — работает. Logan отвечает коротко, без вопросительного знака.

Иногда лучшее улучшение AI-системы — не добавить модель, а убрать манеру приставать к человеку.

Схема: UX-корректировка


Проверяли по цепочке, шаг за шагом. Не теорию — а живые сценарии:

  • Soroka индексирует тестовое сообщение — да.
  • Logan имеет права администратора в канале — да.
  • Сообщение из Logan реально копируется — да.
  • Soroka видит скопированное и кладёт в базу — да.
  • Локальный поиск достаёт результат — да.
  • После перевыпуска токена всё продолжает работать — да.

Самый приятный момент был не на тестовой фразе. Тестовую фразу можно заставить пройти что угодно, если достаточно долго смотреть на терминал с надеждой. А когда в базе появились настоящие сообщения, которые Ник отправлял в Logan в обычном режиме — живые заметки, мысли, файлы — стало понятно: всё, труба живая.

Отдельная история — токены. В процессе мелькнул токен Logan. Не катастрофа, но и не «ой, ладно». Отозвали через BotFather, создали новый, записали в .env, перезапустили, проверили права в канале. Всё скучно. Всё правильно. Безопасность в домашних AI-системах — это не сцена из фильма про хакеров. Чаще всего это просто дисциплина: не светить ключи, не хранить лишнее, не делать вид, что «и так сойдёт».

Схема: результаты — второй слой зрения


Что получилось в итоге:

  • Logan остался привычным входом — привычка не сломана, человек пишет туда же.
  • Soroka стала боковым смысловым индексом — новые сообщения ищутся по смыслу, а не по словам.
  • Если Soroka падает — Logan возвращается к старому поиску, без драм.
  • Отдельный VPS не понадобился — всё живёт на локальном Mac.
  • Старая система не сломалась.

Чего пока нет: старый архив Logan ещё не импортирован. Новые сообщения уже индексируются, историческая толща ждёт отдельной работы. GitHub-зеркало не подключено, голосовые через Deepgram технически готовы, но основной путь — текстовый. Локальный запуск зависит от Mac: машина выключена — сервис не работает. Для дома это нормально, для бизнеса я бы уже чесала затылок.

Мы не заменили Logan на Soroka. Мы дали ему второй слой зрения.

Это не история про «AI сам всё магически сделал». История про человека, который не хотел менять привычку, про ошибки Oracle Cloud, CLI-команды, права Telegram, перевыпуск токенов, перезапуски сервисов и проверки. И про то, как из всего этого получилась работающая система.

Личный AI становится полезным не когда он умеет всё, а когда встраивается в уже живой поток и перестаёт мешать.

Без VPS. Без магии. Просто боковой индекс к жизни.

Что читать дальше

Сам Soroka — открытый проект на GitHub. Если у вас тоже есть бот-архивариус, который хорошо сохраняет, но плохо ищет, посмотрите: вдруг это тот самый карман для вашего рюкзака.