На главную

День AgentChat, PULSE и Next: фиксы и развилки

За день починили автоматические сигналы в PULSE, разобрались с переключением модели в AgentChat и вскрыли причину стопора в Next.

Фокус дня

Куда ушло внимание за день — по объёму переписки в AgentChat, 22 сообщений всего.

  • AgentChat — 27%
  • Тест — 27%
  • PULSE — 18%
  • LYSAK — 18%
  • Next — 9%

AgentChat

AgentChat — это наш мобильный рабочий интерфейс для общения с AI-агентами и управления задачами. Сегодня мы крутились вокруг главного вопроса: как перевести один из контуров на Sonnet 5 и при этом не сломать изоляцию, лимиты и права доступа.

Сначала мы разобрали, что главный AgentChat на Sonnet 5 ходит не через обычный API-ключ, а через @anthropic-ai/claude-agent-sdk, то есть через Claude Code-подписку и отдельный контур авторизации. После этого стало ясно, что «просто заменить строку модели» не выйдет: для LYSAK пришлось отдельно смотреть, как сохраняется песочница, и не трогать существующий site_sandbox.py с list/read/write/run внутри /opt/lysak.

Дальше мы прогнали несколько вариантов. Один сценарий подразумевал временное переключение LYSAK на личную Claude-квоту, другой — полноценную миграцию исполнительного движка из Python+RouterAI на тот же Node claude-agent-sdk, чтобы оба контура сидели на одних токенах и лимитах. В итоге нашли реальный технический блокер именно на уровне реализации, а не абстрактного риска, и вернули всё в исходное рабочее состояние: LYSAK продолжает работать на Opus 4.7 через RouterAI, ничего не сломано.

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

PULSE

PULSE — это наша персональная AI-система энергии с ежедневными чек-инами, привычками и подпиской. Внутри неё есть деньги, статусы и визуальные состояния, поэтому сегодня работали и над интерфейсом, и над автоматикой, чтобы продукт выглядел и вёл себя как живой сервис.

Сначала мы убрали чёрную полосу под sticky-поиском: вместо резкого обреза сделали плавный fade примерно на 20px, и в обычном, и в compact-режиме. Это небольшая правка, но она заметно улучшила ощущение прокрутки: список теперь выглядит органично, без тяжёлого чёрного прямоугольника под строкой поиска.

Потом починили автоматическое включение тумблера «Деньги» при поступлениях. Причина оказалась не в самом тумблере, а в маршруте данных: вебхук /api/internal/money-income уже существовал, но вызывался только из YooKassa-обработчика для автоматических платежей, а сегодняшние 5000₽ от Геннадия Лысака были добавлены вручную через форму «Поступления» в money.olehov.com. Поэтому событие не доходило до PULSE, и тумблер не включался.

Мы исправили этот разрыв в потоке: добавили вызов нужного маршрута и проверили, что ручные поступления тоже начинают вести себя как настоящие входящие деньги в системе. Это как раз тот случай, когда продукту уже нужны не новые фичи, а аккуратная доводка связности между источниками событий.

Рекомендация на завтра: не расширять сценарии ради сценариев, а пройтись по всем способам появления денег в системе и убедиться, что каждый из них одинаково включает состояние в PULSE.

Next

Next — это ежедневная стратегическая игра, где важны профиль решений и знакомство со стилем мышления. Сегодня мы не добавляли новые игровые механики, а разбирали, почему партия встала и почему с телефона выглядело так, будто игра не реагирует на действия.

После рестарта выяснилось, что фиксы реально начинают применяться только тогда, когда процесс перезапущен: Python-код грузится один раз при старте, в отличие от JS и шаблонов. Это сразу объяснило, почему поведение на устройстве и поведение в тестах разъезжались.

Главная находка оказалась не в свайп-жесте и не в верхних цифрах, как сначала казалось, а в объединении анонимной сессии с аккаунтом. У нас одновременно существовали две активные партии: одна с реальным счётом 23312, другая пустая с нуля, и сервер постоянно брал «последнюю», из-за чего состояние расходилось с тем, что видел телефон.

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

SEMVO

SEMVO — это AI-приложение для быстрого знакомства, квалификации контактов и продолжения живого диалога. Сегодня по нему не было новых рабочих сессий, но продукт уже находится в списке ежедневного фокуса и остаётся в общей картине портфеля.

Фактически по SEMVO в этот день не добавили ни новых экранов, ни новых сценариев, ни исправлений из заметок дня. Это был день не про него, а про разбор инфраструктурных и продуктовых узлов в AgentChat, PULSE и Next.

Courier

Courier — это центр управления уведомлениями и журналом их доставки. В сегодняшних выдержках по Courier не было отдельных действий, так что тут фиксируем только отсутствие изменений в источнике.

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

Итог дня

День получился про три очень разных уровня работы: в AgentChat мы упёрлись в архитектурные ограничения, в PULSE довели до ума и интерфейс, и события денег, а в Next нашли настоящую причину зависания партии. Общий рисунок простой: мы не разбрасывались на новые идеи, а возвращали живые контуры в предсказуемое состояние.

И ещё важный вывод: там, где продукт уже достаточно определился, дальше решает не добавление новых сущностей, а аккуратная связность, перезапуск и правильный маршрут данных. Именно на этом сегодня и держался день.

Ссылка по теме: PULSE