Claude, ChatGPT, Cursor를 아우르는 메모리 레이어를 구축하고 이를 3D 브레인으로 시각화했습니다
요약
Claude, ChatGPT, Cursor 등 다양한 AI 도구 간의 컨텍스트를 공유할 수 있는 통합 메모리 레이어 'Mind Silo'를 구축했습니다. Chrome 확장 프로그램으로 대화를 캡처하고, pgvector와 그래프 구조를 통해 의미론적 메모리를 저장 및 검색하며, Three.js를 활용한 3D 브레인 시각화를 제공합니다.
핵심 포인트
- 다양한 AI 도구 간의 단절된 컨텍스트를 연결하는 통합 메모리 레이어 구축
- MCP(Model Context Protocol)를 통해 Claude 및 Cursor와 메모리 그래프 연동
- pgvector와 그래프 구조를 활용한 의미론적 메모리 저장 및 검색
- Three.js를 이용한 3D 노드/엣지 기반의 직관적인 메모리 시각화
- 시간적 정확성(Temporal Correctness) 해결을 위한 유효 기간 기반 엣지 설계 고민
모든 AI 도구는 당신을 조금씩 기억합니다. 하지만 그들 사이에서 서로를 기억하는 도구는 없습니다. ChatGPT에서 쌓아온 컨텍스트는 Claude에게는 보이지 않으며, 나의 Cursor 세션은 그 둘에 대해 아무것도 모릅니다. 그리고 가장 최악의 상황은, 정말 유용한 긴 대화를 나눈 뒤에 그 대화가 다시는 찾을 수 없는 무한한 사이드바 속으로 가라앉는 것을 지켜보는 것입니다. 그래서 저는 지난 시간 동안 모든 도구가 읽고 쓸 수 있는 단 하나의 메모리 레이어인 Mind Silo를 구축하는 데 시간을 보냈습니다.
작동 방식
캡처 (Capture). Chrome MV3 확장 프로그램이 Claude, ChatGPT, Gemini, Cursor 및 Claude Code에서의 대화를 수동적으로 읽습니다. 복사-붙여넣기 단계도 필요 없고, 기억해야 할 "이것을 저장" 버튼도 없습니다.
추출 (Extraction). 가공되지 않은 대화 기록(Raw transcripts)은 메모리로서 쓸모가 없습니다. 너무 길고, 중복되며, 의미론적으로 노이즈가 많기 때문입니다. 백그라운드 워커 (Redis/Arq)가 각 대화를 독립적으로 존재할 수 있는 단일 사실, 결정, 선호도와 같은 원자적 메모리(atomic memories)로 정제합니다.
저장 (Storage). pgvector를 사용하는 Postgres를 사용합니다. 각 메모리는 임베딩 (embedding)을 가지며, 의미론적으로 관련된 메모리들은 평면적인 리스트로 존재하는 대신 그래프 (graph) 형태로 연결됩니다.
검색 (Retrieval). npm에 있는 MCP 서버인 mind-silo-mcp가 세 가지 도구를 노출하여, Claude Desktop, Claude Code, Cursor와 같은 모든 MCP 호환 클라이언트가 메모리 그래프를 직접 쿼리하고 새로운 메모리를 다시 쓸 수 있도록 합니다.
암호화 (Encryption). 유도된 키를 사용하는 사용자별 AES-256을 적용합니다. 이는 삭제가 암호학적 파쇄 (crypto-shred)임을 의미합니다. 즉, 키를 파괴하면 데이터는 단순히 테이블에서 삭제 플래그가 지정되는 것이 아니라 진정으로 복구 불가능해집니다.
예상치 못하게 중요해진 부분
저는 3D 브레인 시각화 (Three.js)를 즐거운 주말 프로젝트로 만들었습니다. 메모리는 3D 공간의 노드 (nodes)로 렌더링되고, 의미론적 연결은 엣지 (edges)로 그려지며, 프로젝트는 클러스터링(cluster)되고, 주제별로 고유한 색상이 부여됩니다.
결과적으로 이것은 사람들이 실제로 반응하는 요소가 되었습니다. 이 분야의 모든 경쟁사들은 메모리를 텍스트 목록이나 일련의 버킷 (buckets) 형태로 렌더링하지만, 400개의 메모리가 담긴 텍스트 목록은 누구도 두 번씩 들여다보지 않습니다. 하지만 자유롭게 날아다닐 수 있는 그래프는 다릅니다. 결국 이 시각화는 사람들이 이 제품이 무엇을 하는지 이해하는 방식이 되었습니다.
스택 (Stack)
FastAPI (Python 3.12, uv) · Next.js 14 · Three.js · Postgres + pgvector · Redis/Arq · Clerk · Stripe · pnpm monorepo · Render + Vercel
여전히 고민 중인 부분
어려운 문제는 저장 (storage)이 아니라, 시간적 정확성 (temporal correctness)입니다. 만약 제가 3월에 Claude에게 Postgres를 사용한다고 말하고, 6월에 SQLite로 옮겼다고 말한다면, 단순한 벡터 저장소 (vector store)는 이제 두 개의 모순된 메모리를 가지게 되며 그중 어느 것이든 기꺼이 검색해낼 것입니다. 해결책은 유효 기간 (validity windows)이 있는 타입화된 엣지 (typed edges)입니다. 즉, 서로를 대체할 수 있고 언제 더 이상 사실이 아니게 되었는지 알 수 있는 메모리입니다. 이것이 제가 다음에 구축할 기능입니다.
만약 여러분이 의미론적 메모리 저장소 (semantic memory store)에서 모순 해결 (contradiction resolution) 문제를 해결했다면, 어떻게 했는지 진심으로 듣고 싶습니다.
직접 테스트해보고 싶다면 https://mind-silo.com에서 확인해 보세요. 댓글로 무엇이든 질문해 주시면 답변해 드리겠습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기