Saltearse al contenido

Sesiones

Pi guarda las conversaciones como sesiones para que puedas continuar el trabajo, ramificar desde turnos anteriores y revisar rutas previas.

Las sesiones se guardan automáticamente en ~/.pi/agent/sessions/, organizadas por directorio de trabajo. Cada sesión es un archivo JSONL con estructura de árbol.

Ventana de terminal
pi -c # Continuar la sesión más reciente
pi -r # Explorar y seleccionar sesiones anteriores
pi --no-session # Modo efímero; no guardar
pi --name "my task" # Establecer nombre de sesión al iniciar
pi --session <path|id> # Usar un archivo de sesión o ID parcial
pi --fork <path|id> # Bifurcar sesión en una nueva sesión

Usa /session en modo interactivo para ver el archivo de sesión actual, ID de sesión, recuento de mensajes, tokens y coste.

Para el formato de archivo JSONL y la API SessionManager, consulta Session Format.

ComandoDescripción
/resumeExplorar y seleccionar sesiones anteriores
/newIniciar una nueva sesión
/name <name>Establecer el nombre de visualización de la sesión actual
/sessionMostrar información de sesión
/treeNavegar el árbol de sesión actual
/forkCrear nueva sesión desde un mensaje de usuario anterior
/cloneDuplicar la rama activa actual en una nueva sesión
/compact [prompt]Resumir contexto antiguo; ver Compaction
/export [file]Exportar sesión a HTML
/shareSubir como gist privado de GitHub con enlace HTML compartible

/resume abre un selector interactivo de sesiones para el proyecto actual. pi -r abre el mismo selector al iniciar.

En el selector puedes:

  • buscar escribiendo
  • alternar visualización de ruta con Ctrl+P
  • alternar modo de orden con Ctrl+S
  • filtrar a sesiones con nombre con Ctrl+N
  • renombrar con Ctrl+R
  • eliminar con Ctrl+D, luego confirmar

Cuando está disponible, pi usa el CLI trash para eliminar en lugar de borrar archivos permanentemente.

Usa /name <name> para establecer un nombre legible:

/name Refactor auth module

Establece el nombre al iniciar con --name o -n:

Ventana de terminal
pi --name "Refactor auth module"
pi --name "CI audit" -p "Review this build failure"

Las sesiones con nombre son más fáciles de encontrar en /resume y pi -r.

Las sesiones se almacenan como árboles. Cada entrada tiene id y parentId, y la posición actual es la hoja activa. /tree te permite saltar a cualquier punto anterior y continuar desde allí sin crear un archivo nuevo.

Tree View

Forma de ejemplo:

├─ user: "Hello, can you help..."
│ └─ assistant: "Of course! I can..."
│ ├─ user: "Let's try approach A..."
│ │ └─ assistant: "For approach A..."
│ │ └─ user: "That worked..." ← active
│ └─ user: "Actually, approach B..."
│ └─ assistant: "For approach B..."
TeclaAcción
↑/↓Navegar entradas visibles
←/→Página arriba/abajo
Ctrl+←/Ctrl+→ o Alt+←/Alt+→Plegar/desplegar o saltar entre segmentos de rama
Shift+LEstablecer o borrar etiqueta en la entrada seleccionada
Shift+TAlternar marcas de tiempo de etiquetas
EnterSeleccionar entrada
Escape/Ctrl+CCancelar
Ctrl+OAlternar modo de filtro

Los modos de filtro son: default, no-tools, user-only, labeled-only y all. Configura el predeterminado con treeFilterMode en Settings.

Al seleccionar un mensaje de usuario o personalizado:

  1. Mueve la hoja al padre del mensaje seleccionado.
  2. Coloca el texto del mensaje seleccionado en el editor.
  3. Permite editar y reenviar, creando una nueva rama.

Al seleccionar asistente, herramienta, compactación u otra entrada no de usuario:

  1. Mueve la hoja a esa entrada.
  2. Deja el editor vacío.
  3. Permite continuar desde ese punto.

Seleccionar el mensaje de usuario raíz restablece la hoja a una conversación vacía y coloca el prompt original en el editor.

Función/tree/fork/clone
SalidaMismo archivo de sesiónNuevo archivo de sesiónNuevo archivo de sesión
VistaÁrbol completoSelector de mensajes de usuarioRama activa actual
Uso típicoExplorar alternativas in situNueva sesión desde prompt anteriorDuplicar trabajo actual antes de continuar
ResumenResumen de rama opcionalNingunoNinguno

Usa /tree cuando quieras mantener alternativas juntas. Usa /fork o /clone cuando quieras un archivo de sesión separado.

Cuando /tree cambia de una rama a otra, pi puede resumir la rama abandonada y adjuntar ese resumen en la nueva posición. Esto preserva contexto importante de la ruta que dejaste sin reproducir toda la rama.

Cuando se te pregunte, elige una de:

  1. sin resumen
  2. resumir con el prompt predeterminado
  3. resumir con instrucciones de enfoque personalizadas

Consulta Compaction para detalles internos de resumen de rama y hooks de extensión.

Los archivos de sesión son JSONL y contienen entradas de mensajes, cambios de modelo, cambios de nivel de razonamiento, etiquetas, compactaciones, resúmenes de rama y entradas de extensión.

Para parsers, extensiones, uso de SDK y la API completa de SessionManager, consulta Session Format.