Агенты, harness, автономная разработка — шпаргалка к собесу

Александр Птицын · Senior Frontend, AI-first · 1 Agent Loop · 2 Workflow vs Agent · 3 Harness · 4 Автономная разработка / software dark factory · 5 Оптимизация стоимости · 6 Локальные модели · 7 Реальные вопросы из базы собесов · 8 Каверзные follow-up · 9 Истории на 60 секунд. Фиолетовое — как это устроено у меня в проде (Nexus, Собесыч, Кабинет, база собесов). 23.09.2026

За 30 секунд — вся тема

1 · Agent Loop2 · Workflow vs Agent3 · Harness4 · Dark factory5 · Стоимость6 · Локальные модели7 · Вопросы из базы8 · Каверзные9 · Истории10 · Смежные темы

1Agent Loop — что крутится внутри любого агента

Claude Code, Codex, Cursor Agent, мой Nexus на сервере — внутри у всех одна и та же петля. Объясняешь её — и дальше всё остальное становится «обвязкой вокруг петли».

system + task → LLM → tool_call? ──да──▶ выполнить инструмент → результат в messages → LLM → … ──нет──▶ финальный ответ / стоп
  1. Сборка контекста. System prompt (роль, правила, описание инструментов в JSON-схеме) + задача пользователя + то, что подтянули из памяти.
  2. Вызов модели. Модель возвращает либо текст, либо структурированный вызов инструмента (function calling: имя + аргументы по схеме). Может вернуть несколько вызовов сразу — parallel tool calls.
  3. Исполнение инструмента кодом, не моделью. Валидация аргументов, проверка прав (permission mode, whitelist), песочница, таймаут. Ошибка инструмента — это не crash, а наблюдение, которое уходит модели текстом.
  4. Результат в контекст. Наблюдение добавляется в messages; модель видит всю историю и решает следующий шаг.
  5. Условия остановки. Ответ без tool_call, лимит шагов (max_turns), бюджет токенов/денег, детектор зацикливания (три одинаковых вызова подряд), таймаут.
  6. Постобработка. Сжатие контекста, запись в память, отчёт, лог событий.
🔑 Модель stateless. Между вызовами она не помнит ничего — «память агента» это либо messages (растут и дорожают), либо внешняя память (файлы, БД, векторный поиск), которую harness подкладывает в контекст. Отсюда два следствия: контекст надо беречь (см. стоимость) и память надо проектировать явно.

Три архитектуры петли — чем отличаются

СхемаКак работаетПлюсМинусГде у меня
ReAct (reason + act)Один агент: подумал → вызвал инструмент → посмотрел → дальшеПросто, гибкоКонтекст растёт с каждым шагом, дорого на длинных задачахИнтерактивная сессия Claude Code, чат с агентом в Nexus
Plan-and-executeСначала план шагов, потом исполнение по плану, при сбое — перепланированиеПредсказуемо, легко ревьюить планПлан устаревает по ходуPlan mode → спека → исполнение по тикетам (кабинет, CRM)
Orchestrator + workersГлавный агент режет задачу, раздаёт субагентам с чистым контекстом, собирает результатыПараллельно, каждый worker с коротким контекстом = дешевлеСложнее отладка, конфликты по общим файламРевизия учеников фан-аутом субагентов; два кодера в разных worktree на кабинете
Моё — та же петля на сервере 24/7: Nexus-agent-manager держит агентов по крону вне моего ноутбука. Таск = system prompt + user message + модель + whitelist инструментов (например только Bash) + MCP-серверы + расписание. Каждый прогон пишет лог событий text / tool_use / tool_result / result — по нему видно каждый виток петли. Есть ручка «прогнать разово» для теста и notifyOn: error — алерт в Telegram, если прогон упал. Пример: «Вахтёр Собесыча» каждые 30 минут: взять упавшие разборы из БД → диагноз по логам → починить по гардрейлам → отчёт мне. Обработанные фейлы — в seen-файл, чтобы петля не спамила и не чинила одно и то же.
Агент зациклился — что делаешь?
Три защиты на уровне harness: лимит шагов и бюджет на прогон; детектор повторов (одинаковый tool call с одинаковыми аргументами N раз → стоп с отчётом); «три одинаковые ошибки подряд → остановиться и вернуть диагноз человеку». Плюс дедупликация обработанного (seen-файл), чтобы крон-агент не брал ту же задачу снова.
Чем tool call отличается от «попросить модель написать команду текстом»?
Схемой и контролем: аргументы валидируются по JSON-схеме до исполнения, исполняет код (не модель), можно навесить права и хук перед вызовом. Текстовая команда — это парсинг вслепую и нулевой контроль.
Как агент «учится»?
Веса не меняются. Учится система: правило в инструкции, новый скилл-чеклист, тест, хук. У меня это буквально файлы feedback_*.md в памяти проекта — каждый после конкретной ошибки, с полем «почему» и «как применять».

2Workflow vs Agent — главное инженерное решение

Самый частый вопрос сеньору: «а где вы НЕ даёте модели свободу?». Правильный ответ — почти везде.

❌ Workflow — шаги известны заранее и зашиты кодом. LLM — один из шагов (классифицировать, извлечь, написать текст). Предсказуемо, дёшево, тестируется как обычный код. Свобода модели ≈ 0.
✅ Agent — модель сама решает, какой инструмент вызвать и когда остановиться. Нужен, когда путь заранее не известен: дебаг, исследование кодовой базы, «почини упавший прогон». Дороже и менее предсказуемо.
🔑 Свобода модели — дефицитный ресурс. Чем меньше свободы, тем дешевле и надёжнее. Выдавать её ровно там, где шаги нельзя написать кодом. Если можешь описать алгоритм — пиши алгоритм, не промпт.

Пять паттернов workflow (по классификации Anthropic «Building effective agents»)

ПаттернСутьГде у меня
Prompt chainingВыход шага — вход следующего, между ними проверка кодом (gate)Собесыч: транскрипция → анализ → проверка полноты → PDF → запись в базу
RoutingКлассифицировать вход и отправить в нужную веткуХук на каждое сообщение: по фразе подсказывает нужный скилл-чеклист. Роутер на regex, без LLM вообще — ноль токенов
ParallelizationРазрезать на независимые куски и выполнить параллельно (или несколько мнений → голосование)Ревизия учеников: субагент на каждого, сводка в дашборд
Orchestrator-workersГлавный делит задачу динамически, workers исполняютПараллельные кодеры в отдельных git worktree на кабинете
Evaluator-optimizerОдин генерирует, другой оценивает по критериям, цикл до порогаCompleteness-чек в Собесыче: сверяет разбор с исходником, помечает пропуски до того, как увидит ученик
Моё — как принимаю решение «код или модель»: ежедневная догрузка базы собесов из Telegram — чистый скрипт по крону без LLM: парсинг, дедуп по «компания+дата+источник», эмбеддинги локальной моделью. Сырьё складывается в буфер, а LLM-структурирование — отдельный шаг по запросу. Причина — крон-задача не должна зависеть от баланса API и от настроения модели. А вот «почини упавший разбор» — агент: там путь заранее неизвестен. Сам скилл-чеклист на 8 шагов (достать задачи → решить → верифицировать прогоном node/tsc/vitest → разбор → база → YouTube → отметить) — это workflow, где агент исполняет шаги, а не придумывает их.
Когда workflow ломается и нужен агент?
Когда вход слишком разнообразный, чтобы предусмотреть ветки: свободный текст, незнакомая кодовая база, инцидент с неизвестной причиной. Признак: в workflow копятся if-ветки под каждый новый случай.
Как тестируешь workflow с LLM внутри?
LLM-шаг мокается контрактом (фиксированный JSON по схеме), остальное тестируется как обычный код. Сам LLM-шаг — отдельный eval-набор: вход → ожидаемая структура, гоняется при смене промпта или модели.

3Harness — среда, в которой агент не может сделать плохо

Термин «harness engineering» — про то, что инженерная работа в agent-first команде уходит из кода в среду вокруг агента: инструкции, инструменты, проверки, обратную связь. Модель = процессор, harness = операционная система.

Слои harness'а — от инструкций до наблюдаемости

СлойЧто этоКак у меня
ИнструкцииПравила проекта, которые модель видит всегда: стиль, запреты, SSOT, порядок работыCLAUDE.md / AGENTS.md: правило TDD (тест до кода), «интеграция обязана иметь тест, пересекающий границу», SSOT для конфигов, «назвать скилл вслух перед работой»
Скиллы / чек-листыПроцедурная память: пошаговые сценарии типовых задач~30 скиллов в .claude/commands/: разбор мока, онбординг, публикация ролика, еженедельный отчёт. Скилл = отлаженный на прошлых кейсах формат, импровизация хуже
ХукиКод, который срабатывает на событиях: до/после вызова инструмента, на каждое сообщениеХук на каждое сообщение → регекс-роутер подсказывает скилл и напоминает «отчитайся по каждому шагу». Хук покрыт тестами как обычный код
Инструменты / MCPЧто агент может делать, и через какой протоколMCP к базе знаний, к Telegram (только чтение, user-сессия), к YouTube; у крон-агентов whitelist из одного Bash
Права и изоляцияЧто агенту нельзя, и где он работаетКрон-агенты в контейнере; параллельные кодеры — каждый в своём git worktree; список разрешённых пользователей у агента-куратора; гранты доступа со сроком в кабинете
Обратная связьКак агент узнаёт, что сделал не тоТесты (vitest, tsc, node-прогон), скриншот вёрстки через браузер, readback после записи в чужую базу — «прочитай, что записал»
ПамятьЧто переносится между сессиямиДиректория памяти: один файл — один факт с полями «почему» и «как применять» + индекс, который грузится в каждую сессию
НаблюдаемостьЛоги, алерты, отчётыЛог событий каждого прогона, алерт в TG при ошибке, ежедневный отчёт по воронке стадий (загружено → распознано → разобрано → доставлено)
🔑 Compound-принцип: каждый инцидент заканчивается не исправлением кода, а изменением harness'а — правилом, тестом, хуком. Тогда ошибка не повторится ни у меня, ни у другого агента.
Моё — два инцидента, из которых выросли правила: (1) 96 зелёных unit-тестов, а в проде у пользователя не открылся оплаченный доступ: lifecycle фреймворка передавал relation в другом формате, а мои моки этого не знали. Теперь правило в CLAUDE.md: интеграция считается покрытой, только если есть тест, который реально пересекает границу — бутит фреймворк, зовёт настоящий API, проверяет side-effect на реальной модели. (2) Сказал «запускай выкладку на YouTube», агент сделал шаг 7 из 8 и остановился: задачи не попали в базу с таймкодами. Ответ — не «будь внимательнее», а хук: на каждое сообщение регекс-роутер подсказывает полный чек-лист скилла и требует отчёт «сделано / пропущено» по каждому шагу.
Как не дать агенту удалить прод?
Не промптом «будь осторожен», а harness'ом: whitelist инструментов, permission mode с подтверждением деструктивных действий, контейнер без доступа к проду, ssh только через alias с ограниченным ключом, гардрейлы вахтёра: «рестарт только при нуле активных задач; .env и схемы не трогать; причина неясна — не чинить, только диагноз».
Чем harness отличается от промпт-инжиниринга?
Промпт — что говорим модели. Harness — что она физически может, что её проверяет и что с ней происходит после ошибки. Промпт можно проигнорировать, хук и тест — нет.

4Автономная разработка / software dark factory

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

Уровни автономии — где находимся

УровеньЧто делает AIРоль человека
L0 автодополнениеСтрока кодаПишет всё
L1 чатФрагмент по запросуВставляет, проверяет
L2 агент в IDEПравки в нескольких файлах с подтверждениемСмотрит каждый diff
L3 фоновый агент на задачуТикет → ветка → PR с тестамиРевью PR
L4 конвейерКодер + ревью-агент + CI, несколько задач параллельноПостановка и приёмка
L5 фабрикаЗадачи берутся сами: из мониторинга, бэклога, инцидентовЦели, гардрейлы, аудит
Моё: продуктовые фичи — L3–L4 (тикет → субагент в worktree → PR → CI с тестами и AI-ревью → мой мерж). Вахтёр Собесыча — L5 в узкой рамке: сам берёт упавшие разборы и чинит по гардрейлам.

Семь условий, без которых фабрика не работает

  1. Постановка с критериями приёмки. Спека до кода: что считается готовым. У меня — файл требований в репо, plan mode, «один тикет за сессию».
  2. Тесты как контракт. Тест пишется до кода и становится тем, что агент обязан сделать зелёным. Без теста агент оптимизирует «выглядит правильно».
  3. Изоляция. Каждый агент в своём worktree / контейнере / ветке. Два кодера в одной рабочей копии = конфликт HEAD и случайный git add -A чужих файлов (ловил).
  4. Маленькие задачи. Контекст короткий, ошибка локальна, ревью читаемо. Большой рефакторинг режется на тикеты.
  5. Ревью другой ролью. Ревью-агент с adversarial-промптом «сломай это» + человек на критичном: access control, миграции, деньги. Сводке и зелёным тестам не верить — читать SQL сам (так поймал баг уникального констрейнта, который затирал второй грант).
  6. Наблюдаемость и откат. Лог каждого прогона, алерт при сбое, тег образа перед деплоем для отката.
  7. Петля обучения. Инцидент → правило / тест / хук в harness (раздел 3).
❌ Так не работает: «вот репозиторий, сделай фичу целиком», без тестов, в общей рабочей копии, с ревью по сводке агента. Итог — красивый PR, который ломает соседнее.
✅ Так работает: тикет с критериями → тест → агент в изоляции → прогон тестов зелёный → ревью-агент → человек мержит → инцидент превращается в правило.
Моё — цифры по одному проекту: бот учёта мок-собесов: 11 PR, 50 тестов, из них 10 интеграционных против реального Postgres, написан субагентами по спеке; в проде с сентября. Кабинет доступов (Go + Next): каждый PR через CI — тесты, gitleaks, AI-ревью diff'а; бэк на интеграционных тестах с реальной БД. Урок по AI-ревью: видит только diff и имеет устаревшие знания — ложные срабатывания («такой версии Go нет» — есть); валидное применяю, ложное отклоняю с обоснованием.
⚠️ Честно про границы: плохо работает на больших рефакторингах без тестов, на размытых требованиях, на визуальном качестве без цикла «скриншот → сравнить» и там, где нужны права на прод. Это не «AI не умеет», а «harness ещё не построен».
Как измеряешь пользу автономки?
Не «токены», а время до результата и переделки: цикл тикет → мерж, доля PR, вернувшихся с ревью, число инцидентов после деплоя. Плюс стоимость задачи end-to-end (раздел 5).
Кто отвечает за код агента?
Я. Каждая строка в проде — моя ответственность, поэтому gate'ы на людях там, где цена ошибки высока: доступы, деньги, миграции.

5Оптимизация стоимости разработки с агентами

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

cost = Σ по вызовам ( input_tokens × цена_in + output_tokens × цена_out ) × число прогонов + время человека на ревью и переделки
🔑 В агентной петле доминирует input: на каждом шаге модель получает всю историю заново. 30 шагов по 50k токенов контекста = 1.5M input. Поэтому главный рычаг — не «дешевле модель», а «короче контекст».

Рычаги — от самых сильных

РычагМеханикаКак у меня
Короткий контекстСубагенты с чистым контекстом на подзадачи; читать фрагменты файлов, а не файлы; сжатие истории (compaction); результаты поиска — выводом, не дампомФан-аут субагентов вместо одной длинной сессии; сводка возвращается, а не сырые файлы
Роутинг моделейКлассификация, экстракция, форматирование — дешёвая модель; архитектура, дебаг, анализ — сильная. Разница в цене между классами — на порядок и большеТяжёлый разбор собеса — Sonnet; форматирование транскрипта — flash-lite (примерно в 30 раз дешевле); авто-ответы работодателям в кликере — самая дешёвая модель
Кэш префиксаСтабильная часть промпта (system, описание инструментов, большие документы) кэшируется, чтение из кэша стоит ~10% от обычного input. Условие: неизменяемое — в начало, переменное — в конецДлинные правила и схемы — в system prompt агента, задача — последним сообщением
Код вместо LLMВсё, что описывается алгоритмом — регекс, SQL, скрипт. Ноль токенов, ноль недетерминизмаРоутер скиллов на regex; дедуп и парсинг в догрузке базы без LLM; эмбеддинги локальной моделью
Меньше прогоновТест-гейт ловит ошибку на первой итерации, а не на десятой; лимит шагов и бюджет на таск; кэш результатов и идемпотентность (не пересчитывать сделанное)Идемпотентный ingest: повтор → update без дублей, эмбеддинги не пересчитываются
Batch и офлайнМассовая обработка без требований к латентности — batch API (обычно −50%) или ночью на дешёвой моделиСтруктурирование бэклога — отдельным пакетом, не в реальном времени
Локальные моделиASR, эмбеддинги, простая классификация — на своём железе, цена за токен нольWhisper локально на Mac и на сервере; эмбеддинги MiniLM на CPU
Подписка vs APIИнтерактивная работа — фиксированная подписка (предсказуемо); прод-пайплайны — API с бюджетом и алертом на балансМассовые прогоны — субагентами по подписке; API — только для сервисов ученикам, со сторожем баланса
Моё — одна честная цифра: разовая пересборка базы собесов через API на Sonnet съела $16 за 1.9M токенов. Вывод превратился в политику: массовая обработка либо субагентами по подписке, либо на flash-lite; крон-задачи не зависят от платного API (буферизуют сырьё, LLM-шаг отдельно); на сервере сторож баланса по крону шлёт алерт при остатке ниже порога, иначе пайплайн для учеников молча падает на стадии анализа, когда транскрипция уже прошла.
Что такое cache hit rate и как его поднять?
Доля input-токенов, прочитанных из кэша. Поднимается стабильным префиксом: system и tools не меняются между вызовами, динамика — в конце; не перемешивать порядок инструментов; не вставлять timestamp в начало промпта.
Когда Opus, когда Haiku?
Haiku/flash — там, где есть чёткая схема ответа и eval показал, что справляется: классификация, извлечение полей, форматирование. Сильная модель — где нужно рассуждение: архитектурное решение, дебаг по логам, ревью. Правило: начинать с сильной, зафиксировать eval, потом пробовать спуститься.
Как посчитать стоимость фичи?
Токены по логам прогонов × цены + часы человека на постановку, ревью и переделки. Сравнивать с ручной реализацией по времени до мержа. Токены обычно дешевле часа разработчика, дорого — переделки из-за плохой постановки.

6Локальные модели — где они выигрывают, а где нет

Локальная модель — это модель на своём железе: Mac с Apple Silicon (MLX), сервер на CPU/GPU. Рантаймы: ollama, llama.cpp, LM Studio, vLLM, MLX. Классы: ASR (Whisper), эмбеддинги (MiniLM, bge, e5), малые LLM 7–32B в квантованном виде (Qwen, Llama, Gemma).

ЗадачаЛокальноОблакоПочему
Транскрипция аудио (ASR)✅—Whisper large-v3-turbo даёт качество уровня API, аудио не покидает машину, цена ноль
Эмбеддинги для поиска✅—Малая модель на CPU, десятки тысяч записей, повторяемо и бесплатно
Классификация / извлечение по схеме на объёме✅ после evalфолбэк7–14B справляется, если есть жёсткая схема и grammar-ограничение вывода
Приватные данные, офлайн✅✗Записи собесов, переписки, ПДн — наружу только текст, и только если разрешено
Рассуждение, архитектура, дебаг✗✅Малые модели хуже держат длинный контекст и многошаговую логику
Агентная петля с инструментами✗ (пока)✅Малые модели плохо следуют tool-протоколу: ломают JSON, зацикливаются

Как переводить задачу на локальную модель — порядок

  1. Начать с frontier-модели и зафиксировать eval-набор: 30–100 входов с ожидаемым результатом. Без него «локальная тоже норм» — самообман.
  2. Прогнать локальную на том же eval'е и сравнить: точность, доля битого JSON, латентность.
  3. Подобрать размер и квантование: Q4 режет память примерно вчетверо при небольшой потере качества; ориентир по памяти — 7B Q4 ≈ 4–5 ГБ, 14B ≈ 9 ГБ, 32B ≈ 20 ГБ.
  4. Ограничить вывод: JSON-схема / grammar в рантайме, а не «пожалуйста, верни JSON».
  5. Батчить и кэшировать: эмбеддинги считать один раз, хранить в БД; длинные входы чанковать.
  6. Следить за ресурсами: память и диск на общем сервере — соседний сервис может уронить модель по OOM.
  7. Гибрид: локально — дешёвый массовый этап, облако — только там, где локальная не дотянула по eval'у.
Моё — два локальных слоя в проде: (1) ASR: mlx-whisper large-v3-turbo на Mac (10 минут записи примерно за 1.5 минуты), faster-whisper на сервере для бота. Двухэтапный пайплайн: локальный сырой транскрипт → облачное форматирование со спикерами; наружу уходит текст, не аудио. (2) Эмбеддинги: paraphrase-multilingual-MiniLM (384 измерения) на CPU внутри контейнера + pgvector: 14.7k вопросов из 2 000 собесов и 48k сообщений чата — семантический поиск без единого платного токена. Индекс считается инкрементально при догрузке.
⚠️ Грабли, которые прошёл: Whisper галлюцинирует на тишине («Продолжение следует…», зацикленное «Спасибо») — отрезать по вычитке; облачный форматтер обрезал длинные транскрипты и ломал таймкоды на склейке частей (плюс час) — проверка монотонности меток одной строкой; запись 60+ минут — чанковать по 10 минут с flush и маркером «done_NN», иначе полтора часа работы умирают на 91% из-за забитого диска; на сервере CRM ела 1.4 ГБ памяти и роняла whisper по OOM — остановил CRM.
Почему не перевести всё на локальные и не платить вообще?
Потому что качество рассуждения и tool-use у 7–32B ниже, а цена ошибки в разборе для ученика выше цены токенов. Локальные берут массовые и приватные этапы, frontier — узкие места, где нужен интеллект. Решение — по eval'у, не по идеологии.
Как оцениваешь качество Whisper?
WER на контрольных записях с ручной разметкой + практические проверки: длина raw против форматированного, монотонность таймкодов, отсутствие повторов в хвосте.
Что такое квантование?
Хранение весов в меньшей разрядности (int8, int4 вместо fp16): в разы меньше памяти и быстрее, небольшая потеря точности. Q4 — рабочий компромисс для 7–14B на ноутбуке.

7Реальные вопросы из базы собесов

Семантический поиск по базе 2 059 собесов. Тему спрашивают всё чаще, но чаще всего одной фразой — значит, ждут структуру от кандидата.

КомпанияДатаКак спросилиКуда вести ответ
Вектор02.2026«ИИ-агенты, оркестрация»Раздел 1 + 2: петля, workflow vs agent, orchestrator-workers, мой Nexus
SSP Soft04.2026«Как использовал ИИ, агенты, copilot»Уровни автономии (раздел 4) + три примера из историй
СберСити09.2025«Менторинг, код-ревью, AI-agents»AI-ревью в CI + правило «читать критичное сам»
Ростелеком03.2026«AI в работе»Ежедневный workflow + harness (раздел 3)
ПИК11–12.2025«Отношение к ИИ» / «Мнение об ИИ»Позиция: ответственность за каждую строку, где помогает и где нет
Холдинг финанс11.2025, 01.2026«Пользуешься ИИ?»Коротко «да, ежедневно» → сразу пример с цифрой
IT-Train04.2026«Прорывы AI и сфера»Сдвиг от чата к агентам, от кода к harness'у; стоимость и локальные модели
🔑 Шаблон ответа на любой из них: одна фраза-определение → где применил (проект, цифра) → что пошло не так и какое правило появилось. Третья часть отличает практика от читателя новостей.

8Каверзные follow-up

Агент сделал PR, тесты зелёные. Мержишь?
Зависит от зоны. Обычная фича — после ревью-агента и беглого чтения diff'а. Доступы, деньги, миграции — читаю SQL и логику сам, дописываю недостающий критичный тест. Зелёные тесты доказывают только то, что проверяют тесты.
Что такое prompt injection в агентах и как защищаешься?
Данные, которые агент читает (письмо, страница, сообщение из чата), содержат инструкции, и модель их выполняет. Защита harness'ом: инструменты только на чтение там, где вход недоверенный; деструктивные действия — с подтверждением; внешние данные помечаются как данные, а не команды; список разрешённых пользователей у агента с доступом к чатам.
Чем MCP отличается от обычного function calling?
Function calling — модель вызывает функции, которые описал разработчик приложения. MCP — открытый протокол, по которому внешний сервер публикует свои инструменты и ресурсы, и любой агент подключает их стандартно: один сервер к базе знаний используют и Claude Code, и крон-агент, и чат.
Зачем субагенты, если можно один длинный контекст?
Три причины: стоимость (каждый шаг пересылает историю), качество (модель хуже работает в забитом контексте — теряет инструкции), параллельность. Субагент возвращает вывод, не сырьё.
Как понимаешь, что модель врёт в разборе?
Проверкой кодом, а не второй моделью «на глаз»: completeness-чек сверяет разбор с исходным транскриптом (все ли задачи разобраны), structured output по схеме, теги уверенности в вердикте. Плюс аналитика по стадиям — где чаще всего падает.
Локальная модель дала 92% на eval'е против 97% у облачной. Переводишь?
Зависит от цены ошибки и объёма. Для эмбеддингов или предварительной классификации — да, с облачным фолбэком на низкой уверенности. Для финального разбора ученику — нет: пять процентов ошибок это каждый двадцатый ученик с неверным вердиктом.
Что делаешь, когда агент «уверенно» сделал не то, что просили?
Не спорю с моделью, ищу дыру в harness'е: не было теста на этот сценарий, чек-лист не читался целиком, фраза не сматчилась в роутере. Исправляю среду, и ошибка исчезает у всех будущих прогонов.

9Истории на 60 секунд — «как я управляюсь с этим»

Под вопрос «расскажи, как вы это применяете». Каждая по схеме: ситуация → что построил → что пошло не так → правило.

① Self-healing вахтёр (agent loop + harness + L5) Сервис разбора собесов падал ночью, ученики ждали до утра. Поднял постоянного агента по крону на сервере: каждые 30 минут берёт упавшие задачи из БД, диагностирует по логам и коду, чинит сам, но строго по гардрейлам — бэкап, тест на регрессию, полный прогон зелёный, рестарт только при нуле активных задач, конфиги и чужие сервисы не трогать. Если причина неясна — не чинит, присылает диагноз. Обработанное дедуплицирует, чтобы не спамить.
Правило: на ошибки прода реагирует агент, а не алерт человеку; свобода агента ограничена списком того, что ему можно.
② Инцидент → хук (harness compounding) Дал команду «запускай выкладку на YouTube». Агент опубликовал ролик и остановился, хотя чек-лист требовал ещё занести задачи в базу с таймкодами. Кнопка в канале вела на пустую подборку. Вместо «в следующий раз внимательнее» добавил хук на каждое сообщение: регекс-роутер узнаёт задачу по фразе, подкладывает полный чек-лист и требует отчёт по каждому шагу. Хук покрыт тестами.
Правило: каждая ошибка агента становится строкой в среде, а не в памяти человека.
③ $16 за одну ночь → политика стоимости Пересборка базы через API на сильной модели съела $16 за 1.9M токенов. Разобрал: 90% работы не требовало сильной модели. Итог — правила: массовое либо по подписке субагентами, либо на дешёвой модели; крон-задачи не зависят от платного API (буферизуют сырьё, LLM отдельно); сторож баланса по крону с алертом, потому что при пустом балансе пайплайн для учеников падал молча на стадии анализа.
Правило: выбирать модель по задаче и eval'у, а не по привычке; наблюдать за бюджетом так же, как за ошибками.
④ Локальный ASR + эмбеддинги (локальные модели) Записи собесов — приватные и длинные. Транскрипция — локальный Whisper на Mac и на сервере, наружу уходит только текст на форматирование. Поиск по 14.7k вопросов и 48k сообщений — локальные эмбеддинги на CPU + pgvector, ноль платных токенов. Грабли: галлюцинации на тишине, обрезка длинных транскриптов облачным шагом, сломанные таймкоды на склейке, OOM от соседнего сервиса. Каждая — в проверку: длина raw против форматированного, монотонность таймкодов, чанкование с маркером докуда дошли.
Правило: локальные модели на массовые и приватные этапы, облако — где eval показал, что локальная не дотягивает.
⑤ Автономная разработка продукта (dark factory L3–L4) Бот учёта мок-собесов: спека → тесты до кода → субагенты в отдельных worktree → PR → CI с тестами, gitleaks и AI-ревью → мой мерж. 11 PR, 50 тестов, 10 против реального Postgres, в проде. На кабинете доступов ревью-агент по сводке пропустил баг уникального констрейнта, который затирал второй грант — поймал, читая SQL сам.
Правило: критичное (доступы, деньги, миграции) читает человек; всё остальное — конвейер.

10Аудит смежных тем

ТемаСтатусГде
Agent loop, tool calling, стоп-условия, памятьпокрытораздел 1
Workflow-паттерны (chaining, routing, parallel, orchestrator, evaluator)покрытораздел 2
Harness: инструкции, скиллы, хуки, права, обратная связь, память, наблюдаемостьпокрытораздел 3
Уровни автономии, условия, границыпокрытораздел 4
Экономика токенов, кэш, роутингпокрытораздел 5
Локальные ASR / эмбеддинги / малые LLM, квантованиепокрытораздел 6
RAG: чанкование, эмбеддинги, гибридный поиск, rerankingграничитотдельная тема: у меня pgvector + MiniLM, семантический и по тегам
Evals: как строить набор, LLM-as-judge, регрессия при смене промптаграничитотдельная тема: completeness-чек Собесыча как стартовый пример
MCP: устройство протокола, ресурсы / инструменты / промпты, безопасностьграничитотдельная тема: у меня MCP к Buildin, Telegram, YouTube
Structured outputs, JSON-схемы, grammar-ограничениеграничитупомянуто в 2 и 6
Безопасность агентов: prompt injection, утечки, sandboxграничитраздел 8, один вопрос