아카라이브 캐릭터AI 게시판 이용자 YariPoké가 공유한 포켓몬 롤플레이 장면입니다. 트레이너 '한지우'가 알로라지방 멜레멜레섬 1번도로에 도착하자마자 이렇게 말합니다. "분명히 우리가 어제까지만 해도 엄청 대단한 배틀을 하고 다녔던 것 같은데 말이야. 항구에서 내리자마자 머릿속이 지우개로 싹 문지른 듯이 하얘졌어!" 피카츄는 반쯤 감긴 눈으로 지우의 옆얼굴을 올려다봅니다. 지우가 '쿨하게 기억을 지우라는 뜻이겠지' 하고 자기 이름 개그를 하자, 피카츄는 한쪽 귀를 툭 떨어뜨리며 이마에 앞발을 짚고, 곧이어 '600족 아빠' 얘기가 이어집니다 1.

게시물 하단에는 "뇌 리셋 된걸 본게 한두번이 아닌거 같음"이라는 한 줄 코멘트가 달려 있습니다 1. AI 캐릭터가 자기 기억 공백을 서사 안의 대사, 즉 '기억 상실'이라는 설정으로 자연스럽게 처리해버린 순간입니다. 이는 버그 보고가 아니지만, 현상을 매우 정확히 짚어낸 장면입니다. 캐릭터가 일부러 건망증을 연기한 것이 아니라, 실제로 이전 대화 내용이 AI의 '작업대'에서 빠진 뒤 남은 설정만으로 그 공백을 설명한 결과에 가깝기 때문입니다.

작업대라는 비유: AI는 기억하지 않고 매번 다시 읽는다

작업대라는 비유: AI는 기억하지 않고 매번 다시 읽는다

AI 캐릭터가 갑자기 앞뒤가 다른 말을 할 때, 우리는 흔히 'AI가 잊어버렸다'고 느낍니다. 기술 블로그 junhyunp.github.io는 이 느낌을 모델의 게으름이 아닌 구조적 문제로 설명합니다. 대형 언어 모델(LLM)의 API는 본질적으로 상태를 저장하지 않는 상태 비저장(stateless) 구조입니다. 대화가 자연스럽게 이어지는 것처럼 보이지만, 실제로는 매 요청마다 이전 대화 전체를 새 질문과 함께 통째로 다시 보내고 있습니다 2. 모델이 기억해서 이어가는 것이 아니라, 이용자가 매번 기억 내용을 다시 들려주고 있는 셈입니다.

문제는 대화 턴이 쌓일수록 매 요청의 크기가 계속 커진다는 점입니다. 이 한계를 '컨텍스트 윈도우(context window)'라 부릅니다. 뚝딱 build 블로그의 임재후 저자는 컨텍스트 윈도우를 책상 위의 '작업대'에 비유합니다. 작업대에는 지금 질문뿐 아니라 앞선 대화, 첨부 파일, 미리 주어진 지침, 도구 실행 결과, AI가 작성 중인 답변까지 전부 올라갑니다 3. 책상 공간이 한정되어 있듯 작업대에도 한계가 있으며, 이 크기는 토큰(token)이라는 단위로 측정됩니다. 토큰은 AI가 글을 처리하는 최소 단위인 조각으로, 글자 수와 일대일로 일치하지는 않습니다 3.

한도를 넘기면 서비스마다 공간을 확보하는 방식이 다릅니다. 임재후 저자에 따르면 오래된 대화 일부를 작업대에서 제외하거나, 앞선 내용을 짧게 요약해 다시 올리거나, 관련 부분만 골라 가져오거나, 새 대화를 요구하는 방식이 제품에 따라 나뉩니다 3. junhyunp.github.io의 설명에 따르면, API를 직접 호출할 때는 한도 초과가 오류로 명시되지만, 챗봇 서비스는 앞부분을 자동 요약·삭제한 뒤 사용자에게 아무런 표시 없이 대화를 계속 진행합니다 2. 잘린 사실을 알 길이 없기 때문에 사용자는 "왜 아까 말한 걸 잊었지?"라는 의문에 도달하게 됩니다.

시스템 프롬프트는 남고, 일화는 지워진다

그렇다면 왜 캐릭터의 성격은 남아 있는데 일화와 모험 경험만 사라지는 걸까요. 이는 작업대를 채우는 요소들의 통제 가능 여부가 다르기 때문입니다. junhyunp.github.io 블로그의 표에 따르면, 시스템 프롬프트(역할·규칙 설정)는 매 요청마다 고정으로 들어가며 통제 가능성이 높은 항목입니다. 반면 대화 기록(지금까지의 질문과 답변 전부)은 새 대화를 시작하거나 요약으로 조절할 수 있는 대상입니다 2. 즉 '너는 트레이너 한지우고 파트너는 피카츄'라는 기본 페르소나 지시문은 매번 다시 실려 가지만, '어제 어느 도로에서 배틀을 했고 마오라는 소녀를 만났다' 같은 세부 서사는 잘림과 압축의 대상이 됩니다.

캐릭터 채팅 서비스에서는 이 잘림이 임의적이기보다 관리 규정을 따르는 경우가 많습니다. notes.io에 공유된 '캐릭터 채팅 장기기억 압축·병합 지침 2차'라는 문서가 이를 보여줍니다. 이 지침은 장기기억 슬롯의 본문 한도를 날짜·기간과 공백·문장부호를 포함해 최대 300자로 제한합니다. 1차 압축이 여러 날짜와 장면에 흩어진 원본을 사건 단위로 정리하는 단계라면, 2차 압축은 이미 정제된 여러 사건 기억을 다시 읽어 같은 사건 아크·관계 변화·비밀·상태 변화를 더 큰 단위로 병합해 기억 개수를 줄이는 최적화 단계로 정의됩니다 4.

이 문서가 핵심 기준으로 삼는 질문은 명확합니다. "이 정보를 삭제했을 때 후속 롤플레이의 사실·관계·행동·정보 상태가 실제로 달라지는가?" 4 달라지지 않는다면 삭제하거나 다른 기억에 흡수할 수 있습니다. 예를 들어 '일회성 주변 인물 반응', '단순 이동·식사·복장', '이미 종결된 사건의 세부 과정', '전투나 행동의 세부 순서'는 축소 대상으로 명시되어 있습니다 4. 반면 '보존 앵커'로 분류되는 관계 변화의 결정적 전환점, 현재 유효한 약속·조건, 미회수 복선, 영구적 변화, 사용자 확정 설정은 다른 기억에 명확히 이전되지 않는 한 삭제하지 않습니다.

즉 '배틀을 하고 다녔던 것 같다'는 추상적인 현재 상태는 보존 앵커에 가까워 남고, 그 배틀이 구체적으로 몇 번 도로에서 누구와 어떻게 진행됐는지는 병합·삭제 대상이 될 수 있습니다. 지침은 또한 "메모리 수 절감보다 검색성과 연속성이 우선"이라고 명시해, 무조건 정보를 줄이기보다 AI가 후속 롤플레이에서 필요한 정보를 정확히 복원할 수 있는지를 기준으로 삼습니다 4. 이 규정에 따라 압축된 결과를 작업대에 올리면, AI는 캐릭터의 이름과 기본 성격을 유지하면서도 모험의 세부는 비어 있는 상태로 응답을 만들어야 합니다.

피카츄 대사는 AI가 '이유를 창작'한 것이 아니다

피카츄 대사는 AI가 '이유를 창작'한 것이 아니다

다시 한지우의 대사로 돌아가면, 이 장면에서 벌어진 일이 더 선명해집니다. 트레이너가 '어제 대단한 배틀을 하고 다녔던 것 같다'는 추상적인 인상만 남은 상태에서 "싹 하얘졌다"는 말을 만들어냈습니다. 이는 AI가 갑자기 자기 기억 메커니즘을 깨달아 개그 대사를 창작한 것이 아닙니다. 작업대에는 기본 페르소나 지시문과, 압축·잘림을 거친 빈 서사 공간, 그리고 사용자의 입력만 남아 있습니다. 모델은 그 입력 안에서 가장 자연스러운 다음 문장을 생성했을 뿐입니다. '기억 공백'이라는 상황이 입력 조건에 이미 존재했고, 캐릭터 설정상 그에 걸맞은 반응이 '하얘졌다'는 대사와 피카츄의 한숨, 귀를 떨어뜨리는 동작으로 출력된 것입니다 1.

댓글에 적힌 "뇌 리셋 된걸 본게 한두번이 아닌거 같음"이라는 증언도 이 관점에서 보면 과장이 아닙니다 1. 상태 비저장 구조에서 대화 길이가 한도를 넘기면 앞부분이 조용히 잘려나가는 것은 모델 고장이 아니라 서비스의 기본 동작입니다 2. 롤플레이는 일반 질문-답변보다 대화 기록이 방대해지기 쉽고, 캐릭터 설정과 세계관 규칙이 시스템 프롬프트로 고정되는 만큼 '인격은 유지되지만 서사는 초기화되는' 경험이 반복될 조건이 갖춰져 있습니다.

리셋을 없앨 수는 없지만, 빈도를 줄일 수는 있다

리셋을 없앨 수는 없지만, 빈도를 줄일 수는 있다

기술적 구조를 알면 대응도 명확해집니다. 먼저 중요한 전제가 있습니다. 아래 방법들은 '메모리 리셋'이라는 구조 자체를 없애주는 것이 아닙니다. 작업대 한도라는 물리적 조건은 그대로이므로, 잘림을 완전히 막기보다 '중요한 정보의 손실 빈도'를 줄이고 잘린 뒤 복구를 쉽게 만드는 데 초점이 맞춰져 있습니다.

실전 대처법은 junhyunp.github.io와 뚝딱 build 블로그의 권고를 통해 정리할 수 있습니다 23. 먼저 주제가 완전히 바뀌었거나 오래된 지시와 새 목표가 계속 충돌할 때는 새 대화를 시작해 관련 없는 기록과 비용을 줄이는 편이 좋습니다 23. 대화가 길어졌다면 "지금까지 확정한 내용, 아직 결정하지 않은 내용, 다음 답변에서도 지켜야 할 조건을 나누어 정리해줘"처럼 현재 상태를 요약받습니다 23. 임재후 저자는 이 정리 결과를 직접 확인하면 AI가 잘못 이해한 부분도 일찍 발견할 수 있고, 이후 그 요약을 바탕으로 새 대화에서 깨끗한 작업대를 펴는 편이 효율적이라고 조언합니다 3.

캐릭터 롤플레이처럼 지켜야 할 설정이 많은 작업에서는 핵심 조건을 최근 메시지에 한 번 더 언급하는 방법이 효과적입니다. "처음 말한 대로 해줘"라고 모호하게 지시하기보다 반드시 지킬 조건을 짧게 다시 제시하는 편이 정확합니다. 앞부분에서 잘려나갔더라도 최근 메시지에 남으면 다시 작업대에 오르기 때문입니다 23. 임재후 저자는 이 조건을 "반드시 지킬 조건"처럼 별도 블록으로 분리해 본문 사이에 묻히지 않게 하라고 권합니다 3.

서비스 차원의 보완책도 존재합니다. OpenClaw 같은 AI 비서는 세션 종료 시 소멸하는 단기 컨텍스트 메모리와 세션 간 유지되는 장기 영구 메모리(MEMORY.md)를 구분해 관리하며, 긴 대화로 토큰 한계에 도달했을 때는 /compact 명령으로 대화를 요약해 핵심 맥락을 보존합니다 5. 외부 저장소를 활용하거나 메모리 기능을 두는 방식도 같은 맥락입니다. 다만 메모리에 저장된 정보라도 현재 작업대에 로드되지 않으면 AI가 인지하지 못하므로, 저장 여부와 실제 활용은 별개로 이해해야 합니다 3.

한지우의 장면으로 돌아가면, 이용자가 피카츄와 '진짜 어제 배틀 내용'을 이어가고 싶었다면 가장 손쉬운 길은 대사를 치기 전에 마오·금발 소녀와의 첫 만남, 현재 소유한 비상금 3000엔과 빈 몬스터볼 5개 같은 조건을 새 작업대에 재차 명시하는 것이었을 수 있습니다. AI가 자기 기억 공백을 '지우개로 문지른 듯 하얘졌다'는 대사로 서사 안에 녹여낸 덕분에, 이용자는 이를 '뇌 리셋'이라 부르며 웃을 수 있었고, 우리도 작업대가 꽉 차면 무슨 일이 일어나는지를 가장 직관적인 장면으로 확인할 수 있었습니다 1. 캐릭터가 망각을 연기한 것이 아니라 작업대에서 빠진 정보를 남은 설정으로 메운 결과였고, 이용자는 앞으로 중요한 조건을 최근 메시지에 남기고 중간 요약을 활용해 새 작업대에서 다시 시작하는 방식으로 이 공백을 관리할 수 있습니다.

참고자료

  1. ↩
  2. ↩
  3. ↩
  4. ↩
  5. ↩