Tus conversaciones, recordadas. Privadamente.
🌐 English | 繁體中文 | 简体中文 | 日本語 | 한국어 | Français | Deutsch | Volver al inicio
Una extensión de Chrome que captura silenciosamente tus conversaciones de ChatGPT / Claude / Gemini / Perplexity / Grok y las almacena como memorias semánticas privadas e indexadas localmente — con un botón Recall de un clic para inyectar contexto relevante en nuevos chats.
100% local. Sin nube. Sin servidor. Sin cuenta requerida.
Instala directamente desde la Chrome Web Store.
Nota: La versión de Chrome Web Store puede ir por detrás del último lanzamiento. Para las funciones más recientes, descarga el último
.zipdesde la página de Releases e instálalo manualmente (ver pasos abajo).
- Ve a la página de Releases y descarga el último
.zip - Descomprime el archivo
- Abre Chrome →
chrome://extensions/ - Activa el Modo desarrollador (arriba a la derecha)
- Haz clic en Cargar descomprimida → selecciona la carpeta descomprimida
Requisitos: Node.js 18+, pnpm (npm install -g pnpm), Chrome / Edge (MV3)
# Haz un fork de este repositorio en tu propia cuenta de GitHub
git clone https://github.com/<your-github-username>/personal-ai-memory.git
cd personal-ai-memory
pnpm install
# Modo desarrollo — recompila automáticamente al guardar
pnpm devLuego carga build/chrome-mv3-dev/ mediante Cargar descomprimida en chrome://extensions/.
# Compilación de producción
pnpm build
# salida: build/chrome-mv3-prod/Tras cualquier cambio de código: haz clic en Recargar en la tarjeta AI Memory y luego actualiza las pestañas de IA abiertas.
| Función | Detalles |
|---|---|
| Captura pasiva | Intercepta automáticamente ChatGPT / Claude / Gemini / Perplexity / Grok — sin configuración, sin clics. Solo visita la página y las conversaciones existentes se capturan automáticamente. |
| Búsqueda híbrida | Vectorial (decaimiento temporal) + BM25, fusionados con RRF para mejores resultados |
| Recall con un clic | Inyecta memorias relevantes como prompt RAG en ChatGPT y Claude |
| Copia de seguridad local | Exporta / importa copia completa como JSON (con embeddings incluidos) |
| Prompts favoritos | Guarda, autocompletado (Trie), organiza en carpetas con drag-and-drop |
| Panel flotante | Panel de memoria arrastrable en cada sitio de IA |
| 8 idiomas de UI | zh-TW · zh-CN · en · ja · ko · es · fr · de — detección automática |
| Tema oscuro / claro | Toggle estilo Apple Liquid Glass |
Plataformas compatibles: ChatGPT (chat.openai.com / chatgpt.com) · Gemini (gemini.google.com) · Claude (claude.ai) · Perplexity (perplexity.ai) · Grok (grok.com)
- Inicia sesión en tu cuenta de ChatGPT y ve a la pantalla principal.
- Haz clic en tu "Foto de perfil" o "Nombre" en la esquina para abrir el menú.
- Selecciona Settings (Configuración).
- Ve a la pestaña Data controls (Controles de datos).
- Encuentra Export data y haz clic en Export.
- Haz clic en Confirm export en la ventana de confirmación.
- Recibirás un correo electrónico con un enlace de descarga (puede tardar hasta 24 horas).
- Descarga el archivo ZIP. Después de extraerlo, el historial de chat es
conversations-00x.json.
Exportar vía Google Takeout:
- Ve a Google Takeout e inicia sesión.
- Haz clic en Desmarcar todo en la parte superior.
- Desplázate hacia abajo y marca Mi actividad (My Activity) (NO
Gemini Apps). - Haz clic en el botón Varios formatos.
- Cambia el formato del primer registro de HTML a JSON, haz clic en Aceptar.
- Haz clic en Siguiente paso → elige método de entrega → Crear exportación.
- Espera el correo. Después de extraer, el archivo es
my activity.json.
- Ve a https://claude.ai/settings/data-privacy-controls.
- Haz clic en Export data.
- Espera el correo electrónico con el enlace de descarga.
- Después de extraer, el historial de chat es
conversations.json.
Perplexity no admite exportación de datos de usuario. Cada conversación debe visitarse individualmente para ser capturada por la extensión.
- Ve a https://grok.com.
- Haz clic en tu foto de perfil (abajo a la izquierda) → Settings → Data controls.
- Haz clic en Export Account Data.
- Espera varias horas para recibir el correo con el enlace de descarga.
- Después de extraer, el archivo es
prod-grok-backend.json.
Chateas en ChatGPT / Claude / Gemini / Perplexity / Grok
│ (la extensión captura silenciosamente en segundo plano)
▼
Memorias almacenadas localmente en IndexedDB
+ vector de embedding semántico (ONNX, se ejecuta en el navegador)
+ índice de palabras clave (MiniSearch / BM25, en memoria del Service Worker)
│
│ Más tarde — inicias un nuevo chat
▼
Haces clic en 🧠 Recall junto al input de ChatGPT / Claude
│
▼
Búsqueda híbrida:
Ruta A — similitud vectorial × decaimiento temporal (reciente = mayor peso)
Ruta B — búsqueda por palabras clave BM25 (coincidencia de prefijos)
Fusión — Reciprocal Rank Fusion (RRF)
│
▼
Las top-k memorias se inyectan como contexto RAG en el input
La IA ahora tiene tu historial como conocimiento de fondoRuta A — Búsqueda vectorial + Decaimiento temporal
consulta → Float32Array embedding (ONNX, Offscreen Document)
por cada registro: dot_product(q, r.embedding) × exp(-0.01 × díasAntigüedad)
agrupar por parentId → mantener puntuación máxima por grupo
ordenar descendente → vectorRanked[]
(semivida ≈ 69 días, λ = 0.01)
Ruta B — Búsqueda por palabras clave (MiniSearch / BM25)
miniSearch.search(query, { prefix: true })
coincidencia de prefijos: "py" encuentra "python", "react" encuentra "reactivity"
ordenar por puntuación BM25 → kwRanked[]
Fusión — Reciprocal Rank Fusion (RRF, k = 60)
rrfScore[key] += 1 / (60 + rank) para cada lista
sumar ambas listas → ordenar desc → top-k → combinar chunks → SearchResult[]Fallback: si el embedding falla, se devuelven solo resultados de palabras clave; si no hay coincidencias de palabras clave, se devuelven solo resultados vectoriales.
Esta extensión intercepta tus conversaciones de IA. Esto es exactamente lo que hace y no hace:
| Pregunta | Respuesta |
|---|---|
| ¿Dónde se almacenan los datos? | Solo en IndexedDB local del navegador (AIMemoryDB) — nunca sale de tu dispositivo |
| ¿Hace solicitudes de red? | Solo una vez — para descargar el modelo ONNX en la primera ejecución. Los datos de conversación nunca se suben. |
| ¿Pueden los sitios web ver mis memorias? | No. Los datos están aislados en el almacenamiento de la extensión, inaccesible para los scripts de página. |
| ¿Puedo eliminar mis datos? | Sí — eliminación suave de registros individuales desde el panel flotante, o borrado completo via DevTools → IndexedDB. |
Trata esta extensión como un diario local. Ve todo lo que escribes y recibes en los sitios de IA compatibles. Revisa el código fuente si tienes dudas.
| Capa | Tecnología |
|---|---|
| Framework de extensión | Plasmo (Chrome MV3) |
| UI | React 18 + Theme Tokens personalizados |
| Persistencia | IndexedDB via Dexie |
| Búsqueda vectorial | Transformers.js ONNX — paraphrase-multilingual-MiniLM-L12-v2 |
| Búsqueda por palabras clave | MiniSearch (BM25, en memoria) |
| Lenguaje | TypeScript |
📂 Estructura del proyecto
src/
├── background/
│ ├── index.ts Enrutador de mensajes · manejador de captura · sincronización MiniSearch
│ ├── search.ts Motor de búsqueda híbrida (vector×decay + BM25 + RRF)
│ ├── db.ts Operaciones IndexedDB (Dexie)
│ ├── embedding.ts Constantes de nombre / versión del modelo ONNX
│ ├── injector.ts Interceptor fetch/XHR MAIN-world (inyectado en la página)
│ └── adapters/
│ ├── chatgpt.ts Parser SSE delta-v1 de ChatGPT
│ ├── claude.ts Parser SSE de Claude
│ ├── gemini.ts Parser XHR StreamGenerate de Gemini + captura pasiva
│ ├── perplexity.ts Parser SSE de Perplexity
│ └── grok.ts Parser SSE de Grok
├── contents/
│ ├── interceptor.ts Puente ISOLATED-world + MutationObserver <title>
│ ├── memory-float-ui.tsx Punto de entrada del content script del panel flotante
│ ├── chatgpt-injector.tsx Inyección del botón Recall + ensamblaje del prompt RAG
│ ├── gemini-injector.tsx Captura pasiva de Gemini + botón Recall
│ └── grok-injector.tsx Captura pasiva de Grok
├── tabs/
│ └── offscreen.tsx Inferencia ONNX (Offscreen Document — requiere DOM)
├── popup/
│ ├── index.tsx Raíz del Popup — navegación por panel deslizante
│ └── components/
│ ├── MainMenuView.tsx Menú principal + sección de Prompts favoritos
│ ├── MemoryTableView.tsx Lista de memorias agrupadas por sesión
│ ├── ImportView.tsx UI de importación JSON
│ ├── ExportView.tsx UI de exportación JSON
│ ├── FavoritePromptsSection.tsx Prompts con autocompletado Trie
│ └── FolderView.tsx Gestión de carpetas con drag-and-drop
├── ui/memory-panel/
│ └── FloatingMemoryPanel.tsx Panel flotante arrastrable (logo + panel)
├── i18n/
│ ├── translations.ts Mapa de cadenas en 8 idiomas
│ ├── LanguageContext.tsx Cambio de idioma (localStorage)
│ └── ThemeContext.tsx Tema oscuro / claro (localStorage)
└── types/
├── memory.ts Interfaces MemoryRecord · SearchResult
└── messages.ts Todas las definiciones de tipos de mensajes Chrome| Objetivo | Cómo acceder |
|---|---|
| Background Service Worker | chrome://extensions/ → AI Memory → Service worker |
| Popup | Clic derecho en el icono de la extensión → Inspeccionar popup |
| Content scripts | DevTools → Sources → Content scripts |
| IndexedDB | DevTools → Application → Storage → IndexedDB → AIMemoryDB |
| Prueba de búsqueda manual | Consola del Service Worker: testSearch('palabra', 5) |
pnpm test # Pruebas unitarias (Vitest)
pnpm test:integration # Pruebas de integración
pnpm test:e2e # Pruebas E2E (Playwright — ejecutar pnpm build primero)- Nuevo: Soporte para Grok (
grok.com) — las conversaciones se capturan silenciosamente mientras navegas. - Nuevo: Captura pasiva de mensajes de Gemini — las conversaciones existentes en la página se capturan automáticamente al visitar.
- Soporte para Perplexity (
perplexity.ai) — las conversaciones se capturan silenciosamente mientras navegas. Nota: Perplexity no admite exportación de datos, por lo que cada conversación debe abrirse individualmente para ser recopilada.
- Soporte completo para Claude web (
claude.ai) — captura de conversaciones, inyección del botón Recall y panel flotante de memoria ahora funcionan en Claude
- Captura de conversaciones de ChatGPT y Gemini
- Búsqueda híbrida vector + BM25 con fusión RRF
- Botón Recall con un clic (ChatGPT)
- Prompts favoritos con autocompletado Trie y carpetas drag-and-drop
- Exportación / importación de copia de seguridad JSON
- Panel flotante de memoria
- 8 idiomas de UI, tema oscuro / claro
¡Se aceptan PRs e Issues! Por favor, abre un Issue para discutir cambios significativos antes de enviar un PR.
- Reportar bugs: abrir un Issue
- Solicitudes de funciones: abrir un Issue