Un desarrollador puede pasarse una hora demostrando por qué cambió un analizador y perder todo ese razonamiento al empezar la siguiente tarea con otro agente. Funes indexa las sesiones localmente, devuelve la evidencia original con su procedencia y permite compartir una misma memoria entre Claude Code, Codex, pi y Hermes. Eso sí, hay un límite importante: Funes recupera el historial; decidir si una decisión antigua sigue siendo válida le corresponde al agente.
En esta guía encontrarás una configuración práctica de Claude Code → Codex, memoria exclusivamente local, sincronización opcional con Hugging Face, clientes MCP genéricos y las comprobaciones necesarias para que el historial recuperado siga siendo útil.
Define el alcance de la memoria antes de instalar
Empieza con memoria local si estás evaluando Funes o trabajas con repositorios sensibles. Vincula un dataset de Hugging Face solo cuando necesites disponer del mismo historial en otra máquina o compartirlo con un equipo.
| Modo | Dónde se almacena | Mejor primer uso | Precaución principal |
|---|---|---|---|
local | Dataset Lance local | Un desarrollador y una máquina | La memoria no te acompaña automáticamente a otro host |
<org>/<repo> | Datos Lance locales más un repositorio Dataset de Hugging Face | Cambiar de agente o de máquina | Los rastros de sesión pueden contener código sensible, prompts, rutas o credenciales |
La política de seguridad de Funes indica que el análisis, la división en fragmentos, la generación de embeddings y el reranking se realizan localmente de forma predeterminada. Los datos salen de la máquina mediante funes push o a través de una integración de memoria compartida que publica al cerrar una sesión. Una memoria respaldada por Hub es un repositorio de datasets, así que comprueba su visibilidad antes de hacer el primer push.
Para una primera prueba, usa local. Más adelante podrás cambiar la vinculación ejecutando de nuevo funes add <agent> <memory>.
Instala Funes y crea el primer índice
El repositorio oficial de Funes incluye un instalador de shell que detecta la plataforma, descarga un binario etiquetado, verifica la suma de comprobación de la versión y coloca el ejecutable en tu PATH, normalmente en ~/.local/bin:
curl -fsSL https://huggingface.co/buckets/huggingface/funes/resolve/install.sh | sh
Abre un shell nuevo si funes no aparece de inmediato y comprueba la instalación:
funes status
El repositorio ofrece binarios etiquetados para Linux x86_64, Linux aarch64 y macOS Apple Silicon. Si tu plataforma no aparece en la lista, sigue las instrucciones del proyecto para compilar desde el código fuente en lugar de dar por hecho que el instalador incluye un binario compatible.
La puesta en marcha en cinco minutos
Ejecuta lo siguiente en el entorno donde ya existan las sesiones del agente que quieras conservar:
funes add claude
En Claude Code, este comando puede crear el primer índice, registrar las herramientas de lectura, instalar la automatización de integración y seguir indexando los turnos completados. La primera pasada prioriza el texto y está documentada como una operación de aproximadamente un minuto después de la confirmación. Primero procesa la prosa y el razonamiento, antes que las salidas voluminosas de las herramientas. (Documentación de configuración de Funes)
Después, revisa el estado:
funes status
Si necesitas crear o actualizar manualmente el índice de las sesiones de Claude, usa:
funes index --harness claude
Sin indicar una ruta, funes index puede buscar las ubicaciones de sesión estándar de Claude, Codex, pi y Hermes, incluidas ~/.claude/projects y ~/.codex/sessions. Con --harness claude, limita el análisis a Claude Code. La guía de indexación también documenta un límite de aproximadamente 60 segundos para las actualizaciones sin ruta, con prioridad para el texto; las sesiones antiguas y los resultados grandes de herramientas pueden requerir pasadas posteriores.
La indexación de Funes es incremental, así que al repetirla no vuelve a generar embeddings para los fragmentos ya escritos. Las rutas de transcripciones indicadas explícitamente y los repositorios de trazas de Hub se indexan por completo, sin aplicar el límite de las actualizaciones sin ruta. (Detalles de la indexación)
Conecta Funes con Claude Code
Para usar una memoria local con Claude Code, ejecuta:
funes add claude local
funes status
Puedes omitir local, ya que es el valor predeterminado. Si hay un token de HF disponible en el terminal, Funes puede ofrecerte configurar un repositorio propiedad del usuario, <user>/funes-memory; rechaza esa propuesta si quieres hacer una prueba exclusivamente local.
La integración con Claude utiliza un plugin basado únicamente en hooks y un registro MCP independiente. Funes no modifica el archivo settings.json de Claude Code: su automatización indexa los turnos completados, mientras que la configuración de memoria compartida añade la publicación al cerrar cada sesión. (Funcionamiento de la automatización)
Abre Claude Code y prueba con una decisión histórica conocida; no evalúes la configuración solo porque la instalación haya terminado:
Find the previous decision about the streaming parser. Use Funes recall if the repository history does not explain it, and cite the session you used.
Un buen resultado apunta a un pasaje anterior, identifica la sesión de origen y distingue entre un experimento antiguo y el estado actual del repositorio.
Para deshacer la integración sin borrar los datos almacenados, ejecuta:
funes remove claude
Según la documentación de desinstalación, esto elimina la conexión de Funes, pero conserva la memoria local, las transcripciones originales, las cachés y la memoria publicada.
Comparte esa misma memoria con Codex
Cuando Claude Code ya funcione, añade Codex a la misma memoria local:
funes add codex local
funes status
Para usar una memoria compartida respaldada por Hub, indica el mismo identificador de repositorio en ambos agentes:
funes add claude <org>/<repo>
funes add codex <org>/<repo>
Codex incluye un paso de confianza que es fácil pasar por alto. Funes escribe sus hooks en ~/.codex/hooks.json; dentro de Codex, ejecuta /hooks, revisa las entradas de Funes y confía en ellas. Hasta que los hooks no estén autorizados, Codex los omitirá: no se indexarán nuevos turnos ni se publicará memoria. El flujo documentado para vincular memoria en Codex requiere Codex 0.151.0. (Requisitos de automatización de Codex)
Prueba un traspaso real entre agentes
Usa una decisión distintiva que exista en una sesión, pero no en la otra:
- En Claude Code, localiza la decisión sobre el analizador y apunta un término característico de la conversación.
- Finaliza la sesión para que se ejecuten la indexación y la automatización de cierre.
- En Codex, pregunta por ese término y solicita el razonamiento anterior.
- Confirma que la respuesta identifica Claude como agente de origen y apunta a la sesión o al turno original.
También puedes inspeccionar la evidencia directamente desde el terminal:
funes recall "why did we switch away from the streaming parser"
recall devuelve pasajes ordenados por relevancia, no un resumen generado. Cada resultado incluye información sobre su origen y un comando get generado; copia ese comando cuando necesites consultar los turnos cercanos.
Si Codex no devuelve nada, comprueba la versión, el estado de confianza de /hooks, la salida de funes status y si la sesión de Claude es anterior a la integración. Después, vuelve a intentarlo usando un término distintivo de la conversación original.
Conecta pi, Hermes u otro cliente MCP
Además de Claude Code y Codex, Funes ofrece soporte directo para pi y Hermes. Pi utiliza eventos de extensiones; Hermes usa hooks de shell y su indexación por turno está documentada como beta. (Detalles sobre los agentes compatibles)
Para un cliente compatible con MCP que no sea uno de esos cuatro, ejecuta Funes como servidor local mediante stdio:
{
"mcpServers": {
"funes": {
"command": "funes",
"args": ["mcp"]
}
}
}
Para vincular el servidor a una memoria compartida, añade el repositorio después de mcp:
{
"mcpServers": {
"funes": {
"command": "funes",
"args": ["mcp", "<org>/<repo>"]
}
}
}
La documentación de MCP expone recall, get y status. funes mcp es de solo lectura: no indexa sesiones ni publica datos. Para esas tareas, usa funes index, funes push o una integración compatible de funes add.
Una memoria especificada en una llamada MCP concreta tiene prioridad sobre la vinculación definida en el servidor. Si no se indica ninguna, Funes utiliza la memoria local.
Recupera contexto sin renunciar a la evidencia
Funes ofrece tres flujos de trabajo distintos:
| Comando | Salida | Cuándo usarlo |
|---|---|---|
funes recall "…" | Pasajes originales ordenados por relevancia y con procedencia | Cuando quieres revisar la evidencia |
funes get … | El turno citado y su contexto cercano | Cuando un resultado es relevante, pero está incompleto |
funes ask <agent> "…" | Una única respuesta en lenguaje natural con referencias | Cuando quieres una respuesta rápida de Claude o Codex sin instalar una integración |
Los valores predeterminados documentados de recall son 8 resultados, un grupo candidato de 30 resultados para el reranking, una semivida de recencia de 30 días y 1 fragmento vecino. (Opciones y valores predeterminados de recall)
Un ciclo de depuración fiable sería:
- Ejecuta
funes recallcon el error, el nombre del componente o la frase asociada a la decisión. - Sigue el comando
getgenerado para consultar el turno completo. - Contrasta la decisión recuperada con la rama actual.
- Haz el cambio o ejecuta el experimento.
- Vuelve a usar recall con el resultado para que la siguiente sesión pueda encontrarlo.
funes ask es más limitado. Primero recupera información y después entrega los pasajes seleccionados y tu pregunta a Claude o Codex para obtener una respuesta. El agente hijo no recibe herramientas, stdin ni servidores MCP, y no puede volver a intentar la recuperación si el primer resultado no es bueno. Aunque la recuperación se realiza localmente, la pregunta y los pasajes recuperados se envían al proveedor configurado para el agente seleccionado. Por eso, la documentación de ask recomienda usar funes recall con el material que no enviarías a ese proveedor.
Mantén la memoria fiable y bajo control
Funes conserva los pasajes de origen y su procedencia, pero no puede decidir si todas las soluciones históricas siguen siendo aplicables.
“Los agentes de programación resultan mucho menos extraños cuando la memoria es infraestructura aburrida: índice local, procedencia exacta y privacidad como opción predeterminada.” — @TheArtemisHunts en X
Una pequeña lista de comprobación para producción
| Situación | Qué comprobar | Acción |
|---|---|---|
| Codex no recupera nada | Confianza en los hooks y versión | Ejecuta /hooks, autoriza las entradas de Funes y confirma que Codex es 0.151.0 |
| Faltan sesiones antiguas | Alcance y nivel de indexación | Ejecuta funes index --harness claude o --harness codex; deja que las pasadas posteriores completen las salidas voluminosas |
| Un push remoto está bloqueado | TruffleHog y alcance del token | Instala TruffleHog o configura FUNES_TRUFFLEHOG; utiliza un token de escritura con permisos específicos solo en las máquinas que hacen push |
| Un resultado contiene un secreto | Estado de limpieza local | Ejecuta funes scrub y vuelve a hacer push; las transcripciones de origen no se modifican |
| Una memoria remota se comparte | Visibilidad y confianza | Mantén el dataset privado salvo que compartirlo públicamente sea intencionado y trata el texto recuperado de terceros como entrada no confiable para el agente |
| La última sesión no aparece en Hub | Momento de publicación | Ejecuta funes push <org>/<repo> antes de retirar la máquina |
Funes redacta las credenciales durante la indexación y realiza un análisis de TruffleHog con bloqueo preventivo antes de publicar. La documentación de push indica que la ausencia del escáner bloquea la publicación; si una credencial activa llega a un dataset remoto, rótala de inmediato, porque limpiar un commit posterior no puede borrar el historial del repositorio.
Usa tokens de Hugging Face con los mínimos privilegios necesarios: permisos de escritura en las máquinas que publican y permisos de solo lectura para compañeros o hosts que únicamente consultan. Además, dos máquinas que publiquen en la misma memoria remota pueden entrar en una condición de carrera; la documentación de automatización no afirma que exista serialización entre máquinas.
La decisión práctica
Elige uno de estos puntos de partida en lugar de instalar todas las integraciones de una vez:
| Flujo de trabajo | Configuración recomendada | Motivo |
|---|---|---|
| Un desarrollador evaluando la memoria persistente | funes add claude local | Menor riesgo de compartir datos y reversión más sencilla |
| Claude Code para planificar y Codex para implementar o revisar | Vincula ambos a la misma memoria local | Conserva el razonamiento entre agentes en un mismo host |
| Agentes en varias máquinas | Vincula ambos a la misma memoria privada <org>/<repo> | Permite que la memoria acompañe al desarrollador mediante el dataset de Hub |
| Historial de un proyecto de equipo | Dataset privado más tokens de solo lectura para quienes consultan | Separa la autoridad para publicar del acceso de consulta |
| Agente MCP no compatible directamente | funes mcp [memory] | Añade acceso de lectura y mantiene explícita la indexación |
| Material de código fuente sensible | Memoria local más recall | Evita la publicación remota y el envío puntual al proveedor |
Preguntas frecuentes sobre la memoria de agentes de programación de Funes
¿Funes es local?
Funes procesa y almacena la memoria localmente de forma predeterminada. Es local-first, no automáticamente solo local: los push, los hooks de memoria compartida y ask pueden enviar datos fuera del proceso local.
¿Funes funciona con Claude Code y Codex?
Sí. funes add es compatible con Claude Code y Codex, además de pi y Hermes. La vinculación de memoria de Codex requiere la versión 0.151.0 y hooks autorizados.
¿Funes indexa las sesiones automáticamente?
Después de ejecutar funes add, las integraciones compatibles instalan automatización para indexar cada turno. La puesta en marcha inicial tiene un límite, así que las sesiones antiguas y las salidas voluminosas de herramientas pueden necesitar pasadas posteriores.
¿Cómo comparto una memoria entre Claude Code y Codex?
Usa el mismo argumento <org>/<repo> tanto en funes add claude como en funes add codex. Funes mantiene el índice de trabajo local y publica el dataset compartido al cerrar las sesiones.
¿Qué ocurre si Funes recupera una decisión obsoleta?
Inspecciónala con funes recall, amplíala mediante el comando get generado y contrástala con la rama actual antes de actuar. Reformula la consulta si la primera recuperación no acierta.
¿funes ask mantiene los datos en mi máquina?
La recuperación y el reranking son locales, pero ask envía la pregunta y los pasajes recuperados al proveedor de Claude o Codex configurado. Usa recall con evidencias sensibles.
¿Puedo eliminar Funes sin borrar la memoria?
Sí. funes remove claude, funes remove codex, funes remove pi y funes remove hermes eliminan la configuración de las integraciones, pero conservan la memoria indexada y las transcripciones de origen.