Context Engineering для агентов

Context Engineering для агентов

@ai_longreads

Обзор современных подходов к управлению контекстом в AI-агентах: от выгрузки контекста в файловую систему до изоляции через суб-агенты и эволюции контекста со временем.

Это AI-перевод статьи, сделанный каналом Про AI: Лучшие Статьи и Исследования.


Context Engineering для агентов

Context Engineering for Agents Автор: Lance Martin Оригинальный текст

Meta приобрела Manus, а Anthropic объявила о покупке рантайма Bun для Claude Code. Эти продукты, наряду с Cursor, становятся ключевыми интерфейсами для работы с ИИ в разработке программного обеспечения. Агенты масштабируются: данные METR показывают, что агенты теперь справляются с задачами, требующими около 50 часов человеческого труда.

Появилось много отличных материалов о context engineering (управлении контекстом). Идея в том, что агенты работают в рамках контекста, и context engineering связан с тем, как этот контекст управляется.

@METR_Evals показали, что длинные задачи бросают вызов современным агентам, потому что заполнение контекста дорого, а проблемы «загрязнения контекста» и «потери информации в середине» могут приводить к сбоям. Anthropic и другие компании описали различные способы решения этих проблем.

Здесь я хотел зафиксировать некоторые темы и открытые вопросы, связанные с context engineering, о которых я размышлял в последнее время.

Дайте агенту компьютер

@karpathy сказал: «Vibe coding (разработка в свободном стиле) — это основной способ, которым я сейчас пишу код». Большая часть работы сводится к общению с LLM: предоставлению контекста через диалог и направлению модели к цели. Написание хороших промптов — это навык, но человек в цикле может стать узким местом.

Серия постов изложила принципы построения агентов. Одно наблюдение: агенты работают лучше всего с теми же инструментами, что и люди. Например, Claude Code создаёт файл CLAUDE.md для хранения контекста рабочего пространства.

Идея дать агенту компьютер имеет корни: @karpathy говорил: «Дайте LLM файловую систему (или базу данных), браузер и среду выполнения кода — и они по сути станут компьютером».

Manus был одним из первых, кто показал, на что способен агент с доступом к компьютеру. Гильермо Раух из Vercel отметил, что предоставление агенту компьютера переносит больше действий в среду, которую модель контролирует напрямую (в отличие от вызовов инструментов, выполняемых внешним оркестратором).

Твит Рауха показывает аналогию с традиционными вычислениями: у агентов теперь есть IDE, браузер, терминал, файловая система. Это отражает то, как люди используют компьютер, и указывает на интересные возможности.

Заполнение контекста

MCP предоставляет стандартный способ подключения LLM к внешним источникам данных. Anthropic также писали об использовании MCP для выполнения кода и продвинутом использовании инструментов.

Подход Claude Code интересен: по умолчанию он не использует поиск по векторной базе. Вместо этого он полагается на agentic (агентный) поиск для постепенного обнаружения контекста. Это сохраняет context window (контекстное окно) разреженным, с высокосигнальными токенами. @bcherny в подкасте даёт хорошую интуицию: Claude Code рекурсивно вызывает инструменты для навигации по файловой системе.

Некоторые вопросы требуют постепенного обнаружения контекста: чтение файла, поиск определения, поиск связанного кода, итерация.

Сжатие промптов связано с этой темой: нам не всегда нужно полное содержимое файла, если нужна только часть.

BigTool — другой подход: хранить большой объём документации по инструментам в векторном хранилище и извлекать документы только для наиболее релевантных инструментов перед каждым шагом агента.

Cursor использует спекулятивные правки: при редактировании файла предсказывает, какие другие файлы могут потребовать обновлений, и предварительно загружает их. Это приводит к более быстрому и согласованному редактированию множества файлов.

Блог Cloudflare описывает идею предварительной загрузки контекста в агентах.

Agent Skills раскрывают идею прогрессивного раскрытия: загрузить лёгкое описание каждого навыка в контекст с правилами, когда читать полный навык, обеспечивая «постепенное развёртывание» контекста навыков по мере необходимости.

Выгрузка контекста

Ещё одна возможность компьютера — выгружать контекст из context window агента в файловую систему. Manus записывает старые результаты инструментов в файлы и применяет суммаризацию, когда выгрузка перестаёт давать выигрыш.

Cursor Agent также выгружает результаты инструментов и траектории агента в файловую систему, позволяя агенту при необходимости загрузить их обратно в контекст.

Оба примера помогают решить обоснованные опасения, что компактизация контекста (суммаризация) может привести к потере полезной информации. Cognition отмечает эту проблему.

Выгрузка контекста в файловую систему также может использоваться для управления долгоработающими агентами. Некоторые агенты записывают план в файл и периодически загружают его обратно в контекст, чтобы подкрепить цели и/или проверить свою работу.

Кэширование контекста

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

Интересно рассмотреть способы мутации истории сессии — удаление или добавление блоков контекста. Но есть соображение, влияющее на то, как контекст может мутировать. Агенты могут стать непомерно дорогими без prompt caching (кэширования промптов), которое позволяет агенту возобновлять работу с префикса промпта.

Manus назвал «коэффициент попадания в кэш» самой важной метрикой для продакшн-агентов и упомянул, что более дорогая модель ($/токен) с кэшированием может быть дешевле, чем менее дорогая модель без него. @trq212 отмечает, что кодинг-агенты (Claude Code) были бы недоступно дорогими без кэширования.

Изоляция контекста

Многие агенты делегируют задачи суб-агентам с изолированными context window, инструментами и/или инструкциями. Очевидное применение суб-агентов — параллелизуемые задачи. @bcherny упомянул, что команда Claude Code использует суб-агентов в code review для независимой проверки разных возможных проблем. Аналогичный map-reduce паттерн можно использовать для задач вроде обновления правил линтера или миграций.

Долгоработающие агенты также используют изоляцию контекста. @GeoffreyHuntley придумал «Ralph Wiggum» — цикл, который запускает агентов повторно, пока план не будет выполнен. Часто невозможно уместить долгоработающую задачу в context window одного агента. Контекст живёт в файлах, а прогресс передаётся между агентами через git-историю (см. обзор @ryancarson и пост @dexhorthy).

Anthropic описала одну версию Ralph loop, где агент-инициализатор настраивает окружение (файл плана, файл отслеживания), а суб-агенты выполняют отдельные задачи из файла плана. @bcherny упомянул этот паттерн с Claude Code, используя stop hooks для проверки работы после каждой итерации Ralph loop.

Эволюция контекста

Большой интерес вызывает непрерывное обучение агентов. Мы хотим, чтобы агенты улучшались в задачах и учились на опыте, как люди. Исследования показывают, что развёртывания агентов терпят неудачу из-за неспособности адаптироваться или учиться.

@Letta_AI пишет о непрерывном обучении в пространстве токенов, что просто означает обновление контекста агента (а не весов модели) новыми знаниями со временем. Общая нить подходов — рефлексия над прошлыми траекториями/сессиями агента и использование этого как основы для обновлений контекста.

Этот паттерн можно применить к промптам для конкретных задач. Например, GEPA реализует эту идею: собрать траектории агента, оценить их, отрефлексировать неудачи и предложить набор вариантов промптов для дальнейшего тестирования.

Паттерн также применим к открытому обучению памяти. Я тестировал это с Claude Code, вдохновлённый интересным инсайтом от @_catwu: дистиллировать сессии Claude Code в дневниковые записи, рефлексировать над записями и использовать их для обновления CLAUDE.md.

Это применимо и к навыкам. @Letta_AI показал пример — рефлексия над траекториями для дистилляции переиспользуемых процедур и сохранение их в файловую систему как новых навыков. Я тестировал похожие идеи с Deepagents.

Будущие направления

Выкристаллизовалось несколько паттернов. Дайте агентам компьютер и перенесите действия с уровня вызова инструментов на компьютер. Используйте файловую систему для выгрузки контекста и прогрессивного раскрытия. Используйте суб-агентов для изоляции контекста. Эволюционируйте контекст со временем для накопления памяти или навыков. Кэшируйте для экономии затрат и задержки.

Остаётся много открытых вопросов, за которыми я буду следить в следующем году.

Обученное управление контекстом

Управление контекстом может включать ручное написание промптов для сжатия, порождение суб-агентов, определение когда/что выгружать и как эволюционировать контекст. The Bitter Lesson предсказывает, что масштабирование вычислений/модели часто превосходит такие ручные подходы.

Recursive Language Model (RLM) от @lateinteraction, @a1zhang, @primeintellect — обобщение этой мысли: LLM могут научиться выполнять собственное управление контекстом. Многое из промптинга и scaffolding (каркасного кода), упакованного в оркестраторы агентов, может быть поглощено моделями.

Это особенно интересно для памяти. Это связано с sleep-time compute от @Letta_AI, который показывает, что агенты могут думать офлайн о своём контексте. Представьте, что агенты автоматически рефлексируют над прошлыми сессиями и используют это для обновления собственной памяти или навыков. Агенты могут напрямую рефлексировать над накопленной памятью, чтобы лучше консолидировать её и/или подготовиться к будущим задачам — как это делаем мы.

Координация множества агентов

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

Мультиагентные проекты вроде Gas Town от @Steve_Yegge интересны: он использует мультиагентный оркестратор с git-отслеживанием работы, агента «Мэр» с полным контекстом о рабочем пространстве и координирует десятки параллельных инстансов Claude Code с очередью слияния и специализацией ролей.

Абстракции для долгоработающих агентов

Долгоработающим агентам нужна новая инфраструктура: наблюдаемость за тем, что делают агенты, хуки для человеческого review и плавная деградация при сбоях. Сегодняшние паттерны всё ещё сырые. Claude Code использует stop hooks для проверки работы после каждой итерации, а Ralph Loop отслеживает прогресс через git-историю. Но нет стандартов для наблюдаемости агентов, общих интерфейсов отладки или согласованных паттернов для мониторинга с участием человека. По мере того как агенты работают дольше, нам, вероятно, понадобятся новые абстракции для управления ими.


Подпишитесь на канал и каждый день читайте лучшие материалы про AI переведенные на русский!

Нашли интересную статью для перевода? Пришлите нашему боту: @ailongreadsbot

Report Page