Урок 0005 · Деплой агентов и долгоживущие harness

Как выкатывать агентов в прод и почему compaction не спасает долгие задачи.

Цель урока Назвать порядок выката (v0 workflow → canary) и нарисовать initializer + coding agent для долгих задач.

1. Агент ли это вообще?

OpenAI: агент = LLM управляет workflow + тулы + guardrails. Не агент: одноразовый чат, классификатор, сентимент.

Строить агента, только если: сложные решения/исключения, правила уже неподдерживаемые, куча неструктуры. Иначе — детерминированный граф.

Источник: OpenAI Practical Guide (PDF).

2. Порядок выката: 8 шагов

  1. v0 = workflow. Router → RAG / tool / human. Не свободный loop.
  2. Прототип на сильной модели → baseline eval → подменять дешёвой, где не падает.
  3. Тулы по типам: data / action / orchestration. Action на деньги — HITL + ретраи + kill switch.
  4. Guardrails параллельно с генерацией (optimistic execution), fail closed.
  5. Полный лог: request_id, prompt_version, tool_calls, chunk_ids, tokens, $.
  6. Canary 5–10% трафика + первичная метрика + гарды + rollback. Промпт — как код: версия, дифф, откат.
  7. Долгие задачи — очередь и job_id, не в HTTP-запросе.
  8. Long-running — не полагайся на compaction (см. ниже).

3. Технические детали

4. Долгоживущие агенты: почему compaction недостаточно

Проблема: каждая новая сессия начинается без памяти. Compaction (сжатие контекста) теряет детали, не даёт точки отката и «пересказывает пересказ».

Даже Opus 4.5 на Agent SDK проваливает «собери клон claude.ai», если дать только общий промпт.

Два фейла: one-shot (вылет из контекста на середине) и ложное завершение («что-то уже сделано»).

5. Решение: initializer + coding agent

Initializer (первая сессия) пишет:

Coding agent (каждая следующая сессия):

  1. Читает git log + progress + features.json.
  2. Запускает init.sh, проверяет, что всё живо.
  3. Берёт ОДНУ незакрытую фичу.
  4. Делает, тестирует как человек, только потом passes: true.
  5. Коммитит и обновляет progress.

Почему JSON, а не Markdown для списка фич: модель реже ломает JSON.

Ключевое правило: оставляй окружение в чистом состоянии — следующий агент продолжает без разбора завалов.

Источник: Anthropic — Effective harnesses.

6. Память: три уровня

  1. Sessions (OpenAI Agents SDK) — персистентный контекст между запусками.
  2. Filesystem — субагенты пишут артефакты, lead получает ссылку. Лечит «game of telephone».
  3. MemGPT (paper) — контекст как виртуальная память с paging между контекстом и хранилищем.

Проверь себя

Что делает initializer agent?

Почему features.json, а не .md?

Идемпотентность тула нужна, чтобы?

Первоисточник урока Anthropic — Effective harnesses for long-running agents — initializer + coding agent с кодом в quickstart.