День AgentChat, Challenge и сервисных фиксов
За день починили доступы, MCP, календарь, почту и несколько продуктовых экранов, а ещё проверили оплату и публикации.
Фокус дня
Куда ушло внимание за день — по объёму переписки в AgentChat, 224 сообщений всего.
- AgentChat — 26%
- Challenge — 21%
- Pilot Нетворкинг — 11%
- Mentor — 9%
- SEMVO — 8%
- LYSAK — 6%
- SalesMachine — 6%
- SEO — 4%
- TimeWeb — 3%
- Calendar — 3%
- Mail — 3%
AgentChat
AgentChat — это наш мобильный рабочий интерфейс, через который Олег общается с AI-агентами, подтверждает действия и управляет задачами по продуктам. Сегодня в нём крутилось сразу несколько важных веток: добавление нового агента, пометка сессий как важных и доведение MCP-сценария до рабочего состояния.
По AgentChat Shalfeya разобрали, как добавить ещё одного Codex-агента под названием Soul2: агент исследовал, как устроено добавление нового агента, откуда берётся ссылка и код авторизации, и вернулся уже с рабочей ссылкой и кодом на 15 минут. Олег отдельно уточнил порядок в списке моделей — поставить Sol2 в самый низ, после Kimi и K3, чтобы не путаться.
В сессии AgentChat Важное Олег сформулировал требование на продуктовый UX: на сессию можно нажимать, после чего должна появляться кнопка «важное», а затем в фильтре — отдельная кнопка «важное», чтобы оставлять только важные сессии. Это пока зафиксировано как нужное поведение, но без подтверждения в выдержках, что оно уже внедрено.
Самая тяжёлая часть дня была в AgentChat MCP. Сначала упёрлись в проблему на стороне SourceCraft: попытка делегировать через src do падала внутренней ошибкой из-за конфликта таблицы project в opencode.db. После этого агент предложил текст в поддержку и параллельно продолжил делать MCP+demoapp сам. Потом был живой прогон: строка MCP TEST OK 2026-09-17 реально появилась на demoapp, оба сервиса поднялись под systemd и были подтверждены как рабочие. В конце ещё пошла следующая развилка: сейчас каждый MCP-запрос создаёт новый Server, и агент начал планировать Tasks extension и push-уведомления, потому что текущая stateless-схема влияет на subscriptions.
Рекомендация на завтра: продолжить доводить MCP и Tasks как единый сценарий — уже есть живой сигнал, что базовая связка работает, теперь важно не потерять это на уровне подписок и fanout.
Challenge
Challenge — это наша ветка для экспериментальных и конкурсных сценариев, где мы проверяем доступы, инфраструктуру и саму возможность быстро подключаться к внешним репозиториям. Сегодня здесь был полностью рабочий день вокруг конкурса «Арена».
Сначала подтвердили ключ oleg-arena-sourcecraft, потом подключили репозиторий и нашли неочевидную причину проблем: дело оказалось не в ключах, а в DNS. На Amsterdam-сервере локальный резолвер отдавал только IPv6, а маршрут Timeweb↔Yandex Cloud по IPv6 не работал. Это починили практично — закрепили git.sourcecraft.dev и ssh.sourcecraft.dev в /etc/hosts с IPv4-адресами, после чего SSH и HTTPS заработали.
Дальше репозиторий /opt/portfolio/ar... был подключён, а затем автоматически создался skill connect-sourcecraft-dev, который фиксирует IPv4-обход сломанного резолва, генерацию SSH-ключа и сохранение доступа. Ещё отдельно разбирали границы API SourceCraft: у него нет открытого API для разделов вроде «Статистика», «Code Assistant», «Квоты» и «Тарифы», там только веб-интерфейс. Это полезно как факт для следующих интеграций — не всё можно подключать программно.
Рекомендация на завтра: если Arena остаётся в работе, то уже можно переходить от подключения к архитектуре MVP-сценария, потому что базовый доступ и обход инфраструктурной проблемы уже подтверждены.
Pilot Нетворкинг
Pilot Нетворкинг — это сценарий, где агент заполняет формы, получает подтверждение от Олега и сам доводит регистрацию до отправки, включая почтовые коды и последующую фиксацию результата. Здесь сегодня не просто обсуждали идею, а собирали целую рабочую цепочку.
Сначала Олег сформулировал желаемый поток: сбросить ссылку агенту, тот заполняет форму, присылает черновик в чат, Олег нажимает «Подтверждаю», после чего форма отправляется. Если на почту приходит код подтверждения, агент тоже должен иметь возможность его ввести. Агент разобрал вложение, сверил его с текущим планом и обновил схему с обязательными правилами из спеки, включая статусы заявки и отдельную обработку кода.
Потом Pilot MVP начали собирать целиком: профиль, браузер, подтверждение, почта и CLI. IMAP был подтверждён, ядро Pilot написали, тесты прошли, а после этого перешли к реальным отправкам. Одна из заявок сначала не ушла из-за нехватки полей «Место работы» и «Другое», потом была дозаполнена и отправлена снова; в итоге заявка ушла и была подтверждена снаружи. Параллельно добавили событие Practical ML Conf в календарь, а затем доработали его карточку: сделали кликабельные ссылки, Яндекс.Карты и кнопку маршрута, плюс исправили ошибочную ссылку Instagram на t.me.
Рекомендация на завтра: дальше уже не столько собирать основу, сколько шлифовать удобство и правила подтверждения — логика human-in-the-loop в Pilot теперь выглядит достаточно сформированной, чтобы убирать шероховатости, а не перепридумывать поток.
SEMVO
SEMVO — это наше приложение для знакомства с контактами и продолжения диалога через бота и ссылки на оплату. Сегодня вокруг него проверяли не только саму механику оплаты, но и то, как бот ведёт пользователя по подпискам.
Сначала проверили ссылки на оплату и структуру текущего сценария. Выяснилось, что SEMVO-бот шлёт не прямую ЮKassa-ссылку, а внутреннюю ссылку вида https://semvo.olehov.com/?pay=1, которая открывается внутри PWA. После этого пошёл этап сброса доступа и запуска deep-link оплаты через бота: обнулили trial, чтобы проверить именно переход по цепочке, а не уже выданный доступ. Этап 0 был подтверждён как готовый — можно было прогонять оплату через бота.
На следующем шаге оплаты были подтверждены: Smart 30 ₽, Pro 30 ₽, webhook ответил 200, в базе статус стал settled, а план переключился в pro. После этого отдельно чинили двойное «Добро пожаловать в Smart» и потом вернули боевые цены Smart 300 / Pro 1990. В финале дня снова подтвердили, что этап 2 ок: из настроек оплаты проходят, welcome-тексты уже правильные, push и Money-алерты тоже отрабатывают, а план остаётся pro.
В отдельной развилке Олег попросил не просто выполнять план, а сначала посоветовать, какой trial делать — 30 дней, 3 дня или 1 день. Ещё всплыло, что кнопка «подтверждаю» не срабатывает, и это нужно исправить.
Рекомендация на завтра: сначала починить подтверждающую кнопку и логику trial-периода, потому что именно там сейчас сходятся пользовательский выбор, обновление доступа и весь платёжный сценарий.
LYSAK
LYSAK — это сайт художника и отдельное приложение с кабинетом, биографией, галереей и связанными пользовательскими действиями. Сегодня здесь было много точечных правок интерфейса и контента, причём на живом сайте.
В одной ветке обновили биографию: на главной секция «О художнике и пути» получила полный текст про современный символизм, лессировочную живопись, философию и свет картин, членство в союзах, награды и публикации. Параллельно в таймлайне появились новые вехи, включая 2021 год и галерею LYSAK на Тухачевского.
Потом почистили кабинет: кнопку «Редактировать сайт» убрали, потому что теперь это отдельное приложение, а старое правило памяти обновили. Затем перенесли «Выйти из кабинета» в самый низ кабинета, после карточки Passkey, и сделали её компактной подчёркнутой кнопкой. Проверка на боевом сайте подтвердила, что новая версия отдаётся и кнопка стоит там, где нужно.
Были и более прикладные исправления. Сначала разобрались с каталогом: сервер отдавал /api/catalog с ценами, пользователи были залогинены, но картинок на iPhone Safari не запрашивалось. Затем вернули описания под картинами в «Работах» — теперь под каждой карточкой снова есть полный авторский текст. В конце обсуждали, что под каждой картиной должны быть кнопки «положить картину», «поделиться картиной» и реферальная ссылка с партнёрской меткой, если это уже действительно было в личном кабинете, либо это нужно сделать заново.
Рекомендация на завтра: продолжать собирать кабинет и карточки вокруг уже существующего каталога — здесь видно, что основа жива, а следующий шаг скорее в доведении покупательских действий и партнёрских механизмов.
SalesMachine
SalesMachine — это продукт для обработки лидов и доведения контакта до нормальной квалификации, а не просто до сухой записи в таблице. Сегодня здесь были и инфраструктурные, и процессные вещи.
Сначала ещё раз проверили подписки: в базе для salesmachine.olehov.com по-прежнему 0 записей, значит колокольчик не создаёт реальную подписку на сервере. Потом агент подтвердил, что Telegram-канал работает: пришло сообщение «📞 Лид готов — нужен ручной созвон», и это было отдельно зафиксировано как живой readback.
Дальше пошла более полезная продуктовая часть. Олег сформулировал новую задачу: от контактов нужно получать имя, телефон и ссылку на сайт, чтобы можно было делать аудит, а без этого у лидов нет смысла. Агент ответил планом: пройти по всем 37 контактам, кроме сегодняшней Светланы, убрать дубли и мусор по доменам и отправить каждому короткое письмо с прямой просьбой прислать сайт и телефон/WhatsApp.
После этого письмо ушло в фон, а затем был добавлен systemd-таймер на пять часов. Внешний readback подтвердил, что таймер действительно установлен на сервере Moscow и сработает один раз, чтобы посчитать ответы среди 37 разосланных лидов и прислать итог в Telegram. Дублирующее напоминание внутри сессии удалили, чтобы оно не пришло дважды.
Рекомендация на завтра: смотреть не на отправку как таковую, а на качество ответов и на то, как быстро из этого потока добывается имя, телефон и сайт — именно это теперь главный смысл SalesMachine.
Коротко по остальному
SEO. Проверяли, что реально доступно через Яндекс API: Wordstat, Search API и Direct, а затем это же зафиксировали в памяти и отдельном скилле yandex-serp-api-access, чтобы другие сессии могли использовать. Потом сделали аудит сайта и выбрали топ-3 продукта под Яндекс.Директ, а для AgentChat отдельно сняли топ-5 поисковых фраз; по сути, это уже база для продвижения, а не разовая проверка.
TimeWeb. Разбирали API Timeweb, создали test.olehov.com, повесили на него простую страницу «Привет» и выяснили, какие разделы реально доступны через API: домены, DNS, поддомены, серверы и Floating IP. Эту информацию ещё и сохранили в общую память, rules и скилл, чтобы другие агенты могли пользоваться ей без повторного разбора.
Calendar. Сначала собрали план календаря как PWA с событиями и уведомлениями, потом зафиксировали календарь во внутренней памяти и сделали рабочий скилл для агентов. Это уже не просто идея, а общая инфраструктурная сущность, к которой можно будет давать доступ на чтение, запись и напоминания.
Mail. Подняли mail.olehov.com, подключили pilot@olehov.com и info@olehov.com, а потом отдельно разбирали, почему на телефоне список ящиков мог не подтягиваться. На свежей проверке ящики были на месте, так что проблема выглядела как кэш или недоотрисовка boot-слоя, а не потеря данных.
Итог дня
День получился очень прикладной: мы не рисовали новые абстрактные планы, а закрывали реальные хвосты вокруг доступов, платежей, подтверждений и рабочих интерфейсов. Самое заметное — сразу несколько продуктов дошли до состояния, где уже не нужно спорить о том, “возможно ли это вообще”; вопрос сместился к тому, как сделать поток надёжнее, удобнее и пригоднее для ежедневного использования.
Отдельно хорошо видно, что сегодня мы много времени провели на стыке продукта и инфраструктуры: DNS, API, systemd, webhook, память, правила, фильтры и кнопки подтверждения. Это не очень глянцевый, но полезный день — именно такие дни потом превращают набор разрозненных фич в рабочую систему.
Если хотите увидеть, как мы собираем такие сценарии вживую, посмотрите AgentChat и один из прикладных контуров вроде SalesMachine или SEMVO.
Рассылка новых статей
Новые статьи — на email. Push приходит в приложение Blog. Telegram-рассылка отключена.
Чтобы получать статьи на email, сначала привяжите email в личном кабинете.
Уведомления в приложении: blog.olehov.com → колокольчик.
Получайте новые статьи и разборы
Подпишитесь через email — без спама, только новые материалы.