HKUDS/CatchMe

"CatchMe: Make Your AI Agents Truly Personal"

CatchMe – AI 에이전트를 위한 개인 메모리 엔진

기능 설명

  • 컴퓨터에서 백그라운드로 실행되며 마우스 클릭, 키 입력, 창 포커스 변경, 클립보드 내용, 스크린샷, 알림, 파일 수정 등 사용자가 하는 모든 것을 기록합니다.
  • 원시 이벤트는 자동으로 계층적 활동 트리(일 → 세션 → 앱 → 위치 → 동작)로 구성됩니다.
  • 각 수준에 작은 LLM 기반 요약이 추가되어 트리를 검색 가능한 지식 베이스로 변환합니다.
  • 질문(CLI, 웹 대시보드 또는 AI 에이전트 스킬을 통해)을 하면 LLM이 트리를 위에서 아래로 탐색하고, 가장 관련성 높은 분기를 선택하고, 기본 원시 데이터를 검사하고, 간결한 답변을 반환합니다.
  • 모든 데이터는 로컬(SQLite + FTS5)에 유지되며, 클라우드 API(OpenAI, Anthropic, Gemini 등)부터 Ollama, vLLM 또는 LM Studio가 제공하는 오프라인 모델까지 원하는 모든 LLM으로 처리할 수 있습니다.

중요성

  • AI 어시스턴트(Claude, Cursor, OpenClaw, NanoBot 등)에게 벡터 데이터베이스나 외부 서비스 없이 디지털 생활의 개인 메모리를 제공합니다.
  • 개인정보 보호 유지: 요약에 클라우드 LLM을 의도적으로 사용하지 않는 한 아무것도 업로드되지 않습니다.
  • macOS, Windows, Linux(X11만)에서 작동하며 런타임 공간이 매우 작습니다(약 0.2GB RAM).

주요 기능(README 설명 기준)

기능 제공 내용
상시 이벤트 캡처 6개의 저수준 레코더가 마우스, 키보드, 창 포커스, 클립보드, 알림, 파일 변경을 즉시 캡처합니다(타이머 없음).
지능형 메모리 계층 이벤트가 자동으로 5계층 트리로 구성되며, 각 노드에는 빠르고 의미론적 탐색을 위한 LLM 생성 요약이 제공됩니다.
트리 기반 검색(벡터 없음) 벡터를 임베딩하는 대신 LLM이 활동 트리를 직접 탐색하여 분기를 선택하고 원시 증거로 드릴다운합니다.
제로 구성 에이전트 통합 단일 스킬 파일을 CLI 기반 AI 에이전트에 넣으면 에이전트가 간단한 CLI 명령으로 메모리를 쿼리할 수 있습니다.
초경량 및 개인정보 보호 우선 모든 것을 로컬 SQLite + FTS5에 저장하며, 로컬 LLM으로 완전히 오프라인에서 실행할 수 있습니다.
풍부한 웹 인터페이스 타임라인, 트리 탐색, 채팅 창을 갖춘 대화형 대시보드로 자신의 디지털 발자국과 대화할 수 있습니다.
비용 제어 설정 LLM 호출 수, 클러스터당 이미지 수, 요약 빈도에 대한 구성 가능한 제한으로 토큰 사용량을 낮게 유지합니다.

작동 방식(고수준 파이프라인)

  1. 캡처 – 6개의 백그라운드 데몬이 OS 이벤트(마우스, 키보드, 창 포커스, 스크린샷, 클립보드, 알림)를 수신합니다.
  2. 인덱스 – 이벤트가 계층적 활동 트리로 스트리밍됩니다.
  3. 요약 – 구성 가능한 LLM이 각 노드(일, 세션, 앱, 위치, 동작)에 대한 짧은 요약을 만듭니다.
  4. 검색 – 질문을 하면 LLM이 최상위 요약을 읽고, 가장 유망한 분기를 선택하고, 구체적인 증거(예: 스크린샷 또는 키 입력 로그)를 찾을 때까지 재귀적으로 내려가 답변합니다.

시작하기(README의 빠른 시작 단계)

# 1. 클론 및 Python 3.11 환경 생성
git clone https://github.com/HKUDS/catchme.git && cd catchme
conda create -n catchme python=3.11 -y && conda activate catchme

# 2. 패키지 설치(편집 가능 모드)
pip install -e .

# 3. 플랫폼별 권한
#   macOS – 손쉬운 사용, 입력 모니터링, 화면 기록 허용
#   Windows – 터미널을 관리자로 실행
#   Linux – xdotool 및 xprop 설치 후 `pip install -e "[linux]"` 실행

# 4. LLM 구성 초기화(대화형)
catchme init   # 공급자, API 키, 모델 등 선택

# 5. 기록 시작
catchme awake   # 데몬이 백그라운드에서 실행

# 6. 쿼리 또는 탐색
catchme ask -- "What was I coding yesterday?"
catchme web    # http://127.0.0.1:8765에서 로컬 대시보드 열기

LLM 구성(설정해야 할 항목)

  • 공급자 – 지원되는 많은 서비스 중 하나(OpenAI, Anthropic, Gemini, Ollama 등).
  • 모델 – 요약 및 검색에 사용할 모델 이름.
  • 컨텍스트 창max_tokens_* 설정(최종 답변의 기본 최대 8192 토큰)을 수용할 수 있을 만큼 충분히 커야 합니다.
  • 개인정보 보호 참고 – 클라우드 공급자를 사용하면 원시 활동 데이터가 요약을 위해 전송됩니다. 그렇지 않으면 로컬 모델로 모든 것을 오프라인으로 유지합니다.
  • 비용 제한llm.max_calls, filter.mouse_cluster_gap 및 기타 설정으로 토큰 사용량을 제한할 수 있습니다.

에이전트 통합

CatchMe는 작은 스킬 파일을 통해 모든 CLI 기반 AI 에이전트에 노출될 수 있습니다.

  • 라이트 스킬 – 사용자가 직접 catchme awake를 실행합니다. 에이전트는 catchme ask …를 호출하기만 하면 됩니다.
  • 풀 스킬 – 에이전트가 CatchMe를 시작/중지하고 MCP stdio 서버를 사용하여 더 풍부한 상호 작용을 할 수 있습니다.

에이전트 지원 도구:

  • search_activity(query, date?)
  • list_days()
  • get_session(session_id)
  • get_tree(date)

커뮤니티 및 리소스


결론

CatchMe는 일상적인 컴퓨터 활동을 구조화된 LLM 쿼리 가능한 지식 베이스로 바꾸는 가볍고 개인정보 보호 우선의 "개인 메모리 저장소"입니다. 벡터 데이터베이스나 클라우드 저장소의 오버헤드 없이 모든 AI 어시스턴트에게 당신의 디지털 역사에 대한 진정한 감각을 제공할 수 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트