El blog de Deska

Encontrar ese prompt: cómo buscar en el historial de solicitudes de Claude Code

Domina la búsqueda en el historial de Claude Code: recupera prompts antiguos, salidas de la IA y transcripciones de sesiones paso a paso.

· 8 min de lectura

Recuerdas que la respuesta era buena. No recuerdas qué sesión la produjo, en qué proyecto estabas ni qué preguntaste exactamente. Si eso te suena conocido, esta guía sobre la búsqueda en el historial de Claude Code es para ti. Claude Code guarda un registro completo de tus sesiones en disco, y una vez que sabes dónde vive ese registro y cómo consultarlo, recuperar un prompt específico o una salida de la IA toma segundos en lugar de una hora de desplazamiento. A continuación verás dónde se almacenan las transcripciones, cómo buscarlas con herramientas de terminal de uso diario, qué comandos integrados ayudan y cómo organizar tu flujo de trabajo para que la próxima búsqueda sea aún más rápida.

Dónde guarda Claude Code tu historial

Claude Code es local first por diseño: tu historial de conversaciones vive en tu propia máquina, no en un panel web. En macOS y Linux la ubicación principal es el directorio ~/.claude/projects. Dentro encontrarás una carpeta por proyecto, nombrada según la ruta absoluta del directorio de trabajo con las barras reemplazadas por guiones. Un proyecto en /Users/ana/work/api-server se convierte en una carpeta con un nombre como -Users-ana-work-api-server.

Cada carpeta de proyecto contiene las transcripciones de sesión como archivos JSONL, un archivo por sesión, nombrado con el UUID de la sesión. JSONL significa JSON Lines: cada línea es un objeto JSON autocontenido que representa un evento, como un mensaje del usuario, una respuesta del asistente, una llamada a una herramienta o el resultado de una herramienta.

Datos clave que vale la pena recordar:

  • Las transcripciones son JSONL de texto plano, así que cualquier herramienta de texto puede leerlas.
  • Cada línea suele tener un campo type (user, assistant, summary), un objeto message con el contenido, un timestamp y un sessionId.
  • Las primeras líneas de un archivo suelen incluir una línea de resumen que comprime de qué trató la sesión.
  • Las sesiones se agrupan por directorio de proyecto, así que saber en qué repositorio estabas ya reduce muchísimo la búsqueda.
  • Borrar la carpeta ~/.claude/projects borra tu historial, así que trátalo como datos que conviene respaldar si dependes de ellos.

Como todo es local y estructurado, la búsqueda en el historial de Claude Code es en realidad un problema de búsqueda de texto estructurado, y el texto estructurado es exactamente para lo que se crearon las herramientas de Unix.

Encontrar el archivo de sesión correcto

Antes de buscar dentro de las transcripciones, reduce qué archivos podrían contener la respuesta. Dos filtros hacen la mayor parte del trabajo: el directorio del proyecto y la fecha de modificación.

Lista las carpetas de proyecto activas más recientemente:

ls -lt ~/.claude/projects | head -20

Luego, dentro de la carpeta del proyecto probable, lista las sesiones por fecha:

ls -lt ~/.claude/projects/-Users-ana-work-api-server/*.jsonl | head

Si recuerdas una palabra distintiva del prompt o de la respuesta, ve directo a la búsqueda de contenido. grep -l imprime solo los nombres de archivo de las sesiones que contienen una coincidencia:

grep -l "rate limit" ~/.claude/projects/-Users-ana-work-api-server/*.jsonl

Para una búsqueda entre proyectos, recorre todo de forma recursiva y deja que ripgrep haga el trabajo pesado:

rg -l "refresh token rotation" ~/.claude/projects/

Una advertencia práctica: una sola sesión puede contener miles de líneas, y una línea JSONL puede ser muy larga. Usa siempre -l primero para encontrar los archivos candidatos. Imprime las líneas coincidentes solo cuando sepas que el archivo es el correcto, y prefiere jq para ese paso para que la salida siga siendo legible.

Buscar dentro de una sesión con jq

El JSONL crudo es denso. La herramienta jq lo convierte en una conversación legible. Instálala con tu gestor de paquetes (brew install jq en macOS) y estos patrones cubren la mayoría de los trabajos de recuperación.

Extraer solo tus propios prompts de una sesión:

jq -r 'select(.type == "user") | .message.content' session.jsonl

Extraer solo las respuestas de texto del asistente:

jq -r 'select(.type == "assistant") | .message.content[] | select(.type == "text") | .text' session.jsonl

Encontrar las líneas donde aparece una palabra clave y mostrar la fecha junto a ellas:

jq -r 'select((.message.content | tostring) | test("migration"; "i")) | [.timestamp, .type] | @tsv' session.jsonl

Encadenar las dos ideas para responder la pregunta más común de todas: ¿qué me dijo Claude exactamente sobre X?

jq -r 'select(.type == "assistant") | .message.content[]? | select(.type == "text") | .text' session.jsonl | grep -i -A 5 -B 5 "migration"

Algunas notas de campo que ahorran frustración:

  • message.content puede ser una cadena o un arreglo de bloques de contenido, por eso aparecen los filtros []? y select(.type == "text") en los ejemplos. El signo de interrogación hace que jq omita las líneas donde falta el campo en lugar de fallar.
  • Las llamadas a herramientas y sus resultados viven en bloques de contenido separados, así que si buscas un comando que Claude ejecutó o un archivo que escribió, busca en toda la línea con tostring en lugar de solo en los bloques de texto.
  • Las marcas de tiempo son cadenas ISO 8601, así que ordenar o filtrar por fecha es una comparación de cadenas directa.

Si recuperas salidas con frecuencia, guarda tus comandos favoritos como alias de shell o pequeños scripts. Trátalos como cualquier otra pieza de tu herramental de desarrollo.

Comandos integrados: /resume y compañía

La cirugía de terminal es poderosa, pero Claude Code también incluye recuperación de sesiones de fábrica. Ejecutar claude --resume (o /resume dentro de una sesión activa) presenta una lista de sesiones pasadas del proyecto actual, con resúmenes, y te permite retomar donde lo dejaste. claude --continue te lleva directo a la sesión más reciente del directorio actual.

Estos comandos son el camino más rápido cuando sabes qué sesión quieres y solo necesitas reabrirla. Son menos útiles cuando no sabes qué sesión contiene la respuesta, porque el selector muestra un proyecto a la vez y depende de resúmenes cortos. Ese es el vacío donde brillan las técnicas de jq y grep de arriba, y donde una vista de nivel de espacio de trabajo de todos tus agentes se vuelve valiosa.

Comparación de tus opciones de búsqueda

MétodoIdeal paraEsfuerzo
Selector /resumeReabrir una sesión conocidaBajo
grep o rgPalabra clave conocida, sesión desconocidaBajo
Consultas jqExtraer prompts o respuestas completasMedio
Búsqueda de espacio de trabajoMuchos agentes y proyectos a la vezBajo

Las primeras tres son gratuitas, programables y completamente sin conexión. La cuarta es lo que herramientas como Deska agregan encima.

Buscar en el historial cuando usas varios agentes

Todo lo anterior funciona bien para un agente en un proyecto a la vez. El panorama cambia cuando tu flujo diario involucra Claude Code, Codex CLI y OpenCode ejecutándose en paralelo en múltiples repositorios, algo cada vez más común. Ahora la pregunta no es solo qué sesión, sino qué agente, en qué proyecto, en qué día.

Este es el problema para el que se construyó Deska. Deska es una app de escritorio gratuita para Mac, Windows y Linux que te da un lienzo infinito donde terminales, editores de código, navegadores y notas conviven lado a lado como paneles, y donde agentes de codificación con IA como Claude Code, Codex CLI y OpenCode se ejecutan como paneles que puedes ver todos a la vez, como se describe en la descripción general de agentes. Como las sesiones viven como hilos visibles en un solo espacio de trabajo, encontrar una conversación pasada es cuestión de alejar el zoom y recorrer con la vista, no de reconstruir rutas bajo ~/.claude. La documentación de hilos de agentes cubre cómo se organizan esos hilos, y la paleta de comandos te da un único punto de entrada por teclado para saltar a paneles y sesiones sin recordar nombres de carpetas.

Dos rasgos de Deska importan específicamente para recuperar historial:

  • Es local first: las sesiones y los archivos permanecen en tu máquina, así que buscar en tu historial nunca depende de una red ni de un panel de un proveedor.
  • La app móvil te permite monitorear y continuar sesiones desde tu teléfono a través de un relé seguro con emparejamiento directo entre dispositivos, lo que significa que el prompt que escribiste en tu escritorio está al alcance cuando no estás frente a él.

Nada de esto reemplaza conocer la estructura de archivos cruda. Si ejecutas Claude Code dentro de Deska, las transcripciones siguen siendo datos locales ordinarios, y las técnicas de jq de antes siguen aplicando. La diferencia es que rara vez las necesitas, porque la lista de sesiones y la vista del espacio de trabajo responden visualmente la mayoría de las preguntas de recuperación. Si quieres los detalles de configuración, la guía de inicio y la documentación de agentes de codificación explican cómo conectar tus propias claves de API o la inferencia administrada.

Facilita las búsquedas de tu yo del futuro

La mejor búsqueda de historial es la que apenas tienes que hacer. Algunos hábitos mejoran enormemente tu tasa de aciertos meses después:

  • Empieza los prompts con una frase nominal específica. Pedir "agrega lógica de reintento al manejador del webhook de stripe" es localizable; "puedes arreglar esto" no.
  • Mantén un proyecto por directorio. Como las sesiones se agrupan por directorio de trabajo, la higiene disciplinada de directorios es indexación de búsqueda gratuita.
  • Pide a Claude que resuma las decisiones al final de las sesiones largas. Esos resúmenes son fáciles de detectar al inicio de las transcripciones y en el selector de reanudación.
  • Anota las sesiones importantes en un archivo de apuntes o en un panel de notas, con el UUID de la sesión y una descripción de una línea.
  • Respalda ~/.claude junto con tus dotfiles. El historial que pierdes no se puede buscar.

Para la higiene general sobre qué almacena Claude Code y cómo gestionarlo, la guía de solución de problemas y las notas de datos y almacenamiento en la documentación de Deska son referencias útiles incluso si no usas Deska, ya que el comportamiento subyacente del agente es el mismo.

Preguntas frecuentes

¿Cómo encuentro una conversación antigua de Claude Code?

Ejecuta claude --resume en el directorio del proyecto para explorar sesiones pasadas con resúmenes. Si no sabes el proyecto, busca directamente en las transcripciones con rg -l "palabra clave" ~/.claude/projects/ para listar cada archivo de sesión que mencione tu palabra clave, y luego abre el archivo coincidente con jq para leer la conversación.

¿Dónde guarda Claude Code el historial de chat?

En ~/.claude/projects en macOS y Linux. Cada directorio de trabajo tiene su propia carpeta nombrada según su ruta, y cada sesión es un archivo JSONL nombrado con un UUID dentro de esa carpeta. Cada línea del archivo es un evento, como un mensaje del usuario o una respuesta del asistente, con marcas de tiempo e identificadores de sesión.

¿Puedo buscar el historial de Claude Code desde mi teléfono?

No de forma nativa, ya que las transcripciones viven en tu estación de trabajo. Una configuración de acceso remoto lo resuelve: la app móvil de Deska se empareja directamente con tu escritorio a través de un relé seguro, sin puertos expuestos, así que puedes monitorear agentes en ejecución y continuar sesiones pasadas desde tu teléfono mientras los datos permanecen en tu máquina.

Deja de perder buenas respuestas

La búsqueda en el historial de Claude Code se reduce a tres movimientos: saber que las transcripciones viven en ~/.claude/projects, usar rg para encontrar el archivo correcto y jq para leerlo, y usar /resume cuando ya conoces la sesión. Domina eso y ninguna buena respuesta quedará perdida por mucho tiempo. Si prefieres buscar visualmente entre Claude Code, Codex CLI y OpenCode en un solo espacio de trabajo local first, descarga Deska gratis y mantén cada sesión a la vista.

💡 Ideas+🐛 BugsPropón una feature o reporta un bug