안 잊는 Agent는 왜 상용화할 수 없는가 — 망각 거버넌스

← 전체 목차 · 이전: LLM의 4가지 기억 메커니즘 · 다음: 기억 오염과 회수 신뢰성

대화를 데이터베이스에 전부 적재하는 것과 Agent가 기억을 갖는 것은 다른 일이다. 입고(persist)는 "안 잃어버린다"만 보장하고, 기억은 "필요할 때 맞는 것을 쓸 수 있다"를 보장해야 한다. 이 둘을 같다고 보는 순간, 팀은 "더 많이 저장하면 더 똑똑해진다"는 반대 방향의 답을 향해 달리기 시작한다. 기억을 지우지 않는 것은 관대함이 아니라 부채(debt)다 — 저장된 모든 줄은 Token·검색 시간·모델의 주의력을 영구히 담보로 잡는다.

무한 기억이 만드는 4가지 생산 대가

#원인결과
1잡담·과거 조작·실패 기록이 계속 누적노이즈가 핵심 규칙을 희석 → 결정 정밀도 하락
2매 턴 전체 이력을 동반Token 비용이 선형 이상으로 폭증
3기억 저장소가 무한정 커짐벡터 검색이 느려지고 무관 결과가 섞임
4사용자가 바꾼 규칙 옆에 옛 규칙이 그대로 남음신구 규칙 충돌 — Agent가 턴마다 다른 규칙을 따라 "행동이 널뛴다"

네 가지는 서로 독립이 아니라 한 방향으로 강화된다. 노이즈가 늘면 검색이 느려지고, 검색이 느려지는데도 지우지 않으면 신구 충돌이 늘고, 충돌을 피하려 더 많은 맥락을 우겨넣으면 다시 노이즈가 는다.

3계층은 저장 위치가 아니라 "쇠퇴 곡선"의 분리다

계층내용생명주기비유
순간 기억이번 단일 턴의 대화·중간 계산작업 종료 즉시 폐기, 영속화 안 함초안 메모지 — 쓰고 바로 버림
단기 기억최근 연속 대화·다중 턴 진행 상황시간창 + 턴 수 상한 (예: 최근 30분 또는 20턴), 초과 시 자동 쇠퇴회의 중 메모 — 회의 끝나면 정리
장기 기억사용자 고정 요구·업무 규칙·핵심 결론영구 보존하되 가중치 쇠퇴 — 저빈도는 서서히 강등, 고빈도는 상단 유지업무 자산 — 시간이 지나도 가치가 줄지 않으면 남긴다

세 계층을 하나의 저장소·하나의 만료 규칙으로 섞으면, 저장소는 곧 "가장 긴 생명주기"를 기준으로 부풀고 만다. 계층의 핵심 기능은 "어디에 두는가"가 아니라 "언제 죽는가"를 미리 정하는 것이다.

놓치기 쉬운 제3의 계층: 작업 로그 기억

단기와 장기 사이에 작업 단위 로그 계층을 하나 더 두면 두 방향의 이득을 동시에 얻는다.

작업 종료 → 실행 로그·오류 기록·단계 복기·결과 데이터를 동종 작업 로그 저장소로 자동 이관
  정방향: 다음 동종 작업이 참조해 같은 함정을 반복하지 않음
  역방향: 이 작업만의 잡음(실패 시도, 임시 판단)이 장기 기억(전역)으로 새어 들어가지 않게 격리

이 계층이 없으면 "이번 작업에서만 유효했던 임시 판단"이 곧바로 장기 기억으로 승격되거나, 반대로 다음 유사 작업이 참고할 만한 경험이 아예 소실된다.

회수(recall) 자체도 망각의 일부다

물리적으로 지우지 않아도, 회수 단계에서 낮은 순위로 미는 것만으로 사실상의 망각 효과를 낼 수 있다. 단순 유사도 하나만으로 정렬하면 "비슷하지만 무관한" 기억이 대량으로 끌려온다.

회수 점수 = 유사도 + 시효성 + 장면 적합도 + 우선순위
  → 종합 정렬 → 현재 작업에 가장 참조할 만한 것만 선별
  → 무관 간섭 정보는 자연히 하단으로 밀려남(=소프트 망각)

물리 삭제(하드 망각)와 회수 순위 조정(소프트 망각)은 같은 목표를 향한 다른 층위의 수단이며, 하나만으로는 부족하다.

4대 거버넌스 방안

  1. 분급 격리 — 임시 상호작용은 애초에 입고하지 않는다 / 세션 내용은 시한부로 보관 / 핵심 규칙만 영구 침전. 저장 시점부터 잡음이 섞이지 않게 원천 분리한다.
  2. 동적 쇠퇴 — 단기는 시간창+턴 상한으로 자동 소거, 장기는 가중치 반복(저빈도 강등·고빈도 상단 유지)으로 서서히 정리한다.
  3. 추출·정제 — 원문 대화를 그대로 쌓지 않는다. 매 세션 종료 시 요약 → 규칙 추출 → 잡담 제거 파이프라인을 거쳐, 장기 기억에는 "대화 로그"가 아니라 "대화에서 뽑아낸 결론"만 들어가게 한다.
  4. 이중 망각 — 시스템이 만료된 기억을 자동 퇴출하는 경로와, 사용자가 특정 기억을 직접 리셋·삭제·수정하는 경로를 함께 둔다. 자동만 있으면 "사용자가 명시적으로 지워달라는 것"을 처리할 수 없고, 수동만 있으면 규모가 커질수록 방치된다.

핵심 통찰

  1. 입고(storage)와 기억(memory)은 다른 계약이다 — 입고는 "잃어버리지 않는다"를 약속하고, 기억은 "맞는 것을 맞는 때에 쓸 수 있다"를 약속한다. 전자만 하고 후자를 안 하면, 저장소는 커지는데 유효 신호 비율은 계속 떨어지는 역설이 생긴다.
  2. "보관은 곧 부채다" — 보관되는 모든 정보는 이자를 낳는 부채다 — Token·검색 지연·주의력 희석이라는 이자를 매턴 지불한다. 그래서 기록 전에 "이 정보가 이 이자를 낼 가치가 있는가"를 먼저 물어야 한다.
  3. 노이즈의 해악은 "추가"가 아니라 "희석"이다 — 무관한 내용이 늘어나도 모델이 그것을 무시하는 게 아니라, 유효 신호의 비중이 줄어 답이 점점 뭉툭해진다. "기억이 많을수록 똑똑하다"가 반직관적으로 틀리는 지점이다.
  4. 분급은 각 계층에 서로 다른 쇠퇴 곡선을 주는 일이다 — 순간·단기·장기를 한 테이블에 섞으면 관리 자체가 성립하지 않는다. 세 곡선을 한 표에 나란히 적을 수 있어야 설계가 끝난 것이다.
  5. 장기 기억에는 대화가 아니라 규칙이 남아야 한다 — 원문 대화는 잡담·중복·감정 표현이 섞인 원자재이고, 추출·정제를 거친 결론만이 재사용 가치를 가진다. "존이 무엇을 물었나"가 아니라 "그래서 확정된 규칙이 무엇인가"가 저장 대상이다.
  6. 신구 충돌은 모델의 판단력이 아니라 버전·우선순위 관리로 막아야 한다 — 옛 기억이 삭제되지 않은 채 새 기억과 공존하면, Agent는 턴마다 다른 근거를 골라 "정신분열"처럼 행동한다. 이것은 모델을 더 똑똑하게 만든다고 해결되지 않는다.
  7. 자동 망각과 수동 망각은 서로를 대체하지 못한다 — 자동은 규모를 감당하고, 수동은 "사용자가 명시적으로 지워달라"는 요구(잔여 오염)를 해소한다. 둘 중 하나만 있는 시스템은 반드시 한쪽 구멍이 남는다.
  8. 회수 단계의 가중치 조정은 "삭제 없는 망각"이다 — 물리적으로 남아 있어도 순위에서 밀리면 실질적으로 잊힌 것과 같다. 감사·복원 가능성을 지키면서 망각 효과를 내는 값싼 방법이다.

엔지니어링 실전 Tips

  • 쓰기 전에 필터링할 것, 사후 청소보다 훨씬 싸다. 임시 상호작용을 입고 결정 지점(호출 시점)에서 걸러내면, 나중에 무엇을 지울지 고민할 필요 자체가 없다.
  • 단기 기억은 "시간창 + 턴 상한" 이중 게이트로 — 둘 중 하나만 넘어도 쇠퇴시킨다. 저빈도·장시간 대화가 창을 무한정 늘리는 것을 막는다.
  • 가중치 쇠퇴가 일괄 삭제보다 안전하다 — 저빈도는 서서히 강등, 고빈도는 계속 상단 유지. 오판이 나도 즉시 완전 소실되지 않고 회복 여지가 남는다.
  • 요약은 "텍스트를 짧게"가 아니라 "판정 가능한 규칙을 뽑아내는" 작업으로 정의할 것. 산출물이 여전히 대화체면 추출이 실패한 것이다.
  • 신구 충돌은 쓰기 시점에 버전·우선순위를 매겨 막을 것 — 읽기 시점에 모델이 알아서 새것을 고르길 기대하지 말 것. 이것이 일관되지 않으면 같은 질문에 오늘과 내일 답이 달라진다.
  • 사용자에게 "기억 리셋/삭제/수정" 버튼을 노출할 것 — 자동 쇠퇴가 못 잡는 "고질적으로 남는 오염"은 결국 사용자가 직접 지우게 해야 한다.
  • 회수 점수를 유사도 단일값에서 다차원(유사도/시효성/장면 적합도/우선순위)으로 바꿀 것 — 어느 것을 얼마나 반영할지는 업무마다 다르므로 네 항목을 독립적으로 조정 가능한 파라미터로 노출할 것.