문제는 이것이었습니다. AI와 나눈 대화는 세션(session, 한 번 열어서 닫을 때까지의 작업 단위)이 끝나면 사라집니다. 지난 세션에서 내린 결정과 그때 걸린 함정을 다음 세션의 AI는 전혀 모릅니다. 그래서 memory-bank를 만들었습니다. memory-bank는 대화를 검색해 주는 도구가 아닙니다. 한 번 쓰고 사라질 대화를, 나중에 다시 꺼내 쓸 수 있는 지식으로 바꿔 저장하는 시스템입니다. 이 글은 그 변환 과정을 한 화면에 정리합니다. 먼저 AI와 나눈 대화 기록을 모읍니다. 거기서 사실(fact, 결정·선호·제약처럼 다음에도 쓸 한 문장)을 뽑아 깔끔하게 다듬습니다. 사실끼리 관계를 이어 붙입니다. 마지막으로 저장한 기억을 다시 꺼내 쓰는 창구까지 차례로 이어집니다. 각 단계를 왜 따로 떼어 놓았는지, 그 설계 의도를 함께 설명합니다.
첫 층은 재료를 모으는 곳입니다. AI와 나눈 대화 기록, AI가 실행한 도구 호출(tool call, AI가 파일을 읽거나 명령을 실행한 기록) 내역, 그리고 어느 프로젝트 폴더에서 어떤 작업 갈래(코드 버전을 나누는 git 브랜치)로 작업했는지 같은 실행 정보를 그대로 거둬들입니다. 이것이 memory-bank의 원재료가 됩니다.
둘째 층은 모은 기록을 쓸모 있게 가공하는 곳입니다. 문장을 컴퓨터가 뜻으로 비교할 수 있게 숫자 묶음으로 바꿉니다. 이 작업을 임베딩(embedding)이라 부르고, 작은 언어 모델이 맡습니다. 바꾼 숫자는 가벼운 파일형 데이터베이스(SQLite)에 뜻 검색 기능을 더한 확장(sqlite-vec)에 넣어, 빨리 찾도록 색인을 만듭니다. 대화에서 중요한 사실을 뽑아냅니다(fact extraction, 사실 추출). 앞뒤가 서로 어긋나는 내용은 골라 정리합니다(consolidation, 통합 정리). 그 결과 흩어진 기록이 검색하고 다시 쓸 수 있는 형태가 됩니다.
셋째 층은 저장한 지식을 다시 꺼내 쓰는 곳입니다. 같은 지식을 여러 창구로 열어 둡니다. AI 도구가 곧바로 불러 쓰는 연결 규약(MCP, AI가 외부 도구를 표준 방식으로 부르는 약속), 터미널에 명령을 쳐서 쓰는 명령줄 인터페이스(command line interface), 눈으로 보는 화면(dashboard UI), 그리고 근거를 대며 답해 주는 도우미(avatar)입니다. 어느 쪽으로 들어오든 같은 기억에 닿으므로, 다시 찾는 수고가 줄어듭니다.
CLI
dashboard UI
~/.claude/projects 대화 원본을 그대로 보관하는 폴더~/.config/superpowers/conversation-index/db.sqlite@xenova/transformers + all-MiniLM-L6-v2src/sync.ts 코드가 대화 기록 파일을 보관소로 복사하고, 새로 늘어난 부분만 골라 다음 처리 대상으로 표시합니다.
src/indexer.ts 코드가 주고받은 대화 한 묶음씩을 가벼운 데이터베이스와 '뜻으로 찾는 표'에 쌓아, 나중에 다시 찾을 바탕을 만듭니다.
src/search.ts 코드가 뜻이 비슷한 것 찾기, 글자 그대로 찾기, 둘을 섞어 찾기 세 가지 방식으로 지난 대화를 다시 꺼내 줍니다.
src/fact-extractor.ts 코드가 작업이 끝날 때, 오래 남겨 둘 만한 사실을 대화에서 골라냅니다.
src/consolidator.ts 코드가 겹치는 사실, 서로 어긋나는 사실, 그동안 바뀌어 온 이력을 정리해 사실의 품질을 지킵니다.
src/ontology-classifier.ts 코드가 각 사실에 주제와 분류를 붙이고, '무엇을 뒷받침한다' 같은 정해진 종류의 관계로 서로 이어 줍니다.
src/mcp-server.ts 코드와 명령줄 인터페이스, 화면(UI)이 검색·사실 관계도·도우미 같은 사용 창구를 제공합니다.
search 도구는 보관된 대화를 뜻으로·글자로·둘을 섞어 찾아 줍니다.read 도구는 원하는 줄 범위를 펼쳐, 원문과 앞뒤 맥락을 직접 보게 해 줍니다.search_facts 도구는 깔끔하게 다듬어 오래 보관 중인 사실만 골라 빠르게 조회합니다.search_ontology, trace_fact, explore_graph 도구는 사실들의 분류와 연결을 따라가며 기억을 구조로 훑게 해 줍니다.memory-bank의 핵심은 대화를 쌓아 두는 것이 아닙니다. 대화를 다시 꺼내 쓸 수 있는 지식으로 바꾸는 데 있습니다. 그래서 보관(archive), 다시 찾기(retrieval), 사실 뽑기(fact), 관계 잇기(ontology, 사실을 분류하고 서로 잇는 체계), 꺼내 쓰는 창구(recall surface)가 차례로 나뉘어 있습니다. 이렇게 나눈 이유는 하나입니다. 빠른 검색, 좋은 지식 품질, 근거를 밝히는 설명, 그리고 프로젝트별 지식 구분까지 한꺼번에 얻기 위한 선택입니다.