Все имена в тексте вымышлены.
Контекст
27 мая — 6 июня. Пост пропустил не потому что нечего писать — наоборот. Параллельно шли детский лагерь, ежедневные сверки расписания, выводы денег с G2G, прокачка агентов и стройка продукта для инструкторов. Когда каждый день заканчивается деплоем — на рефлексию времени не остаётся.
FIFA-карточки для учеников
Прогресс который можно показать маме
Начало недели. Андрей ходит ко мне месяц, хочу зафиксировать срез. Проблема: дневник тренировок он решил не вести. Некоторым людям правда сложно. Значит фиксация прогресса — на мне.
Сел, прошёл тест за него: "да, да, да, средне, держит курс не дёргает руль но не ориентируется, нет, нет". Получился skill tree с прогресс-барами по категориям: терминология, безопасность, управление курсом, маневры, работа экипажем. Не оценки — срез. Разница принципиальная: оценка давит, срез показывает где ты.
Сделал ресёрч как элитные тренеры оформляют такое. Ответ: не одна таблица, а три слоя. Status snapshot по дереву навыков, roadmap с зависимостями, narrative feedback. Плюс — карточка. Сгенерировал через ChatGPT аватар в стиле FIFA Ultimate Team: фото ученика, стилизованное под спортивную карточку с рейтингами.
За неделю сделал четыре таких среза: Андрей, Марина, Настя, Ира. Каждый со своей карточкой, своим деревом навыков, своими evidence cards из дневников и планов. Команда /progress в боте — ученик открывает и видит свой путь.
Настя спросила: "а как считаются выходы? У меня их только 12". Значит смотрит. Значит работает.
Срез навыков — не для отчётности. Это якорь для ученика: вот где ты был, вот где сейчас, вот куда дальше. Визуал (карточка, прогресс-бары) делает это реальным, а не абстрактным.
Десять детей и принтер
Когда деплой быстрее бумаги
4 июня. Детский лагерь в Строгино. Десять детей от 7 до 13 лет, четыре инструктора, я — старший. Четыре оптимиста, один луч-мини. Задача — не просто покатать, а дать структуру: общий сбор, план тренировки, распределение по лодкам, дебрифинг.
Составил план тренировки: расписание на день, распределение по экипажам, цели на воду. Хотел распечатать на A4 чтобы каждый инструктор имел лист. Подключил принтер. Не печатает. Попробовал ещё раз. Не печатает. Третий раз. Не печатает.
Адаптировал страницу под телефон, задеплоил на сервер, сделал команду /instructor в боте. Через Telegram Web App каждый инструктор открывает план прямо на телефоне: расписание, экипажи, заметки. С автосохранением — чтоб ничего не потерялось когда мокрыми руками тыкаешь в экран.
По итогу дня: Вика с Ниной ходили в галфвинд 4 из 5. Миша всё время на руле, не хочет меняться с Катей. Братья Костя и Петя барахтались — вроде нравится, но результата не видно. Гриша топ, вышел один. Аня средняя, ей пора на луч-мини. Роме 10 лет и у него реальный прогресс.
Дневник дети не заполнили — по времени не уложились. Это ожидаемо. Для детей дневник должен быть другим: не текст, а что-то с рисованием и кнопками. Нарисовали оптимист на бумаге — пока так.
Принтер — это legacy-интерфейс. Деплой на VPS занял три минуты, печать не получилась за двадцать. Будущее инструкторских планов — телефон, не бумага.
Купил домен компании где работаю
Продукт в чужой обёртке
Купил silavetra.pro. Это не моя компания, но домен теперь мой. Звучит как конфликт — на самом деле стратегия.
Сделал ресёрч по UDRP и российскому праву. Если у них зарегистрирован товарный знак и они подадут жалобу — домен придётся отдать. Но продукт на домене — мой. Код, архитектура, данные, пользователи. Домен это обёртка, ценность внутри.
План: построить кабинет инструктора. Не SaaS — SaaS умирает, надо доставлять результат. Кабинет который реально экономит время: расписание синхронизируется автоматически, ученики видят свой прогресс, планы тренировок генерируются из базы знаний. Потом предложить школе: вот работающий продукт, вот ваш домен, обсудим условия.
Изучил конкурентов: SailSync, TillerWise, SailCoach Pro. Все продают доступ к софту. Никто не продаёт результат — сокращение дебрифинга, автоматический прогресс, готовые планы. В русском яхтенном обучении — вообще пусто.
Семь агентов работают каждый день
От наблюдателей к исполнителям
Operator прирос до семи ролей. В прошлом посте было четыре (scout, sentinel, critic, playbook). Теперь добавились dashboard, engineer и reviewer.
Dashboard запускается последним в 21:00, собирает всё что нашли за день и генерирует один HTML-файл. Не дашборд для красоты — reviewable runs, где видно что каждый агент делал, что нашёл, что сломалось.
Engineer и reviewer — это уже не наблюдение, это действие. Engineer берёт задачу из очереди, создаёт worktree, делает изменения, коммитит в ветку, создаёт PR-документ. Reviewer смотрит только PR и goals.md. Установка по умолчанию: reject. PR должен доказать свою ценность, не наоборот.
Добавил систему уровней. Scout сейчас на LVL 1 (Activity Monitor): коммит-каунты, TODO-трекинг. LVL 2 (Risk Scout): hotspot detection, resume packets, dependency health. Каждый агент прокачивается — получает новые инструменты и метрики.
Главная боль: агенты опираются на устаревшие факты и не мыслят критически. Добавил TTL для фактов — эфемерные (диск, RAM, алерты) живут 30 дней, стабильные (цели, модель бизнеса) без срока. Critic получил протокол "try to disconfirm": начинай с позиции "это неверно", ищи доказательства что это правда.
Агенты без TTL на фактах — как люди без забывания. Память переполняется, старое вытесняет новое, решения принимаются на основе того что было актуально месяц назад. Забывание — фича, не баг.
Headless бухгалтерия
Selenium умер, API остался
Объединил два репозитория — rmtaccounting (Selenium + Chrome) и g2g_pipeline (headless REST API) — в один: metaaccounting. Суть: те же данные, те же таблицы, но без открытия браузера. JWT-токен, long_lived_token, запросы к SLS API — всё что нужно.
Первый вывод через новую систему. Запросил 1796, пришло 1745. Разница — старый заказ на 855, из которых 580 нужно переслать менеджеру. Тот написал что "биг ордера недовывели" — сел разбираться в reconciliation: какие ордера чьи, что уже оплачено, что зависло.
Второй менеджер написал что ему с вывода не всё пришло — бусты не дошли. Начал копать: history по балансу через HTML-скрейпер, постраничный парсинг statement. Нашли расхождения, задокументировали, отложили до следующей сессии.
Дашборд ежедневного сальдо пока в плане. Но пайплайн из 10 шагов работает: синхронизация всех таблиц, дедупликация, статусы заказов, расчёт выплат менеджерам.
Бот для админа расписания
Первый внешний пользователь
Таня — администратор расписания в Силе Ветра. Каждый день вручную сверяет три источника и выставляет слоты на сайт. Инструкторы пишут в чат "убери меня с запасов", "суббота зелёная 13:30", "красная до 17:30" — она всё это обрабатывает руками.
Сделал для неё телеграм-бота. Кидает два файла (Excel + CSV), получает готовую сверку: кого добавить на сайт, кого убрать, где расхождения. Добавил usage logging чтобы потом посмотреть как она пользуется — n=1 тестирование, один пользователь, но настоящий.
Она написала /start, добавил её ID в админку. Отправила первые файлы. Теперь наблюдаю: какие команды использует, где тормозит, что ожидает увидеть. Из ресёрча: наблюдать, не помогать. Фиксировать действия с таймстампами, фразы типа "а где тут...", моменты где замирает.
Один реальный пользователь ценнее десяти гипотез. Таня не тестировщик — она делает свою работу. Разница в мотивации: тестировщик ищет баги, пользователь хочет закончить задачу.
Цифры двух недель
- 4 progress report с FIFA-карточками: Андрей, Марина, Настя, Ира
- 10 детей в лагере, 4 инструктора, 4 оптимиста + луч-мини
- 7 агентов в operator: meta_reflect, scout, sentinel, critic, playbook, engineer, reviewer
- 42 дневника тренировок в системе, 9 персональных планов
silavetra.pro— домен куплен, продукт в стройке- $1 745 — первый вывод через headless metaaccounting
- 1 админ-бот для расписания, 1 реальный пользователь
- 0 напечатанных страниц (принтер так и не заработал)
Две недели без поста — не потому что нечего сказать. Потому что каждый вечер деплоил вместо того чтобы писать. Продукт растёт в три стороны одновременно: инструкторский кабинет, агентная система, бухгалтерия. Это не разброс — это одна и та же идея: автоматизировать своё, а потом показать что это работает.