Контекстная инженерия для AI-агентов с LangChain и Manus

Подготовил: Дмитрий Жечков
16.10.2025
Транскрипт вебинара

Введение

Исходные материалы вебинара

Этот транскрипт основан на вебинаре LangChain и Manus о контекстной инженерии для AI-агентов.

L
Лэнс (LangChain)
Добро пожаловать всем участникам! Давайте начнем вебинар, участники продолжают подключаться. Меня зовут Лэнс, я один из основателей-инженеров в LangChain. Со мной Пит из Manus. Пит, не могли бы вы кратко представиться?
П
Пит (Manus)
Привет всем! Я соучредитель и главный научный сотрудник Manus. В основном я разработал агентский фреймворк и многие компоненты в Manus. Очень рад быть здесь сегодня. Спасибо, Лэнс, за приглашение.
L
Лэнс (LangChain)
Мы очень рады провести этот вебинар, потому что Manus - действительно крутой продукт, которым я пользуюсь уже давно. Но также они опубликовали отличную статью о контекстной инженерии несколько месяцев назад, которая сильно повлияла на меня.

Я дам краткий обзор контекстной инженерии, как я ее понимаю, сошлюсь на их статью, а затем Пит представит презентацию с новыми идеями, не освещенными в статье. Если вы уже читали статью, мы рассмотрим новые вещи, что должно быть довольно интересно.

Введение в контекстную инженерию

Что такое контекстная инженерия?

Возможно, вы слышали термин "контекстная инженерия" - он появился в этом году. Если посмотреть на тренды Google поиска, промпт-инженерия началась после ChatGPT в декабре 2022 года. Контекстная инженерия появилась в этом году примерно в мае и соответствует идее "года агентов".

Почему это важно?

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

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

Масштаб проблемы
  • Manus: типичные задачи требуют около 50 вызовов инструментов
  • Anthropic: продакшн-агенты могут участвовать в разговорах, охватывающих сотни ходов

Парадокс контекста

Проблема в том, что агенты накапливают большое количество контекста через вызовы инструментов, но мы знаем, что производительность падает по мере роста контекста. Это парадокс: агенты используют много контекста из-за вызовов инструментов, но производительность падает по мере роста контекста.

Карпати ввел этот термин в Twitter в начале года. Контекстную инженерию можно рассматривать как "деликатное искусство и науку заполнения контекстного окна именно той информацией, которая нужна для следующего шага".

Основные подходы к контекстной инженерии

1. Выгрузка контекста (Context Offloading)

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

Использование файловой системы

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

Используется в: Manus, Deep Agents, Open Deep Research, Claude Code, долгоработающие агенты

2. Сокращение контекста (Context Reduction)

Похоже на выгрузку, но вместо этого вы суммируете или сжимаете информацию:

  • Суммирование выводов вызовов инструментов
  • Обрезка вызовов инструментов или сообщений инструментов
  • Claude 4.5 теперь поддерживает это из коробки
  • Суммирование полной истории сообщений
  • Сжатие при передаче между агентами

3. Извлечение контекста (Context Retrieval)

Классические дебаты о правильном подходе для извлечения контекста:

  • Cursor: использует индексирование и семантический поиск, а также простые файловые инструменты поиска
  • Claude Code: использует только файловую систему и простые инструменты поиска

4. Изоляция контекста (Context Isolation)

Разделение контекста между мульти-агентами. Каждый под-агент имеет свое контекстное окно, что позволяет разделить ответственность.

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

Manus много говорит об этом - очень интересный трюк для оптимизации производительности и снижения затрат.

Презентация Пита (Manus)

П
Пит (Manus)
Спасибо, Лэнс! Я очень рад поделиться свежими уроками контекстной инженерии, которые мы извлекли при создании Manus.

Свежие уроки контекстной инженерии

Я говорю "свежие уроки", потому что понял, что последний блог-пост о контекстной инженерии я написал в июле, а июль в году агентов - это практически прошлая эра. Сегодня я хочу углубиться в области, которые либо недостаточно глубоко рассмотрел раньше, либо вообще не затрагивал.

Почему нужна контекстная инженерия?

Особенно когда файн-тюнинг или пост-тренинг моделей стал более доступным сегодня. Например, команда Thinking Machine выпустила Tinker API с отличным дизайном.

Болезненные уроки из опыта

До создания Manus я уже провел более 10 лет в обработке естественного языка (NLP). Manus - моя вторая или третья компания, и в предыдущем стартапе мы обучали собственную языковую модель с нуля для извлечения информации из открытых доменов и построения графов знаний.

Это было болезненно. Скорость инноваций нашего продукта была полностью ограничена скоростью итераций модели. Даже тогда модели были намного меньше по сравнению с сегодняшними, но один цикл обучения плюс оценка мог занять одну-две недели.

Главный урок

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

По мере созревания продукта и усиления базовых моделей с открытым исходным кодом, очень заманчиво думать: "Может, мне стоит взять сильную базовую модель, дообучить ее на моих данных и сделать действительно хорошей для моего случая использования?"

Мы тоже это пробовали. И знаете что? Это еще одна ловушка.

Опасности раннего файн-тюнинга

Чтобы заставить это работать хорошо, вы обычно фиксируете пространство действий, разрабатываете награду вокруг текущего поведения продукта и генерируете тонны роллаутов и обратной связи.

Но это опасно, потому что мы все еще в ранние дни ИИ и агентов. Все может измениться за ночь. Для нас классический пример - запуск MCP. Он полностью изменил дизайн Manus от компактного статического пространства действий к чему-то бесконечно расширяемому.

Вывод

Будьте тверды в том, где проводите границу. Прямо сейчас контекстная инженерия - это самая четкая и практичная граница между приложением и моделью.

Сокращение контекста: Компактизация vs Суммирование

В Manus мы разделяем операции сокращения на два типа: компактизация и суммирование.

Компактизация

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

Пример компактизации

Инструмент записи в файл имеет поля path и content. После возврата инструмента файл уже существует в среде. В компактном формате мы можем безопасно убрать длинное поле content и оставить только path. Если агент достаточно умен, он может просто извлечь файл по пути при необходимости.

Мы считаем такую обратимость критически важной, потому что агенты делают цепочки предсказаний на основе предыдущих действий и наблюдений. Никогда не знаешь, какое прошлое действие внезапно станет важным через 10 шагов.

Суммирование

Компактизация может завести только до определенного момента. В конце концов контекст все равно будет расти и достигнет потолка. Тогда мы комбинируем компактизацию с традиционным суммированием, но делаем это очень осторожно.

  • Перед суммированием мы можем выгрузить ключевые части контекста в файлы
  • Иногда мы даже более агрессивно сохраняем весь пре-суммарный контекст как текстовый файл в файловую систему, чтобы всегда можно было его восстановить

Управление порогами

Мы отслеживаем пороги длины контекста:

  • Жесткий лимит модели (например, 1 миллион токенов)
  • Практический порог деградации (обычно 128K-200K токенов)

Когда размер контекста приближается к порогу деградации, мы запускаем сокращение контекста, начиная с компактизации, а не суммирования. Мы можем компактизировать старейшие 50% вызовов инструментов, сохраняя новые в полной детализации, чтобы модель имела свежие примеры правильного использования инструментов.

Изоляция контекста: Коммуникация vs Разделение памяти

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

Цитата из сообщества Go

"Не общайтесь через разделение памяти, вместо этого разделяйте память через общение"

Переводя термин "память" в "контекст", мы видим два паттерна:

Паттерн коммуникации

Классическая настройка под-агентов. Главный агент пишет промпт, который отправляется под-агенту, и весь контекст под-агента состоит только из этой инструкции.

Когда использовать: Если задача имеет короткую, четкую инструкцию и важен только финальный результат (например, поиск в кодовой базе конкретного фрагмента).

Паттерн разделения памяти

Под-агент может видеть весь предыдущий контекст - всю историю использования инструментов, но имеет свой собственный системный промпт и пространство действий.

Когда использовать: Для сложных сценариев, где финальный отчет зависит от множества промежуточных поисков и заметок (например, глубокое исследование).

Компромисс: Разделение контекста дорого, потому что каждый под-агент имеет больший ввод для предзаполнения, и поскольку системный промпт и пространство доступа отличаются, вы не можете переиспользовать KV-кэш.

Выгрузка контекста: Многоуровневое пространство действий

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

Слишком много инструментов в контексте приводит к путанице - модель может вызывать неправильные или несуществующие инструменты.

Многоуровневое пространство действий в Manus

Уровень 1: Вызов функций

Классический подход. Схемно-безопасный благодаря ограниченному декодированию, но имеет недостатки:

  • Нарушение кэша
  • Слишком много инструментов может вызвать путаницу
В Manus используются только атомарные функции
  • Чтение и запись файлов
  • Выполнение shell-команд
  • Поиск файлов в интернете
  • Операции браузера

Уровень 2: Утилиты песочницы

Каждая сессия Manus работает в полной виртуальной машине-песочнице на нашей кастомизированной Linux-системе. Manus может использовать shell-команды для запуска предустановленных утилит:

  • Конвертеры форматов
  • Утилиты распознавания речи
  • MCP CLI для вызова MCP

Преимущества:

  • Можно добавлять новые возможности без изменения пространства вызова функций
  • Большие выводы могут записываться в файлы
  • Можно использовать Linux-инструменты для обработки результатов

Уровень 3: Пакеты и API

Manus может писать Python-скрипты для вызова предавторизованных API или кастомных пакетов:

  • 3D-дизайн библиотеки
  • Финансовые API для рыночных данных
  • Мы покупаем все эти API от имени пользователя

Преимущества:

  • Идеально для задач, требующих много вычислений в памяти
  • Код и API очень композитны
  • Можно объединять много вещей в один шаг

Недостатки:

  • Не схемно-безопасно
  • Очень сложно делать ограниченное декодирование

Баланс пяти измерений

Выгрузка, сокращение, извлечение, изоляция и кэширование не независимы:

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

Контекстная инженерия требует идеального баланса между множественными потенциально конфликтующими целями.

Избегайте чрезмерной контекстной инженерии

Оглядываясь на прошедшие 6-7 месяцев с запуска Manus, самые большие скачки не пришли от добавления более сложных слоев управления контекстом или умных хаков извлечения. Они пришли от упрощения или удаления ненужных трюков и большего доверия модели.

Каждый раз, когда мы упрощали архитектуру, система становилась быстрее, стабильнее и умнее. Цель контекстной инженерии - сделать работу модели проще, а не сложнее.

Главный вывод

Стройте меньше и понимайте больше.

Сессия вопросов и ответов

Как LLM вызывает различные shell-инструменты?

П
Пит (Manus)
Представьте, что вы человек, использующий новый компьютер. Если вы знаете Linux, все инструменты находятся в /usr/bin. Мы делаем две вещи:

1. У нас есть подсказка в системном промпте, говорящая Manus, что есть много предустановленных утилит командной строки в определенной папке
2. Для наиболее часто используемых мы уже включили их в системный промпт, но очень компактно - мы не говорим агенту, как использовать инструменты, только перечисляем их

Мы говорим агенту, что он может безопасно использовать флаг --help, потому что все утилиты разработаны нашей командой и имеют одинаковый формат.

Используете ли вы индексирование?

П
Пит (Manus)
В Manus мы не используем индексные базы данных, потому что каждая песочница в сессии Manus новая, и пользователи хотят быстро взаимодействовать. У нас нет времени строить индекс на лету. Мы больше похожи на Claude Code - полагаемся на grep и glob.

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

Есть ли у вас понятие памяти между сессиями?

П
Пит (Manus)
В Manus у нас есть концепция "знания" - это своего рода явная память. Каждый раз, когда вы можете сказать Manus "запомни, что каждый раз, когда я прошу что-то, доставляй в Excel", это не автоматически вставляется в память. Появится диалог: "Вот что я узнал из нашего предыдущего разговора, хотите принять или отклонить?"

Мы также исследуем более автоматические способы. Интересная вещь в агентах - по сравнению с чат-ботами, пользователи часто исправляют агента. Например, при визуализации данных на китайском, японском или корейском часто возникают проблемы со шрифтами. Пользователь скажет: "Используй CJK-шрифт". Разные пользователи будут делать одинаковые исправления, и нам нужно найти способ использовать эту коллективную обратную связь.

Как вы подходите к рефакторингу архитектуры с улучшением моделей?

П
Пит (Manus)
Мы уже рефакторили Manus пять раз с марта по октябрь. Модели не только улучшаются, но и меняются их поведение.

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

Мы часто делаем такие проверки каждые 1-2 месяца, используя открытые модели и ранний доступ к проприетарным моделям для подготовки к следующему релизу.

Лучшие практики для форматов хранения данных?

П
Пит (Manus)
Мы всегда приоритизируем форматы на основе строк, потому что это позволяет моделям использовать grep или читать из диапазона строк. Markdown иногда может вызывать проблемы - модели обучены хорошо использовать markdown, но иногда выводят слишком много маркированных списков. Мы предпочитаем обычный текст.

Как промптить для хорошего суммирования?

П
Пит (Manus)
Мы много пробовали оптимизировать промпт для суммирования, но оказалось, что простой подход работает хорошо: не используйте свободную форму промпта. Вместо этого определите схему - форму с полями, которые ИИ должен заполнить.

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

Выбор модели и использование открытых моделей?

П
Пит (Manus)
Сейчас мы не используем открытые модели не из-за качества, а из-за стоимости. Мы часто думаем, что открытые модели могут снизить стоимость, но если вы в масштабе Manus и строите настоящего агента, где ввод намного длиннее вывода, KV-кэш очень важен.

Распределенный KV-кэш очень сложно реализовать с открытыми решениями. Если использовать передовых провайдеров LLM, у них более надежная инфраструктура для распределенного кэширования глобально.

Иногда, если посчитать, использование флагманских моделей может быть даже дешевле, чем открытые модели.

Сейчас мы используем не только Anthropic - модели Anthropic лучший выбор для агентских задач, но мы также видим прогресс в Gemini и OpenAI. Передовые лаборатории не сходятся в направлениях: для кодинга используйте Claude, для мультимодальности - Gemini, OpenAI отлично подходит для сложной математики и рассуждений.

Для компаний приложений, как мы, одно из наших преимуществ - мы не должны строить поверх только одной модели. Можно делать маршрутизацию на уровне задач или даже подзадач.

Планирование в Manus?

П
Пит (Manus)
В начале Manus использовал парадигму todo.md - это было глупо и тратило много ходов. Треть действий была об обновлении списка дел.

Сейчас мы используем более структурированное планирование. Есть планировщик внизу системы - отдельный агент, управляющий планом, используя парадигму "агент как инструмент". Очень важно иметь отдельного агента с другой перспективой для внешнего обзора. Можно использовать разные модели для планирования.

Гарантии безопасности?

П
Пит (Manus)
Это очень чувствительный вопрос. Если у вас песочница, подключенная к интернету, все опасно. Мы вложили много усилий в ограждения - не позволяем информации выходить из песочницы.

У нас есть проверки исходящего трафика, чтобы токены не выходили из песочницы. У нас есть браузер внутри Manus, что очень сложно - содержимое веб-страницы может быть вредоносным.

Сейчас в Manus каждый раз при выполнении чувствительных операций требуется ручное подтверждение. Это прогрессивный подход - пока ограждения в самой модели не улучшатся, мы позволяем пользователю чаще брать управление на себя.

Подход к оценкам (evals)?

П
Пит (Manus)
В начале запуска Manus мы использовали публичные академические бенчмарки как GAIA, но обнаружили, что это очень не согласуется - модели с высокими баллами на GAIA пользователям не нравились.

Сейчас у нас три вида оценок:

1. Самое важное: Для каждой завершенной сессии мы просим пользователя дать обратную связь от 1 до 5 звезд. Это золотой стандарт.

2. Автоматизированные тесты с проверяемыми результатами. Мы создали собственный датасет с четкими ответами, сосредоточенный на выполнении, потому что большинство бенчмарков сосредоточены на задачах рассуждения.

3. Человеческие оценщики - много стажеров для оценки вещей как генерация веб-сайтов или визуализация данных, потому что очень сложно создать хорошую модель вознаграждения, которая знает, визуально ли привлекателен вывод.
Завершение
L
Лэнс (LangChain)
Отличная сессия! Спасибо всем за участие. Запись и слайды будут доступны.
П
Пит (Manus)
Спасибо всем! Попробуйте Manus - у нас есть бесплатный тариф.