Skip to content

Latest commit

 

History

History
422 lines (328 loc) · 23.6 KB

File metadata and controls

422 lines (328 loc) · 23.6 KB

English · 中文 · 日本語 · Español

CatchMe Logo

CatchMe: captura toda tu huella digital

Para que tus agentes te entiendan mejor: ligero, sin vectores y potente.

License Python Platform Blog Report
Feishu WeChat Discord

Funciones  ·  Cómo funciona  ·  LLM  ·  Inicio  ·  Coste  ·  Comunidad

« Haz lo tuyo. CatchMe captura el resto — almacenado en local para privacidad y seguridad. »

Demo de terminal CatchMe

🦞 Hace que tus agentes sean de verdad personales. CatchMe se distribuye como skill compatible con agentes CLI (OpenClaw, NanoBot, Claude, Cursor, etc.). Puedes ejecutar CatchMe independientemente; tus agentes consultan la memoria solo con comandos CLI.

🎯 Enriquece tu contexto digital personal

Programación

💻 Asistente de programación personal

«¿En qué estaba programando hoy en Claude Code?»

• Reproducción de sesiones de código
• Recuerda los archivos que editaste
• Rastrea lo que escribiste
Investigación

🔍 Investigación profunda personal

«¿Qué leía ayer sobre IA?»

• Web/PDF vistos
• Consultas de búsqueda escritas
• Lectura rastreada
Archivos

📁 Gestor de archivos personal

«¿Qué archivos cambié hoy?»

• Cambios de archivos rastreados
• Documentos consultados
• Revisiones de ediciones
Vida digital

🧩 Panorama de tu vida digital

«¿Cómo pasé la tarde?»

• Uso de apps rastreado
• Flujos de trabajo reproducibles
• Actividades recuperables

✨ Características principales

📹 Captura de eventos siempre activa

  • Grabación impulsada por eventos: sin temporizador ni retrasos: captura al instante las acciones del ratón con anotación en cruz.
  • Contexto amplio: cinco grabadores rastrean ventanas, teclado, portapapeles, notificaciones y archivos en torno a las acciones del ratón.

🌲 Jerarquía de memoria inteligente

  • Organización automática: los flujos crudos se estructuran en cinco niveles: día → sesión → aplicación → ubicación → acción.
  • Resúmenes inteligentes: resúmenes LLM en cada nivel, convirtiendo registros en árboles de conocimiento buscables.

🔍 Recuperación basada en árbol

  • Sin complejidad vectorial: omite embeddings y VDB: el sistema usa razonamiento basado en árbol para la navegación.
  • Búsqueda de arriba abajo: el LLM lee resúmenes, elige ramas relevantes y profundiza hasta la evidencia.

🤖 Integración con agentes sin configuración

  • Un solo archivo: coloca un archivo de skill en cualquier agente de IA para integrarlo al instante.
  • Acceso inmediato: consultas al historial de pantalla por CLI sin configuración extra.

🪶 Ultraligero y centrado en la privacidad

  • Huella mínima: ~0,2 GB de RAM en ejecución con SQLite + FTS5 eficiente.
  • Local y sin conexión: todos los datos permanecen en tu máquina; modo totalmente offline con Ollama / vLLM / LM Studio.

🖥️ Interfaz web rica

  • Exploración visual: líneas de tiempo interactivas, navegación por árbol de memoria y monitorización del sistema en tiempo real.
  • Conversación natural: chatea con toda tu huella digital en lenguaje natural.

Panel web CatchMe

💡 Arquitectura de CatchMe

CatchMe transforma la actividad digital en memoria estructurada y buscable en tres etapas concurrentes:

🔄 Grabar → Organizar → Razonar: del caos digital a memoria consultable

Captura. Seis grabadores en segundo plano monitorizan ventana activa, pulsaciones, ratón, capturas, portapapeles y notificaciones.

Índice. Los eventos se organizan en un árbol de actividad jerárquico: día → sesión → aplicación → ubicación → acción. Cada nodo recibe resúmenes generados por LLM. Recuperación rápida y significativa sin embeddings vectoriales.

Recuperación. Haces una pregunta. El LLM recorre el árbol de memoria de arriba abajo, selecciona nodos relevantes e inspecciona datos brutos (capturas, pulsaciones). Luego sintetiza una respuesta precisa.

Pipeline CatchMe: captura → indexación → recuperación

🌲 Árbol de actividad jerárquico

El árbol de actividad es el núcleo de memoria de CatchMe. Ofrece vistas estructuradas y multinivel de tu vida digital: resúmenes de alto nivel o detalle fino.

Estructura del árbol de actividad

🔍 Recuperación inteligente en el árbol

CatchMe omite la búsqueda vectorial clásica. En su lugar, el LLM navega directamente tu árbol de actividad. Permite razonamiento complejo entre días y reunión precisa de evidencias del historial bruto.

Proceso de recuperación basado en árbol

📖 Más información: diseño detallado y profundización técnica en nuestro blog.

🧠 Configuración del LLM

❗️ Aviso de privacidad de datos

Almacenamiento 100 % local: todos los datos brutos (capturas, pulsaciones, árboles de actividad) permanecen en ~/data/ y no salen de tu máquina.

Opciones priorizando offline: LLM locales (Ollama, vLLM, LM Studio) permiten operación totalmente offline sin dependencia de la nube.

⚠️ Precaución con proveedores en la nube: si se usan, las API en la nube resumirán tu actividad diaria. Los endpoints no confiables pueden exponer datos privados — revisa con cuidado las políticas de datos de tu proveedor.

📋 Requisitos

Multimodal: tu modelo debe admitir texto + imágenes.

Ventana de contexto: asegúrate de que supere los límites de max_tokens en config.json.

Control de costes: para controlar costes de forma estricta, establece límites con llm.max_calls o aumenta filter.mouse_cluster_gap para reducir la frecuencia de resúmenes.

CatchMe necesita un LLM para resúmenes en segundo plano y recuperación inteligente. Usa catchme init (en Primeros pasos) para configuración guiada o sigue la configuración manual más abajo.

Ejemplo de API en la nube:

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

Ejemplo local / sin conexión:

{
    "llm": {
        "provider": "ollama",
        "api_key": null,
        "api_url": null,
        "model": "gemma3:4b"
    }
}
Proveedores LLM admitidos
Proveedor Nombre en config URL API por defecto Obtener clave
OpenRouter (gateway) openrouter https://openrouter.ai/api/v1 openrouter.ai/keys
AiHubMix (gateway) aihubmix https://aihubmix.com/v1 aihubmix.com
SiliconFlow (gateway) siliconflow https://api.siliconflow.cn/v1 cloud.siliconflow.cn
OpenAI openai https://api.openai.com/v1 platform.openai.com
Anthropic anthropic https://api.anthropic.com/v1 console.anthropic.com
DeepSeek deepseek https://api.deepseek.com/v1 platform.deepseek.com
Gemini gemini https://generativelanguage.googleapis.com/v1beta aistudio.google.com
Groq groq https://api.groq.com/openai/v1 console.groq.com
Mistral mistral https://api.mistral.ai/v1 console.mistral.ai
Moonshot / Kimi moonshot https://api.moonshot.ai/v1 platform.moonshot.cn
MiniMax minimax https://api.minimax.io/v1 platform.minimaxi.com
Zhipu AI (GLM) zhipu https://open.bigmodel.cn/api/paas/v4 open.bigmodel.cn
DashScope (Qwen) dashscope https://dashscope.aliyuncs.com/compatible-mode/v1 dashscope.console.aliyun.com
VolcEngine volcengine https://ark.cn-beijing.volces.com/api/v3 console.volcengine.com
VolcEngine Coding volcengine_coding_plan https://ark.cn-beijing.volces.com/api/coding/v3 console.volcengine.com
BytePlus byteplus https://ark.ap-southeast.bytepluses.com/api/v3 console.byteplus.com
BytePlus Coding byteplus_coding_plan https://ark.ap-southeast.bytepluses.com/api/coding/v3 console.byteplus.com
Ollama (local) ollama http://localhost:11434/v1
vLLM (local) vllm http://localhost:8000/v1
LM Studio (local) lmstudio http://localhost:1234/v1

Cualquier endpoint compatible con OpenAI funciona: establece api_url y api_key directamente.

Todos los parámetros de configuración
Sección Parámetro Por defecto Descripción
web host 127.0.0.1 Dirección de enlace del panel
port 8765 Puerto del panel
llm provider Nombre del proveedor LLM (ver tabla)
api_key Clave API del proveedor
api_url (auto) Endpoint personalizado; si se omite, se asigna por proveedor
model Nombre del modelo (depende del proveedor)
max_calls 0 Máx. llamadas LLM por ciclo (0 = ilimitado; límite para costes)
max_images_per_cluster 5 Máx. capturas por clúster de eventos
filter window_min_dwell 3.0 Tiempo mín. en ventana (s) antes de grabar
keyboard_cluster_gap 3.0 Intervalo de agrupación del teclado (s)
mouse_cluster_gap 3.0 Intervalo para fusionar eventos de ratón (s); valores mayores reducen resúmenes LLM
summarize language en Idioma de salida del resumen (en, zh, etc.)
max_tokens_l0l3 1200 Máx. tokens por nivel del árbol (L0=acción … L3=sesión)
temperature 0.4 Temperatura del LLM para resúmenes
max_workers 2 Workers de resumen concurrentes
debounce_sec 3.0 Debounce antes de disparar el resumen
save_interval_sec 5.0 Intervalo de guardado automático del árbol
retrieve max_prompt_chars 42000 Máx. caracteres en el prompt de recuperación
max_iterations 15 Máx. iteraciones de recorrido del árbol
max_file_chars 8000 Máx. caracteres de archivos extraídos
max_select_nodes 7 Máx. nodos seleccionados por iteración
max_tokens_step 4096 Máx. tokens por paso de recuperación
max_tokens_answer 8192 Máx. tokens para la respuesta final
temperature_select 0.3 Temperatura para selección de nodos
temperature_answer 0.5 Temperatura para generación de respuesta
temperature_time_resolve 0.1 Temperatura para resolución temporal
max_tokens_time_resolve 1000 Máx. tokens para resolución temporal

🚀 Primeros pasos

📦 Instalación

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 — concede Accesibilidad, Monitorización de entrada y Grabación de pantalla en Ajustes del sistema → Privacidad y seguridad
Windows — ejecuta como administrador para la monitorización global de entrada

⚡ Init

catchme init                  # configuración interactiva: proveedor, clave API, modelo

🔥 Ejecución

catchme awake                 # iniciar grabación
catchme web                   # visualizar y chatear

# o por CLI
catchme ask -- "¿Qué he hecho hoy?"
Referencia CLI
Comando Descripción
catchme awake Inicia el demonio de grabación
catchme web [-p PORT] Lanza el panel web (por defecto http://127.0.0.1:8765)
catchme ask -- "pregunta" Consulta tu actividad en lenguaje natural
catchme cost Muestra uso de tokens LLM (últimos 10 min / hoy / total)
catchme disk Desglose de almacenamiento y recuento de eventos
catchme ram Uso de memoria de procesos en ejecución
catchme init Configuración interactiva: proveedor, clave y modelo

🦞 CatchMe hace que tus agentes sean de verdad personales

CatchMe se distribuye como skill compatible con agentes CLI (OpenClaw, NanoBot, Claude, Cursor, etc.).

🪶 Integración con agentes:
Ejecuta CatchMe tú mismo. Tus agentes consultan la memoria solo con comandos CLI.

# 1. Inicia CatchMe tú
catchme awake

# 2. Da el skill ligero a tu agente
cp CATCHME-light.md ~/.cursor/skills/catchme/SKILL.md

Opción B — Skill completo (el agente gestiona todo el ciclo de vida de CatchMe):

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

🔧 Integrar en tu flujo actual

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

# 1. Búsqueda en una línea — búsqueda rápida por palabras clave en toda la actividad
with CatchMe() as mem:
    for e in mem.search("meeting notes"):
        print(e.timestamp, e.data)

# 2. Recuperación con LLM — preguntas en lenguaje natural sobre tu historial de pantalla
for step in retrieve("What was I working on this morning?"):
    if step["type"] == "answer":
        print(step["content"])

📊 Coste y eficiencia

Benchmark: 2 horas de uso intensivo y continuo en MacBook Air M4.

Métrica Valor
RAM en ejecución ~0,2 GB
Uso de disco ~200 MB
Rendimiento de tokens entrada ~6 M, salida ~0,7 M
Coste LLMqwen-3.5-plus ~0,42 $ vía Aliyun DashScope
Coste LLMgemini-3-flash-preview ~5,00 $ vía OpenRouter
Velocidad de recuperación completa (depende de la pregunta) 5–20 s por consulta con gemini-3-flash-preview

🚀 Hoja de ruta

CatchMe evoluciona con la comunidad. Próximas funciones:

Grabación multi-dispositivo. Captura y unifica actividades GUI en todas tus máquinas mediante sincronización LAN.

Agrupación dinámica. Algoritmos adaptativos que reflejan mejor tus patrones y flujos de trabajo, reduciendo costes innecesarios.

Mejor uso de datos. Más información a partir de capturas y metadatos, más allá de los pipelines actuales de procesamiento.

🌟 Da una estrella al repo para seguir las novedades — tu interés nos impulsa.

Agradecemos cualquier contribución: comentarios, informes de errores, ideas o pull requests. Consulta CONTRIBUTING.md.

🤝 Comunidad

¡Agradecimientos!

CatchMe se inspira en estos proyectos de código abierto:

Proyecto Inspiración
ActivityWatch Pionero en seguimiento de actividad open source
Screenpipe Infraestructura de grabación de pantalla para agentes IA
Windrecorder Grabación y búsqueda personal en Windows
OpenRecall Alternativa open source a Windows Recall
Selfspy Registro de actividad estilo daemon clásico
PageIndex Recuperación documental en árbol sin embeddings
MineContext Socio de IA consciente del contexto y captura de pantalla

🏛️ Ecosistema

CatchMe forma parte del ecosistema de agentes HKUDS — la capa de infraestructura para agentes de IA personales:

NanoBot
Asistente de IA personal ultraligero
CLI-Anything
Hacer que todo el software sea nativo para agentes
ClawWork
De asistente de IA a compañero de trabajo IA
ClawTeam
Inteligencia de enjambre de agentes para automatización de equipos

Gracias por visitar ✨ CatchMe

visitors