
Claude의 기억을 '메모장·일기·책장'의 3층으로 나누기 — dejavu라는 OSS를 만들었습니다
요약
Claude의 컨텍스트 관리 문제를 해결하기 위해 기억을 메모장, 일기, 책장의 3단계로 분류하여 관리하는 OSS 'dejavu'를 소개합니다. Claude가 스스로 정보의 성격을 판단하여 프로젝트 전용 기록과 범용 지식을 구분해 저장함으로써 효율적인 지식 관리를 돕습니다.
핵심 포인트
- 기억의 성격에 따라 메모장, 일기, 책장으로 3층 구조화
- Claude가 스스로 정보의 범용성을 판단하여 자동 분류
- 컨텍스트 압박을 줄이고 지식의 휘발성 방지
- Chat, Code, Xcode 등 다양한 접속 경로에서 지식 활용 가능
Claude가 어제의 일을 기억하지 못하는 문제, 여러분은 이미 대책을 세워두셨겠지요.
CLAUDE.md에 전제 조건을 기록해 두거나, 작업 로그를 Markdown으로 출력하게 하거나, Obsidian의 vault를 Claude Code에서 읽게 하는 방식 등 말입니다. 특히 Claude Code × Obsidian 조합은 자주 보입니다.
저도 계속 그 노선을 따라왔습니다. 그러다 보니 작업하면서 겪는 문제점들이 보이기 시작했고, 이를 dejavu라는 도구로 정리했습니다. 같은 문제로 고민하고 계신 분들에게 하나의 선택지가 될 수 있다면 기쁘겠습니다.
MIT 라이선스의 OSS입니다. Mac + Homebrew에서 동작합니다.
매번 전체를 읽어오기 때문에, 내용이 늘어날수록 컨텍스트 (Context)를 압박하여 중요한 한 줄이 희석됩니다. 게다가 가볍게 검색할 수 있는 것도 아닙니다.
Obsidian의 저장 영역(vault)은 단순한 폴더이므로, 터미널의 Claude Code나 Xcode의 Claude Agents에서는 평범하게 읽을 수 있습니다. 하지만 채팅(Chat)에는 파일을 읽을 수단이 없습니다. Cowork를 통해서는 읽을 수 있지만, 사용할 때마다 폴더를 다시 연결해야 하는 번거로움이 있습니다.
"같은 지식을 가지고 있을 텐데, Claude의 접속 경로에 따라 기억해 내기도 하고 기억해 내지 못하기도 하는" 상태입니다.
"이 프로젝트의 태스크는 Phase 4까지 끝났다"라는 기억과 "ignoresSafeArea() 내부에서는 safeAreaInsets가 0이 된다"라는 기억은 성격이 완전히 다른 정보입니다. 전자는 프로젝트가 끝나면 쓸모가 없어집니다. 후자는 반년 뒤의 다른 프로젝트에서 비로소 힘을 발휘합니다. 같은 장소에 두면 둘 다 꺼내기 어려워집니다.
그래서 dejavu는 기억을 성격에 따라 나누어 배치합니다. 비유하자면 "메모장, 일기, 책장"입니다.
| 구분 | Claude 자신의 기억 | dejavu | Obsidian |
|---|---|---|---|
| 비유하자면 | 손안의 메모장 | 일기·일보 | 책장에 꽂힌 서류 |
| 무엇이 적히는가 | 지금 깨달은 것 | 그날 한 일·결정한 것 | 자주 찾아보는 지식·자기 자신의 정보 |
| 언제 읽히는가 | 매번 자동으로 | 해당 프로젝트 이야기를 할 때 | 프로젝트와 상관없이 관련이 있을 때 |
| 얼마나 남는가 | 늘어나면 밀려남 | 해당 프로젝트가 지속되는 동안 | 계속 남음 |
| 자신의 눈으로 읽을 수 있는가 | 읽기 어려움 | 읽을 수 없음 | 읽을 수 있음 |
| 사용할 수 있는 곳 | Claude Code만 | 모든 접속 경로 | 모든 접속 경로 |
*모든 접속 경로란 Chat, Cowork, Code, Xcode를 의미합니다. 후술하겠습니다.
이러한 기억들은 서로 충돌하는 것이 아니라, 겹쳐서 사용합니다. 일기를 쓰기 위해 메모장을 버릴 필요는 없습니다.
분류 기준은 단 하나입니다.
"다른 프로젝트에서도 똑같이 말할 수 있는가?"
그렇다면 Obsidian(책장). 이 프로젝트에서만 통하는 이야기라면 dejavu(일기).
그리고 중요한 것은, 이 분류를 판단하는 것은 Claude다라는 점입니다. 이용자는 평소처럼 대화하기만 하면 Claude가 스스로 판단하여, 우선 메모장에 적고 필요에 따라 dejavu에 요청하여 일기나 책장에도 기록합니다. 망설여질 때만 다음과 같이 물어옵니다.
Claude: 지금 알게 된 사실입니다만, 이것은 이 프로젝트만의 이야기가 아니라
일반적으로 적용되는 내용이라고 생각합니다.
공통 지식으로서 Obsidian에 저장해 둘까요?
...
3번을 선택하면, 이후에는 묵묵히 노트가 쌓여갑니다.
3층으로 나누는 것 자체가 자동화되어 있다는 것이 dejavu의 핵심입니다. 어디에 둘지 판단하는 것도, 파일 쓰기도 Claude와 dejavu가 맡습니다. "나중에 지식 베이스를 정리해야지"라고 생각만 하고 결국 하지 않는 상황이 발생하지 않습니다.
모든 접속 경로란
- Claude 데스크톱의 Chat, Cowork, Code
- 터미널의 Claude Code
- Xcode의 Claude Agents
이 모든 곳에서 액세스할 수 있다는 뜻입니다.
dejavu를 설치하는 것만으로 모든 접속 경로가 열리고 동일한 기억에 액세스하게 됩니다.
dejavu는 CLI (Command Line Interface)로도, MCP (Model Context Protocol) 서버로도 동작하므로 Claude의 모든 입구를 통해 동일한 저장소에 도달합니다. 그리고 dejavu에 vault (금고) 위치를 알려두면, Obsidian의 읽기/쓰기도 dejavu가 대행합니다.
| 터미널 | Xcode | 데스크톱 채팅 | Cowork |
|---|---|---|---|
| Obsidian만 사용할 경우 | ✅ | ✅ | ❌ 사용 불가 |
| dejavu를 통해 사용할 경우 | ✅ | ✅ | ✅ |
채팅에서 "내 프로필을 바탕으로 연사 소개를 200자로 작성해줘"라고 요청하면, vault의 UserInfo/를 읽어서 작성해 줍니다. Cowork에서 폴더를 다시 연결하는 작업도 필요 없게 됩니다.
또한, 예를 들어 멀티 디스플레이의 오른쪽에 Claude 데스크톱을, 왼쪽에 Xcode를 띄워둡니다. Claude 데스크톱 측에서 설계하면서, Xcode 측에서 설계 경과를 확인하며 구현을 진행하는 식의 작업이 가능합니다. 서로의 컨텍스트 (Context)를 오염시키지 않는 분업이기 때문에 능력이 저하되지 않습니다.
아침에 작업을 재개할 때
당신: 어제 하던 작업부터 이어서 하자
어제는 이미지 인식 모듈 분리를 Phase 4까지 마쳤고, Phase 5는 나중으로 미뤄두었네요. 변경된 파일은 AnalysisService.swift와 Service.swift입니다. 계속할까요?
반년 후, 완전히 다른 앱을 만들고 있을 때
당신: 여기 레이아웃이 아래로 밀리는 원인을 조사해줘
이전에 동일한 문제를 겪은 적이 있습니다.
ignoresSafeArea() 내부에서는 safeAreaInsets가 0이 된다는 메모가 Obsidian의 Knowledge/에 남아 있습니다. 동일한 조치로 해결될 것입니다. 수정할까요?
이것이 중요한 장면입니다. 반년 전의 내가 조사한 내용을, 반년 후의 내가 다른 리포지토리 (Repository)에서 받아볼 수 있습니다. 동일한 조사를 두 번 반복할 필요가 없습니다. 게다가 당시의 메모는 Obsidian 안에 인간이 읽을 수 있는 형태로 남아 있습니다.
dejavu에서 공을 들인 부분입니다. 언제 기록할지, 언제 다시 읽어올지는 대화의 흐름에 따라 Claude가 판단합니다. 사용자가 의식적으로 말한다 하더라도, 대략 이 5가지 정도일 것입니다.
| 이렇게 말하면 | Claude는 이렇게 합니다 |
|---|---|
| "어제 하던 작업부터" | 이전 기록을 읽고, 이어서 재개합니다 |
| ... |
매번 읽어오는 지시문은 40줄 정도입니다. 본체는 검색을 통해 끌어오는 설계이므로, 지식이 수백 건 쌓여도 컨텍스트 (Context)를 압박하지 않습니다. 이것이 CLAUDE.md에 전부 적는 방식과의 가장 큰 차이점입니다.
dejavu에는 네트워크 통신 기능 자체가 들어있지 않습니다. 계정 등록도 필요 없고, 비용도 들지 않습니다. 저장되는 것은 .dejavu/ 하위의 SQLite와 vault 안의 Markdown뿐입니다.
Obsidian에 작성된 메모는 단순한 마크다운 (Markdown) 파일이므로, Obsidian을 열면 직접 눈으로 읽을 수 있고, 잘못 기억하고 있다면 수정할 수 있습니다. iCloud로 연결되어 있다면 iPhone의 Obsidian에서도 읽을 수 있습니다. "Claude가 무엇을 기억하고 있는지 알 수 없다"는 불안감이 사라지는 것은 생각보다 인간 친화적입니다.
최소 구성 (일기만 사용).
# 1. dejavu 본체
brew install alohayos/tap/dejavu
dejavu init --global
...
Obsidian (책장)도 연결하는 경우.
# 1. dejavu 본체
brew install alohayos/tap/dejavu
dejavu init --global
...
Obsidian 노트들 사이에 자동으로 상호 링크를 거는 기능도 있습니다.
이 기능은 로컬 LLM인 Ollama를 사용하므로 선택 사항이지만, 역시 몇 줄이면 도입할 수 있습니다.
# 1. dejavu 본체
brew install alohayos/tap/dejavu
dejavu init --global
...
의미가 가까운 노트를 찾아 프론트매터 (Frontmatter)에 링크를 작성하므로, Obsidian의 그래프 뷰 (Graph View)가 풍성해집니다.
이것은 실제로 제 vault의 그래프 뷰 (Graph View)입니다. 점은 노트, 선은 링크로 연결된 연관 관계를 나타냅니다. Claude가 작성한 기억이 그대로 자신의 외부 뇌 (External Brain)가 되어가는 감각이 있습니다. 물론 임베딩 (Embedding) 벡터 계산도 로컬 (Local)에서 이루어집니다.
Ollama는 완전히 선택 사항입니다. 전체 텍스트 검색 (Full-text search)도, 노트 생성도, MCP를 통한 모든 입구 액세스도 Ollama 없이 작동합니다. dejavu 본체는 의존성 제로 (Zero dependency)를 유지하고 있습니다.
우려하실 만한 점들을 적어둡니다.
기존 메모는 단 하나도 변경되지 않습니다. dejavu가 만든 노트에는 상단에 source: dejavu라는 표시가 붙습니다. 이 표시가 없는 노트는 dejavu에게 영구적으로 읽기 전용 (Read-only)입니다 -
폴더 구성은 현재 방식을 그대로 유지해도 괜찮습니다. dejavu는 이미 존재하는 폴더에 넣기만 할 뿐, 멋대로 새로운 폴더를 만들지 않습니다 -
공개 범위를 선택할 수 있습니다. 기본적으로 읽는 범위는 Vault의 Knowledge/, UserInfo/, Research/ 3개 폴더뿐입니다. 개인적인 일기가 업무 중에 나타나는 일은 없습니다.
그만두고 싶다면 .dejavu/를 삭제하고, CLAUDE.md에 추가된 아래의 두 줄을 지우기만 하면 됩니다. Obsidian의 메모는 단순한 텍스트이므로 그대로 수중에 남습니다.
Knowledge base
@.dejavu/dejavu-triggers.md
"Claude Code × Obsidian을 직접 스크립트를 써서 연결해서 쓰고 있다"라고 말씀하시는 분들이 많을 것이라 생각합니다. 저도 그랬습니다. dejavu는 입구의 차이를 의식하지 않고 사용할 수 있도록 함으로써 편리해졌습니다.
명령어 목록, 설정 항목, MCP 도구의 상세 내용은 GitHub의 README와 레퍼런스에 정리해 두었습니다. 시도해 보시고 맞지 않는다면 몇 초 만에 원래대로 되돌릴 수 있습니다. 꼭 사용해 보세요!
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기