Knowledge System Analysis

memory-bank 사라질 대화를 오래가는 기억으로

결론부터 말하면, memory-bank는 대화를 검색해 주는 도구가 아닙니다. 한 번 쓰고 사라질 대화를, 나중에 다시 꺼내 쓸 수 있는 지식으로 바꿔 저장하는 시스템입니다. 이 글은 그 변환 과정을 한 화면에 정리합니다. AI와 나눈 대화 기록을 모으고, 거기서 사실을 뽑아 깔끔하게 다듬고, 사실끼리 관계를 이어 붙이고, 마지막으로 저장한 기억을 다시 꺼내 쓰는 창구까지 차례로 이어집니다. 각 단계를 왜 따로 떼어 놓았는지, 그 설계 의도를 함께 설명합니다.

5
Core Layers
7
Flow Stages
2
Memory Models
1
Primary Goal
크게 세 층으로 나뉩니다
Input Layer

Archive-able Context

첫 층은 재료를 모으는 곳입니다. AI와 나눈 대화 기록, AI가 실행한 도구 호출 내역, 그리고 어느 프로젝트 폴더에서 어떤 작업 갈래(코드 버전을 나누는 git 브랜치)로 작업했는지 같은 실행 정보를 그대로 거둬들입니다. 이것이 memory-bank의 원재료가 됩니다.

conversation archive tool history session metadata
Transformation Layer

Searchable Knowledge

둘째 층은 모은 기록을 쓸모 있게 가공하는 곳입니다. 문장을 컴퓨터가 뜻으로 비교할 수 있게 숫자로 바꾸고, 빨리 찾도록 색인을 만듭니다. 대화에서 중요한 사실을 뽑아내고, 앞뒤가 서로 어긋나는 내용은 골라 정리합니다. 그 결과 흩어진 기록이 검색하고 다시 쓸 수 있는 형태가 됩니다.

sqlite-vec fact extraction consolidation
Recall Layer

Grounded Interfaces

셋째 층은 저장한 지식을 다시 꺼내 쓰는 곳입니다. 같은 지식을 여러 창구로 열어 둡니다. AI 도구가 곧바로 불러 쓰는 연결 규약(MCP), 명령어 창(CLI), 화면(UI), 그리고 근거를 대며 답해 주는 도우미(avatar)입니다. 어느 쪽으로 들어오든 같은 기억에 닿으므로, 다시 찾는 수고가 줄어듭니다.

MCP tools CLI dashboard UI
왜 이렇게 층을 나눴을까

설계 원칙

  • Archive First원본 대화를 그대로 남겨 둡니다. 요약이 틀리거나 사실을 잘못 뽑아내도, 원문으로 되돌아가 다시 해석할 수 있기 때문입니다.
  • Recall Split빨리 찾기 위한 색인과, 사실을 모아 두는 저장고를 따로 둡니다. 그래야 '즉시 찾기'와 '오래 관리하기'라는 서로 다른 요구를 한꺼번에 채울 수 있습니다.
  • Evolution Aware프로젝트에서 내린 결정은 언제든 바뀝니다. 그래서 사실이 어떻게 바뀌었는지 이력을 남기고, 앞의 내용과 어긋나는 부분을 계속 추적합니다.
  • Grounded Surface도우미(avatar)나 사실 관계도(graph)는 그럴듯하게 지어낸 요약보다, 출처를 밝히며 꺼내 주는 방식을 앞세웁니다.

무엇을 어디에 저장하나

  • Archive~/.claude/projects 대화 원본을 그대로 보관하는 폴더
  • DB~/.config/superpowers/conversation-index/db.sqlite
  • Retrievalexchange rows, tool calls, vector tables
  • Knowledgefacts, revisions, ontology domains, typed relations
  • Embedding@xenova/transformers + all-MiniLM-L6-v2
7-Step Data Flow

Sync

src/sync.ts 코드가 대화 기록 파일을 보관소로 복사하고, 새로 늘어난 부분만 골라 다음 처리 대상으로 표시합니다.

Index

src/indexer.ts 코드가 주고받은 대화 한 묶음씩을 가벼운 데이터베이스와 '뜻으로 찾는 표'에 쌓아, 나중에 다시 찾을 바탕을 만듭니다.

Search

src/search.ts 코드가 뜻이 비슷한 것 찾기, 글자 그대로 찾기, 둘을 섞어 찾기 세 가지 방식으로 지난 대화를 다시 꺼내 줍니다.

Extract

src/fact-extractor.ts 코드가 작업이 끝날 때, 오래 남겨 둘 만한 사실을 대화에서 골라냅니다.

Consolidate

src/consolidator.ts 코드가 겹치는 사실, 서로 어긋나는 사실, 그동안 바뀌어 온 이력을 정리해 사실의 품질을 지킵니다.

Relate

src/ontology-classifier.ts 코드가 각 사실에 주제와 분류를 붙이고, '무엇을 뒷받침한다' 같은 정해진 종류의 관계로 서로 이어 줍니다.

Recall

src/mcp-server.ts 코드와 명령어 창(CLI), 화면(UI)이 검색·사실 관계도·도우미 같은 사용 창구를 제공합니다.

Architecture Map

대화 기록이 지식 사용 창구가 되기까지

Conversation Input JSONL / tool calls / metadata ~/.claude/projects Sync + Archive copy / import / summarize session history retained Index + Retrieval DB SQLite / sqlite-vec / embeddings exchange + vector tables Search Surface search / read conversation recall Fact Extraction decision / preference / pattern knowledge / constraint Fact Consolidation duplicate / contradiction evolution / revisions Ontology + Graph domain / category / relation supports / influences / supersedes MCP Tools search / read / search_facts search_ontology / ask_avatar trace_fact / explore_graph CLI Surface memory-bank sync search / show / stats index / verify / rebuild UI Surface projects / search / prompts fact browsing / exchange detail dashboard Avatar Layer grounded answer confidence cited fact sources
archive / indexing / retrieval fact lifecycle ontology / graph / avatar
각 층은 무슨 일을 하나

MCP Tool Surface

  • search 도구는 보관된 대화를 뜻으로·글자로·둘을 섞어 찾아 줍니다.
  • read 도구는 원하는 줄 범위를 펼쳐, 원문과 앞뒤 맥락을 직접 보게 해 줍니다.
  • search_facts 도구는 깔끔하게 다듬어 오래 보관 중인 사실만 골라 빠르게 조회합니다.
  • search_ontology, trace_fact, explore_graph 도구는 사실들의 분류와 연결을 따라가며 기억을 구조로 훑게 해 줍니다.

설계에서 중요한 점

  • Retrieval First무엇을 하든 먼저 지난 대화를 다시 찾을 수 있어야 합니다. 그 위에서만 나머지 기능이 성립합니다.
  • Fact Promotion쓸모 있는 대화 내용을 '다시 꺼내 쓸 수 있는 한 문장'으로 끌어올려야 기억이 효율적으로 쌓입니다.
  • Scoped Memory이 프로젝트에만 해당하는 지식과, 모든 프로젝트에 통하는 규칙을 나눠 둡니다. 그래야 엉뚱한 지식이 섞여 나오는 일이 줄어듭니다.
  • Graph Utility사실끼리 관계를 이어 붙여야, 단순히 찾는 데서 나아가 이리저리 탐색하고 그 이유까지 설명할 수 있습니다.

각 층을 한마디로

  • Archive원본을 그대로 보관하고, 작업 한 건씩 되짚어 볼 수 있게 합니다.
  • Retrieval지난 대화를 다시 찾고, 근거를 확인하는 데 맞춰져 있습니다.
  • Fact결정·선호·반복되는 방식·지켜야 할 제약을 다시 쓸 수 있는 지식으로 눌러 담습니다.
  • Surface검색·읽기·설명·그림 보여주기를 실제로 손에 잡히는 사용 경험으로 전달합니다.

한 줄 결론

memory-bank의 핵심은 대화를 쌓아 두는 것이 아닙니다. 대화를 다시 꺼내 쓸 수 있는 지식으로 바꾸는 데 있습니다. 그래서 보관(archive), 다시 찾기(retrieval), 사실 뽑기(fact), 관계 잇기(ontology), 꺼내 쓰는 창구(recall surface)가 차례로 나뉘어 있습니다. 이렇게 나눈 이유는 하나입니다. 빠른 검색, 좋은 지식 품질, 근거를 밝히는 설명, 그리고 프로젝트별 지식 구분까지 한꺼번에 얻기 위한 선택입니다.

Connected Pages