Реновация WordPress сайта 1998 года под управлением одного человека и команды ИИ-агентов

Кейс реновации сайта 1998 года: ИИ-агенты под управлением одного человека перевезли архив WordPress с PHP 5.6 на современный стек без потерь и простоя.

ИИКейсРазработка

Как ИИ-инструменты под управлением одного человека за сорок дней перенесли, переоснастили и ускорили личный сайт-архив с 28-летней историей — не сломав ни одной существующей страницы.

Кейс pimenov.ai. Период работ: 14 апреля — 23 мая 2026 года. Заказчик: Максим Гончаров, журналист и писатель, смотритель magon.net.ru с 1998 года.

Было/стало:

Notion image

Контекст

14 апреля 2026 года к нам обратился Максим Гончаров — журналист и писатель, смотритель сайта magon.net.ru, который он ведёт с 1998 года. У сайта есть второе имя: «Лавка любителя древностей». Автор назвал её иронически — оказалось буквально. Четыре «комнаты», которые строились двадцать восемь лет:

  • Блог — один-два поста в день: театр, кино, книги, последние месяцы — много про блюз.
  • Статичные страницы — литературные тексты и журнальные публикации, которые автор заливал годами.
  • Фотоблог на ZenPhoto — «Взгляд прищуренных глаз».
  • Карта воинских захоронений — отдельный проект, который работает каждый день: люди приходят искать своих.

Что мы застали: WordPress 3.7.3 (релиз ровно 14 апреля 2014-го — двенадцать лет день в день), PHP 5.6, общий веб-хостинг. Между этой сборкой и актуальной шестой веткой WordPress — больше двух десятков версий и десятки закрытых уязвимостей; PHP 5.6 перестал получать обновления безопасности ещё в конце 2018 года. Архив, в котором почти ничего не выкидывалось: больше четырёх тысяч записей в блоге с 2004 года, отдельные страницы с 1998-го и галерея с более чем десятью тысячами фотографий.

Задача

Не «обновить движок», а перевезти живой архив на современную, безопасную и быструю основу — с полным сохранением традиции, содержимого и привычек владельца. Не сломать ни одну существующую страницу, карту, галерею, ни один старый шорткод внутри записи 2009 года. И не превращать жизнь смотрителя в стройку: он должен продолжать писать как раньше.

Подход

Всю работу выполняли ИИ-инструменты под управлением одного человека. Содержание кейса — не строки кода, а четыре принципа, на которых это держится.

  1. Разбирать по полкам, а не перевозить коробку. Обновление старой CMS почти никогда не упирается в одну большую ошибку — это десятки мелких несовместимостей. Ядро, плагины, темы и архивные страницы разбираются по отдельности.
  2. Ревью до кода и после каждого шага. Каждый план уходит на адверсариальное код-ревью и повторяется до нуля критических и высоких находок. То же — после того, как сделали.
  3. Доказательная дисциплина. Каждый дочерний агент работает с обязательным контрактом: только проверяемые факты, на каждую цифру — воспроизводимая команда, на каждую цитату — ссылка на источник; неподтверждённое помечается явно.
  4. Владелец видит результат, а не стройку. Бригада реновации не выходит в зал к посетителям: обратную связь смотритель даёт по запросу, а внутреннюю кухню не видит.
Notion image

Ход работ

Экстренный переезд за 48 часов

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

Агент работал почти двое суток. Параллельно сам исправил несколько критических багов в собственной работе (квадратное изменение размера в Imagick портило изображения; неопределённая константа в контексте ZenPhoto) и мигрировал около четырёх тысяч файлов изображений, каждое в AVIF плюс JPG как резервную версию (AVIF — около 55% от веса JPG, десятки гигабайт экономии трафика в год). Где-то посередине импорта активировалась легаси-тема imagine и положила сайт. Откат из бэкапа, продолжение, доделал я к четвергу. Четыре тысячи постов на месте, ни одной потери.

Когда позднее вычитывали логи, увидели вторую особенность: примерно в четверти утверждений Codex переоценивал собственный результат — «сделано» там, где было «начато».

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

Аудит и чистка наслоений

Прежде чем перевозить что-либо, прошли по полкам существующего сайта. На них обнаружились наслоения тринадцати лет, которые один апдейт WordPress не закрывает: 869 фиктивных учёток спам-ботов, 33 768 спам-комментариев, три заброшенных плагина и открытый xmlrpc.php — «чёрный вход» для подбора пароля.

К концу первого дня: учётки ужались до двух, спам-комментарии — до тридцати одного, мёртвые плагины удалены, xmlrpc закрыт, сайт принудительно переведён на HTTPS, на каждый пост добавлены SEO-теги. Реакция владельца на сводку: «Странно, что не был сломан за всё это время».

Это базовая гигиена — просто её тринадцать лет никто не делал. ИИ-агент находит такое за один прогон по файловой системе и базе: у него нет привычки «это же я писал, тут точно нормально».

Атлас: навигация по четырём тысячам записей

Четыре тысячи записей за двадцать восемь лет лежат правильно, но карты архива нет. Так появился Атлас (magon.net.ru/graph/) — новый пункт в меню: опорные материалы как точки входа, от каждой — связи к остальным записям через рубрики, теги и годы; мини-график показывает плотность лет.

Лучшее доказательство ценности — реакция владельца, разглядывавшего хронологию своего архива: «Мне даже стало понятно, почему у меня был такой провал в 2018 году».

Здесь же всплыл урок: автор помнит дату создания, система помнит дату загрузки — это всегда разные даты. «Записи» за ранние годы оказались страницами, которые заливались в 2009 и 2024 годах, поэтому в базе их не было до 2004-го. Решение: ранние карточки показываются с разметкой эпохи («середина 2000-х»), а точный год владелец проставляет сам.

Notion image

ИИ-описания для 10 000 фотографий

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

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

Notion image

Админка — «как было раньше»

Одной из первых просьб была не про дизайн, а про привычку: на старом сайте к панели управления было «натянуто» выпадающее меню (плагин, не обновлявшийся годами). К нему привыкаешь — и оно становится не настройкой, а тем, как ты вообще представляешь себе сайт изнутри.

Сначала честно отказали: плагин слишком старый, на новую версию не встанет. Через пару недель вернулись к задаче не как к патчу, а как к перепрошивке — переписали меню с нуля под современный WordPress, сохранив привычный визуальный язык. Реакция: «Жизнь заиграла новыми красками». Это и был самый первый промпт всей работы: сделай так, как было раньше — начать с того, что должно остаться неизменным, и от этого строить новое.

Производительность: из красной зоны в зелёную

Сайт переехал и обзавёлся Атласом, но открывался небыстро. Google PageSpeed Insights показывал на мобильном Speed Index 5,8 секунды — «красная» зона, оценка производительности 85 и ниже.

Дальше — серия адресных правок, каждая со своим измерением «до/после» и через ревью-цикл: критический CSS прямо в HTML, удаление двух неиспользуемых WordPress-скриптов, перенос счётчика Метрики на собственный домен, preload главной картинки поста.

МетрикаДоПосле
Performance (mobile)85 и ниже99/100
Speed Index5,8 с3,0 с
Total Blocking Time30 мс20 мс

99 из 100 на мобильном (эмулированный Slow 4G) для архивного WordPress-блога с четырьмя тысячами постов и фотогалереей — рабочий ориентир.

WordPress 7 и инфраструктурная зрелость

Последние недели — это уже не спасение, а доведение до состояния, в котором сайт может спокойно простоять годы:

  • Глубокая проверка безопасности. Код плагинов и тем — чисто. В серверной конфигурации закрыли несколько щелей: запретили установку плагинов через админку, убрали утечку списка имён пользователей, отключили устаревшие протоколы шифрования. Активный пентест — без уязвимостей, SSL получил высший балл A+.
  • Своя резервная копия. Каждую ночь автоматически снимается копия обеих баз (блог + ZenPhoto), хранится 14 дней — независимо от провайдерского снапшота, восстановление за пять минут одной командой.
  • Обновление до WordPress 7.0 «Armstrong». Все плагины и тема на месте, ничего не сломалось.
  • Кэш и скорость в основе — кэш страниц, кэш объектов в памяти и кэш кода; индикатор «Состояние здоровья сайта» в админке стал зелёным.
  • Спокойная консоль. Убраны зависшие и лишние блоки на главной странице админки. Здесь же всплыла характерная деталь: часть «неработающих» виджетов на самом деле блокировал встроенный в браузер владельца блокировщик рекламы — поэтому любую диагностику на стороне браузера теперь начинаем с проверки в режиме инкогнито.

Та же дисциплина сработала даже там, где бага не было. Владелец сказал: отложенный пост не опубликовался утром. Разобрались до конца: опубликовался ровно вовремя, в 09:06. Временна́я метка правки 09:32 оказалась записью самого автора после публикации, не задержкой. Бага нет.

Но пока разбирались, успел собраться диагностический инструментарий. Служебный модуль теперь логирует шесть типов событий, system-cron перенастроили с пяти минут на одну. Если когда-нибудь случится настоящая задержка — теперь по сути минута, а не пять.

Notion image

Подписи к фотографиям, которые слушаются автора

«Продолжаю воевать с ИИ. Так и не удалось его победить», — писал Максим. Те самые десять тысяч апрельских ИИ-описаний попадали в стиль и тон — но не каждое: иногда хотелось заменить машинное «Здание Петровского путевого дворца: красно-белая барочная фасадная роскошь» своим — короче, точнее, своим голосом.

Технически: два слоя кэша, неочевидных для автора. Плагин запоминал результат на час, WordPress — на сутки. Правки в админке ZenPhoto до постов не долетали, пока кэш не истечёт; единственный найденный обходной путь — удалить ссылку в посте, сохранить, вставить заново. За такое автор сайта благодарен не будет.

В Сессии 80 привязали ключ кэша к колонке lastchange в базе галереи. Любая правка описания в админке ZenPhoto долетает до постов за минуту, без вмешательства. В Сессии 81 пошли дальше: подпись можно писать прямо в редакторе поста. Открываете кнопку, вписываете ссылку и свой текст подписи, нажимаете «Вставить» — фотография появляется в посте с вашей подписью вместо автоматической.

Когда первая версия была готова, Арсений по ходу прижал: для смены подписи у уже вставленного фото инструкция предлагала «переключиться в текстовый режим и поправить текст в кавычках». На замечание «это абсолютно не юзерфрендли» взялись довести до нормы. В Сессии 82 расширили ту же кнопку режимом редактирования: ставите курсор в уже вставленную фотокарточку, нажимаете кнопку — окошко открывается с прежней подписью, заменяете текст, нажимаете «Сохранить». Фотокарточка обновляется на месте. Ни текстовых режимов, ни «удалите-вставьте».

Из этой полировки вынесли отдельный урок. На этапе планирования субагент-разведчик предположил, что для вставки фото автор пользуется именно нашей кнопкой — звучало правдоподобно. Проверка одного реального поста показала, что он много лет делает это иначе: стандартным шорткодом [embed]. То есть кнопка для него была холодная. Не отказались от диалога — додумали так, чтобы новая правка-редактирование работала и для тех, кто пишет шорткод вручную, и для тех, кто пользуется кнопкой.

Было и стало

«Было» — версия, которую мы застали в апреле 2026 года (сайт был заморожен на сборке 2014-го). «Стало» — состояние на конец мая 2026 года.

КомпонентБыло (старт, апрель 2026)Стало (конец мая 2026)
Ядро WordPress3.7.3 (релиз 14 апреля 2014)7.0 «Armstrong»
PHP5.6 (без обновлений безопасности с конца 2018)8.4
База данныхMySQL на общем хостингеMariaDB 10.11 на собственном сервере
Хостингобщий веб-хостингVPS в Москве: своё ядро, свой PHP, свой график обновлений
Веб-сервер и кэшбез серверного кэшаnginx + кэш страниц + кэш объектов в памяти (Redis) + кэш кода (OPcache)
HTTPS и шифрованиебез принудительного HTTPSпринудительный HTTPS, современные протоколы, оценка SSL Labs A+
REST APIнет из коробкиесть — основа Атласа
Картинкиоригинальные JPGAVIF + JPG как резервная версия (≈55% от веса JPG)
SEOбез SEO-теговSEO-теги, карта сайта, Яндекс.Вебмастер
Аналитика и счётчикиМетрика была, но коряво встроена + неработающие счётчики, тормозившие загрузкуЯндекс.Метрика аккуратно встроена; лишние счётчики убраны
Навигация по архивутолько лента и поиск по словамАтлас (/graph/) — карта связей более чем 4 150 записей
Описания фотографий99% без подписиболее 10 000 русских описаний, сгенерированных ИИ
Меню админкистарый плагин, не обновлялся годамипереписано с нуля под современный WordPress
Чистота базы869 фейковых пользователей, 33 768 спам-комментариев, мёртвые плагины, открытый xmlrpc.php2 пользователя, мусор удалён, xmlrpc закрыт
Безопасностьдесятки незакрытых уязвимостейпентест без находок, изоляция, ежедневный бэкап базы
Производительность (mobile)Speed Index 5,8 с — красная зонаPerformance 99/100, Speed Index 3,0 с
Редактирование подписей фотоправки в ZenPhoto не долетали до постов; обходный путь — удалить ссылку и вставить зановоправки долетают за минуту; своя подпись пишется и редактируется одной кнопкой в редакторе

Что мы вынесли

Эти выводы переносятся на любой legacy-проект.

  • Быстрая модель не должна быть финальным автором. Дочерний агент на быстрой модели выдал результат, который выглядел готовым, — а проверка показала почти 80% выдуманных «доказательств». Схема работает только когда результат вычитывает старшая модель в цикле ревью. Поэтому каждый агент работает под доказательным контрактом, а каждый план проходит ревью до кода.

    Конкретные числа того же случая: дочерний на быстрой модели исследовал авторские страницы 2000-х, вернул 100 строк CSV с уверенными датировками. Точечная проверка по самим текстам показала: 51 из 64 утверждений — выдумка. Для рассказа «Книгоман» агент написал «упоминание Psion», хотя в тексте Psion нет. Для «Авроры ОС», продукта 2018 года, указана датировка «1996–2000» с тем же «упоминанием Psion».

    Физически невозможно.

    Это и есть те самые «80%» в укрупнённом счёте — каждое утверждение агента сверяет человек по исходному тексту, прежде чем оно становится фактом.

  • Несколько агентов — одно правило проверки. Через проект прошли три ИИ-агента: Claude, Codex и дочерний на быстрой модели. Каждый ошибается по-своему. Codex переоценивает прогресс примерно в четверти утверждений: это видели на переезде. Быстрая модель сочиняет четыре доказательства из пяти: то же на авторских страницах. Правило одно: каждое опорное утверждение сверяет человек по исходнику, прежде чем оно становится фактом. Это не проблема ИИ, это условие профессиональной работы с ним.
  • Привычки автора проверяются примером, а не интуицией. Субагент-разведчик уверенно заключил, как именно владелец вставляет фотографии в посты. Один взгляд в реальный пост показал, что он много лет делает это иначе. Фичу доработали так, чтобы она работала независимо от привычки. Предположения о повседневном поведении подтверждаются конкретным содержимым, а не наблюдением соседних артефактов.
  • Старая CMS ломается не в одном месте. Опасность не в том, что сайт «не обновится», а в том, что он почти обновится: главная откроется, а где-то в глубине отвалится галерея, карта или старый шорткод. ИИ полезен здесь не магией, а выносливостью.
  • Тихая ошибка дороже видимой. Опечатка в одной функции месяцами пряталась за «глушилкой» исключений. В любой системе нужен флаг отладки, снимающий все «глушилки» разом.
  • Кэш всегда глубже, чем кажется. Меняешь содержимое — меняй адрес. Правило живёт за пределами кода: оно же про дату создания страницы и подпись фотографии.
  • Владелец — соавтор результата. Сайт обновлён без простоя и без стройки в кадре только потому, что смотритель давал точную обратную связь по запросу, а одним из первых шагов мы вернули ему привычную админку. Не бывает слишком старого архива — бывает архив, до которого тридцать лет не доходили руки на реновацию.

Закрытие реновации

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

За сорок календарных дней — более двадцати последовательных пулл-реквестов, каждый со своим циклом адверсариального код-ревью и проверкой безопасности до нуля замечаний средней или выше тяжести; ни одного простоя сайта; ни одной потери содержимого. Тот же объём правок без ИИ-агентов потребовал бы у одного человека не сорок дней, а несколько месяцев — не из-за объёма кода, а из-за многократного цикла «правка → ревью → правка → ревью». Агенты позволяют этот цикл крутить за минуты, оставляя владельца наедине с результатом.

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

Об авторе

Арсений Камышев — партнёр Сергея Пименова по образовательной программе pimenov.ai. В разработке и интернет-проектах с 2002 года. Основной инструмент — Claude Code; стратегический планировщик, который не верит в «один волшебный промпт».

«Загорелись идеей — не откладывайте. Пишите самый простой, нелепый, смешной, кривенький промпт и нажимайте на ввод. И просто продолжайте». — Арсений Камышев

По теме


Если у вас legacy-проект — старый сайт, годы накопленной вёрстки, плагины «оттуда» — и его нужно перевезти на современную основу без потерь и простоя, напишите мне в Telegram. Обсудим, как применить этот подход у вас.