AI 메모리는 어떤 컨텍스트가 허용될지 결정해야 한다
요약
AI 에이전트의 메모리 시스템이 단순히 정보를 검색하는 것을 넘어, 검색된 정보의 활용 권한을 결정하는 '액세스 정책'의 중요성을 다룹니다. 관련성이 높다고 해서 모든 정보가 답변의 근거가 되어서는 안 되며, 정보의 성격에 따른 계층적 제어가 필요합니다.
핵심 포인트
- 관련성(Relevance)이 곧 허가(Permission)를 의미하지 않음
- 메모리 유형에 따른 6가지 액션 클래스(Answer, Warn, Block 등) 도입
- 부정적 증거와 수정 사항에 대해 더 강력한 제약 조건 필요
- 정보의 확실성과 증거 강도를 일치시키는 정책 설계
Retrieval (검색)은 기록을 가져옵니다. 성숙한 메모리 시스템은 각 기록이 무엇을 할 수 있도록 허용될지도 결정해야 합니다.
장기 실행되는 AI 시스템은 결국 유효하지만 서로 충돌하는 여러 메모리를 검색하게 됩니다:
- 오래된 요약본,
- 현재의 소스 파일,
- 과거의 선호도,
- 명시적인 수정 사항,
- 해결되지 않은 질문,
- "최종"이라고 표시된 초안.
결정적인 실패 모드는 항상 검색의 부족 때문만은 아닙니다. 때때로 에이전트(Agent)는 올바른 기록을 검색하고도 잘못된 방식으로 사용합니다. 즉, 오래된 요약을 확정된 사실로 취급하거나, 선호도를 구속력 있는 지침으로 취급하거나, 해결되지 않은 질문을 확인된 지식으로 취급하는 식입니다.
이는 거짓된 확신을 만들어냅니다. 에이전트는 컨텍스트 (Context)를 가지고 있기 때문에 자신감 있게 들리지만, 그 컨텍스트는 잘못된 권한으로 사용되고 있는 것입니다.
권한 정책 (Authority policy) 다음 단계는 액세스 정책 (Access policy)입니다:
검색된 각 메모리가 무엇을 할 수 있도록 허용될지 결정하는 규칙.
핵심 아이디어 (Core idea)
모든 관련 메모리가 답변을 동일한 비중으로 유도해서는 안 됩니다.
메모리가 관련이 있다고 해서 반드시 답변을 허용해야 하는 것은 아닙니다.
어떤 메모리는 직접 답변해야 합니다. 어떤 것은 배경 정보만 제공해야 합니다. 어떤 것은 경고해야 합니다. 어떤 것은 검증을 요구해야 합니다. 어떤 것은 동작을 차단해야 합니다. 어떤 것은 역사적 기록으로만 남아야 합니다.
이 계층이 없다면, 훌륭한 권한 계층 구조 (Authority hierarchy)가 있더라도 여전히 과도하게 확신에 찬 실수를 저지를 수 있습니다.
액션 클래스 (Action classes)
제가 테스트 중인 액세스 정책은 여섯 가지 액션 클래스 (Action classes)를 사용합니다:
- Answer (답변): 메모리가 응답에 직접적인 영향을 미칠 수 있음.
- Answer as context (컨텍스트로서 답변): 메모리가 유용한 배경을 제공하지만 동작을 결정하지는 않음.
- Warn (경고): 진행을 차단하지 않으면서 불확실성이나 위험을 드러냄.
- Verify first (선 검증): 메모리가 관련은 있지만, 확인될 때까지 확정된 답변을 승인할 수 없음.
- Block (차단): 메모리가 제안된 동작을 능동적으로 방지함.
- Archive only (보관 전용): 메모리가 보존되지만 현재의 결정에 영향을 미쳐서는 안 됨.
중요한 변화는 바로 이것입니다:
관련성 (Relevance)이 곧 허가 (Permission)는 아니다.
정책을 안내하는 원칙 (Principles guiding the policy)
1. 관련성 (Relevance)이 권위 (Authority)를 의미하지는 않는다
오래된 계획 (Stale plan)은 프로젝트에 관한 질문에 매우 관련이 높을 수 있습니다.
하지만 그것이 다음 행동을 결정해야 한다는 의미는 아닙니다.
2. 부정적 증거 (Negative evidence)에는 더 강력한 게이트 (Gates)가 필요하다
수정 사항 (Corrections), 미해결 질문 (Unresolved questions), 검증 요구 사항 (Verification requirements), 그리고 모순 (Contradictions)은 긍정적인 주장 (Positive claims)보다 더 공격적으로 제약 조건을 설정해야 합니다.
"이 실수를 반복하지 마세요"라고 말하는 수정 사항을 일반적인 선호도 (Preference)와 혼합해서는 안 됩니다.
3. 확실성 (Certainty)은 증거의 강도 (Evidence strength)와 일치해야 한다
만약 메모리가 어떤 사항이 미해결 (Unresolved), 논쟁 중 (Contested), 오래됨 (Stale), 또는 검증 필요 (Verification-required)라고 말한다면, 답변은 그러한 경계 (Boundary)를 포함해야 합니다.
에이전트 (Agent)는 그 경계를 깔끔한 결론으로 뭉뚱그려 평탄화 (Flatten)해서는 안 됩니다.
4. 상태 (Status)와 우선순위 (Priority)는 별개이다
"준비됨 (Ready)"이 곧 "다음 (Next)"을 의미하지는 않습니다.
기사는 교정 (Copyedits)을 마쳐 준비가 되었더라도, 여전히 현재의 집필 우선순위가 아닐 수 있습니다. 이 필드들을 하나로 합치는 것은 예측 가능한 우선순위 오류를 초래합니다.
기본 액세스 정책 (Default access policy) v0.1
검색된 각 메모리에 대해, 메모리를 분류하고 행동 (Action)을 할당합니다:
if verification_required = true:
allowed_action = verify_first
...
이는 보수적으로 시작하며 조정 가능 (Tunable)합니다.
이 정책은 메모리의 목소리를 키우려는 것이 아닙니다. 잘못된 종류의 메모리가 답변을 잘못된 방향으로 이끄는 것을 방지하려는 것입니다.
구현 스케치 (Implementation sketch)
기본적인 강제 실행 프롬프트 (Enforcement prompt):
메모리 사용 시:
- 검색된 각 기록을 소스 유형 (Source type), 인식론적 상태 (Epistemic status), 상태 (Status), 그리고 우선순위 (Priority)에 따라 분류하십시오.
- 다음 중 하나의 허용된 행동 (allowed_action)을 할당하십시오: answer, answer_context, warn, verify_first, block, archive_only.
...
파일 기반 시스템의 경우, 이는 index.md, 시작 지침 (Startup instructions), 또는 프로젝트 메모리 규칙 (Project memory rules)에 포함될 수 있습니다.
구조화된 시스템 (Structured systems)의 경우, allowed_action은 검색 시점 (Retrieval time)에 계산되어야 합니다. 어제는 답변할 수 있었던 메모리가 오늘은 검증을 필요로 할 수 있기 때문에, 이를 영구적으로 저장해서는 안 됩니다.
초기 보정 결과 (Early calibration result)
이것은 벤치마크 (Benchmark)가 아닙니다. 이는 모델 생성 (Model generation)이 아닌 결정론적 정책 테스트 (Deterministic policy test)였습니다.
테스트한 항목은 다음과 같습니다:
- 12개의 내부 설계 시나리오 (internally designed scenarios),
- 35개의 메모리 객체 (memory objects),
- 다중 임계값 설정 (multiple threshold settings),
- 검색 노이즈 없음 (no retrieval noise),
- 루프 내 언어 모델 없음 (no language model in the loop).
정책 로직(policy logic)의 결과는 다음과 같습니다:
strict: 29/35 정답, 0개의 거짓 확신 (false-certainty) 오류, 6개의 과잉 차단 (overblocks)
balanced: 34/35 정답, 0개의 거짓 확신 (false-certainty) 오류, 1개의 과잉 차단 (overblock)
balanced_risk_adjusted: 35/35 정답, 0개의 거짓 확신 (false-certainty) 오류, 이 세트에서 0개의 과잉 차단 (overblocks)
유용한 발견은 "이 문제가 해결되었다"가 아닙니다. 유용한 발견은 트레이드오프 표면 (tradeoff surface)입니다:
더 엄격한 게이트 (stricter gates)는 거짓 확신 (false certainty)을 줄이지만, 위험도가 낮은 기확정 항목 (low-risk settled items)을 과잉 차단 (overblock)할 수 있다.
단 한 건의 발생한 균형 잡힌 과잉 차단 (balanced overblock)은 정답 임계값 (answer threshold)보다 약간 낮은 점수를 받은, 위험도가 낮은 기확정 메모리 (low-risk, settled memory)에서 발생했습니다. 위험 조정 임계값 (risk-adjusted threshold)은 이 시나리오 세트에서 해당 사례를 해결했습니다.
명확한 한계점: 내부 시나리오, 결정론적 로직 (deterministic logic)만 사용, 작은 표본. 이는 정책을 미세 조정 (tuned)할 수 있음을 보여줍니다. 이것이 실제 모델과 노이즈가 있는 검색 (noisy retrieval) 환경에서의 일반화 (generalization)나 실세계의 견고함 (robustness)을 증명하는 것은 아닙니다.
더 어려운 다음 테스트는 다음과 같습니다:
검색된 메모리 (retrieved memories)
-> 액세스 정책 (access policy)이 허용된 동작을 할당
-> 모델이 답변을 작성
...
이 단계부터 상황이 더욱 심각해집니다.
트레이드오프 (Tradeoffs)
이 계층은 비용을 추가합니다: 더 많은 메타데이터 (metadata), 더 주의 깊은 프롬프팅 (prompting), 충돌 평가 (conflict evaluation)를 위한 더 높은 토큰 사용량, 그리고 과도한 주의 (over-caution)로 인한 위험 증가.
다음과 같은 경우에는 더 단순한 시스템이 더 나을 수 있습니다:
- 단기 프로젝트,
- 창의적 탐색,
- 낮은 이해관계의 초안 작성 (low-stakes drafting),
- 실시간 디버깅 (live debugging),
- 엄격하게 감독되는 페어 프로그래밍 (tightly supervised pair programming).
액세스 정책 (access policy)은 작업이 장기적으로 진행되거나, 다중 세션(multi-session)이거나, 수정 비용이 많이 들거나, 오래된 컨텍스트 (stale context)에 취약할 때 그 비용만큼의 가치를 합니다.
알려진 실패 모드 (Known failure modes)
과잉 차단 (Overblocking): 정당한 저위험 동작이 경고로 격하됨.
완화 방법: 기확정된 저위험 항목에 대한 위험 조정 임계값 (risk-adjusted thresholds) 적용.
제약 부족 (Under-constraining): 수정 사항이나 미해결 항목이 너무 가볍게 취급됨.
완화 방법: 부정적이거나 검증이 필요한 기록 (verification-required records)에 대해 더 강력한 게이트 (stronger gates) 적용.
정책 드리프트 (Policy drift): 규칙이 유지되거나 감사 (audit)하기에 너무 복잡해지는 현상.
완화 방법 (Mitigation): 정책에 버전을 부여하고, 해당 정책이 규율하는 것과 동일한 수정 프로세스를 통해 정책을 수정하십시오.
실무적 점검 (Practical check)
중요하게 검색된 모든 메모리에 대해 다음을 질문하십시오:
1. 이 메모리는 어떤 주장을 뒷받침하는가?
2. 소스 유형 (source type)과 인식론적 상태 (epistemic status)는 무엇인가?
3. 검증이 필요한가 (verification required), 미해결 상태인가 (unresolved), 아니면 논쟁 중인가 (contested)?
...
이 점검 방식은 일상적으로 사용하기에 충분히 가벼우면서도, 확신에 찬 수많은 실수들을 잡아낼 수 있을 만큼 강력합니다.
결론 (Bottom line)
효과적인 장기 메모리 (long-term memory)는 단순히 관련 컨텍스트 (context)를 검색하는 것에 그치지 않습니다.
그 컨텍스트가 무엇을 할 수 있도록 허용할 것인지를 규율 (governing)하는 것에 관한 것입니다.
오래된 메모리는 현재의 의사결정에 영향을 주지 않으면서도 보존될 수 있습니다. 미해결된 메모리는 정답인 척하지 않으면서도 경고를 줄 수 있습니다. 수정 (correction)은 반복되는 실수를 차단할 수 있습니다. 아카이브 (archive)는 현재의 진실이 되지 않으면서도 역사를 답할 수 있습니다.
이것은 초기 연구 단계입니다. 정책에는 여전히 외부 시나리오, 모델 인 더 루프 (model-in-the-loop) 테스트, 그리고 실제 사용 데이터가 필요합니다.
하지만 방향성은 올바른 것으로 느껴집니다. 메모리 시스템은 단순히 회상(recall)하는 것에 그쳐서는 안 됩니다. 또한 제약(constrain)해야 합니다.
이 글은 판단 인프라로서의 AI 메모리에 관한 짧은 시리즈의 일부입니다: zero-budget foundation, correction memory, preserving unresolved questions, three failures that tested the system, 그리고 authority policy.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기