Подробный транскрипт беседы с Лэнсом Мартином (LangChain) о контекст-инжиниринге для AI агентов, пяти основных категориях управления контекстом и практических подходах к построению эффективных агентных систем.
Введение
Алессио: Привет всем! Добро пожаловать в новый выпуск Space Podcast. Я — Алессио, основатель Kernel Labs. Со мной в студии Свикс, основатель Small AI.
Свикс: Всем привет!
Алессио: Сегодня у нас в гостях Лэнс Мартин — LangChain, LangGraph и многое другое. Лэнс, добро пожаловать!
Лэнс: Рад быть здесь! Я давно слушаю ваш подкаст — здорово наконец присоединиться.
Как появился контекст-инжиниринг
Алессио: Мы давно пересекаемся — ты выступал у нас на AIES, много работал с LangChain. Ты делал и туториалы, и проекты — помню R1 Deep Researcher, «асинхронные/амбентные» агенты. Но настоящим поводом позвать тебя стало твоё недавнее «контекст-инжиниринг» — сейчас об этом говорят все. Как ты к этому пришёл?
Лэнс: Забавно: «баззворды» рождаются, когда у многих появляется общий опыт. В начале — середине этого года все начали «строить агентов» — «год агентов». Кажется просто: «цикл вызова инструментов», но на практике сделать работающего агента сложно. Особенно — управлять контекстом.
Лэнс: Карпати твитнул и фактически закрепил термин «контекст-инжиниринг» — «искусство давать LLM ровно тот контекст, который нужен для следующего шага». Это идеально ложится на тему агентов. Меня это очень зацепило — я год возился с агентами и описал опыт в посте про open deep research. Термин попал в тренд, потому что отражает реальную боль.
Промпт-инжиниринг vs Контекст-инжиниринг
Алессио: Где граница между «промпт-инжинирингом» и «контекст-инжинирингом»? Это одно и то же?
Лэнс: Я бы сказал, «промпт-инжиниринг» — подмножество контекст-инжиниринга. В чате главный вход — сообщение пользователя; мы тщательно «готовим» системный и пользовательский промпт.
Лэнс: Но в агентах контекст приходит не только от человека — на каждом шаге идут ответы инструментов. Ты управляешь не только системными инструкциями и пользовательскими, но и потоком «наблюдений» из инструментов за десятки и сотни шагов.
Важно: У Manus классный разбор: типичная задача — 50 вызовов инструментов. У Anthropic — в проде (например, Claude Code) — сотни.
Лэнс: Я сам это прочувствовал: собрал «наивный» агент, где все ответы инструментов бездумно добавляются в историю — и внезапно полмиллиона токенов, $1–$2 за прогон. Плюс «context rot» (деградация качества при длинном контексте) — об этом говорил Джефф из Chroma. И банальная проблема — упираешься в окно контекста.
Пять категорий контекст-инжиниринга
1. Offloading (Выгрузка контекста)
Алессио: Давай разложим твои «пять категорий» контекст-инжиниринга. Начнём с «offload» — что это?
Лэнс: «Наивный» агент каждую порцию ответа инструментов снова несёт модели, и история растёт. Идея offloading: не тащить «сырое» содержимое обратно в LLM, а складывать его «вне контекста» — на диск, в состояние агента (state) и т.п. А в историю записывать лёгкий след — краткую сводку или URL. Агент знает, что «нашёл» и может подтянуть полные данные по требованию. Это существенно экономит токены.
Свикс: Как понять «минимум» сведений, который надо оставить в контексте, чтобы модель знала, что и где подгружать?
Лэнс: На примере Open Deep Research (сейчас, согласно Deep Research Bench, это лучший открытый deep research-агент): я делаю тщательно промптованную суммаризацию с упором на «полный охват» ключевых пунктов — чтобы агент понимал, когда стоит подтянуть оригинал.
Лэнс: Cognition писали, что суммаризация — непростая штука, они даже обучали модель для этого. Мой опыт: если тщательно «инженерить» промпт суммаризации под высокий recall, всё работает очень неплохо.
2. Context Isolation (Изоляция контекста)
Алессio: Мы на митапе слышали: «сжимать часто, чтобы не ловить context rot». И была мысль про мультиагентность — мол, разные роли изолируют и подгружают своё, а один агент всё не унесёт.
Лэнс: Да, «изоляция контекста» через мультиагентность — важная тема. Cognition скептичны к мультиагентам: подагенты принимают собственные решения, они конфликтуют, а согласовать сложно.
Лэнс: Я согласен: мультиагенты хороши там, где задачи легко параллелятся и в основном «читают», а не «пишут». Для deep research это идеально: множество подагентов собирают фактуру, а «пишем» — один раз в конце. У Anthropic deep researcher так и устроен.
Лэнс: А вот кодинг — сложнее: если каждый подагент «пишет» свою часть, неявные решения конфликтуют. Здесь я скорее на стороне Уолдена из Cognition: нужно осторожно. Хотя у Claude Code уже есть подагенты — значит, они нашли как-то рабочие схемы.
3. Retrieval (Извлечение информации)
Алессio: Перейдём к retrieval. Ты видел разные подходы у код-агентов.
Лэнс: Да. В Windsurf (Варун) — классический многошаговый RAG: чанкование кода по семантическим границам, эмбеддинги, векторный поиск, знаниевые графы, ранжирование.
Лэнс: А у Anthropic/Claude Code (Борис) — «агентный поиск» без индексации: простые файловые инструменты, «прощупывание» репо, и это работает удивительно хорошо.
Мини-бенчмарк сравнения методов:
- • Векторное индексирование
- • «llm.txt» (список ссылок с описаниями + инструмент «загрузи файл по ссылке»)
- • Грубая «набивка» всего контента в контекст
Лучшим оказался «llm.txt» с хорошими описаниями и простым инструментом загрузки.
Лэнс: Лучшим оказался «llm.txt» с хорошими описаниями и простым инструментом загрузки. Агент сам решает: «Для этого вопроса мне нужна такая-то страница». Просто, эффективно, меньше возни, чем строить индекс.
Свикс: Я сделал «Deep Wiki» — по сути масштабированный llm.txt для репозиториев. И тоже вижу профит.
Лэнс: Я даже написал утилиту, которая пробегает по документации, отправляет каждую страницу в дешёвую LLM для качественного краткого описания и собирает llm.txt. Когда описания хорошие, Claude Code выбирает нужные страницы очень точно. Ключ — качество описаний в llm.txt.
4. Reducing Context (Сжатие контекста)
Алессio: Давай к «уменьшению контекста» (compaction/pruning). Все видели, как IDE-компакторы срабатывают у порога окна.
Лэнс: Да, но помимо «почти упёрлись в окно» можно и нужно сжимать на границах инструментов. В Open Deep Research я так и делаю.
Лэнс: Пример у Hugging Face: их «open deep research» запускает код-блоки в окружении, а LLM возвращают только «выжимку», сырые результаты остаются в окружении. У Anthropic — тоже суммаризация «нахождений».
Лэнс: Контраргумент от Manus/Cognition: сжатие контекста опасно потерями. Поэтому они пропагандируют «offload»: исходник сохраняем (диск, файловая система), а в контекст отдаём безопасную выжимку, чтобы при необходимости подтянуть оригинал.
Спорный момент: оставлять ли «ошибки» в истории? Есть «context poisoning» (Дрю Бруник, Gemini Tech Report: ошибка/галлюцинация «отравляет» историю и уводит не туда). Но для ошибок инструментов я предпочитаю оставлять их в истории — агент так быстрее исправляется.
5. Caching (Кеширование)
Алессио: Пройдёмся по caching.
Лэнс: Manus правильно отметили: из-за цикла агент каждый раз снова «пережёвывает» ту же историю. Кеширование истории — снижает стоимость и задержки. Ранее у Anthropic был явный заголовок для кеша; сейчас у многих провайдеров кеширование стало более «автоматическим».
Лэнс: Но важно: кеш не лечит «длинный контекст» как таковой — лишь ускоряет и удешевляет. «Context rot» от длины никуда не девается, даже если попадать в кеш.
Memory vs Context Engineering
Алессио: Поговорим о «памяти» (memory). Это тоже про контекст?
Лэнс: Частично да. Я мыслю по двум осям: запись и чтение воспоминаний, и уровень автоматизации для каждой.
Claude Code подход (простой и симпатичный):
- • Читать — просто подтягивать все ваши «CLAUDE.md» при запуске
- • Записывать — по явному запросу пользователя («сохранить в память»)
Лэнс: Другой полюс — ChatGPT: он сам решает, когда писать/читать память. Это сложно и чревато: Саймон показывал, как генерация картинки «подтянула» его геолокацию из памяти и вставила в сцену, хотя он этого не хотел.
Лэнс: Чтение памяти на масштабе — это, по сути, retrieval: индекс прошлых диалогов, семантический поиск и т.д.
Практичный подход: Мне нравится пара «память + человек в контуре»: у моего «почтового агента» правки пользователя (тон, формулировки, правки вызовов инструментов) идут в память; потом LLM рефлексирует и обновляет инструкции с учётом предпочтений. Это простой, практичный путь «обучать» агента под пользователя.
Горький урок (Bitter Lesson) в AI-инжиниринге
Алессио: Завершим «горьким уроком» (Bitter Lesson). Ты проводишь параллели с AI-инжинирингом.
Лэнс: В блестящем докладе Хёнг Вон Чунга (ex-OpenAI, теперь HMSL/ML) про «горький урок» главный тезис: каждые ~5 лет за те же деньги доступный compute вырастает на порядок; в долгую побеждают более общие методы с меньшим количеством ручных индуктивных предубеждений, питаемые данными и вычислениями.
Лэнс: На практике: чтобы «заработало сегодня», мы добавляем структуру (жёсткие пайплайны, ручные эвристики). Но по мере роста возможностей моделей эта структура начинает сдерживать прогресс. Мы должны уметь вовремя её «снимать».
Мой опыт с Deep Research:
• Начал с очень структурного воркфлоу без tool calling (в 2024 это казалось «надёжнее»)
• Потом модели и инструментальные стеки (MCP, вызовы инструментов) резко улучшились — и «структура» меня блокировала
• Дважды выкидывал и переписывал систему
• Сначала перешёл к агенту, но допустил ошибку: дал подагентам писать разделы отчёта по отдельности — итог получался разрозненным
• Убрал независимое «письмо» и сделал единичную финальную генерацию отчёта — стало отлично
Лэнс: Мораль: строим «настолько структуру, насколько нужно сегодня», но постоянно пересматриваем и снимаем её по мере взросления моделей.
Свикс: Это похоже на то, что происходит на рынке: инкрементальные «AI над существующим процессом» сначала выигрывают у «AI-native» подходов, но потом модели «догоняют» и выигрывает более общий, менее структурированный дизайн. И да — фреймворки и абстракции стоит делать легко «разбираемыми».
Фреймворки и абстракции
Лэнс: Согласен. Важно различать:
Низкоуровневая оркестрация
- • Узлы, рёбра, состояние (как в LangGraph или внутреннем Shopify ROAST)
- • Набор кирпичиков, их легко перекомпоновать
- • Извлечь пользу от чекпойнтов/состояния без «закатывания в бетон»
Высокоуровневые абстракции-агенты
- •
from framework import Agent
- • Риск «чёрного ящика»
- • Сложнее «снимать структуру» по мере эволюции
Лэнс: Мы сами в LangGraph делаем упор на низкоуровневые компоненты и совместимость с MCP: крупным организациям важны стандарты интеграций.
См. доклад Джона Уэлша из Anthropic про эволюцию MCP: когда у всех «всё своё», наступает хаос, и стандарт резко снижает когнитивную нагрузку.
MCP и стандартизация
Алессio: А MCP-серверы для документации?
Лэнс: У нас есть простой MCP-сервер для LangGraph документации — «MCP doc». Он фактически отдаёт llm.txt и даёт простой поиск/загрузку.
Лэнс: Важно: хранить «подсказки» (prompts) в самом сервере — как им пользоваться. Многие недооценивают, что в спецификации MCP есть prompts и sampling — это сильно помогает, особенно для онбординга агентов.
Лэнс: Я обычно делаю отдельные серверы для разных проектов со специфичными промптами и ресурсами. Это помогает избежать ситуации «не работает» → «а, нужно лучше промптить» → «но как пользователь должен об этом узнать?»
Практические выводы
Что работает сейчас:
- • Offloading с качественной суммаризацией
- • llm.txt + простые файловые инструменты часто лучше сложного RAG
- • Мультиагенты для «чтения», единый агент для «письма»
- • Кеширование для экономии, но не для решения context rot
- • Память через human-in-the-loop для персонализации
Чего избегать:
- • Наивного накопления всего контекста в истории
- • Преждевременных абстракций, которые сложно «разобрать»
- • Мультиагентов для сильно связанных задач (например, кодинг)
- • Агрессивной компрессии без возможности восстановить исходник
Философия:
«Добавляй структуру, чтобы работало сегодня, но будь готов её убрать завтра»
Заключение
Алессio: Кажется, мы прошлись по всем крупным темам: offloading, сжатие/суммаризация, retrieval, изоляция контекста, кеширование, память, «горький урок», роль фреймворков и MCP. Лэнс, что-нибудь напоследок?
Лэнс: Да — я сделал бесплатные курсы: про амбиентных агентов и про open deep research. Мне нравится связка «сделал проект — сделал онбординг-курс к нему» (по мысли Карпати: «видео — отличный онрамп»).
Лэнс: Если хотите попробовать сильный открытый deep research-агент — загляните. У нас уже есть ещё более мощные результаты с GPT-5, но и текущая открытая версия очень конкурентоспособна.
Алессio: Спасибо, Лэнс! Было очень интересно.
Свикс: Спасибо!
Лэнс: Спасибо, что позвали!