
Context Engineering for AI Agents with LangChain and Manus
핵심 포인트
- 1Context Engineering은 LLM 에이전트의 Context Window 폭발 문제를 해결하기 위한 섬세한 기술로, 에이전트 성능 저하를 방지하고 올바른 의사결정을 돕습니다.
- 2이는 Context Offloading, Reduction, Retrieval, Isolation, Caching 등 다양한 방식으로 구현되며, 특히 Manis는 Compaction과 Summarization을 결합한 Reduction 전략과, Function Calling, Sandbox Utilities, Packages/APIs를 포함하는 계층화된 Action Space를 통해 도구 Context를 효율적으로 관리합니다.
- 3Context Engineering은 상충하는 목표들 사이의 균형을 요구하는 과학이자 예술이며, 불필요한 복잡성을 피하고 모델을 신뢰하여 아키텍처를 단순화하는 것이 중요합니다.
이 문서에서는 Manis의 공동 창립자이자 수석 과학자인 Pete와 LangChain의 공동 창립자 Lance가 AI 에이전트 개발에서 중요한 과제인 'Context Engineering'에 대해 논의합니다.
서론 및 배경 (Lance)
Lance는 'Prompt Engineering'에 이어 2023년 5월경 등장한 'Context Engineering'의 개념을 소개합니다. 이는 자율적인 LLM(Large Language Model) 에이전트가 도구를 호출하고 그 관찰 결과를 채팅 기록에 추가함에 따라 발생하는 'context explosion' 문제를 해결하기 위한 것입니다. 에이전트의 컨텍스트가 무한히 커지면서 성능 저하(context rot)가 발생하므로, Context Engineering은 "다음 단계에 필요한 정확한 정보로 컨텍스트 윈도우를 채우는 섬세한 기술과 과학"으로 정의됩니다.
Context Engineering의 일반적인 테마 (Lance)
- Context Offloading (컨텍스트 오프로딩): 에이전트의 메시지 기록에서 정보를 외부(예: 파일 시스템)로 이동시키고, 필요할 때 검색 가능하게 합니다. 이는 토큰 소비가 많은 정보(예: 웹 검색 결과)가 컨텍스트 윈도우를 오염시키는 것을 방지합니다. Manis, Deep Agents, Open Deep Research 등이 이 방식을 사용합니다.
- Reducing Context (컨텍스트 축소): 정보를 요약하거나 압축합니다. 도구 호출 출력 요약, 오래된 도구 호출 메시지 제거(Claude 4.5 내장 기능), 전체 메시지 기록 압축(Claude Code), 에이전트 간 핸드오프 시 요약/가지치기(Cognition) 등이 포함됩니다.
- Retrieving Context (컨텍스트 검색): 오프로드되거나 축소된 정보를 에이전트가 다시 가져오는 방법입니다. 인덱싱 및 시맨틱 검색(Cursor) 또는 파일 시스템 및 간단한 검색 도구(glob, grep; Claude Code)가 사용됩니다.
- Context Isolation (컨텍스트 격리): 멀티-에이전트(서브-에이전트) 설정을 통해 컨텍스트를 분할합니다. 각 서브-에이전트가 독립적인 컨텍스트 윈도우를 가지므로 관심사 분리가 가능합니다. Manis Wide Agents, Deep Agents, Open Deep Research 등이 활용합니다.
- Caching Context (컨텍스트 캐싱): Manis에서 특히 강조하는 방법으로, 특정 정보를 캐싱하여 재사용 효율성을 높입니다.
Lance는 Open Deep Research의 사례를 들어 Offloading, Reduction, Context Isolation이 어떻게 활용되는지 보여줍니다.
Manis의 Context Engineering 교훈 (Pete)
Pete는 Manis를 구축하면서 얻은 새로운 교훈에 초점을 맞춰 발표를 진행합니다. 그는 파인튜닝(fine-tuning)이나 모델 후학습(post-training)보다 Context Engineering이 애플리케이션과 모델 간의 가장 실용적인 경계선이라고 강조합니다.
핵심 방법론: 컨텍스트 관리 기법의 심층 분석
- Context Reduction (컨텍스트 축소):
- Compaction (압축): Manis는 모든 도구 호출 및 결과에 대해 전체 형식(full format)과 압축 형식(compact format)을 가집니다. 압축 형식은 파일 시스템이나 외부 상태에서 재구성 가능한 정보를 제거합니다. 예를 들어, 파일을 작성하는 도구는 경로만 유지하고 내용(content)은 제거합니다. 이는 정보가 손실되지 않고 'externalized'되는 'reversible reduction'입니다. 에이전트는 필요할 때 해당 경로를 통해 전체 정보를 검색할 수 있습니다.
- Summarization (요약): 압축만으로는 컨텍스트 성장을 완전히 막을 수 없을 때 사용됩니다. Manis는 요약 전에 핵심 컨텍스트 부분을 파일로 오프로드하거나 전체 요약 전 컨텍스트를 텍스트 파일로 저장하여 필요시 복구 가능하게 합니다. 요약 시에는 전체 데이터를 사용하며, 최신 도구 호출 및 결과는 모델이 연속성을 유지하도록 전체 세부 정보로 유지됩니다.
- Context Length Thresholds (컨텍스트 길이 임계값):
- 모델의 하드 컨텍스트 한계(예: 1M 토큰)와 별개로, 성능 저하(context rot)가 시작되는 'pre-rot threshold'(예: 128K~200K 토큰)를 식별합니다.
- 컨텍스트 크기가 이 임계값에 접근하면 컨텍스트 축소를 시작하며, 요약보다 가역적인 압축을 먼저 시도합니다.
- 압축 후에도 충분한 컨텍스트 공간이 확보되지 않으면 요약으로 전환합니다. 요약 시에는 압축된 데이터가 아닌 원본 전체 데이터를 사용하며, 최신 몇 개의 도구 호출은 요약하지 않고 전체 형태로 유지하여 모델의 일관성을 유지합니다.
- Context Isolation (컨텍스트 격리):
- By Communicating (통신을 통한 격리): 메인 에이전트가 서브-에이전트에게 프롬프트만 보내고, 서브-에이전트의 컨텍스트는 해당 지시만으로 구성됩니다. 서브-에이전트의 최종 결과만 필요한 경우(예: 코드 검색)에 적합합니다. Claude Code의
task도구와 유사합니다. - By Sharing Memory (메모리 공유를 통한 격리): 서브-에이전트가 이전의 전체 컨텍스트(도구 사용 기록 포함)를 볼 수 있습니다. 시스템 프롬프트와 액션 공간은 다를 수 있습니다. 복잡한 시나리오(예: 심층 연구 보고서 작성)에서 중간 검색 및 노트가 많이 필요한 경우에 적합합니다. 파일에 저장하고 다시 읽는 것보다 레이턴시와 토큰 비용 측면에서 효율적일 수 있습니다. 단, 공유 컨텍스트는 입력 토큰 비용이 높고 KV 캐시 재사용이 불가능하여 비쌀 수 있습니다.
- Context Offloading (컨텍스트 오프로딩) - 새로운 접근 방식:
- Level 1: Function Calling (함수 호출): 읽기/쓰기 파일, 셸 명령 실행, 인터넷 검색 등 고정된 수의 원자적(atomic) 함수만 사용합니다. 이는 명확한 경계를 가지며 더 복잡한 워크플로우를 구성할 수 있습니다.
- Level 2: Sandbox Utilities (샌드박스 유틸리티): Manis 세션은 가상 머신 샌드박스에서 실행되며, Manis용으로 개발된 사전 설치 유틸리티(예: 포맷 변환기, 음성 인식 유틸리티, MCP CLI)를 셸 명령을 통해 사용할 수 있습니다. 새로운 기능을 모델의 함수 호출 공간을 건드리지 않고 추가할 수 있으며, 대규모 출력 처리(파일에 쓰기, 페이지별 반환)에 효율적입니다.
- Level 3: Packages and APIs (패키지 및 API): Manis는 Python 스크립트를 작성하여 사전 승인된 API나 사용자 정의 패키지를 호출할 수 있습니다. 이는 대규모 계산이 필요하지만 모든 데이터를 모델 컨텍스트에 넣을 필요가 없는 작업(예: 주식 데이터 분석)에 적합합니다. Manis는 사용자 대신 이러한 API 사용 비용을 지불하고 API 키를 미리 설치해 둡니다. 코드와 API는 매우 구성 가능하므로 한 단계에서 여러 작업을 연결할 수 있습니다.
이 세 가지 계층은 모델 관점에서는 모두 표준 함수 호출을 통해 접근되므로 인터페이스가 단순하고 캐시 친화적이며 직교적(orthogonal)입니다. 예를 들어, 샌드박스 유틸리티는 셸 함수를 통해, API는 파일 함수를 통해 파일 읽기/쓰기 후 셸 함수를 통해 실행됩니다.
결론 (Pete)
Pete는 Offload, Reduce, Retrieve, Isolate, Cache의 다섯 가지 차원이 독립적이지 않음을 강조하며, Context Engineering은 여러 상충될 수 있는 목표 간의 균형을 요구하는 과학이자 예술이라고 설명합니다. 마지막으로 그는 'Context Over-engineering'을 피하고, 아키텍처를 단순화하며, 모델을 더 신뢰하는 것이 중요하다고 조언합니다. Context Engineering의 목표는 모델의 작업을 더 단순하게 만드는 것이지 더 어렵게 만드는 것이 아니라고 강조합니다.