
능동적 작업 메모리 (Active Working Memory): 에이전트 시스템의 RAM
요약
AI 에이전트 시스템의 메모리 계층 구조를 분석하며, 컨텍스트 윈도우를 CPU 캐시와 같은 일시적 실행 표면으로 정의합니다. 에이전트가 추론을 시작하기 전 필요한 정보를 수집하는 '능동적 작업 메모리(Active Working Memory)'의 중요성을 강조합니다.
핵심 포인트
- 컨텍스트 윈도우는 영구적 메모리가 아닌 CPU 캐시와 같은 실행 표면임
- 에이전트 시스템은 추론 전 워킹 셋을 구성하는 메모리 계층이 필요함
- 프롬프트는 오케스트레이션 결과물이며, 작업 전 정보 수집이 선행되어야 함
AI 메모리 스택 구축 시리즈의 제2부
이 시리즈의 첫 번째 기사를 게시했을 때, 저는 제가 컨텍스트 윈도우 (Context Window)에 대해 쓰고 있다고 생각했습니다.
글을 쓰면 쓸수록, 저는 여러 문서 사이를 오가고 있는 자신을 발견했습니다. 한 브라우저 탭에는 용어집이 열려 있었고, 다른 탭에는 인프라로서의 메모리 (Memory as Infrastructure) 기사가 열려 있었습니다. 세 번째 탭에는 컨텍스트 하이드레이션 (Context Hydration)에 관한 노트가 들어 있었습니다. GitHub에는 SDK 사양들이 열려 있었고, 몇 개의 아키텍처 결정 기록 (Architecture Decision Records)이 에디터 옆에 놓여 있었습니다.
그 문서들 중 어느 것도 개별적으로는 "정답"을 담고 있지 않았습니다. 하지만 그것들이 모여 제가 작업을 진행하기 전에 필요했던 정보의 일시적인 집합을 형성했습니다.
그때 예상치 못한 일이 일어났습니다.
저는 더 이상 컨텍스트 윈도우 (Context Window)에 대해 쓰고 있는 것이 아니었습니다.
저는 메모리 계층 구조 (Memory Hierarchy)를 재구성하고 있었으며, 컨텍스트 윈도우는 그 첫 번째 계층일 뿐이었습니다.
이것이 바로 이것이 시리즈가 된 이유입니다.
제1부에서 저는 컨텍스트 윈도우 (Context Window)를 AI 시스템의 CPU 캐시 (CPU Cache)로 이해하는 것이 가장 적절하다고 주장했습니다. 그것은 실행 표면 (Execution Surface)이지, 메모리 시스템이 아닙니다. CPU 캐시와 마찬가지로, 그것은 빠른 액세스에 최적화되어 있으며 수행 중인 작업의 지속 시간 동안에만 존재합니다.
하지만 캐시는 스스로 채워지지 않습니다.
컨텍스트 윈도우 (Context Window)도 마찬가지입니다.
작업 전의 워킹 셋 (Working Set)
글을 쓰기 전에, 저는 워킹 셋 (Working Set)을 구성했습니다.
브라우저 탭 및 열려 있는 문서
- Sovereign Systems 용어집
...
그 수집된 정보들은 저의 장기 기억 (Long-term memory)이 아니었습니다. 그것은 단 하나의 작업을 위해 구성된 일시적인 작업 세트 (Working set)였습니다. 저의 뇌는 여전히 아이디어를 비교하고, 모순을 발견하며, 새로운 것을 만들어내야 했습니다. 문서들은 단순히 추론 과정 (Reasoning process)에 필요한 정보를 제공했을 뿐입니다.
에이전트 시스템 (Agentic systems)도 이와 매우 유사한 방식으로 작동합니다.
모델이 추론을 시작하기 전에, 문서들이 검색(Retrieval)되고, 도구(Tools)가 실행되며, 상태(State)가 복구되고, 정책(Policies)이 평가되며, 응답(Responses)이 정규화(Normalized)됩니다. 프롬프트 (Prompt)는 대개 오케스트레이션 계층 (Orchestration layer)에 의해 생성된 최종 결과물이지, 그 시작점이 아닙니다.
모델이 첫 번째 토큰 (Token)을 받을 때쯤이면, 이미 수십 번의 검색 (Retrieval), 필터링 (Filtering), 순위 지정 (Ranking), 그리고 조립 (Assembly) 결정이 내려졌을 수 있습니다.
그렇게 조립된 실행 상태 (Execution state)가 바로 제가 **능동적 작업 메모리 (Active Working Memory)**라고 부르는 것입니다.
이 글은 해당 스택 (Stack)의 두 번째 계층에 관한 것입니다.
모델은 추론하고, 애플리케이션은 조립한다.
이 문장 하나가 이 글 전체가 전달하고자 하는 차이점을 포착합니다.
모델은 추론한다. 애플리케이션은 조립한다.
이것은 서로 다른 책임입니다.
모델은 문서를 검색하지 않습니다.
모델은 어떤 Git 커밋 (Git commit)이 중요한지 결정하지 않습니다.
모델은 도구 응답 (Tool response)이 오래된 것인지 알지 못합니다.
애플리케이션은 알고 있습니다.
구체적인 사례를 들어보겠습니다. 에이전트에게 Python SDK를 업데이트하라는 요청이 내려졌습니다.
에이전트는 패키지 경계 (Package boundary)를 설명하는 ADR을 검색합니다.
에이전트는 능동적 작업 메모리 (Active Working Memory)의 용어집 정의를 로드합니다.
에이전트는 GitHub에서 현재 구현 상태를 확인합니다.
그제서야 에이전트는 프롬프트를 구축합니다.
사람들은 흔히 "무언가를 컨텍스트 윈도우 (Context window)에 넣는다"라고 말하곤 합니다.
그러한 표현은 컨텍스트 윈도우 (Context window)가 정보를 찾고, 선택하고, 조직화하는 책임을 지고 있다는 점을 은연중에 암시합니다.
하지만 그렇지 않습니다.
추론 (Inference)이 시작될 때쯤이면, 애플리케이션은 이미 모델이 무엇을 보고 무엇을 보지 않을지를 결정한 상태입니다.

컨텍스트 윈도우는 프로세스를 시작하는 주체가 아닙니다. 프로세스의 결과물을 전달받는 역할을 할 뿐입니다.
모델의 탓으로 돌려지는 많은 실패는 사실 컨텍스트 조립 (Context assembly)의 실패입니다. 잘못된 증거가 검색되었거나, 오래된 문서가 선택되었거나, 제약 사항이 작업 세트 (Working set)에 포함되지 못했을 수 있습니다. 이것들은 모델의 문제이기 이전에 아키텍처 (Architecture)의 문제입니다.
에이전트 시스템을 위한 RAM
컨텍스트 윈도우가 CPU 캐시 (CPU cache)라면, 능동적 작업 메모리 (Active Working Memory)는 시스템 RAM입니다.
| 계층 | 주요 책임 | 일반적인 소유자 |
|---|---|---|
| 지속성 메모리 (Durable Memory) | 지식 보존 | 스토리지 / 애플리케이션 |
| ... |
각 계층은 고유한 책임을 가집니다. 어떤 계층도 다른 계층을 대체할 수 없습니다. 더 큰 컨텍스트 윈도우가 부실한 선택 과정을 해결해주지는 않으며, 더 뛰어난 모델이라 할지라도 전달받지 못한 증거를 바탕으로 추론할 수는 없습니다.
검색은 찾아내고, 컨텍스트 조립은 결정한다
검색 (Search)은 한 가지 질문에 답합니다.
어떤 정보가 존재하는가?
컨텍스트 조립 (Context assembly)은 또 다른 질문에 답합니다.
이 작업이 주어졌을 때, 어떤 정보들이 함께 있어야 하는가?
이 질문들은 비슷하게 들릴 수 있습니다. 하지만 아키텍처 관점에서 이 둘은 완전히 다릅니다.
능동적 작업 메모리는 모델에게 바로 그 두 번째 결정을 제시합니다.
두 시스템이 동일한 모델, 동일한 컨텍스트 윈도우, 동일한 지식 저장소를 사용하더라도 매우 다른 결과를 낼 수 있습니다. 한 시스템은 간결하고 관련성 높은 작업 세트를 조립하는 반면, 다른 시스템은 모델에게 느슨하게 연관된 정보들을 쏟아붓기 때문입니다.
모델은 동일합니다.
하지만 메모리 아키텍처는 그렇지 않습니다.
아키텍처 경계
능동적 작업 메모리 (Active Working Memory)가 하나의 실제 계층 (layer)으로 취급되기 시작하면, 컨텍스트 조립 (context assembly)은 프롬프트 엔지니어링 (prompt engineering)처럼 보이는 것을 멈추고 시스템 아키텍처 (systems architecture)처럼 보이기 시작합니다.
정보는 관련성 (relevance), 권위 (authority), 최신성 (recency), 형식 (format), 그리고 우선순위 (priority)에 대한 결정이 내려진 후에만 이 경계를 넘습니다.
모든 불필요한 문서는 컨텍스트 세금 (Context Tax)을 증가시킵니다. 모든 장황한 도구 응답 (tool response)은 주의력 (attention)을 두고 경쟁합니다. 누락된 모든 소스 (source)는 모델이 컨텍스트 윈도우 (context window) 내부에서 인식할 수 없는 사각지대를 만듭니다.
컨텍스트 윈도우는 능동적 작업 메모리 (Active Working Memory)가 전달해 주는 것에 대해서만 추론할 수 있습니다.
향후 전망
제가 이 글을 쓰는 동안 구성했던 작업 세트 (working set)는 글이 끝나자마자 사라졌습니다.
글은 남아있었습니다.
그 차이가 매우 중요하다는 것이 밝혀졌습니다.
에이전트 시스템 (Agentic systems)도 동일한 결정에 직면합니다. 무엇이 오직 오늘의 작업 세트 (working set)에만 속해야 하는가? 무엇이 내일의 메모리 (memory)가 될 자격이 있는가?
그 지점에서 파트 3 (Part 3)가 시작됩니다.
모델은 컨텍스트를 조립하지 않습니다. 모델은 컨텍스트를 상속받습니다.
작업 메모리 (Working memory)는 지식이 거주하는 곳이 아닙니다. 지식이 협업하는 곳입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기