컨텍스트 한계

컨텍스트 한계

상태는 전달될 수 있다. 하지만 전달한다고 유지되지는 않는다.


컨텍스트라는 방식

프롬프트만으로는 부족하다는 걸 알게 되면, 자연스럽게 다음 방식으로 넘어간다.

컨텍스트를 늘린다.

이전 작업 결과를 넣고, 현재 상태를 설명하고, 필요한 조건과 판단 근거를 함께 전달한다. 많이 줄수록 더 잘 이해할 거라고 생각한다.

처음에는 효과가 있다. 이전 맥락이 이어지고, 의도가 어느 정도 전달된다. 충분하다고 느껴진다.


반복되는 어긋남

하지만 작업이 길어지면서 달라지기 시작한다.

분명히 상태를 전달했는데, 그 상태가 다음 작업에서 온전히 반영되지 않는다.

구체적으로 이런 일이 생긴다.

이전에 정해둔 구조가 다음 단계에서 다르게 해석된다. 컨텍스트에 포함한 제약 조건이 새로운 요구사항 앞에서 슬쩍 무시된다. 길고 복잡한 컨텍스트에서 후반부의 중요한 조건이 앞부분의 패턴에 밀려 덜 반영된다.

겉으로는 비슷하다. 하지만 내부는 달라진다.


왜 유지되지 않는가

컨텍스트는 상태를 “설명"한다. 하지만 상태를 “고정"하지 않는다.

이 차이가 핵심이다.

설명은 해석될 수 있다. 컨텍스트가 아무리 정확해도, 그 내용은 다음 실행에서 새롭게 해석된다. 이전과 같은 방식으로 해석된다는 보장이 없다.

더 근본적인 문제가 있다. 컨텍스트는 단절된다.

새로운 세션이 시작되면 이전 컨텍스트는 사라진다. 새로운 입력이 들어오면 이전 상태를 일부 덮어쓴다. 컨텍스트 길이의 한계에 걸리면 오래된 내용이 밀려난다. 이 단절은 조용하게, 드러나지 않게 일어난다.


단절이 만드는 문제

컨텍스트가 단절되는 순간, 그 이후의 작업은 새로운 가정 위에서 진행된다.

하지만 그 사실이 드러나지 않는다.

작업자 입장에서는 상태를 전달했다. 시스템 입장에서는 전달받은 것을 사용했다. 하지만 그 “전달받은 것"이 원래 의도와 완전히 같지 않다. 이 간극은 처음에는 작다. 하지만 작업이 이어질수록 누적된다.

그래서 이런 일이 반복된다.

  • 해결된 문제가 다시 나타난다
  • 같은 작업인데 결과가 달라진다
  • 컨텍스트를 더 상세하게 줄수록 오히려 관리가 어려워진다

문제가 제거되지 않는다. 형태만 바뀐다.


컨텍스트의 한계

컨텍스트는 필요하다. 없는 것보다 훨씬 낫고, 잘 쓰면 작업의 질이 분명히 달라진다.

하지만 근본적인 한계가 있다.

컨텍스트는 상태를 설명할 수 있다. 하지만 상태를 유지하지는 못한다.

유지되지 않는 상태는 다음 실행에서 다르게 해석된다. 그 해석의 차이가 쌓여서 시스템을 불안정하게 만든다.

상태를 유지하려면, 컨텍스트 바깥에서 다뤄야 한다.