본문으로 건너뛰기

riktar/memledger: 로컬에서 동작하는 에이전트 메모리 저장소

MemLedger는 SQLite 기반의 로컬 앱엔트리 로그와 결정적 캐시, 규칙 기반 트리아지를 결합해 에이전트 기억을 추적 가능하고 모델 교체에 내구성 있게 설계한 오픈소스 프로젝트이다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

MemLedger는 대화 로그를 외부로 전송하지 않고 로컬 SQLite 단일 파일에 append-only 이벤트 로그로 기록하며 각 메모리에 출처 연쇄를 연결해 신념의 기원을 추적할 수 있게 설계된 오픈소스 에이전트 메모리 시스템이다. 시스템은 불용어 비율·엔티티 프록시·규칙형 큐어 기반의 어휘 트리아지로 저신호 턴을 걸러내고 구조화된 JSON 추출을 온도 0으로 실행하며 모든 LLM 호출을 모델·프롬프트·입력 해시로 결정적 캐시하여 재생 비용을 제거한다. 원시 턴을 canonical 기록으로 보관하므로 모델을 교체한 뒤 전체 메모리를 재추출(regenerate)할 수 있으며 신규 사실은 세션 간 확인 또는 사용자 승인이 있을 때까지 격리되어 포이즈닝 위험을 낮춘다. 구현상 제약으로 현재는 단일 라이터만 지원하고 큐어 규칙이 영어 중심이며 LLM 추출의 결정성은 모델·프롬프트·입력 조합에 의존한다.

실용적 조언

  • 로컬에서 사실 추출을 실행할 때는 추출 작업을 온전히 구조화된 JSON 태스크로 설정하고 샘플링 온도를 0으로 고정하여 일관된 출력을 얻는 것이 바람직하다.
  • 비용 절감을 위해 모든 턴에 대해 간단한 어휘 기반 스코어(stopword 비율, 엔티티 프록시, 규칙형 큐어)를 먼저 계산하고 정보밀도가 낮은 턴은 LLM 추출 파이프라인으로 넘기지 않는 전처리 파이프를 적용하라.
  • 메모리를 원시 턴을 canonical 기록으로 저장하도록 설계하면 추후 더 나은 모델로 교체하여 `regenerate` 같은 절차로 전체 메모리를 재추출할 수 있으며 임베딩은 필요 시 재생성 가능한 인덱스로 처리하라.
  • 디버깅과 비용 없는 재생을 위해 모델 식별자·프롬프트 버전·입력의 해시를 키로 사용하는 결정적 캐시를 구현하여 동일 입력에 대한 중복 인퍼런스를 방지하라.
  • 신규 사실은 세션 간 확인이 있을 때까지 격리하고 사용자의 명시적 승인 없이는 영구 고정하지 않도록 운영 정책을 세워 메모리 포이즈닝 위험을 줄여라.

섹션별 상세

01
작성자는 대화 로그를 외부 클라우드로 보내지 않고도 장기 메모리를 유지하려는 목표로 MemLedger를 제시했다. 이 시스템은 단일 SQLite 파일에 append-only 이벤트 로그를 저장하고 각 메모리에 출처 연쇄(provenance chain)를 붙여서 원문 발화와 추출 모델·프롬프트·확신도를 연결한다. 예시 명령어 출력과 함께 특정 신념이 어떤 세션의 어떤 문장에서 유래했는지를 추적할 수 있도록 설계되어 있으며, 문제가 되는 문장을 원문 단위로 찾아 `delete --cascade`로 연관된 파생 정보를 제거할 수 있다.
02
토큰 비용 절감을 위해 작성자는 규칙 기반의 어휘 트리아지(lexical triage)를 도입했으며 이 과정은 불용어 비율, 엔티티 프록시, 규칙형 큐어(regex)로 각 턴의 정보밀도를 계산해 LLM 추출 대상 여부를 판정한다. 이 설계는 단순 인사·감사 표현과 같은 저신호 턴을 LLM 호출에서 차단하므로 CPU 친화적 운영이 가능하다고 주장했다. 글에는 DMF 논문에서 적응한 방법이라는 언급과 함께 실제로 Qwen3 4B를 Ollama로 돌려 추출 작업을 수행해도 충분하다는 실무적 관찰이 포함되어 있다.
03
메모리의 모델 불변성 확보를 위해 원문 턴(raw turns)을 공식 기록으로 삼고 임베딩은 재생성 가능한 가변 인덱스로 취급한다. 사용자는 더 나은 모델로 교체한 뒤 `regenerate`를 실행하면 원시 히스토리로부터 전체 메모리를 재추출하여 품질 향상을 얻을 수 있으며 임베딩 모델을 바꿔도 데이터 손실이 발생하지 않는다. 또한 모든 LLM 호출은 '모델+프롬프트 버전+입력'의 해시로 결정적으로 캐시되므로 재생 시 인퍼런스 비용이 발생하지 않는다.
04
메모리 오염(포이즈닝)을 완화하기 위한 운영 규칙으로 새로운 사실은 세션 간 교차 확인이 이루어질 때까지 격리(quarantine)되며 기본적으로 사용자 승인 없이 영구적으로 고정되지 않는다. 이 과정은 다수 세션에서 반복 관측되거나 사용자의 승인을 받아야만 프로메모리로 승격되는 흐름을 만든다. 구현상 제한으로 현재 DB는 단일 라이터 모델을 전제로 하며 큐어 규칙은 영어 중심으로 작성되어 있어 다국어 환경에서는 밀도 기반 신호로 대체된다는 점이 명시되어 있다.

용어 해설

출처 연쇄(Provenance Chain)
에이전트 메모리 항목이 생성된 원천과 연산 기록을 순차적으로 기록한 구조로, 원문 발화·추출 모델·추출 프롬프트·확신도 등의 이벤트를 연결하여 특정 신념의 기원을 역추적할 수 있게 한다. 이 구조는 잘못된 사실의 원문 위치를 정확히 찾아 삭제·수정할 수 있게 하며 재현성과 감사 가능성을 보장한다.
추가 전용 이벤트 로그(Append-only Event Log)
메모리 변경을 덮어쓰기 대신 순차적 이벤트로 기록하는 저장 방식으로, 각 변경은 새로운 이벤트로 추가되어 이전 상태를 보존한다. 이 방식은 상태 재현, 변경 이력 추적, 그리고 원천 데이터로부터의 재추출 재현성을 가능하게 한다.
어휘 기반 트리아지(Lexical Triage)
간단한 텍스트 지표(불용어율, 엔티티 프록시, 규칙 기반 큐어 등)를 사용해 각 턴의 정보밀도를 평가하고, 저신호 턴을 LLM 추출 단계로 넘기지 않는 전처리 기법이다. 이 기법은 불필요한 추론 비용을 줄이고 로컬 CPU 환경에서 토큰 비용을 절감하도록 설계되었다.
결정적 캐시(Deterministic Cache)
모델 호출을 모델 식별자·프롬프트 버전·입력 해시로 결정적으로 식별하여 동일 입력에 대한 반복 추론을 방지하는 캐시 기법이다. 이로 인해 상태 재현 시 인퍼런스 비용이 발생하지 않으며 디버깅과 재생이 비용 없이 가능하다.

언급된 도구

Ollama추천

로컬에서 모델을 호스팅하고 추론을 수행하는 런타임

Qwen3 4B추천

구조화된 사실 추출에 사용한 경량 모델 예시

SQLite추천

단일 파일에 append-only 이벤트 로그를 저장하는 경량 스토리지

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 07. 08.수집 2026. 07. 08.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.