결론부터 말하면, memory-bank는 대화를 검색해 주는 도구가 아닙니다. 한 번 쓰고 사라질 대화를, 나중에 다시 꺼내 쓸 수 있는 지식으로 바꿔 저장하는 시스템입니다. 이 글은 그 변환 과정을 한 화면에 정리합니다. AI와 나눈 대화 기록을 모으고, 거기서 사실을 뽑아 깔끔하게 다듬고, 사실끼리 관계를 이어 붙이고, 마지막으로 저장한 기억을 다시 꺼내 쓰는 창구까지 차례로 이어집니다. 각 단계를 왜 따로 떼어 놓았는지, 그 설계 의도를 함께 설명합니다.
첫 층은 재료를 모으는 곳입니다. AI와 나눈 대화 기록, AI가 실행한 도구 호출 내역, 그리고 어느 프로젝트 폴더에서 어떤 작업 갈래(코드 버전을 나누는 git 브랜치)로 작업했는지 같은 실행 정보를 그대로 거둬들입니다. 이것이 memory-bank의 원재료가 됩니다.
둘째 층은 모은 기록을 쓸모 있게 가공하는 곳입니다. 문장을 컴퓨터가 뜻으로 비교할 수 있게 숫자로 바꾸고, 빨리 찾도록 색인을 만듭니다. 대화에서 중요한 사실을 뽑아내고, 앞뒤가 서로 어긋나는 내용은 골라 정리합니다. 그 결과 흩어진 기록이 검색하고 다시 쓸 수 있는 형태가 됩니다.
셋째 층은 저장한 지식을 다시 꺼내 쓰는 곳입니다. 같은 지식을 여러 창구로 열어 둡니다. AI 도구가 곧바로 불러 쓰는 연결 규약(MCP), 명령어 창(CLI), 화면(UI), 그리고 근거를 대며 답해 주는 도우미(avatar)입니다. 어느 쪽으로 들어오든 같은 기억에 닿으므로, 다시 찾는 수고가 줄어듭니다.
~/.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 코드와 명령어 창(CLI), 화면(UI)이 검색·사실 관계도·도우미 같은 사용 창구를 제공합니다.
search 도구는 보관된 대화를 뜻으로·글자로·둘을 섞어 찾아 줍니다.read 도구는 원하는 줄 범위를 펼쳐, 원문과 앞뒤 맥락을 직접 보게 해 줍니다.search_facts 도구는 깔끔하게 다듬어 오래 보관 중인 사실만 골라 빠르게 조회합니다.search_ontology, trace_fact, explore_graph 도구는 사실들의 분류와 연결을 따라가며 기억을 구조로 훑게 해 줍니다.memory-bank의 핵심은 대화를 쌓아 두는 것이 아닙니다. 대화를 다시 꺼내 쓸 수 있는 지식으로 바꾸는 데 있습니다. 그래서 보관(archive), 다시 찾기(retrieval), 사실 뽑기(fact), 관계 잇기(ontology), 꺼내 쓰는 창구(recall surface)가 차례로 나뉘어 있습니다. 이렇게 나눈 이유는 하나입니다. 빠른 검색, 좋은 지식 품질, 근거를 밝히는 설명, 그리고 프로젝트별 지식 구분까지 한꺼번에 얻기 위한 선택입니다.