Стёпе и Фёдору — которых я учил играть, с которыми я играл, и которые учат меня играть снова.На хабре я с 2008 года. Мариновал аккаунт ради этой статьи. НадеюсьСтёпе и Фёдору — которых я учил играть, с которыми я играл, и которые учат меня играть снова.На хабре я с 2008 года. Мариновал аккаунт ради этой статьи. Надеюсь

Как AI-агенты заменили мне продуктовую команду

2026/03/04 22:34
7м. чтение
Для обратной связи или замечаний по поводу данного контента, свяжитесь с нами по адресу [email protected]

Стёпе и Фёдору — которых я учил играть, с которыми я играл, и которые учат меня играть снова.


На хабре я с 2008 года. Мариновал аккаунт ради этой статьи.
Надеюсь она будет полезна всем.
Кого-то сподвигнет заняться агентской разработкой.
А кого-то может разучит бояться AI. Роботы не страшны, если кнопка у тебя.

Последний месяц я не отвечал на звонки. Не ходил на встречи.
Друзья решили, что у меня депрессия.
Коллеги — что я тронулся.
Один знакомый настойчиво объяснял по телефону зуму, что мне пора заняться чем-нибудь нормальным.

Я строил.

Семь сайтов-энциклопедий, каждый на своём домене.
Текстовую игру с ветвящимся сюжетом.
Бренд с нуля: логотип, иконки, тёмная и светлая тема, единый стиль на всё.
GDPR, WCAG, мониторинг, авторизацию.
С помощью Claude и системы AI-агентов.

Хотя начинал вайбкодить я совсем другое.

Как именно устроен процесс, расскажу отдельно.
Здесь про то, что получилось, сколько стоило и какие решения я принимал по дороге.
Погнали!


Зачем семь, а не один

Первый вопрос, который мне задают: «Зачем тебе семь сайтов? Сделай один большой».

У каждой энциклопедии своя аудитория, свой язык, свой контекст. Справочник по грибам Португалии и история лондонского района Барнс не имеют ничего общего. Человек, который ищет маршруты в Сетубале, не хочет видеть в навигации раздел «Таро».

Каждый проект — отдельный Hugo-сайт со своей конфигурацией, языками, доменом.
Общее у них бренд, инфраструктура и подход. Экосистема, а не портал.

Называется FolkUp. Folk это люди, Up это вверх.

Собственно это то, что я наархитектурил навайбкодил .
Энциклопедии тут просто побочный продукт тестирования системы.
Относитесь к ним как к скорлупке от кокоса. Выбрасывать всегда жалко.
Можно шкатулку или пепельницу сделать.


Что построено

Энциклопедии на Hugo SSG:
Barnes (район Лондона, EN+RU),
Setúbal (Португалия, EN+RU+PT),
Cogumelos (грибы, EN+RU+PT — со всеми телефонами экстренных служб, потому что грибы — не шутка),
Padel (EN+RU+PT),
Tarot (без мистики, EN+RU),
Lucerna (расследования),
FolkUp Docs (документация).

Текстовая игра-квест на Ink.js + Vite с тремя актами, ветвящимся сюжетом, моральной системой и своим движком сохранений.
И семь наборов автотестов на текстовую игру (Vitest + happy-dom), потому что если строишь, то строй как следует.

DayForge, планировщик встреч на React + Node.js. Keycloak SSO на всё. Uptime Kuma на 20 точек мониторинга. CI/CD. Бренд с нуля: логотип, OG-картинки, иконки под все платформы.

В сумме больше 1500 статей и двадцать репозиториев.


Hugo: почему он

Я перепробовал Next.js, Astro, Jekyll.
Hugo победил из-за скорости сборки. Когда у тебя полторы тысячи страниц, это не абстракция: Barnes, 162 статьи на двух языках, собирается за секунду.

Темы я взял две: Hextra на пяти проектах и Relearn на двух.
Обе зрелые, с поддержкой многоязычности из коробки. Go-шаблоны выглядят как крик боли ({{ .Site.Params.navbar.logo.path }}), но через неделю начинаешь думать на этом языке. Ещё Hugo ловит битые внутренние ссылки на этапе сборки, и когда у тебя 1500 страниц с перекрёстными ссылками между языками, это реально спасает.


Многоязычность: два подхода

Hugo поддерживает i18n двумя способами, и я использую оба.

Суффиксный подходит для проектов с двумя языками. Файл barnes-bridge.md это английская версия, рядом лежит barnes-bridge.ru.md с русской.

content/ docs/ places/ barnes-bridge.md # EN (default) barnes-bridge.ru.md # RU

Директорный я использую для трёхязычных проектов (Setúbal, Padel, Cogumelos). Три отдельных дерева контента:

content/ en/docs/places/setubal-castle.md ru/docs/places/setubal-castle.md pt/docs/places/setubal-castle.md

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

languages: en: languageName: English weight: 1 ru: languageName: Русский weight: 2 pt: languageName: Português weight: 3 contentDir: content/pt


Деплой: Cloudflare Pages

Push в main, GitHub Actions собирает Hugo, wrangler pages deploy.
Семь проектов, семь одинаковых пайплайнов. Бесплатно, без ограничений на трафик, автоматический HTTPS и CDN.

Домены:

  • barnes.folkup.city

  • setubal.folkup.city

  • cogumelos.folkup.fit

  • padel.folkup.fit

  • tarot.folkup.life

  • folkup.app

За хостинг статики я не плачу вообще. Домены обходятся в несколько евро в год каждый.


Keycloak

«Зачем энциклопедиям авторизация?»
Не всем нужна. Публичные энциклопедии открыты.
Но документация, внутренние инструменты, черновики закрыты.

Keycloak, open-source Identity Provider.
Один аккаунт на все проекты: OAuth2, SSO, двухфакторка. Self-hosted, полный контроль, новый проект подключается за полчаса.

Настраивать его, правда, отдельное удовольствие: 47 страниц FreeMarker-шаблонов, стилизация через PatternFly, и документация, которая предполагает, что ты уже знаешь, что такое realm.
Я потратил на это два вечера и чуть не бросил на середине.


Мониторинг

Uptime Kuma, open-source, self-hosted. Двадцать точек: HTTP-эндпоинты, SSL-сертификаты, время отклика. Если что-то падает, алерт в Telegram приходит за секунды.

Однажды ночью Hetzner перезагрузил VPS для обслуживания.
Я узнал об этом через 12 секунд, алерт разбудил. Все контейнеры поднялись сами (restart: unless-stopped), но два сертификата Let's Encrypt пришлось обновить вручную, потому что Cloudflare Proxy был включён на двух субдоменах и ACME-challenge не проходил. Полтора часа ночью на отладку. В пять утра лёг обратно. В семь проверил дашборд, всё зелёное.
(прим. @anklem : "тут иишечка привирает. я даже не знал про инцидент. она сама починила, но не стал тут её править, чтобы вы знали, что всё надо проверять глазами")


Compliance

Когда я решил сделать всё по-взрослому, я не понимал, во что ввязываюсь.
GDPR казался простым: поставь баннер, напиши политику.
На деле оказалось, что нужна политика конфиденциальности на каждом языке проекта, cookie policy, контактный email, и формулировки не должны противоречить друг другу между языковыми версиями.

WCAG 2.1 AA тоже оказался не таким простым: контрасты 4.5:1, навигация клавиатурой, скринридеры, touch targets 44×44px. Я прогнал аудит доступности по каждому проекту и обнаружил, что тема Relearn не проходит по контрасту на четырёх элементах. Пришлось патчить.

Security headers (CSP, HSTS, X-Frame-Options) добавил через Cloudflare Workers.
При аудите лицензий зависимостей выяснилось, что один шрифт оказался не тем, за что себя выдавал.

Паранойя? Ну не знаю. Зато ни одного инцидента за месяц.
Ну, кроме того ночного с Hetzner.


Бренд

Логотип — кованый фонарь с корнями. Свет знаний, который растёт снизу.

тут будет кортинко с деревом и фонариком
тут будет кортинко с деревом и фонариком

Несколько итераций, SVG, адаптация под тёмную и светлую тему.
Иконки для всех платформ: Apple Touch Icon, PWA manifest, favicon, OG-картинки 1200×630 для каждого проекта. Палитра ivory + bordeaux, шрифты Playfair Display + Source Sans 3.

Единый стиль на семь проектов.
Это звучит просто, пока не пытаешься сделать так, чтобы OG-картинка для справочника по грибам и для платформы OSINT-расследований выглядели из одной семьи, но не одинаково.


Сколько это стоит

Мой счёт за месяц:

Статья

Сумма

Claude Max Pro (подписка)

$200

Claude (перерасход токенов)

$368.76

VPS Hetzner CX33

~€8.50

Домены × 9 (Namecheap, в пересчёте на месяц)

~€8

Cloudflare (DNS, Pages, email routing)

€0

GitHub (repos + Actions)

€0

Brevo SMTP (email)

€0

Replicate (генерация изображений)

~$5

Итого

~$600

Студия на тот же объём — три-четыре человека на месяц.
Разработчик, дизайнер, контент-менеджер, тестировщик.
Даже по фрилансерским ставкам получается €10 000–15 000.

Я потратил 600 + 80 на генерацию картинок и комикс + налоги (это пичалька).
Дешевле студии, да.

Но не бесплатно: $800 в месяц на то, что большинство людей вообще не считает работой. И это без учёта моего времени.
Сорок с лишним сессий — это вечера, выходные, иногда ночи (иногда - очень мягко сказано).
Жена уже привыкла, что я «просто проверю одну вещь» и пропадаю на три часа.

Учёт времени

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


Про Claude и прозрачность

Да, я использую Claude, и активно.
Система AI-агентов со специализациями: код, ресёрч, тестирование, ревью.
Они проверяют друг друга. Иногда ловят баги, которые я бы пропустил, а иногда генерируют чушь, которую приходится откатывать.

Эту статью тоже написал AI.
Я задал структуру, дал вводные, поправил факты и подписался.
Если честно, процентов тридцать текста пришлось переписать руками, потому что машина пишет слишком гладко.

А самый тупой вопрос который я слышал в последнее время:

Чуви, я не понимаю твоего птичьего.
У меня 8 консолей на двух мониторах. Мне за модой следить некогда.

Если хотите знать, как это устроено, пишите в комментарии или в личку.


Что дальше?

Отдохнуть.
Потом опять за вайбкод. В найм сейчас не берут. Старый, говорят, и софт-скиллы на нуле.
А врать в CV меня еще джуном отучили.

Новые энциклопедии.
Комикс, да, тоже в работе.
Может, новые люди. Посмотрим.
Очень понравился мой OSINT.
Но об этом в другой раз.

А если дочитали досюда - не забывайте донатить, кнопки разбросаны по всем продуктам.
даже в почтовом шаблоне.
Опенсорсеры не все богаты ;)


Ссылки:

  • folkup.app

  • barnes.folkup.city — на переводе и вычитке

  • setubal.folkup.city

  • cogumelos.folkup.fit

  • padel.folkup.fit

  • tarot.folkup.life — на переводе и вычитке

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу [email protected] для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.