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