Этот пост основан на презентации, представленной 2 мая 2026 года в гильдии VibeCoding Daolabs DabaKodDan, посвященной тематическому исследованию "Harness Engineering".
Nextain — это компания, которая разрабатывает и поддерживает технологии для AX компаний, владеющих программными продуктами. Она приняла на себя управление системой корейского церковного портала Onmam.com и в настоящее время работает над AX. Мы переносим устаревшую систему из старого центра обработки данных, настраиваем среду для разработки и эксплуатации проекта на основе агентов, а также проводим работы по стабилизации и улучшению функциональности. Поскольку это старая устаревшая система, возникают пробные ошибки, и мы инкорпорируем их в опыт и технологии компании, применяя naia-business-adk к Onmam.com. Этот опыт был представлен на мероприятии как пример, объясняющий Harness Engineering.
Однострочное сообщение этого поста "Важнее не хорошо использовать ИИ, а создать среду, в которой ИИ не будет совершать ошибок."
1. Сначала, о нашем сервисе
Onmam.com — платформа для управления церквями, используемая 13 876 церквями по всей стране.
www.onmam.com ← Поиск церквей, портал для членов
home.onmam.com ← Приложение-канал (контент/платежи)
{название_церкви}.onmam.com ← Индивидуальный веб-сайт церкви
Инфраструктура: Старые серверы IDC → Полный перенос в GCP (Google Cloud) завершен в апреле 2026 года БД: Данные 13 876 церквей × Cloud SQL
2. Начнем с одного инцидента
"Однажды в апреле 2026 года"
11:00 утра. Внезапно весь сервис Onmam.com перестал отвечать.
Пользователи: "Почему сайт не работает?"
Отслеживание причины привело к — коду запроса списка объявлений в файле Board.php.
-- Проблемный запрос (упрощенный)
SELECT * FROM boards
JOIN (
SELECT bbs_id, COUNT(*) FROM all_boards GROUP BY bbs_id -- ← Вот в чем проблема
) AS summary ON boards.id = summary.bbs_id
WHERE church_id = ?
Этот единственный запрос каждый раз полностью сканировал данные всех 13 876 церквей. Когда трафик возрос, 145 запросов длительностью 600-800 секунд выполнялись одновременно → полный отказ сервера.
Какое это имеет отношение к ИИ?
Этот код, вероятно, был впервые написан разработчиком-человеком. Но сегодня разработчики пишут такой код вместе с ИИ.
Проблема в том, что — ИИ не знает, "как этот код будет работать в среде 13 876 церквей". ИИ сосредоточен на реализации запрошенной функциональности и не знает контекста нашего сервиса.
Поэтому разработчики начали задаваться вопросом: "Как предотвратить написание кода ИИ, если он не знает нашего сервиса?"
3. Harness Engineering — объяснение за 30 секунд
Как для управления лошадью нужны поводья и упряжь (Harness),
так и для ИИ-агента нужны ограничения, руководства и механизмы проверки.
Агент = Модель + Harness
Harness = проектирование всей среды, в которой работает ИИ
Это не просто "задавать ИИ хорошие вопросы". Проектирование системы, которая структурно предотвращает повторение одной и той же ошибки, если ИИ ее совершил.
4. Harnesses, фактически созданные в Onmam.com
[Harness #1] AGENTS.md — "Карта нашего сервиса" для ИИ
alpha-adk/
├── CLAUDE.md ← Файл, который ИИ обязательно читает при начале сессии
├── AGENTS.md ← Список правил проекта
└── .agents/
└── context/
└── agents-rules.json ← Конкретные операционные правила
Прежде чем ИИ коснется кода Onmam.com, он обязательно прочитает эти файлы. Они содержат следующее:
- "Тестирование и изменение кода проводятся только в среде Alpha"
- "home.onmam.com — это отдельное приложение-канал, а не портал"
- "Паттерн производной таблицы GROUP BY в Board.php строго запрещен"
Та авария, о которой мы говорили? Теперь, если ИИ попытается создать тот же паттерн, он увидит это правило и остановится.
[Harness #2] Hooks — "Защитные механизмы", срабатывающие до и после действий ИИ
Хуки, фактически работающие в этом рабочем пространстве:
Непосредственно перед выполнением команды Bash ИИ →
✓ pr-guard.js : Блокировка слияния PR без ревью
✓ commit-guard.js : Блокировка коммитов, нарушающих правила
✓ deploy-guard.js : Блокировка развертывания на рабочий сервер без одобрения
✓ git-push-guard.js : Блокировка git push без одобрения
✓ destructive-git-guard.js : Блокировка деструктивных команд git, таких как git reset --hard
Непосредственно перед изменением файла ИИ →
✓ prod-gateway-guard.js : Блокировка использования ключей производственного API в файлах среды разработки
✓ design-doc-guard.js : Блокировка несанкционированного изменения проектной документации
Непосредственно после изменения файла ИИ →
✓ cascade-check.js : Проверка файлов, на которые влияют измененные файлы
Пример фактической работы deploy-guard.js:
ИИ пытается выполнить команду развертывания на рабочем сервере:
$ gcloud run deploy onmam-web ...
→ [Harness] Команда развертывания на prod заблокирована: gcloud run deploy
Проект: onmam-web
Развертывание на prod требует предварительного одобрения.
Метод одобрения: добавьте запись об одобрении в .claude/deploy/approvals.json
ИИ не выполняет развертывание на prod напрямую.
Даже если ИИ случайно или слишком активно попытается что-то загрузить на рабочий сервер, это будет физически заблокировано.
[Harness #3] Среда Alpha — выделенная "игровая площадка" для экспериментов ИИ
Рабочая (Production) : www.onmam.com ← Используется реальными церквями
Промежуточная (Staging) : staging.onmampick.org ← Окончательная проверка перед развертыванием
Alpha (Альфа) : luke-*-alpha.onmampick.org ← Пространство для работы с ИИ
Правило: Все работы с ИИ проводятся только в Alpha.
Почему это важно — что произошло на самом деле 29 апреля 2026 года:
ИИ ошибочно принял
home.onmam.comза приложениеportalи создал неверные настройки vhost. Поскольку это была среда Alpha → реальное обслуживание не пострадало. Эта ошибка была записана в AGENTS.md → ИИ не повторит ту же ошибку.
Суть Harness здесь: Если происходит ошибка → она записывается в Harness → в следующий раз эта ошибка структурно становится невозможной.
[Harness #4] Skills — "Наши собственные инструменты" для ИИ
skills/
├── email/ ← Отправка электронной почты (включая получателей, правила SMTP)
├── sms/ ← Отправка SMS
├── web-monitoring/ ← Мониторинг состояния сервиса
└── service-management/ ← Команды управления сервисом
Если ИИ говорит "отправь электронное письмо" — он автоматически знает, прочитав этот файл навыков, кому, в каком формате и через какой SMTP нужно отправить. Нет необходимости каждый раз спрашивать: "Какой адрес электронной почты получателя?"
5. Почему разработчики этим интересуются
"Проблемы эпохи разработки без ИИ"
Зависимость от индивидуальных способностей разработчика → качество падает, если уходит старший специалист
Должно быть поймано в ходе код-ревью → требуется ручная проверка
"Проблемы команд с ИИ, но без Harness"
ИИ быстро генерирует код, но → не знает контекста нашего сервиса
Повторяет те же ошибки → ИИ создает баги, а люди их исправляют
ИИ может напрямую получить доступ к рабочему серверу → неизвестно, когда произойдет инцидент
"Команды с ИИ + Harness"
ИИ пишет код, зная наши правила → генерация с контекстом
При возникновении ошибки записывается в Harness → структурное предотвращение той же ошибки
Доступ к операциям утверждается человеком → безопасная автономия
По выражению Toss:
"Harness поднимает нижний предел производительности всей организации. Не полагаясь на индивидуальные способности, все члены команды достигают результатов выше определенного уровня."
6. Итог — что я хочу донести до неразработчиков
В эпоху ИИ определение "хорошо" меняется.
Раньше: разработчик, который хорошо пишет код Сейчас: разработчик, который хорошо проектирует среду, в которой ИИ пишет код
Ключом к проектированию этой среды является Harness Engineering.
И это не только история для разработчиков.
Harness, который могут использовать и неразработчики:
→ Четкое документирование бизнес-правил
→ Определение для ИИ, "что можно делать, а что нельзя"
→ Запись "почему ИИ совершил ошибку", когда это произошло
= Это само по себе является началом Harness Engineering
Структура Harness Onmam.com с первого взгляда
alpha-adk/
├── CLAUDE.md ← [Руководство] Обязательно к прочтению при начале сессии ИИ
├── AGENTS.md ← [Руководство] Правила проекта (SoT)
├── .agents/context/
│ └── agents-rules.json ← [Руководство] Конкретные операционные правила
├── .claude/
│ ├── hooks/
│ │ ├── deploy-guard.js ← [Датчик] Блокировка развертывания на prod
│ │ ├── prod-gateway-guard.js← [Датчик] Блокировка ключей prod API
│ │ ├── commit-guard.js ← [Датчик] Проверка правил коммитов
│ │ ├── pr-guard.js ← [Датчик] Принудительное одобрение PR
│ │ ├── session-inject.js ← [Датчик] Внедрение контекста в каждую сессию
│ │ └── cascade-check.js ← [Датчик] Проверка каскадных влияний после изменения
│ └── settings.json ← [Разрешение] Настройки выполнения хуков
├── skills/
│ ├── email/ ← [Инструмент] Навык отправки электронной почты
│ ├── web-monitoring/ ← [Инструмент] Мониторинг сервиса
│ └── service-management/ ← [Инструмент] Команды управления сервисом
└── data-private/memory/ ← [Петля обратной связи] Запись ошибок → Предотвращение повторения
├── project_onmam_incidents.md ← Запись паттернов сбоев Board.php
├── project_onmam_app_structure.md← Запись ошибки home≠portal
└── feedback_alpha_only.md ← Запись правил только для Alpha
Harness = набор этих файлов Все они коммитятся в репозиторий git. Весь контекст команды! накапливается в коде.