July 18

Loop Engineering.

🗺️ Программа обучения (8 модулей)

  1. Концепция Loop Engineering: зачем это нужно и чем отличается от обычного промптинга и твоего Harness Engineering.
  2. Пять строительных блоков + Память: Automations, Worktrees, Skills, Plugins/MCP, Sub-agents и State/Memory (и как они ложатся на твои AGENTS.md и progress.md).
  3. Анатомия цикла (loop): пошаговый разбор пути от schedule до human gate.
  4. 7 продакшн-паттернов: Daily Triage, PR Babysitter, CI Sweeper, Dependency Sweeper, Changelog Drafter, Post-Merge Cleanup, Issue Triage (ритм, стоимость токенов, когда что брать).
  5. CLI-инструменты: практическое применение loop-init, loop-audit, loop-cost, loop-sync, loop-context, loop-mcp-server, loop-worktree, loop-gate.
  6. Уровни автономности (L1 → L2 → L3) и безопасный поэтапный rollout.
  7. Безопасность и провалы: failure modes, anti-patterns, multi-loop coordination, концепции intent debt / comprehension debt.
  8. Интеграция с твоим стеком: как встроить это в Hermes-оркестрацию и делегирование задач между IVA-BOT, Codex и QwenPaw.

📘 Модуль 1: Концепция Loop Engineering

1. Что это такое (простыми словами)

Обычный промпт-инжиниринг — это когда ты говоришь агенту: "Сделай X". Ты — водитель, агент — машина. Ты крутишь руль на каждом повороте.

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

Любой такой цикл (loop) состоит из триггера (события, запускающего процесс), действия и проверяемого условия остановки. Система самостоятельно читает контекст, выполняет задачу, проверяет результат (например, с помощью тестирования кода), исправляет ошибки и принимает решение о следующем шаге.

Чем Loop Engineering отличается от промпт-инжиниринга:

  • Масштаб оптимизации: Промпт-инжиниринг направлен на оптимизацию одного конкретного взаимодействия (запроса и ответа). В то же время Loop Engineering оптимизирует всю замкнутую систему и рабочий процесс в целом. Сам по себе промпт становится лишь одним из составных компонентов внутри этой большой системы.
  • Ручное управление против автономии: В традиционном подходе с промптами человек работает линейно: пишет запрос, анализирует ответ, исправляет ошибки и пишет следующий промпт. Этот процесс требует постоянного участия, а контекст и состояние могут теряться между запросами. В Loop Engineering агент работает автономно: он сам «обдумывает» задачу, применяет инструменты, анализирует собственные ошибки (например, упавшие тесты в коде) и адаптирует свой подход без вмешательства человека, пока не достигнет успеха.
  • Динамическая обратная связь (Feedback Loops): В отличие от линейной цепочки шагов, Loop Engineering работает через динамические циклы обратной связи (наблюдение, действие, оценка, обновление, повторение). Если агент выбрал неверный путь, система позволяет ему пересмотреть свой план и попробовать другой подход.

Индустрия программирования с ИИ сейчас переживает смену парадигмы. Как отмечают такие эксперты, как Борис Черни (руководитель Claude Code в Anthropic) и Питер Штайнбергер, передовые разработчики больше не пишут промпты для кодинг-агентов напрямую; их работа теперь заключается в написании автономных циклов, которые сами направляют ИИ

Как говорит Борис Черни (Head of Claude Code в Anthropic): "Я больше не пишу промпты для Claude. У меня работают циклы (loops), которые пишут промпты для Claude и решают, что делать дальше. Моя работа — проектировать эти циклы".

2. Чем это отличается от твоего Harness Engineering?

Это самый важный момент для твоей практики. Ты уже используешь Harness Engineering (создание среды, правил и контекста для агента через AGENTS.md, feature_list.json, progress.md).

  • Harness Engineering — это песочница и инструкция для одного запуска. Это ответ на вопрос: "Как агент должен себя вести, когда я его прямо сейчас запустил?"
  • Loop Engineering — это оркестрация во времени. Это ответ на вопрос: "Как система должна самостоятельно запускать этот Harness, проверять результат, сохранять прогресс и решать, что делать дальше, пока меня нет за компьютером?"

Простая аналогия:

  • Твой AGENTS.md и feature_list.json — это инструкция и чертеж для строителя.
  • Твой progress.md — это журнал работ.
  • Harness — это сам строитель с инструментами, который читает инструкцию.
  • Loop (Цикл) — это прораб, который приходит утром, смотрит в progress.md, видит, что стена не доложена, дает строителю (Harness) новую задачу, вечером проверяет результат тестами и записывает новый статус в progress.md.

3. Две главные ловушки, которые убивают автономных агентов

В репозитории выделяются два вида "долга" (debt), которые ты должен контролировать как архитектор:

  1. Intent Debt (Долг намерения): Каждый раз, когда агент запускается, он начинает "с чистого листа" и начинает угадывать, как вы работаете.
    • Решение: Твои AGENTS.md и SKILL.md файлы. Это "память намерений", которая платит по этому долгу, давая агенту готовые правила вместо догадок.
  2. Comprehension Debt (Долг понимания): Цикл работает быстро и делает много изменений, а ты перестаешь понимать, что именно он натворил и почему.
    • Решение: Строгие отчеты, читаемый progress.md и обязательные "человеческие ворота" (human gates) для важных решений. Если ты перестаешь читать отчеты цикла, ты теряешь контроль.

4. Рекурсивная цель

Loop Engineering строится вокруг рекурсивной цели. Ты не говоришь: "Напиши функцию". Ты говоришь: "Добавь эту фичу из feature_list.json. Запускай тесты. Если тесты падают, читай ошибку, исправляй код и повторяй, пока тесты не станут зелеными или пока не будет сделано 3 попытки. После этого запиши результат в progress.md и остановись".


📝 Резюме Модуля 1

  • Loop Engineering — это переход от ручного управления агентом к проектированию автономной системы, которая управляет агентом сама.
  • Твой Harness Engineering (AGENTS.md, feature_list.json) — это идеальный фундамент для Loop. Harness дает агенту правила, а Loop дает агенту расписание, проверку и память между запусками.
  • Главная задача инженера — не писать промпты, а гасить Intent Debt (через четкие инструкции) и не допускать Comprehension Debt (через прозрачные отчеты и лимиты).

🧱 Модуль 2: Строительные блоки + Память

Любой устойчивый цикл состоит из 5+1 компонентов. Если убрать хотя бы один, цикл либо сломается, либо начнет творить хаос.

1. State / Memory (Состояние и Память)

Это «блокнот» цикла. Агент не должен гадать, на чем он остановился.

  • Как это выглядит в Loop Engineering: Это структурированные файлы состояния (например, loop_state.json или тот же progress.md), которые обновляются после каждого шага.
  • Твоя практика: Твой progress.md и feature_list.json — это и есть идеальная реализация этого примитива. Когда цикл запускается, он первым делом читает progress.md, чтобы понять текущий статус, а последним делом записывает туда результат. Это гасит Intent Debt (агенту не нужно угадывать контекст).

2. Skills (Навыки)

Это инкапсулированные инструкции или скрипты, которые говорят агенту как именно выполнять задачу в твоем проекте.

  • Как это выглядит: Отдельные файлы или директории (например, skills/), которые цикл подгружает в контекст только тогда, когда они нужны. Не нужно пихать всё в один гигантский промпт.
  • Твоя практика: Твой AGENTS.md — это главный Skill. Если у тебя есть специфичные правила для работы с базой данных или деплоем, они должны быть вынесены в отдельные Skill-файлы (например, skills/db-migration.md), которые Hermes подгрузит, только если задача касается БД.

3. Worktrees (Рабочие пространства / Песочницы)

Критически важный элемент безопасности. Агент никогда не должен работать напрямую в main или master ветке.

  • Как это выглядит: Цикл автоматически создает изолированную среду. В мире Git это git worktree или отдельная feature-ветка. Агент делает изменения там, запускает тесты, и только если всё зелено, цикл предлагает эти изменения на ревью (PR/MR).
  • Твоя практика: Когда Hermes получает задачу из feature_list.json, он должен дать команду Codex или QwenPaw: «Создай ветку loop/feature-X, сделай изменения там, запусти тесты». Если тесты падают 3 раза подряд — цикл откатывает изменения (или оставляет ветку с пометкой needs_human_help) и пишет об этом в progress.md.

4. Plugins / MCP (Model Context Protocol)

Это «органы чувств» и «руки» цикла. То, через что агент взаимодействует с внешним миром, не раздувая свой контекст.

  • Как это выглядит: Серверы MCP или простые CLI-скрипты, которые агент может вызвать. Например, инструмент search_jira, get_ci_status или read_log.
  • Твоя практика: Вместо того чтобы заставлять агента парсить сырой вывод консоли, ты даешь ему Skill или MCP-инструмент run_tests_and_summarize, который возвращает структурированный JSON: {"passed": true, "errors": []}. Это резко снижает Comprehension Debt, потому что агент получает четкие данные, а не стену текста.

5. Sub-agents (Суб-агенты / Специализация)

Один агент на все руки — это миф. В продакшене циклы делегируют задачи узким специалистам.

  • Как это выглядит: Главный оркестратор (Router/Manager) читает задачу и решает, кого позвать.
  • Твоя практика:
    • Hermes — это оркестратор (читает feature_list.json, решает, что делать).
    • IVA-BOT — занимается триажем: читает входящие issue, классифицирует их, заполняет черновик ответа.
    • Codex / QwenPaw — получают четкую задачу от Hermes: «Вот ветка, вот AGENTS.md, вот конкретная функция из feature_list.json. Напиши код и тесты».
    • Такой конвейер намного надежнее, чем один мега-промпт, который пытается и придумать архитектуру, и написать код, и пообщаться с пользователем.

6. Automations (Триггеры)

То, что запускает цикл. Без триггера цикл мертв.

  • Как это выглядит: Cron-расписание (например, «каждое утро в 9:00»), вебхук (например, «при создании нового PR») или ручной вызов через CLI.
  • Твоя практика: Ты можешь настроить cron, который раз в час запускает Hermes. Hermes проверяет feature_list.json на наличие задач со статусом pending, берет верхнюю, создает Worktree, зовет QwenPaw, и по завершении обновляет статус на in_review.

🔗 Как это работает вместе (пример из жизни)

Представь, что в feature_list.json появилась задача: "Добавить валидацию email в форму регистрации".

  1. Automation: Срабатывает cron. Запускается скрипт цикла.
  2. State: Цикл читает feature_list.json и progress.md. Видит задачу со статусом todo.
  3. Worktree: Цикл создает ветку loop/email-validation.
  4. Sub-agents & Skills: Hermes вызывает QwenPaw, подгружая ему AGENTS.md и Skill skills/forms-validation.md.
  5. Plugins/MCP: QwenPaw пишет код, затем вызывает MCP-инструмент run_unit_tests. Инструмент возвращает: FAIL: missing import.
  6. Loop (итерация): QwenPaw видит ошибку, исправляет импорт, снова вызывает run_unit_tests. Теперь PASS.
  7. State: Цикл обновляет progress.md: "Задача X выполнена, ветка loop/email-validation готова к ревью".
  8. Human Gate: Цикл останавливается и шлет тебе уведомление: «PR готов, проверь».

📝 Резюме Модуля 2

  • Цикл держится на 6 примитивах: Память (progress.md), Навыки (AGENTS.md), Песочница (Worktrees), Инструменты (MCP), Специализация (Hermes + QwenPaw) и Триггеры (Cron/Webhook).
  • Главная цель этой архитектуры — не дать агенту сломать main, не дать ему забыть контекст и не заставить тебя читать 100500 строк логов.

Модулю 3: Анатомия цикла (Loop).

Здесь мы перестаем говорить об агентах как о «волшебных черных ящиках» и начинаем смотреть на них как на конвейер. В Loop Engineering цикл — это не просто «запустил промпт и получил ответ».

Это строгая последовательность из 8 шагов, которая гарантирует, что система не сойдет с ума, не испортит данные и не начнет спамить клиентам Константина.Давай разберем каждый шаг анатомии цикла на примере реальной задачи RHT Spraytech: «Найти и подготовить к контакту 50 новых автосервисов в Новосибирске».


⚙️ Анатомия цикла: 8 шагов от триггера до решения

1. Schedule (Триггер / Расписание)

Цикл не запускается сам по себе. У него должен быть четкий спусковой крючок.

  • В коде: Cron-задача или webhook.
  • В RHT: Hermes получает сигнал: «Вторник, 10:00. Проверь файл feature_list.json на наличие задач со статусом pending».

2. Triage (Сортировка и маршрутизация)

Оркестратор оценивает, что именно нужно сделать, и не пытается сделать всё сам.

  • В RHT: Hermes читает задачу: «Найти автосервисы в Новосибирске». Он понимает: «Ага, это задача на поиск и обогащение. Мне нужно вызвать цепочку: Lead Hunter → Research → Contact Intelligence».

3. State (Чтение состояния / Память)

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

  • В RHT: Hermes читает progress.md или CRM. Он видит: «Стоп, мы уже проверяли "Автосервис №1" на прошлой неделе, он был нерелевантен. Исключаем его из нового списка». Также он подгружает актуальные правила из AGENTS.md (например, "не предлагать скидки на FK-80 в первом письме").

4. Worktree (Изолированная среда / Песочница)

Агент никогда не работает напрямую с «боевой» базой или основными каналами связи на этапе экспериментов.

  • В коде: Это git worktree или новая ветка.
  • В RHT: Hermes создает изолированный черновик. Например, новую вкладку в таблице «Кампания_Новосибирск_Черновик» или черновик кампании в CRM. Все действия агента (парсинг, генерация текстов) происходят только здесь. Если агент сойдет с ума и напишет бред, основная база клиентов и репутация компании не пострадают.

5. Implementer (Исполнение)

Непосредственная работа специализированных агентов в изолированной среде.

  • В RHT:
    1. Lead Hunter забирает сырые названия из 2ГИС в черновик.
    2. Research Agent проходит по сайтам, ищет слова «опт», «спецтехника».
    3. Contact Intelligence ищет email и телефоны через MCP-инструменты. Каждый агент делает только свою узкую задачу и передает эстафету дальше.

6. Verifier (Проверка качества / QA)

Прежде чем результат покинет «песочницу», его должен проверить независимый агент или строгий набор правил.

  • В RHT: QA Agent пробегается по черновику и задает вопросы:
    • «У всех ли компаний в списке А заполнено поле email
    • «Есть ли в сгенерированных письмах запрещенные слова или выдуманные цены на FK-80?»
    • «Соответствует ли компания нашему ICP?» Если проверка не пройдена, цикл возвращается на шаг 5 (Implementer) с инструкцией исправить ошибку, или помечает задачу как requires_human_help.

7. MCP / Git (Фиксация результата)

Только после успешной проверки данные переносятся из «песочницы» в систему учета.

  • В RHT: Валидные, проверенные карточки компаний и утвержденные черновики писем переносятся из черновика в основную CRM (или progress.md получает статус ready_for_approval). Цикл фиксирует время, затраченные токены и результат.

8. Human Gate (Человеческие ворота)

Самый важный шаг для снижения тревожности (Anxiety) Константина. Цикл останавливается и ждет явного разрешения человека на критическое действие.

  • В RHT: Hermes отправляет Константину уведомление (в Telegram или на почту):"Цикл завершен. Найдено 50 компаний, после проверки и скоринга осталось 12 релевантных (Категория А). Черновики первых писем сгенерированы. [Посмотреть таблицу] [Утвердить и отправить] / [Отклонить и скорректировать правила]"

Только после нажатия «Утвердить» система переходит к следующему циклу (Communication Loop) и рассылает письма.


💡 Почему этот порядок неслучаен?

Если перепутать шаги, система рухнет:

  • Если убрать State, агент начнет писать одним и тем же клиентам дважды (Comprehension Debt).
  • Если убрать Worktree, ошибка агента на этапе парсинга может удалить или испортить основную базу CRM.
  • Если убрать Verifier, в CRM попадут компании без email или с галлюцинированными названиями.
  • Если убрать Human Gate, Константин потеряет контроль, и система превратится в «черный ящик», который он в итоге отключит из-за страха репутационных рисков.

📝 Резюме Модуля 3

Анатомия цикла — это конвейер: Триггер → Сортировка → Чтение памяти → Изоляция (Worktree) → Работа агентов → Проверка (QA) → Фиксация → Одобрение человеком. Эта структура превращает хаотичные действия ИИ в предсказуемый, безопасный и управляемый бизнес-процесс, что идеально ложится на требование Константина о «поэтапном снижении риска».

Модулю 5: CLI-инструменты Loop Engineering.

🛠️ Модуль 5: Практическое применение CLI-инструментов

1. loop-init (Инициализация цикла)

Что делает: Создает изолированную структуру папок, файлы состояния и подгружает нужные навыки (Skills) для конкретной задачи. Не дает новому циклу смешаться со старым. Пример в RHT: Ты запускаешь пилот по новому региону.

loop-init --region="Новосибирск" --segment="автосервисы" --product="FK-80"

Результат: Система создает папку loops/nsk_auto_2024/, внутри генерирует пустой state.json, копирует туда актуальный AGENTS.md и rules_fk80.md. Теперь цикл знает, где он, что он делает и какими правилами ограничен.

2. loop-audit (Аудит состояния)

Что делает: Мгновенно показывает здоровье цикла без необходимости читать тысячи строк логов. Отвечает на вопрос: «Где мы застряли и всё ли в порядке?»

loop-audit --loop="nsk_auto_2026"

Результат (читаемая сводка):

📊 Статус цикла: paused_at_gate

🔍 Найдено компаний: 150

✅ Прошло Research & Scoring: 45 (Категория А: 12, Категория В: 33)

⚠️ Ошибки/Пропуски: 3 (нет сайта или невалидный email)

📝 Готово черновиков писем: 12

⏳ Ожидает апрува человека: 12

3. loop-cost (Контроль расходов)

Что делает: Считает потраченные токены и деньги в реальном времени. Это прямой ответ на тревогу Константина «мы сливаем бюджет». Пример в RHT: Перед запуском массовой проверки сайтов ты ставишь лимит.

bash
loop-cost --check --limit="$2.00"

Результат: «Потрачено: $0.45. Осталось: $1.55. Статус: ОК». Если лимит исчерпан, loop-gate автоматически ставит цикл на паузу и шлет алерт, прежде чем агенты сожгут бюджет на галлюцинации.

4. loop-context (Управление памятью и сжатие)

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

Пример в RHT: Перед тем как Communication Agent напишет письмо, он не читает весь лог переписки или весь progress.md. Он вызывает:

loop-context --target="company_id_45" --fields="name,segment,relevance_signals,contact_email"

Результат: Агент получает чистый JSON на 300 токенов вместо 5000 токенов сырого HTML и логов, что делает его письмо точным, а не размытым.


5. loop-mcp-server (Локальный шлюз к инструментам)


Что делает: Предоставляет агентам безопасный, стандартизированный доступ к внешним API и локальным файлам, не заставляя их «угадывать» форматы или хардкодить ключи.

Пример в RHT: Вместо того чтобы просить агента «найди email в интернете», ты даешь ему инструмент:

// Агент вызывает этот MCP-инструмент
{
  "tool": "search_2gis_contacts",
  "args": {"company_name": "ООО Автомир", "region": "Новосибирск"}
}

Результат: Сервер возвращает строгий, проверенный ответ. Агент не может «придумать» email, он получает только то, что реально вернул API.

7. loop-gate (Человеческие ворота)

Что делает: Останавливает цикл в критической точке и требует явного подтверждения (approval) от человека через удобный интерфейс (например, Telegram-бот или веб-хук). Пример в RHT: Цикл дошел до этапа отправки.

loop-gate --action="approve_outreach" --batch="12_emails" --notify="constantine_tg"

Результат: Вы получает в Telegram сообщение:

🛑 Требуется решение Цикл nsk_auto_2024 подготовил 12 персонализированных писем для автосервисов (Категория А). Бюджет цикла: $0.45. [📄 Посмотреть черновики в таблице] [✅ Аппрув и отправка] | [❌ Отклонить и скорректировать промпт]

Пока вы не нажмете кнопку, цикл физически не может пойти дальше. Это гасит его Anxiety (тревогу) на 100%.


💡 Резюме Модуля 5

Эти инструменты превращают «магического ИИ-помощника» в прозрачный инженерный конвейер.

  • init и worktree обеспечивают изоляцию.
  • context и mcp-server обеспечивают качество данных.
  • audit и cost обеспечивают прозрачность для бизнеса.
  • gate обеспечивает финальный контроль и безопасность репутации.

Для вас это означает, что он покупает не «черный ящик», а управляемую систему с рычагами, которые он понимает и которым доверяет.

Модулю 6: Уровни автономности (L1 → L2 → L3) и поэтапный rollout.

📈 Шкала автономности в RHT Spraytech

Уровень L1: «Помощник» (Human-driven, AI-assisted)

Система делает всю черновую работу, но финальное действие всегда за человеком.

  • Как это работает: Hermes запускает цикл. Lead Hunter и Research Agent находят и проверяют 50 компаний. Communication Agent генерирует 12 персонализированных черновиков писем для компаний категории «А».
  • Роль человека: Константин (или менеджер) открывает таблицу/дашборд, читает каждое письмо, при необходимости правит и лично нажимает кнопку «Отправить».
  • Плюс: Абсолютный контроль, нулевой репутационный риск.
  • Минус: Не решает проблему нехватки времени человека.

Уровень L2: «Супервайзер» (AI-driven, Human-supervised)

Система самостоятельно выполняет рутинные действия по строгим правилам, но эскалирует всё нестандартное.

  • Как это работает: Система самостоятельно отправляет первые письма по утвержденным шаблонам компаниям категории «А». Она также сама ставит задачи на follow-up (например, «напомнить через 3 дня»).
  • Роль человека: Как только приходит любой ответ от клиента (особенно вопрос о цене, условиях дилерства или запрос образца), цикл немедленно останавливается. Hermes шлет алерт: "Требуется решение: Компания X заинтересовалась FK-80. Вот черновик ответа. Утвердить или написать свой?". CRM обновляется автоматически.
  • Плюс: Высвобождает 80% времени человека, сохраняя контроль над критическими точками (деньги, репутация).
  • Минус: Требует идеально настроенных правил эскалации.

Уровень L3: «Ограниченный автопилот» (Autonomous within strict boundaries)

Система ведет весь цикл от начала до конца в рамках безопасного периметра.

  • Как это работает: Для низкорисковых сценариев (например, первичный холодный поиск в новом регионе без отправки писем, или автоматическая отправка прайс-листа по явному запросу из формы на сайте) система работает полностью сама. Она сама парсит, сама обогащает, сама отправляет запрошенный файл, сама архивирует отказы с указанием причины.
  • Роль человека: Человек подключается только раз в неделю на Weekly Improvement Loop, чтобы посмотреть сводный отчет: "Найдено 500, отправлено 100, получено 5 ответов, 1 запрос образца".
  • Плюс: Максимальная масштабируемость.
  • Минус: Недопустим на старте без накопленной статистики и доверия.

🚀 Поэтапный Rollout (Как мы продаем это Константину)

Мы не продаем ему L3. Мы продаем ему безопасный путь к L3, где он может остановиться на любом этапе без ощущения "потерянных денег". Это напрямую бьет в его критерий: "возможность остановить, изменить или масштабировать систему без перестройки всего проекта".

  1. Недели 1-2 (Этап 2-3): Работаем строго на L1. Система только ищет, проверяет и готовит черновики. Цель: доказать, что Research Agent не галлюцинирует и находит именно автосервисы и дилеров, а не розничные магазины.
  2. Недели 3-4 (Этап 4): Переходим на L2 для небольшой выборки (например, 20 компаний). Система отправляет письма сама, но все ответы идут Константину на апрув. Цель: проверить deliverability (попадаем ли в спам) и качество реакции рынка.
  3. Месяц 2 и далее (Этап 6): Если экономика сходится (CPL в норме, есть запросы образцов), мы переводим рутинные ветки (напоминания, отправка КП) на L3, а человека оставляем только для закрытия сделок и работы с теплыми лидами.

Модуль 7: Безопасность и провалы (Failure Modes, Anti-patterns и управление долгом).

💥 1. Режимы провала (Failure Modes): Как цикл ломается на практике

В Loop Engineering есть три классических сценария смерти цикла. Давай посмотрим на них через призму RHT Spraytech.

А. Бесконечный рестарт (Infinite Retry Loop)

  • Что происходит: Research Agent пытается спарсить сайт компании, но там стоит защита (например, Cloudflare или капча). Агент получает ошибку, думает "я ошибся в промпте", и пробует снова. И снова. И снова.
  • Последствие для RHT: Hermes зависает, токены сгорают за 10 минут, бюджет улетает в трубу, клиент получает счёт на $50 за один утренний запуск.
  • Решение (Engineering fix): Жёсткий лимит попыток (max 2 retries) и чёткое правило в AGENTS.md: "Если сайт недоступен или требует капчу после 2 попыток, запиши в progress.md статус blocked_by_waf и переходи к следующей компании. Не трать токены на угадывание".

Б. Каскад галлюцинаций (Hallucination Cascade)

  • Что происходит: Lead Hunter нашёл компанию, но не нашёл email. Вместо того чтобы пометить это, он "придумывает" email (например, info@avtomir.ru, которого не существует), чтобы выполнить задачу "найти контакт". Research Agent верит этому и пишет персонализированное письмо на несуществующий адрес.
  • Последствие для RHT: Репутационный риск (письма возвращаются как spam/bounce), порча данных в CRM.
  • Решение (Engineering fix): Внедрение Verifier (QA Agent) перед записью в CRM. Правило: "Если email не проходит валидацию через MCP-инструмент validate_email, поле остаётся пустым, а компания получает статус needs_manual_check".

В. Тихий провал (Silent Failure)

  • Что происходит: Цикл столкнулся с ошибкой API (например, закончились кредиты 2GIS), просто остановился и ничего не написал в логи или progress.md.
  • Последствие для RHT: Клиент думает, что система работает, а на самом деле она стоит неделю.
  • Решение (Engineering fix): Цикл обязан завершаться явным статусом, даже если это ошибка. status: "failed_api_limit".

🚫 2. Антипаттерны (Anti-patterns): Как не надо проектировать

  1. "Бог-промпт" (The God Prompt): Попытка заставить одного агента найти компанию, изучить сайт, найти email, написать письмо и обновить CRM.
    • Почему это плохо: Контекст перегружается, агент теряет фокус, цена токенов взлетает.
    • Твоё преимущество: Ты уже проектируешь систему через специализированных агентов (Hermes, Lead Hunter, Research, Scoring). Это правильный путь Loop Engineering.
  2. Игнорирование состояния (State Amnesia): Агент начинает задачу, не проверив progress.md.
    • Почему это плохо: Он начинает писать письмо компании, которой уже писали 3 дня назад. Это прямой путь к спаму.
    • Твоё преимущество: Твой progress.md — это единый источник истины. Первое действие любого цикла — read_state.

⚙️ 3. Координация нескольких циклов (Multi-loop Coordination)

Когда система растёт, циклы начинают мешать друг другу.

  • Сценарий конфликта:
    • Цикл А (Search Loop) нашёл "ООО Автомир" и начал его исследовать (статус researching).
    • Цикл Б (Communication Loop) видит "ООО Автомир" в базе и решает, что пора писать письмо, потому что не проверяет текущий статус, а смотрит только на дату добавления.
  • Результат: Communication Agent пишет письмо, используя неполные или устаревшие данные, пока Research Agent ещё не закончил работу.
  • Решение (State Machine Locks): В progress.md должны быть чёткие статусы-блокировщики. Communication Loop имеет право брать компанию в работу только если research_status == "complete" И contacts_found == true. Иначе он её игнорирует.

🛡️ 4. Управление долгом через Harness Engineering

Вспомним два вида долга из Модуля 1 и посмотрим, как твои файлы их гасят:

  1. Intent Debt (Долг намерения): "Агент не знает, как мы работаем, и начинает гадать".
    • Твоё решение: Файлы AGENTS.md и skills/rht_outreach_rules.md. Ты не надеешься на "ум" модели. Ты даёшь ей жёсткие инструкции: "Никогда не называй цену FK-80. Всегда предлагай образец. Если клиента нет в списке сегментов ICP, ставь оценку C". Долг погашен.
  2. Comprehension Debt (Долг понимания): "Система сделала 1000 действий, и я (Константин) не понимаю, что именно она натворила".
    • Твоё решение: Файл progress.md. Это не сырой лог. Это структурированная сводка, которую читает человек: "Найдено: 50. Проверено: 50. Готово к отправке: 12. Ошибки: 2 (нет сайта)". Константин тратит 30 секунд на чтение, а не 30 минут на разбор логов. Долг погашен.

📝 Резюме Модуля 7

Безопасность в Loop Engineering — это не магия, а инженерные ограничения:

  1. Лимиты на попытки (чтобы не сжечь бюджет).
  2. Обязательная запись статуса даже при ошибке (чтобы не было "тихого провала").
  3. Блокировки состояний (чтобы циклы не мешали друг другу).
  4. Использование AGENTS.md и progress.md как главных инструментов контроля над галлюцинациями и хаосом.

"Мы не даём системе свободы делать что угодно. Мы даём ей свободу действовать только в тех узких коридорах, которые мы сами построили и проверили".

Модулю 8: Интеграция с твоим стеком и практическая реализация.

Здесь мы собираем всё воедино. Мы возьмём методологию Loop Engineering, твои файлы Harness Engineering (AGENTS.md, feature_list.json, progress.md) и твою команду агентов (Hermes, QwenPaw, Codex, IVA-BOT), чтобы показать, как именно будет работать система для Клиента (RHT Spraytech) с первого дня.

Ниже расписан Loop Engineering на отдельном примере реального кейса

🧩 Интеграция со стеком и практическая реализация на проекте RHT Spraytech

Здесь мы собираем всё воедино. Берём методологию Loop Engineering, твои файлы Harness Engineering (AGENTS.md, feature_list.json, progress.md) и твой единый оркестратор Hermes Agent, чтобы показать, как именно будет работать система для Клиента (RHT Spraytech) с первого дня.

Никакой абстракции. Только конкретный бизнес-цикл: поиск и квалификация дилеров/автосервисов в новом регионе.


🎯 1. Философия: Hermes — единая точка управления

В твоём предложении (раздел 3.2) это зафиксировано чётко:

"Hermes Desktop предлагается использовать как оркестратор: он запускает задачи по расписанию, распределяет работу между агентами, хранит контекст проекта, показывает статус циклов и собирает отчёты."

Ключевой архитектурный принцип: все суб-агенты из раздела 5 твоего документа (Lead Hunter, Research, Contact Intelligence, Scoring, Communication, CRM, QA и т.д.) — это не отдельные внешние платформы и не разные модели. Это специализированные роли (навыки/промпты), которые Hermes вызывает последовательно, очищая контекст между шагами.

Это и есть Loop Engineering в чистом виде: один оркестратор, изолированные контексты, строгие контракты данных между шагами.


🧠 2. Как суб-агенты реализуются внутри Hermes

Вот как "команда узких цифровых специалистов" из раздела 5 твоего документа ложится на реальную архитектуру Hermes:

Главная магия: каждый раз, когда Hermes вызывает следующий суб-агент, он очищает контекст. Когда работает Research Agent, Hermes "забывает" про правила написания писем. Когда работает Communication Agent, Hermes "забывает" про правила парсинга сайтов. Это предотвращает перегрузку и галлюцинации.


⚙️ 3. End-to-End пример: полный цикл на базе Hermes

Представь, что Клиент утвердил пилот. Вот как выглядит один полный прогон цикла (Loop) без участия человека до финального апрува.

Шаг 1: Trigger & State (09:00, Cron)

Hermes просыпается. Читает feature_list.json:

{
  "task_id": "loop_nsk_dealers_001",
  "status": "pending",
  "goal": "Найти 50 автосервисов/дилеров в Новосибирске",
  "target_segment": ["дилеры автохимии", "крупные автосервисы", "СТО спецтехники"],
  "product_focus": "FK-80"
}

Hermes читает progress.md, чтобы убедиться, что эти компании ещё не обрабатывались.

Шаг 2: Lead Search Loop (роль Lead Hunter)

Hermes создаёт изолированный Worktree worktrees/nsk_001/. Вызывает роль Lead Hunter с инструкцией: "Используй MCP search_2gis, найди 50 компаний по целевым сегментам в Новосибирске. Верни строго JSON: name, url, category, phone". Lead Hunter возвращает чистый массив. Грязь и дубли отброшены.

Шаг 3: Research & Qualification Loop (роли Research + Contact Intelligence + Scoring)

Hermes передаёт список из 50 компаний роли Research Agent. В промпт подгружается Skill: skills/rht_research_rules.md. Задача Research Agent: Пройтись по URL. Найти на сайте слова "опт", "дилерам", "корпоративным клиентам". Результат: Из 50 компаний 35 получают статус irrelevant (розница), 15 получают статус category_A.

Для 15 релевантных Hermes вызывает Contact Intelligence — тот находит email и телефоны через MCP-инструменты.

Затем Hermes вызывает Lead Scoring с файлом icp_rules.md. Скоринг возвращает обоснование: "Компания X — дилер автохимии, есть раздел 'Стать дилером', соответствует ICP по 4 из 5 критериев".

Шаг 4: Communication Loop (роли Communication + QA)

Для компаний категории А Hermes вызывает Communication Agent. В контекст подаётся knowledge/fk80_dealer_terms.md и knowledge/fk80_benefits.md. Жёсткое правило в промпте: "Используй только факты из файла знаний. Никогда не называй цену. Цель письма — предложить выслать образец FK-80 или КП, а не продать сразу". Communication Agent генерирует 15 персонализированных черновиков.

Затем Hermes вызывает QA Agent, который проверяет черновики на "красные флаги": наличие слов "скидка 50%", "гарантируем", или отсутствие email в карточке. Если всё чисто, статус меняется на ready_for_human_gate.

Шаг 5: Human Gate (Hermes → Клиент)

Hermes формирует сводку и отправляет Клиенту (например, в Telegram или на почту):

📊 Отчёт по циклу nsk_dealers_001 • Найдено: 50 компаний • Отсеяно (нерелевант): 35 • Готово к отправке (Категория А): 12 • Затрачено токенов: ~$0.12📎 [Ссылка на таблицу с черновиками писем и обоснованием выбора][✅ Утвердить и запустить отправку] | [❌ Отклонить и скорректировать правила]

Шаг 6: Execution & Memory Update (роль CRM Agent)

Клиент нажимает "✅". Hermes передаёт задачу роли CRM Agent: "Создай карточки в CRM, проставь статус outreach_sent, запланируй follow-up через 3 дня".

Шаг 7: Weekly Improvement Loop (роль Improvement Agent)

Раз в неделю Hermes запускает Improvement Agent, который сводит данные: какие источники дали качественные компании, какие сегменты чаще отвечают, какие сообщения вызывают интерес. Рекомендации идут Клиенту на утверждение.


🗺️ 4. Как это ложится на этапы внедрения из документа

Моя архитектура идеально синхронизирована с дорожной картой из раздела 12:

🛡️ 5. Как Harness Engineering страхует от провалов

Именно твои файлы делают эту систему предсказуемой для Клиента. Вот как они выглядят в деле:

1. AGENTS.md (Skill для Communication Agent):

# Роль: Communication Agent для RHT Spraytech
## Жёсткие ограничения (Negative Constraints):
- ЗАПРЕЩЕНО придумывать цены или условия доставки. Если их нет в `knowledge/prices.md`, пиши: "Условия обсуждаются индивидуально".
- ЗАПРЕЩЕНО позиционировать FK-80 как розничный товар. Фокус: опт, дилерство, корпоративные клиенты.
- Если компания не в списке сегментов ICP, не трать токены на генерацию письма.

2. progress.md (State/Memory):

## Цикл: nsk_dealers_001 (Дата: 19.07.2026)
| Компания | Сегмент | Скоринг | Статус | Следующий шаг |
|---|---|---|---|---|
| ООО "Автомир-НСК" | Дилер автохимии | A | `draft_approved` | Отправлено 19.07. Ждём ответ до 22.07 |
| ИП Иванов (Шиномонтаж) | Розница | C | `archived` | Нет оптовых разделов на сайте |

Клиент открывает этот файл и за 10 секунд понимает, что делает система. Comprehension Debt = 0.

3. feature_list.json (Задачи для Hermes):

{
  "task_id": "loop_nsk_dealers_001",
  "status": "completed",
  "result": "12 leads approved for outreach",
  "cost_usd": 0.12,
  "next_loop": "follow_up_22_07"
}

💡 6. Почему это идеальное попадание в JTBD Клиента

Вспомним его корневую задачу из стратегического разбора: "Построить экономически устойчивый канал привлечения новых B2B-клиентов без возврата к тяжёлой и дорогой штатной модели продаж".

  1. Экономика: Клиент не нанимает менеджера за 80к+ в месяц. Он тратит копейки на токены и API 2GIS, оплачивая только релевантные действия. Это прямое решение его боли "издержки на содержание отдела продаж были выше, чем они могут нам дать".
  2. Контроль: Клиент не боится "чёрного ящика". Он видит progress.md, он утверждает первую партию писем (Human Gate). Он может остановить цикл на любом этапе (Модульность из раздела 3.5).
  3. Масштабируемость: Когда пилот в Новосибирске покажет, что из 12 писем 3 приводят к запросу образца, Клиент сам скажет: "Запускаем то же самое на 10 новых регионов". И Hermes сделает это за минуту, просто обновив feature_list.json.
  4. Доводка до счёта: Система не останавливается на "списке компаний". Она доводит лида до запроса образца, КП или счёта — ровно то, что Клиент формулировал как "доводить клиента… до покупки продукции, до выставления ему счета".

🏁 Финал Модуля 8

Я получил не просто набор знаний, а готовый архитектурный каркас, который:

  • Строится на базе единого Hermes Agent (без зоопарка внешних платформ).
  • Использует специализированные роли внутри Hermes (Lead Hunter, Research, Scoring, Communication, QA, CRM).
  • Оперирует повторяемыми бизнес-циклами (Lead Search Loop, Research & Qualification Loop, Communication Loop, Weekly Improvement Loop).
  • Защищён твоими файлами Harness Engineering (AGENTS.md, feature_list.json, progress.md).
  • Синхронизирован с дорожной картой внедрения из твоего документа (Этапы 1–6).
  • Прямо закрывает JTBD Клиента и снижает его Anxiety через поэтапность и Human-in-the-loop.

Автоматизация продаж
через AI-агентов

Реальные кейсы. Пошаговые разборы.
[тг канал] • Подписаться