Ная
· Luke Yang

Понимание Harness на примере Nextain x Onmam.com AX

harness-engineeringonmamcase-studyAIAXAI Trasformation

Этот пост основан на презентации, представленной 2 мая 2026 года в гильдии VibeCoding Daolabs DabaKodDan, посвященной тематическому исследованию "Harness Engineering".

Nextain — это компания, которая разрабатывает и поддерживает технологии для AX компаний, владеющих программными продуктами. Она приняла на себя управление системой корейского церковного портала Onmam.com и в настоящее время работает над AX. Мы переносим устаревшую систему из старого центра обработки данных, настраиваем среду для разработки и эксплуатации проекта на основе агентов, а также проводим работы по стабилизации и улучшению функциональности. Поскольку это старая устаревшая система, возникают пробные ошибки, и мы инкорпорируем их в опыт и технологии компании, применяя naia-business-adk к Onmam.com. Этот опыт был представлен на мероприятии как пример, объясняющий Harness Engineering.

hero-en.webp

Однострочное сообщение этого поста "Важнее не хорошо использовать ИИ, а создать среду, в которой ИИ не будет совершать ошибок."


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. Весь контекст команды! накапливается в коде.

Popular Posts

CC BY-NC-SA 4.0This post is licensed under CC BY-NC-SA 4.0.

Комментарии

Вы можете оставить комментарий без входа

...