37P by GN⁺ | ★ favorite | 댓글 11개
  • 클로드 코드의 세션 간 컨텍스트 유실 문제를 해결하기 위해 로컬 검색 엔진 QMD와 /recall 스킬을 결합한 메모리 시스템 구축
  • QMD는 Obsidian 볼트를 인덱싱하는 로컬 검색 엔진으로, BM25·시맨틱·하이브리드 세 가지 검색 모드 지원
  • /recall 스킬은 시간순·주제별·그래프 시각화 세 가지 모드로 과거 세션의 풀 컨텍스트를 즉시 복원
  • 700개 세션의 JSONL 대화 기록을 자동 파싱·임베딩하여 QMD 인덱스에 반영하는 자동화 파이프라인 구현
  • 도구가 바뀌어도 컨텍스트만 유지하면 어떤 AI 에이전트에서든 활용 가능하다는 컨텍스트 중심 워크플로우 제시

문제: 세션마다 초기화되는 Claude Code

  • Claude Code의 모든 대화는 제로 상태에서 시작되며, 3주간 700개 세션을 진행하면서 과거 결정사항과 프로젝트 컨텍스트를 추적하기 어려운 상황 발생
  • 세션 중반에 컨텍스트 한도(60%)에 도달하면 compact 또는 hand off가 필요하고, 이 과정에서 결정사항의 절반이 유실
  • 다음 날 작업을 이어가려 할 때 무엇을 했는지 기억나지 않는 불편함이 반복됨
  • 기존 방식인 파일 grep 기반 검색은 확장성이 없음

QMD: 볼트 전용 로컬 검색 엔진

  • QMD는 Shopify CEO Tobias Lutke 가 만든 로컬 검색 엔진으로, Obsidian 볼트를 인덱싱하여 1초 이내에 검색 결과 반환
  • 볼트 폴더별로 QMD collection을 매핑(노트, 일일 기록, 세션, 트랜스크립트 등)하여 집중 검색 수행 가능
  • qmd collection list, qmd search "video workflow" -c notes -n 3 등 단일 명령으로 작동
  • Claude Code의 기본 검색은 Haiku 서브 에이전트가 모든 파일을 grep하는 브루트 포스 방식으로, 테스트 결과 3분 소요에 300개 파일 반환, 결과 품질도 낮음
  • QMD 검색은 즉각적이고 더 정확하며 토큰 소모가 적음 — 서브 에이전트 불필요

Grep vs BM25 vs 시맨틱 검색

  • BM25 (qmd search): 결정론적 풀텍스트 검색으로, grep처럼 키워드를 매칭하되 각 파일에 점수를 부여
    — 단어 출현 빈도와 전체 문서 대비 희소성 기반, AI나 임베딩 없이 수학적 연산만 사용
    • "sleep" 5회 언급된 짧은 노트가 10,000단어 파일에서 1회 언급된 것보다 높은 점수
  • 시맨틱 (qmd vsearch): 임베딩 기반으로 정확한 단어가 없어도 의미로 검색 가능
  • 하이브리드 (qmd query): BM25와 시맨틱을 결합
  • "sleep" 검색 벤치마크 비교:
    • grep: 200개 파일 반환, sleep() 프로그래밍 명령어까지 포함하는 노이즈 다수
    • BM25: 2초 내에 수면 품질 실험, 수면 중단 기록 등 관련 결과 반환
    • 단, qmd search "insomnia"는 볼트에 해당 단어가 없어 결과 0
    • 시맨틱: "couldn't sleep, bad night" 검색 시 수년 전 설정한 취침 습관 목표까지 발견 — 5개 결과 중 4개가 검색어를 포함하지 않음
    • 하이브리드: sleep quality improvement 89%, sleep interrupted at 3am 51%, health sleep optimization 42%로 최적 순위 제공
  • 권장 사용 패턴: 검색의 80%는 BM25로 처리(구조화된 노트에 적합), 트랜스크립트와 비정형 메모에는 시맨틱 검색 추가

시맨틱 검색의 실제 발견 사례

  • "find the days when I was happy and what was the reason" 같은 비정형 질의에 Claude가 자동으로 여러 검색을 조합:
    • qmd vsearch "happy, grateful, excited", "energy, great day, feeling good", "satisfaction, accomplishment" 등 복수 검색 실행
  • 수개월간의 일일 노트에서 의미적 연결을 발견 — "가장 행복한 날은 무언가를 출시하고 사우나나 9시간 수면으로 좋은 회복을 한 날"이라는 패턴 도출

/recall 스킬: 작업 시작 전 컨텍스트 로드

  • /recall은 QMD 위에서 작동하는 Claude Code 스킬로, 작업 시작 전에 컨텍스트를 자동 로드함
  • 세 가지 모드 지원:
    • temporal: 날짜 기반 세션 히스토리 스캔 (/recall yesterday, /recall last week)
    • topic: QMD 컬렉션 대상 BM25 검색 (/recall topic graph)
    • graph: 세션과 파일의 인터랙티브 시각화 (/recall graph last week)
  • /recall yesterday 테스트 결과: 하루 동안의 39개 세션을 타임라인으로 재구성 — 각 세션의 시간, 메시지 수, 작업 내용 표시
  • /recall topic "QMD video" 결과: 세션과 노트 전체에서 대시보드, 프로덕션 계획, 투두 리스트 등 관련 파일을 1분 이내에 반환 — 브루트 포스 grep 대비 시간·토큰·결과 품질 모두 우위
  • graph 모드는 세션을 컬러 블롭으로 시각화하여 오래된 세션은 흐리게, 최근 세션은 보라색으로 하이라이트 — 파일은 goals, research, voice, docs, content, skills 등 타입별 클러스터링
  • 예시: 점심 장소 탐색 세션을 일주일 후 그래프에서 발견하고, 해당 파일 경로를 Claude Code에 복사하여 이전 대화를 이어서 작업 가능

700개 세션의 자동 인덱싱

  • Claude Code는 모든 대화를 JSONL 파일로 로컬 저장 — 3주간 700개 세션 축적
  • 원본 파일에는 tool uses, 시스템 프롬프트, role 등이 포함되어 있어 이를 파싱하여 클린 마크다운(실제 사용자 메시지와 시그널) 으로 변환 후 QMD 인덱스에 임베딩
  • 터미널 종료 시 자동 hook이 실행되어 세션을 QMD에 export·embed — 별도 수동 작업 없이 항상 최신 인덱스 유지

실행하지 않은 아이디어 발견

  • "find the ideas that I have never acted on" 검색 시 Claude가 QMD 결과를 종합하여 발견한 내용:
    • 10월 19일 — PhD 작성 대시보드 구축 계획이 있었으나 실행하지 않음
    • 일러스트레이션 기반 앱 아이디어가 있었으나 후속 조치 없음
    • Obsidian 워크플로우 화면 녹화 아이디어가 있었으나 실행하지 않음
  • 수개월 전에 작성하고 완전히 잊은 내용들이 재발견됨
  • 모든 임베딩은 로컬에 저장

컨텍스트 중심 워크플로우

  • 노트가 Obsidian 안에 갇혀 있지 않고 실제 목표 달성에 활용되는 유용한 컨텍스트로 전환
  • 도구는 변하지만(새 모델, 새 에이전트) 컨텍스트만 유지하면 Claude Code, Codex, Gemini CLI 등 어디서든 작동 가능
  • 메모리 레이어는 스킬 형태로 전체 스택에서 작동
  • 실제 구성: Obsidian Sync로 Mac과 상시 가동 Mac Mini 간 볼트 동기화, Mac Mini에서 OpenClaw가 24/7 실행 — 폰에서 OpenClaw 접속 시 동일한 볼트·QMD 인덱스·스킬을 어디서나 사용 가능
  • 전체 스택 구조:
    • 하단: Obsidian Vault
    • 중간: QMD Search
    • 상단: Claude Code / OpenClaw
    • 컨텍스트가 아래에서 위로 흐르는 구조
GeekNews Weekly에 포함된 글입니다. 에디터 코멘트 보기

댓글과 토론

요즘 왜이리 죽는게 많아요

grep은 죽었다. ripgrep을 쓰자

qmd 써볼까 싶어서 AI에게 조사시켰더니 임베딩 쪽은 괜찮은데 BM25 와 쿼리확장 쪽은 한국어 지원이 안좋아서 비추천하네요...

거의 대부분 BM25에서도 그렇습니다.
따라서 형태소 분석기를 함께 쓰는게 좋아요.
https://github.com/bab2min/Kiwi

이거 팩트체크 해보니까 정확한 증거는 없는거 같은데. 혹시 다른 분들의 경험은 혹시 있으실까요?

BM25가 단어 위주의 검색이니 galadbran님의 의견은 make sense한 것 같습니다.

더 고전적으로 보면 그냥 고전적인 정보검색 기술들이 보다 국지적인 레벨에서 재활용되는 듯 하네요

~~는 죽었다 💀💀💀

그냥 rag잖아;

설치 페이지에서 이메일 주소를 요구하길래 Private Repo인가 봤더니 Public Repo이네요.
아래 링크로 들어가시면 됩니다.

https://github.com/ArtemXTech/personal-os-skills/…