CatchMe: 나의 모든 디지털 활동을 기억하고 AI 에이전트를 개인화하는 오픈소스 메모리 시스템 (feat. HKUDS)

CatchMe 소개

AI 에이전트가 점점 발전하고 있지만, 사용자가 어떤 코드를 작성했는지, 어떤 문서를 읽었는지, 어떤 작업을 진행 중인지 기억하지 못한다면 진정한 개인 비서라 할 수 없습니다. 현재 대부분의 AI 도구들은 대화 내에서만 문맥을 유지하며, 세션이 끊기면 모든 것을 잊어버립니다. 이런 문제를 해결하기 위해 홍콩과학기술대학교 데이터 과학 연구소(HKUDS, Hong Kong University of Science and Technology Data Science Lab)가 CatchMe를 공개했습니다.

CatchMe"당신의 모든 디지털 발자국을 포착한다"는 컨셉의 오픈소스 메모리 시스템입니다. 백그라운드에서 6개의 동시 레코더가 화면 활동, 키입력, 클립보드, 파일 변경, 알림 등을 이벤트 기반으로 기록하고, LLM이 이를 계층적 활동 트리(Hierarchical Activity Tree)로 자동 정리합니다. 그 결과를 기반으로 자연어 질문을 통해 "오늘 Claude Code에서 작업한 내용이 뭐야?", "어제 읽은 AI 논문이 뭐였지?" 같은 질문에 답할 수 있게 됩니다. 모든 데이터는 로컬에 저장되며, SQLite + FTS5로 2시간 활동 기준 약 200MB의 저장 공간만 사용합니다.

CatchMe는 OpenClaw, NanoBot, Claude Code, Cursor 등 다양한 CLI 에이전트와 통합이 가능하며, OpenAI, Anthropic, DeepSeek, Gemini, Ollama 등 20개 이상의 LLM 제공자를 지원합니다. Apache 2.0 라이선스로 공개되어 있어 상업적 활용도 자유롭습니다.

CatchMe의 3단계 파이프라인: 기록 → 정리 → 추론

CatchMe는 데이터 수집부터 질문 답변까지 3단계 파이프라인으로 동작합니다.

1단계. 캡처(Capture): 6개 백그라운드 레코더가 동시에 작동합니다. 창 포커스 레코더는 현재 어떤 앱을 사용 중인지 추적하고, 키보드 레코더는 입력한 내용을 기록합니다. 마우스 레코더는 클릭 이벤트를 크로스헤어 주석과 함께 캡처하며, 스크린샷 레코더가 화면 상태를 저장합니다. 추가로 클립보드와 시스템 알림도 추적합니다. 이벤트 기반으로 동작하기 때문에 RAM 사용량은 약 0.2GB에 불과합니다.

2단계. 인덱싱(Index): 수집된 원시 이벤트들은 자동으로 Day → Session → App → Location → Action의 5계층 활동 트리로 정리됩니다. LLM이 각 계층의 요약 설명을 자동 생성하여 검색 가능한 지식 트리를 만들어냅니다. 벡터 DB나 임베딩(Embedding)이 필요 없이 SQLite FTS5만으로 빠른 키워드 검색을 지원합니다.

3단계. 추론(Retrieve): LLM이 트리를 위에서 아래로 탐색하면서 관련 노드를 선택하고 스크린샷 등 원본 데이터를 검토하여 답변을 합성합니다. 이 트리 기반 검색 방식은 단순 벡터 유사도 검색보다 복잡한 크로스 데이(Cross-day) 추론이 가능하다는 장점이 있습니다.

┌─────────────────────────────────────────────────────────┐
│              CatchMe 아키텍처                              │
│                                                           │
│  [6개 백그라운드 레코더]                                    │
│  Window / Keyboard / Mouse / Screenshot / Clipboard / Notification │
│              │                                            │
│              ▼                                            │
│  [계층적 활동 트리 (SQLite + FTS5)]                         │
│  Day → Session → App → Location → Action                  │
│              │                                            │
│              ▼                                            │
│  [LLM 트리 탐색 + 스크린샷 검토]                            │
│              │                                            │
│              ▼                                            │
│  [자연어 답변]                                             │
└─────────────────────────────────────────────────────────┘

CatchMe의 주요 활용 사례

CatchMe는 다음 네 가지 핵심 사용 시나리오를 지원합니다: 코딩 어시스턴트로는 "오늘 Claude Code에서 작업한 내용이 뭐야?"라는 질문에 코드 세션 재생, 파일 호출 이력, 키스트로크 추적 등으로 답할 수 있습니다. 개인 딥 리서치로는 어제 읽은 AI 관련 내용, 웹/PDF 추적, 검색 쿼리 이력을 바탕으로 답변을 생성합니다. 파일 매니저로는 오늘 변경된 파일, 접근한 문서 등을 추적합니다. 디지털 라이프 개요로는 오후에 어떤 작업을 했는지, 앱 사용 패턴은 어떤지 파악할 수 있습니다.

CatchMe 프라이버시 설계

CatchMe는 프라이버시 우선(Privacy-first) 설계를 채택합니다. 모든 데이터는 ~/data/에 로컬로 저장되며, Ollama/vLLM/LM Studio를 통한 완전 오프라인 동작을 지원합니다. 클라우드 LLM API를 사용하는 경우에는 요약 정보만 처리되고 원본 스크린샷은 로컬에 보관됩니다. 다만 클라우드 API 사용 시에는 해당 제공자의 개인정보 처리 방침을 별도로 확인할 것을 권장합니다.

CatchMe 설치 및 사용법

CatchMe 설치를 위해서는 Python 3.11 이상이 필요합니다:

git clone https://github.com/HKUDS/CatchMe.git && cd catchme
conda create -n catchme python=3.11 -y && conda activate catchme
pip install -e .

macOS에서는 접근성(Accessibility), 입력 모니터링(Input Monitoring), 화면 녹화(Screen Recording) 권한을 허용해야 하며, Windows에서는 관리자 권한으로 실행해야 합니다.

설치 후, 초기 설정은 대화형 명령어로 진행합니다:

catchme init  # LLM 제공자, API 키, 모델 선택
catchme awake  # 기록 시작
catchme web    # 대시보드 실행 (http://127.0.0.1:8765)
catchme ask -- "오늘 어떤 파일을 수정했어?"  # 자연어 질문

Python API를 통한 프로그래밍 방식 사용도 지원합니다:

from catchme import CatchMe
from catchme.pipelines.retrieve import retrieve

# 빠른 키워드 검색
with CatchMe() as mem:
    for e in mem.search("meeting notes"):
        print(e.timestamp, e.data)

# LLM 기반 추론 검색
for step in retrieve("오늘 오전에 무엇을 작업했어?"):
    if step["type"] == "answer":
        print(step["content"])

AI 에이전트와의 통합은 스킬 파일 하나로 완성됩니다. Light 모드(사용자가 CatchMe를 직접 관리)와 Full 모드(에이전트가 CatchMe 라이프사이클을 관리)를 선택할 수 있으며, 원하는 스킬 파일을 에이전트 스킬 디렉토리에 복사하기만 하면 됩니다.

라이선스

이 프로젝트는 Apache 2.0 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:house: CatchMe 공식 홈페이지

:github: CatchMe 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

3개의 좋아요