CatchMe

HKUDSApache-2.0活跃维护

给 AI Agent 加上屏幕录制与记忆检索能力,让它能回看你的历史操作并真正记住个人上下文,从而做出更贴合你的回应。

"CatchMe: Make Your AI Agents Truly Personal"

暂无版本521star83fork同步于 2026-11-07 07:33 UTC

怎么上手

由 README 提炼,执行前请确认
catchme init
硬件要求按 README 说明

README 未说明 GPU 或显存要求;运行时内存约 0.2GB,支持 macOS、Windows、Linux,可用 Ollama/vLLM/LM Studio 本地模型实现离线运行。

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

本地记录你的屏幕与操作足迹,让 AI Agent 通过 CLI 查询你的个人数字记忆

给 AI Agent 加上屏幕录制与记忆检索能力,让它能回看你的历史操作并真正记住个人上下文,从而做出更贴合你的回应。

核心能力

  • 六路后台记录器捕获窗口、键盘、鼠标、截图、剪贴板与通知
  • 原始事件自动组织成 日→会话→应用→位置→动作 五层活动树
  • 用 LLM 逐层读摘要、选分支、下钻取证,跳过向量库检索
  • 单个 skill 文件即可接入 Claude、Cursor 等 CLI Agent
  • 数据全部存本地 SQLite+FTS5,支持 Ollama 等本地模型离线运行

容易踩的坑

需要 Python ≥3.11;必须配置一个支持文本+图像的 LLM(云端 API 或本地模型),否则无法做摘要与检索;云端 API 会把活动摘要发出去,隐私敏感场景应改用本地模型。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    🦞 Makes Your Agents Truly Personal. CatchMe ships as an agent-compatible skill for CLI agents (OpenClaw, NanoBot, Claude, Cursor, etc.). Run CatchMe independently. Your agents query memories via CLI commands only.

    🎯 Enrich Your Personal Digital Context

    ✨ Key Features

    📹 Always-On Event Capture

    • Event-Driven Recording: No timer or delays - catch mouse actions with crosshair annotation instantly.
    • Comprehensive Context: Five recorders track windows, keyboard, clipboard, notifications, and files around mouse actions.

    🌲 Intelligent Memory Hierarchy

    • Auto-Organization: Raw streams structure into five tiers: Day → Session → App → Location → Action.
    • Smart Summaries: LLM summaries at each level, transforming logs into searchable knowledge trees.

    🔍 Tree-Based Retrieval

    • No Vector Complexity: Skip embeddings and VDBs — our system uses tree-based reasoning for navigation.
    • Top-Down Search: LLM reads summaries, selects relevant branches, and drills down to evidence.

    🤖 Zero-Config Agent Integration

    • One-File Setup: Drop a single skill file into any AI agent for instant integration.
    • Immediate Access: CLI-based screen history queries with zero configuration required.

    🪶 Ultralight & Privacy-First

    • Minimal Footprint: ~0.2GB runtime RAM with efficient SQLite + FTS5 storage.
    • Local & Offline: All data stays on your machine with full offline mode via Ollama/vLLM/LM Studio.

    🖥️ Rich Web Interface

    • Visual Exploration: Interactive timelines, memory tree navigation, and real-time system monitoring.
    • Natural Conversation: Chat with your complete digital footprint using natural language.

    💡 CatchMe Architecture

    CatchMe transforms raw digital activity into structured, searchable memory through three concurrent stages:

    🔄 Record → Organize → Reason: Turn digital chaos into queryable memory

    Capture. Six background recorders silently track your activity. They monitor window focus, keystrokes, mouse movement, screenshots, clipboard, and notifications.

    Index. Raw events auto-organize into a Hierarchical Activity Tree: Day → Session → App → Location → Action. Each node gets LLM-generated summaries. Fast, meaningful recall without vector embeddings.

    Retrieve. You ask a question. The LLM traverses your memory tree top-down. It selects relevant nodes and inspects raw data like screenshots or keystrokes. Then synthesizes a precise answer.

    🌲 Hierarchical Activity Tree

    The Activity Tree is CatchMe's memory core. It provides structured, multi-level views of your digital life. Browse high-level summaries or dive into granular details.

    🔍 Intelligent Tree Retrieval

    CatchMe skips traditional vector search. Instead, the LLM directly navigates your Activity Tree. This enables complex, cross-day reasoning. Precise evidence gathering from raw activity history.

    📖 Learn More: Detailed design insights and technical deep-dive available in our blog.

    🧠 LLM Configuration

    ❗️ Data Privacy Notice

    • 100% Local Storage: All raw data (screenshots, keystrokes, activity trees) stays in ~/data/ and never leaves your machine.

    • Offline-First Options: Local LLMs (Ollama, vLLM, LM Studio) enable fully offline operation without any cloud dependency.

    • ⚠️Cloud Provider Caution: If used, cloud APIs will be used to summarize your daily activities. Untrusted endpoints may expose private data — review data policies of your provider carefully.

    📋 Requirements

    • Multimodal support: Your model should be able to handle text + images.

    • Context window: Make sure the context window of your model exceed max_tokens limits in config.json.

    • Cost control: For forced cost control, set limits via llm.max_calls or increase filter.mouse_cluster_gap to reduce summarization frequency.

    CatchMe requires an LLM for background summarization and intelligent retrieval. Use catchme init (in Get Started)for guided setup or follow the manual configuration steps below.

    For cloud API services:

    {
        "llm": {
            "provider": "openrouter",
            "api_key": "sk-or-...",
            "api_url": null,
            "model": "google/gemini-3-flash-preview"
        }
    }
    

    For local/offline operation:

    {
        "llm": {
            "provider": "ollama",
            "api_key": null,
            "api_url": null,
            "model": "gemma3:4b"
        }
    }
    
    ProviderConfig nameDefault API URLGet Key
    OpenRouter (gateway)openrouterhttps://openrouter.ai/api/v1openrouter.ai/keys
    AiHubMix (gateway)aihubmixhttps://aihubmix.com/v1aihubmix.com
    SiliconFlow (gateway)siliconflowhttps://api.siliconflow.cn/v1cloud.siliconflow.cn
    OpenAIopenaihttps://api.openai.com/v1platform.openai.com
    Anthropicanthropichttps://api.anthropic.com/v1console.anthropic.com
    DeepSeekdeepseekhttps://api.deepseek.com/v1platform.deepseek.com
    Geminigeminihttps://generativelanguage.googleapis.com/v1betaaistudio.google.com
    Groqgroqhttps://api.groq.com/openai/v1console.groq.com
    Mistralmistralhttps://api.mistral.ai/v1console.mistral.ai
    Moonshot / Kimimoonshothttps://api.moonshot.ai/v1platform.moonshot.cn
    MiniMaxminimaxhttps://api.minimax.io/v1platform.minimaxi.com
    Zhipu AI (GLM)zhipuhttps://open.bigmodel.cn/api/paas/v4open.bigmodel.cn
    DashScope (Qwen)dashscopehttps://dashscope.aliyuncs.com/compatible-mode/v1dashscope.console.aliyun.com
    VolcEnginevolcenginehttps://ark.cn-beijing.volces.com/api/v3console.volcengine.com
    VolcEngine Codingvolcengine_coding_planhttps://ark.cn-beijing.volces.com/api/coding/v3console.volcengine.com
    BytePlusbyteplushttps://ark.ap-southeast.bytepluses.com/api/v3console.byteplus.com
    BytePlus Codingbyteplus_coding_planhttps://ark.ap-southeast.bytepluses.com/api/coding/v3console.byteplus.com
    Ollama (local)ollamahttp://localhost:11434/v1—
    vLLM (local)vllmhttp://localhost:8000/v1—
    LM Studio (local)lmstudiohttp://localhost:1234/v1—

    Any OpenAI-compatible endpoint works — just set api_url and api_key directly.

    SectionParameterDefaultDescription
    webhost127.0.0.1Dashboard bind address
    port8765Dashboard port
    llmprovider—LLM provider name (see table above)
    api_key—API key for the provider
    api_url(auto)Custom endpoint; auto-set per provider if omitted
    model—Model name (provider-specific)
    wire_api(omit)Set to "responses" for providers that only expose POST /v1/responses instead of chat completions
    max_calls0Max LLM calls per cycle (0 = unlimited; set to limit costs)
    max_images_per_cluster5Max screenshots sent per event cluster
    filterwindow_min_dwell3.0Min window dwell time (sec) before recording
    keyboard_cluster_gap3.0Keyboard event clustering gap (sec)
    mouse_cluster_gap3.0Time gap (sec) to merge mouse events; larger values reduce LLM summaries
    summarizelanguageenSummary output language (en, zh, etc.)
    max_tokens_l0–l31200Max tokens per tree level (L0=Action … L3=Session)
    temperature0.4LLM temperature for summarization
    max_workers2Concurrent summarization workers
    debounce_sec3.0Debounce before triggering summary
    save_interval_sec5.0Tree auto-save interval
    retrievemax_prompt_chars42000Max chars in retrieval prompt
    max_iterations15Max tree traversal iterations
    max_file_chars8000Max chars from extracted files
    max_select_nodes7Max nodes selected per iteration
    max_tokens_step4096Max tokens per retrieval step
    max_tokens_answer8192Max tokens for final answer
    temperature_select0.3Temperature for node selection
    temperature_answer0.5Temperature for answer generation
    temperature_time_resolve0.1Temperature for time resolution
    max_tokens_time_resolve1000Max tokens for time resolution

    🚀 Get Started

    📦 Install

    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 — grant Accessibility, Input Monitoring, Screen Recording in System Settings → Privacy & Security Windows — run as Administrator for global input monitoring Linux — X11 only. Install xdotool and xprop for window tracking; add pip install -e ".[linux]" for mouse capture (builds evdev, which needs kernel headers). Keyboard capture is not implemented on Linux.

    ⚡ Init

    catchme init                  # interactive setup: provider, API key, llm model
    

    🔥 Run

    catchme awake                 # start recording
    catchme web                   # visualize and chat
    
    # or through cli
    catchme ask -- "What am I doing today?"
    
    CommandDescription
    catchme awakeStart the recording daemon
    catchme web [-p PORT]Launch web dashboard (default http://127.0.0.1:8765)
    catchme ask -- "question"Query your activity in natural language
    catchme mcpStart MCP stdio server (Claude Desktop, Cursor, …)
    catchme costShow LLM token usage (last 10 min / today / all time)
    catchme diskShow storage breakdown & event count
    catchme ramShow memory usage of running processes
    catchme initInteractive setup: LLM provider, API key & model

    🦞 CatchMe Makes Your Agents Truly Personal

    CatchMe ships as an agent-compatible skill for CLI agents (OpenClaw, NanoBot, Claude, Cursor, etc.).

    🪶 Agent Integration:

    Option A — Light Skill (you run CatchMe; agents query memories via CLI commands only):

    # 1. Start CatchMe yourself
    catchme awake
    
    # 2. Give the light skill to your agent
    cp CATCHME-light.md ~/.cursor/skills/catchme/SKILL.md
    

    Option B — Full Skill (agent manages the full CatchMe lifecycle autonomously):

    cp CATCHME-full.md ~/.cursor/skills/catchme/SKILL.md
    

    🔌 MCP Server

    Expose your activity tree to any MCP host — Claude Desktop, Cursor, Hermes, etc. — over stdio:

    pip install 'catchme[mcp]'   # MCP support ships as an optional extra
    catchme mcp                  # start the stdio server
    

    Register it with your host. For Claude Desktop, add to claude_desktop_config.json:

    {
      "mcpServers": {
        "catchme": {
          "command": "catchme",
          "args": ["mcp"]
        }
      }
    }
    

    Your agent then gets four tools:

    ToolDescription
    search_activity(query, date?)Natural-language Q&A over your screen history
    list_days()All recorded days with top-level summaries
    get_session(session_id)Full detail for one session node
    get_tree(date)Raw activity tree JSON for a given date

    Keep catchme awake running — the MCP server reads the activity tree it builds.

    🔧 Integrate into your current workflow

    from catchme import CatchMe
    from catchme.pipelines.retrieve import retrieve
    
    # 1. One-line search — fast keyword lookup over all recorded activity
    with CatchMe() as mem:
        for e in mem.search("meeting notes"):
            print(e.timestamp, e.data)
    
    # 2. LLM-powered retrieval — natural language Q&A over your screen history
    for step in retrieve("What was I working on this morning?"):
        if step["type"] == "answer":
            print(step["content"])
    

    📊 Cost & Efficiency

    Benchmarked with 2 hours of intensive, continuous computer use on MacBook Air M4.

    MetricValue
    Runtime RAM~0.2 GB
    Disk Usage~ 200 MB
    Token Throughputinput ~ 6 M , output ~ 0.7 M
    LLM cost — qwen-3.5-plus~ $0.42 via Aliyun DashScope
    LLM cost — gemini-3-flash-preview~ $5.00 via OpenRouter
    Full Retrieval Speed (depends on question)5 - 20s per query using gemini-3-flash-preview

    🚀 Roadmap

    CatchMe evolves with community input. Upcoming features include:

    Multi-Device Recording. Capture and unify GUI activities across all your machines via LAN synchronization.

    Dynamic Clustering. Adaptive clustering algorithms that better reflect your actual work patterns and flows, reducing unnecessary costs.

    Enhanced Data Utilization. Unlock deeper insights from screenshots and metadata beyond current processing pipelines.

    🌟 Star this repo to follow our future updates — your interest keeps us motivated!

    We welcome contributions of any kind - whether it's a comment, a bug report, a feature idea, or a pull request. See CONTRIBUTING.md to get started.

    🤝 Community

    Acknowledgments !

    CatchMe is inspired by these excellent open-source projects:

    ProjectInspiration
    ActivityWatchPioneering open-source activity tracking
    ScreenpipeScreen recording infrastructure for AI agents
    WindrecorderPersonal screen recording & search on Windows
    OpenRecallOpen-source alternative to Windows Recall
    SelfspyClassic daemon-style activity logging
    PageIndexTree-structured document retrieval without embeddings
    MineContextProactive context-aware AI partner & screen capture

    🏛️ Ecosystem

    CatchMe is part of the HKUDS agent ecosystem — building the infrastructure layer for personal AI agents: