많은 프로그래머가 컨텍스트를 프롬프트에 붙여넣는 텍스트 덩어리로 생각합니다. 하지만 그렇게만 이해하면 에이전트 설계의 절반을 놓치게 됩니다. 에이전트에게 컨텍스트란 지금 이 시점의 판단과 행동을 결정짓는 정보의 총합입니다. 사용자가 내린 지시나 지난 대화의 요약 내용이 여기에 포함되죠.

또한 장기 기억에서 가져온 사실이나 현재 목표도 들어갑니다. 사용할 수 있는 도구에 대한 설명이나 제약 조건도 모두 컨텍스트의 일부입니다. 즉, 컨텍스트는 입력된 문장이 아니라 에이전트가 세상을 바라보는 작업용 세계 모델(World Model)에 가깝습니다.

에이전트 설계를 위한 컨텍스트 엔지니어링 가이드

컨텍스트 엔지니어링의 진짜 의미

이런 이유로 컨텍스트 엔지니어링(Context Engineering)은 프롬프트 작성 기술과는 다릅니다. 이는 훨씬 더 설계적인 관점에서 접근해야 하는 문제입니다. 어떤 정보를 포함할지, 정보를 어떤 순서로 배치할지를 고민해야 합니다. 또한 어떤 형식으로 보여줘야 모델이 잘 이해할지를 결정하는 과정이죠.

똑같은 정보라도 나열 순서가 바뀌면 모델의 판단은 달라집니다. 때로는 잘 요약된 문장 하나가 수십 줄의 원문보다 더 큰 힘을 발휘하기도 합니다. 그래서 이것은 내용보다는 구성의 문제에 가깝습니다. 정보를 어떻게 배치하느냐에 따라 결과가 판이해지니까요.

윈도우 크기에 대한 오해

여기서 자주 발생하는 착각이 하나 있습니다. 바로 컨텍스트 윈도우가 커지면 모든 문제가 해결될 것이라는 생각입니다. 하지만 실제 현장에서는 오히려 반대 현상이 나타나곤 합니다. 무작정 많은 정보를 채워 넣으면 모델은 중요도를 판단하기 어려워합니다.

정보가 너무 많으면 성능이 오히려 떨어지는 경우가 생깁니다. 이를 흔히 컨텍스트 롯(Context Rot)이라고 부릅니다. 오래된 정보나 현재 목표와 상관없는 세부 사항들이 쌓이면서 컨텍스트가 오염되는 현상이죠. 정보의 양은 늘었지만 밀도는 낮아진 상태가 되는 겁니다.

좋은 컨텍스트를 만드는 방법

따라서 좋은 컨텍스트는 많은 정보가 아니라 잘 다듬어진 정보로 만들어집니다. 첫째로 적절한 정보 선택이 필요합니다. 지금 작업에 꼭 필요한 것만 남기고 나머지는 과감히 제외해야 합니다. 과거에는 중요했을지라도 지금 의미가 없다면 빼는 것이 좋습니다.

둘째는 중복을 없애는 일입니다. 같은 사실을 다른 표현으로 여러 번 넣는 것은 좋지 않습니다. 이는 강조가 아니라 잡음이 되어 모델을 방해합니다. 깔끔하게 정돈된 정보가 모델의 이해를 돕습니다.

순서와 압축의 중요성

셋째로 순서 최적화가 매우 중요합니다. 목표나 제약 조건처럼 판단의 기준이 되는 정보는 앞부분에 두는 것이 좋습니다. 세부 참고 자료는 뒤로 배치하여 사고의 흐름을 자연스럽게 유도해야 합니다. 이렇게 하면 모델이 중요한 것을 먼저 인지합니다.

마지막으로 압축의 기술이 필요합니다. 원문을 그대로 넣기보다는 의미를 유지한 요약 형태로 제공하는 것이 훨씬 낫습니다. 이렇게 하면 모델에게 훨씬 친절한 환경을 제공할 수 있습니다.

에이전트의 사고 돕기

이렇게 잘 설계된 컨텍스트는 에이전트의 사고 부담을 줄여줍니다. 무엇을 참고해야 하고 무엇을 무시해도 되는지가 명확해지기 때문입니다. 반대로 정리되지 않은 컨텍스트는 에이전트를 혼란스럽게 만듭니다.

정보가 정돈되지 않으면 판단 속도가 느려집니다. 또한 중요하지 않은 정보에 집착하거나 목표에서 벗어난 행동을 하기도 합니다. 에이전트가 똑똑하게 행동하려면 환경부터 정리해 주어야 합니다.

편집자로서의 프로그래머

요약하자면 컨텍스트 엔지니어링은 에이전트에게 필요한 세계만 만들어 주는 작업입니다. 모든 정보를 다 주는 것이 정답은 아닙니다. 컨텍스트 윈도우가 아무리 커져도 사고의 품질은 정보의 배치가 결정합니다.

좋은 에이전트 설계자는 프롬프트를 채우는 사람이 아닙니다. 오히려 컨텍스트를 편집하는 사람에 가깝습니다. 프로그래머 여러분도 이제 정보를 어떻게 편집할지 고민해 보시기 바랍니다.