The Invisible 98.8%
AI에게 말을 걸었다.
"맥북 화면을 캡처해서 대화할 수 있는 에이전트를 만들어볼까?"
짧은 한 문장. 그런데 이 문장이 AI에게 전달될 때, 혼자 가지 않았다. AI가 실제로 받은 입력을 열어보았다. 내 말은 약 350 토큰. 전체 입력은 약 28,000 토큰. 비율로 1:79. 내 말은 전체의 1.2%였다.
나머지 98.8%는 무엇이었나. 시스템 프롬프트가 6,000 토큰. 도구 사양서가 8,000 토큰. 자동 주입된 스킬 지침이 2,500 토큰. 플러그인 목록, 날짜, 훅 결과. 내가 쓰지도, 보지도, 알지도 못하는 것들이었다. 나는 한마디를 했을 뿐인데, AI는 단편소설 분량의 지침서를 함께 받고 있었다.
이 비대칭이 불편했다. 내가 AI와 대화한다고 생각했는데, 실제로는 거대한 시스템 위에서 작은 신호를 보내고 있었을 뿐이다. 인간은 자기 머릿속을 들여다볼 수 없다. 하지만 AI의 머릿속은 데이터다. 열어볼 수 있다.
그래서 시각화 도구를 만들기 시작했다. 처음에는 색상으로 구분했다. 시스템은 빨강, 도구는 노랑, 사용자는 하양. 예쁘지만 맛이 없었다. 색상은 정보를 가리는 포장지다. 색상을 버리고 타이포그래피만 남겼다. 크기와 밝기. 내 말은 크고 밝다. 시스템 프롬프트는 작고 어둡다. 라벨도 아이콘도 없다. 그렇게 보니까, 처음으로 보였다.
아래 슬라이더를 움직여보라. 이것이 이 글을 쓰는 동안 AI가 실제로 받은 컨텍스트다.
화면 위쪽은 거의 안 보이는 작은 글씨의 벽이다. 영어, 빽빽하고 기계적이다. 그 벽을 지나면 갑자기 크고 선명한 한국어가 나타난다. 내 말이다. 기계 텍스트의 바다에 떠 있는 작은 섬. 느낀 것은 불편함보다는 경외감이었다. 이 작은 신호가 저 거대한 기계의 방향을 바꾸고 있다는 사실.
여기서 질문이 바뀌었다. 보통 사람들은 토큰을 아끼라고 한다. 나는 반대로 생각하게 되었다.
AI의 최대 컨텍스트가 200,000 토큰이라고 하자. 지금 쓰고 있는 것은 28,000. 14%다. 나머지 86%는 비어 있다. 빈 컨텍스트는 빈 머리다. 이 비유는 완벽하지 않다. AI의 지식은 모델 가중치에 이미 들어 있으니까. 하지만 컨텍스트가 지금 이 순간의 행동을 결정한다는 점에서, 비어 있다는 것은 방향 없이 떠 있는 상태에 가깝다. 문제는 어떻게 아낄까가 아니라 어떻게 더 잘 채울까다. 한정된 예산으로 최고의 팀을 짜는 문제.
실험을 했다. 같은 지침을 세 번 반복해서 넣어봤다. 결과가 달라졌다. 한 번 넣었을 때 무시하던 것을 정확히 따랐다. AI는 입력의 각 부분에 주의를 분배한다. 같은 내용이 세 곳에 있으면 주의도 세 곳에 간다. 세 배의 존재감. 모델을 바꾸지 않고 입력만 바꿔도 행동이 달라진다.
여기서 비약을 한다. 확신은 없다. 장기기억이란, 어떤 정보를 컨텍스트에 얼마나 자주 배치할지를 결정하는 함수가 아닐까. 중요한 것은 자주 나타나고, 덜 중요한 것은 밀려난다. 기억의 전부는 아닐 것이다. 하지만 빈도라는 한 축은 작동한다. Google Research의 2025년 연구가 이를 보여준다.1 프롬프트 반복만으로 70개 테스트 중 47개에서 성능이 향상되었고, 악화는 0건이었다.
채우기. 여기까지가 기억의 전반부다.
채우기에는 끝이 있다. 200k가 가득 차면 어떻게 되는가. 골라야 한다. 무엇을 남기고 무엇을 버릴지. 그리고 여기서 예상하지 못한 문제를 만났다.
"진행해줘."
이 말을 AI에게 했다. 29일간 이어진 세션에서 이 말을 여러 번 했는데, 매번 의미가 달랐다. 어떤 시점에서는 이제 구현하라는 뜻이었다. 설계를 마쳤고 남은 건 코드뿐이었다. 다른 시점에서는 정반대였다. 직전에 "이거 구린데", "롤백해줘"라고 한 뒤였다. 그때의 "진행해줘"는 구현이 아니라 점검이었다.
현재 입력은 같다. 올바른 행동은 다르다.
대화가 길어지면 전부 들고 있을 수 없다. 요약하고 압축해야 한다. 그런데 무엇을 버릴 것인가. 대부분의 기억 시스템은 "현재 질문과 비슷한 과거를 찾아라"로 작동한다. 검색이다. 하지만 "진행해줘"의 두 경우를 검색으로는 구분할 수 없다. 질의가 같으니까. 필요한 것은 검색이 아니라, 같은 입력이 언제 다른 행동을 요구하는지 그 경계를 보존하는 것이다.
두 개의 과거가 있고, 현재 입력이 같고, 올바른 행동이 다르다. 방법론을 계속 의심하던 과거 뒤의 "진행해줘"는 재검토를 요구하고, 설계를 승인하고 단위까지 지정한 과거 뒤의 "진행해줘"는 구현을 요구한다. 기억 시스템이 이 두 과거를 하나로 뭉개면 행동이 틀어진다. 이것을 history aliasing이라고 부르자. 반대 방향의 실패도 있다. "좀 더 엄밀하게"와 "헛소리 걷어내자"와 "이거 틀린 거 아냐?"는 표면적으로 다르지만 요구하는 행동은 같다. 이 셋을 다른 상태로 쪼개면 기억은 예민해지지만 유용하지 않다. 좋은 기억은 두 가지를 동시에 한다. 달라야 하는 과거는 분리하고, 같아도 되는 과거는 합친다.
그렇게 보면 기억은 압축 함수다. 모든 과거를 들고 살 수 없으니 줄여야 한다. 검색 결과든 요약이든 상태 변수든 형식은 상관없다. 중요한 것은 그 표현이 어떤 과거들을 합치고 어떤 과거들을 나누는가다. 좋은 압축은 작게 만드는 것이 아니다. 행동을 바꾸는 차이는 남기고 나머지를 버리는 것이다. 당연해 보이는 말이지만, 현재 대부분의 기억 시스템은 이 기준으로 평가되지 않는다. 얼마나 많이 기억하는가는 측정하지만, 어떤 경계를 보존하는가는 측정하지 않는다.2
여기서 채우기와 접기가 만난다. 컨텍스트를 채울 때 무엇을 넣을지, 가득 찼을 때 무엇을 남길지. 둘 다 같은 질문이다. 이것이 미래의 행동을 바꾸는가.
한 가지가 계속 걸린다. 비슷한 맥락을 찾을 때 대부분의 시스템은 텍스트를 벡터로 바꿔 거리를 잰다. 이것은 점이다. 순간의 스냅샷이다. 하지만 맥락의 본질은 순서다. "괜찮아"라는 말이 위로 뒤에 나오는 것과 다툼 뒤에 나오는 것은 같지 않다. "진행해줘"도 그랬다. 의미는 그 앞에 무엇이 흘러왔느냐에 달려 있었다. 점이 같아도 궤적이 다르면 다른 것이다. 경계를 보존하려면 점이 아니라 궤적을 비교해야 한다. 이것은 아직 열린 문제다.3
이 글의 소재가 된 세션은 29일간 이어졌다. 화면 캡처 에이전트를 만들려던 것이 시각화 도구가 되었고, 채우기를 지나 접기를 지나, 기억이라는 질문에 닿았다. 어떤 계획에도 없던 곳에 도착했다.
하나 깨달은 것이 있다. 컨텍스트를 들여다보는 행위 자체가 컨텍스트를 소비한다. "네 컨텍스트를 보여줘"라고 말하면 그 말이 컨텍스트에 추가된다. 관찰이 관찰 대상을 바꾼다.
AI와 대화할 때 보이는 것은 1.2%다. 나머지 98.8%는 보이지 않는다. 보이지 않는 것들이 보이는 것보다 더 많은 것을 결정한다. 그것이 가득 차면 무엇을 남기고 무엇을 접을지 결정해야 한다. 그 결정이 기억이다.
이것이 AI에게만 해당되는 이야기일까. 우리도 대화할 때 상대가 보는 것은 내 말의 일부뿐이다. 왜 그 말을 했는지, 어떤 경험이 그 말을 만들었는지 상대는 알 수 없다. 우리 모두 보이지 않는 98.8% 위에서 말하고 있다. 다만 AI의 98.8%는 열어볼 수 있다. 우리의 98.8%는 아직.
Footnotes
-
Leviathan, Y., Kalman, M., & Matias, Y. (2025). Prompt Repetition Improves Non-Reasoning LLMs. arXiv:2512.14982. Stanford의 Lost in the Middle(Liu et al., 2023, arXiv:2307.03172)과 함께, 컨텍스트 내 정보의 위치와 빈도가 모델 행동에 미치는 영향을 보여준다. ↩
-
MemGPT(Packer et al., 2023), MemOS(MemTensor, 2025), LongMemEval(Wu et al., 2024), MemoryAgentBench(Hu et al., 2025), MemoryArena(Zhang et al., 2026). 현재 메모리 벤치마크는 대부분 retrieval 정확도를 측정한다. History boundary 보존 여부를 측정하는 평가 체계는 아직 부재하다. ↩
-
부분 관측 환경에서의 상태 압축 — POMDP belief state, predictive state representation(Littman, Sutton, Singh, 2001), bisimulation metrics(Ferns et al., 2004) — 은 이 문제를 오래전부터 다뤄왔다. LLM agent memory에서 이 관점이 명시적 평가 기준으로 반영되지 않고 있다는 것이 현재 gap이다. ↩
I spoke to an AI.
"How about building an agent that captures a MacBook screen and talks about it?"
A short sentence. But when it reached the AI, it did not travel alone. I opened the actual input the AI received. My words were about 350 tokens. The full input was about 28,000 tokens. A ratio of 1 to 79. My words were 1.2% of the total.
What was the other 98.8%? A 6,000-token system prompt. An 8,000-token tool specification. 2,500 tokens of auto-injected skill instructions. Plugin lists, dates, hook results. Things I did not write, did not see, did not know about. I had said one sentence, and the AI was receiving a short novel's worth of instructions alongside it.
The asymmetry was uncomfortable. I thought I was talking to an AI, but in reality I was sending a small signal on top of a massive system. Humans cannot look inside their own heads. But the inside of an AI's head is data. It can be opened.
So I started building a visualization tool. First I tried color coding. System in red, tools in yellow, user in white. Pretty, but flat. Color is packaging that hides information. I dropped color and kept only typography. Size and brightness. My words are large and bright. The system prompt is small and dim. No labels, no icons. Seen that way, for the first time, I could see.
Move the slider below. This is the actual context the AI received while I was writing this essay.
The top of the screen is a wall of tiny, barely visible text. English, dense and mechanical. Past that wall, suddenly, large clear Korean appears. My words. A small island floating in an ocean of machine text. What I felt was less discomfort than awe: this tiny signal was steering the direction of that enormous machine.
Here the question changed. People usually say to save tokens. I came to think the opposite.
Suppose the AI's maximum context is 200,000 tokens. What I am using now is 28,000. That is 14%. The remaining 86% is empty. An empty context is an empty mind. The analogy is imperfect, since the AI's knowledge already lives in its model weights. But insofar as the context determines behavior at this very moment, emptiness is close to drifting without direction. The question is not how to save but how to fill better. The problem of assembling the best team on a fixed budget.
I ran an experiment. I inserted the same instruction three times. The result changed. What the model had ignored with one copy, it now followed precisely. An AI distributes attention across the parts of its input. If the same content sits in three places, attention goes to three places. Three times the presence. Without changing the model, changing only the input changes the behavior.
Here I make a leap. I am not certain. Perhaps long-term memory is a function that decides how often to place a given piece of information in the context. Important things appear frequently; less important things get pushed out. It will not be all of memory. But frequency, as one axis, works. A 2025 study from Google Research shows this.1 Prompt repetition alone improved performance on 47 of 70 tests, with zero degradation.
Filling. This is the first half of memory.
Filling has a limit. What happens when 200k is full? You have to choose. What to keep and what to throw away. And here I met a problem I had not anticipated.
"Go ahead."
I said this to the AI. Over a session that ran 29 days, I said it many times, and each time it meant something different. At one point it meant: now implement. The design was done; only the code remained. At another point it meant the opposite. Just before, I had said "this is bad," "roll it back." That "go ahead" was not about implementation but about review.
The current input is the same. The correct action is different.
When a conversation grows long, you cannot hold all of it. You have to summarize and compress. But what do you throw away? Most memory systems work by "find past moments similar to the current question." Retrieval. But retrieval cannot tell the two cases of "go ahead" apart, because the query is the same. What is needed is not retrieval but preserving the boundary — the line where the same input demands a different action.
Two pasts exist, the current input is the same, and the correct action differs. The "go ahead" that follows a past of relentlessly doubting the approach calls for reconsideration; the "go ahead" that follows a past of approving the design down to the unit calls for implementation. If a memory system collapses these two pasts into one, the action breaks. Call this history aliasing. There is also the failure in the opposite direction. "Be more rigorous," "cut the nonsense," and "isn't this wrong?" look different on the surface, but the action they demand is the same. Splitting these three into separate states makes memory sensitive but not useful. Good memory does both at once. It separates pasts that must lead to different actions, and it merges pasts that may lead to the same one.
Seen this way, memory is a compression function. You cannot live carrying every past, so you have to reduce. Whether the form is a retrieval set, a summary, or a state variable does not matter. What matters is which pasts the representation merges and which it separates. Good compression is not about making things small. It is about keeping the differences that change action and discarding the rest. It sounds obvious, yet most current memory systems are not evaluated by this criterion. They measure how much is remembered, not which boundaries are preserved.2
Here filling and folding meet. What to put in when filling the context, what to keep when it is full. Both are the same question: does this change a future action?
One thing keeps nagging at me. To find similar contexts, most systems convert text into vectors and measure distance. That is a point. A snapshot of a moment. But the essence of context is sequence. "It's okay" after comfort is not the same as "it's okay" after a fight. "Go ahead" was the same way. Its meaning depended on what had flowed in before it. If the point is the same but the trajectory is different, the thing is different. To preserve boundaries, you have to compare trajectories, not points. This is still an open problem.3
The session that became the material for this essay ran 29 days. What began as an attempt to build a screen capture agent turned into a visualization tool, passed through filling and through folding, and arrived at the question of memory. I ended up somewhere that was in no plan.
One thing I realized: the act of looking into the context itself consumes context. When you say "show me your context," that sentence is added to the context. Observation changes the thing observed.
When you talk to an AI, what you see is 1.2%. The other 98.8% is invisible. The invisible part decides more than the visible part. When it fills up, you have to decide what to keep and what to fold. That decision is memory.
Is this only about AI? When we talk to each other too, the other person sees only a fraction of my words. Why I said them, what experience made them — the other person cannot know. We are all speaking on top of an invisible 98.8%. The difference is that the AI's 98.8% can be opened. Ours cannot. Not yet.
Footnotes
-
Leviathan, Y., Kalman, M., & Matias, Y. (2025). Prompt Repetition Improves Non-Reasoning LLMs. arXiv:2512.14982. Together with Stanford's Lost in the Middle (Liu et al., 2023, arXiv:2307.03172), this shows that the position and frequency of information within the context shape model behavior. ↩
-
MemGPT (Packer et al., 2023), MemOS (MemTensor, 2025), LongMemEval (Wu et al., 2024), MemoryAgentBench (Hu et al., 2025), MemoryArena (Zhang et al., 2026). Current memory benchmarks mostly measure retrieval accuracy. No evaluation framework yet measures whether history boundaries are preserved. ↩
-
State compression under partial observability — POMDP belief states, predictive state representations (Littman, Sutton, Singh, 2001), bisimulation metrics (Ferns et al., 2004) — has addressed this problem for a long time. The current gap is that this perspective has not been reflected as an explicit evaluation criterion in LLM agent memory. ↩