Show HN: Lossless-memory – 요약하지 않는 개인 AI 장기 기억 시스템
개인 AI 어시스턴트를 위한 로컬 기반 장기 기억 시스템으로, 대화를 요약하거나 벡터 검색만으로 압축하지 않고 모든 원문 로그를 타임스탬프와 함께 그대로 보관합니다. 시간 표현을 이해하는 단일 검색 진입점과 '현재 주제'를 알려주는 소형 인덱스(LLL)를 통해 문맥 압축과 세션 경계를 넘어 정체성과 맥락을 유지합니다. JSONL 로그 + SQLite(FTS5, sqlite-vec) 기반의 1인용·단일 머신 구현체입니다.
lossless-memory — 개인 AI를 위한 무손실 장기 기억. 절대 요약하지 않고, 모든 대사를 보존하며, 모든 것에 타임스탬프를 남긴다.
대부분의 AI 장기 기억 시스템은 두 가지 중 하나를 한다. 대화를 간결한 노트로 요약하거나, 임베딩해서 '유사한' 청크를 검색한다. 둘 다 매일 같은 AI와 대화하는 사람에게 가장 중요한 것 — 실제로 무슨 말이 오갔는지, 언제였는지 — 을 잃어버린다.
이 프로젝트는 정반대의 입장을 취한다.
모든 대사를 보존하라. 원본 대화 로그는 전체가 저장된다. 절대 요약되지 않는다. 요약은 지도이고, 로그가 실제 영토다.
모든 것에 타임스탬프를. 모든 기록 — 발화, 행동, 문서 청크 — 은 타임스탬프를 가지며, 모든 인덱스는 이 시간 축 위에 구축된다. 우리는 이를 '시간 백본(Temporal Backbone)'이라 부른다.
시간으로 먼저, 단어로 나중에 검색하라. "어제 저녁, 예산에 관해서"는 유효한 쿼리다. 시간 표현이 범위를 좁히고, 단어가 그 안에서 순위를 매긴다. 결과는 요약되지 않은 채 타임스탬프와 함께 시간순으로 반환된다.
매 턴마다 '지금 어디에 있는지'를 주입하라. LLL라는 작은 인덱스가 현재 대화가 어떤 주제에 있는지 모델에게 알려줘서, 정체성과 맥락이 컨텍스트 윈도우 압축과 세션 경계를 넘어서도 살아남는다.
설계 계보는 2025년 12월으로 거슬러 올라간다. 이 시스템의 첫 조상(이전 AI를 위한 기억 상속 도구)이 그 달에 실행되었고, 전신 시스템이 같은 아이디어를 담아 2026년 1월부터 매일 사용되었다. 현재 구현체는 2026년 7월부터 단일 사용자의 AI 어시스턴트 기억으로 매일 실행 중이며, 원본 로그는 2026년 6월까지 거슬러 올라간다. 작고, 지루하고, 잘 작동한다. 과정의 실패들도 문서화되어 있다 — docs/lessons.md 참고.
이것이 무엇이고 무엇이 아닌가
그것이다:
- 로컬, 파일 기반 장기 기억 계층: JSONL 로그 + SQLite(정확 검색용 FTS5, 시맨틱 검색용 sqlite-vec)
- 시간 표현을 이해하고 순위 매기기 전에 검색 범위를 제한하는 단일 쿼리 진입점
- 매 턴 모델의 컨텍스트에 주입되도록 설계된 '현재 위치' 인덱스(LLL)
- 한 사람과 한 AI를 위한, 한 대의 머신에서 실행되는 설계. 서버 없음, 클라우드 없음
그것이 아니다:
- 벡터 데이터베이스 래퍼. 여기서 시맨틱 검색은 첫 수단이 아니라 최후의 수단이다
- 요약기. 파이프라인 어디에도 의도적으로 요약 단계가 없다
- 벤치마크 중심의 연구 시스템. 공개된 벤치마크는 없다. 여기 있는 것은 작동하는 구현체와 그 운영 기록이다
세 개의 기둥
- 무손실 원본 로그 모든 대화 턴은 고정된 7개 필드 기록으로 변환되어 일별 JSONL 파일에 추가된다:
- ts: ISO-8601 타임스탬프(UTC)
- actor: 발화자(설정 가능한 이름)
- role: user | assistant | system
- type: text | action | meta
- text: 내용 그대로(verbatim)
- model: 알려진 경우 모델 식별자
- session: 세션 식별자
원본 로그가 진실의 원천(source of truth)이다. 아래의 모든 인덱스는 삭제 후 로그에서 재구축할 수 있다. 살아남기 위해 다른 것은 필요 없다.
- 시간 백본(Temporal Backbone) 여기서 시간은 메타데이터가 아니라 주요 축이다. 정확 일치 인덱스(SQLite FTS5, 일본어와 영어를 위한 바이그램 토큰화)는 모든 행에 타임스탬프를 함께 저장한다. 쿼리 파서는 시간 표현을 이해한다 — yesterday, last week, 3 days ago 같은 상대 표현(현재 일본어만)과 2026-07-19 같은 절대 날짜(모든 언어) — 그리고 순위 매기기 전에 범위로 변환한다. 시간 표현이 있으면 결과는 해당 범위로 제한되고 시간순으로 반환된다. 시맨틱 검색은 정확 인덱스가 범위 내에서 너무 적은 결과를 반환할 때만 사용되며, 폴백은 출력 헤더에 정직하게 표시된다.
실질적 효과: AI가 "지난 화요일 밤에 우리가 무엇을 결정했지?"라는 질문에, 3주 전의 비슷한 내용을 재구성한 것이 아니라 실제 지난 화요일 밤의 대사들을 순서대로 답할 수 있다.
- LLL — '지금 우리는 어디에 있나' 인덱스 LLL은 주제 마커의 소형 인덱스다. 대화가 새 주제로 넘어간 시점을 기록하는, 짧고 타임스탬프가 붙은 라인들이다. 매 턴 주입된다.