Loop Engineering.
🗺️ Программа обучения (8 модулей)
- Концепция Loop Engineering: зачем это нужно и чем отличается от обычного промптинга и твоего Harness Engineering.
- Пять строительных блоков + Память: Automations, Worktrees, Skills, Plugins/MCP, Sub-agents и State/Memory (и как они ложатся на твои
AGENTS.mdиprogress.md). - Анатомия цикла (loop): пошаговый разбор пути от
scheduleдоhuman gate. - 7 продакшн-паттернов: Daily Triage, PR Babysitter, CI Sweeper, Dependency Sweeper, Changelog Drafter, Post-Merge Cleanup, Issue Triage (ритм, стоимость токенов, когда что брать).
- CLI-инструменты: практическое применение
loop-init,loop-audit,loop-cost,loop-sync,loop-context,loop-mcp-server,loop-worktree,loop-gate. - Уровни автономности (L1 → L2 → L3) и безопасный поэтапный rollout.
- Безопасность и провалы: failure modes, anti-patterns, multi-loop coordination, концепции intent debt / comprehension debt.
- Интеграция с твоим стеком: как встроить это в 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), которые ты должен контролировать как архитектор:
- Intent Debt (Долг намерения): Каждый раз, когда агент запускается, он начинает "с чистого листа" и начинает угадывать, как вы работаете.
- Решение: Твои
AGENTS.mdиSKILL.mdфайлы. Это "память намерений", которая платит по этому долгу, давая агенту готовые правила вместо догадок. - Comprehension Debt (Долг понимания): Цикл работает быстро и делает много изменений, а ты перестаешь понимать, что именно он натворил и почему.
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 в форму регистрации".
- Automation: Срабатывает cron. Запускается скрипт цикла.
- State: Цикл читает
feature_list.jsonиprogress.md. Видит задачу со статусомtodo. - Worktree: Цикл создает ветку
loop/email-validation. - Sub-agents & Skills: Hermes вызывает QwenPaw, подгружая ему
AGENTS.mdи Skillskills/forms-validation.md. - Plugins/MCP: QwenPaw пишет код, затем вызывает MCP-инструмент
run_unit_tests. Инструмент возвращает:FAIL: missing import. - Loop (итерация): QwenPaw видит ошибку, исправляет импорт, снова вызывает
run_unit_tests. ТеперьPASS. - State: Цикл обновляет
progress.md: "Задача X выполнена, веткаloop/email-validationготова к ревью". - Human Gate: Цикл останавливается и шлет тебе уведомление: «PR готов, проверь».
- Цикл держится на 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 (Исполнение)
Непосредственная работа специализированных агентов в изолированной среде.
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 ✅ Прошло Research & Scoring: 45 (Категория А: 12, Категория В: 33)
⚠️ Ошибки/Пропуски: 3 (нет сайта или невалидный email)
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-2 (Этап 2-3): Работаем строго на L1. Система только ищет, проверяет и готовит черновики. Цель: доказать, что Research Agent не галлюцинирует и находит именно автосервисы и дилеров, а не розничные магазины.
- Недели 3-4 (Этап 4): Переходим на L2 для небольшой выборки (например, 20 компаний). Система отправляет письма сама, но все ответы идут Константину на апрув. Цель: проверить deliverability (попадаем ли в спам) и качество реакции рынка.
- Месяц 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): Как не надо проектировать
- "Бог-промпт" (The God Prompt): Попытка заставить одного агента найти компанию, изучить сайт, найти email, написать письмо и обновить CRM.
- Почему это плохо: Контекст перегружается, агент теряет фокус, цена токенов взлетает.
- Твоё преимущество: Ты уже проектируешь систему через специализированных агентов (Hermes, Lead Hunter, Research, Scoring). Это правильный путь Loop Engineering.
- Игнорирование состояния (State Amnesia): Агент начинает задачу, не проверив
progress.md.
⚙️ 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 и посмотрим, как твои файлы их гасят:
- Intent Debt (Долг намерения): "Агент не знает, как мы работаем, и начинает гадать".
- Твоё решение: Файлы
AGENTS.mdиskills/rht_outreach_rules.md. Ты не надеешься на "ум" модели. Ты даёшь ей жёсткие инструкции: "Никогда не называй цену FK-80. Всегда предлагай образец. Если клиента нет в списке сегментов ICP, ставь оценку C". Долг погашен. - Comprehension Debt (Долг понимания): "Система сделала 1000 действий, и я (Константин) не понимаю, что именно она натворила".
📝 Резюме Модуля 7
Безопасность в Loop Engineering — это не магия, а инженерные ограничения:
- Лимиты на попытки (чтобы не сжечь бюджет).
- Обязательная запись статуса даже при ошибке (чтобы не было "тихого провала").
- Блокировки состояний (чтобы циклы не мешали друг другу).
- Использование
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-клиентов без возврата к тяжёлой и дорогой штатной модели продаж".
- Экономика: Клиент не нанимает менеджера за 80к+ в месяц. Он тратит копейки на токены и API 2GIS, оплачивая только релевантные действия. Это прямое решение его боли "издержки на содержание отдела продаж были выше, чем они могут нам дать".
- Контроль: Клиент не боится "чёрного ящика". Он видит
progress.md, он утверждает первую партию писем (Human Gate). Он может остановить цикл на любом этапе (Модульность из раздела 3.5). - Масштабируемость: Когда пилот в Новосибирске покажет, что из 12 писем 3 приводят к запросу образца, Клиент сам скажет: "Запускаем то же самое на 10 новых регионов". И Hermes сделает это за минуту, просто обновив
feature_list.json. - Доводка до счёта: Система не останавливается на "списке компаний". Она доводит лида до запроса образца, КП или счёта — ровно то, что Клиент формулировал как "доводить клиента… до покупки продукции, до выставления ему счета".
🏁 Финал Модуля 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.