La utilidad baton traslada una sesión entre 5 agentes de IA de consola sin perder el contexto
El autor de baton, una utilidad escrita en Go, ha enseñado a los agentes de consola Claude Code, Codex, Antigravity CLI, Pi y Hermes a retomar las sesiones de los demás cuando a uno se le agota la cuota de cinco horas. La herramienta lee los registros guardados en disco en lugar de pedirle al modelo que resuma el historial. Así no gasta tokens de salida, que son caros, y conserva los números de línea y las hipótesis descartadas. El nuevo agente recibe el resumen del último /compact, y el volcado completo queda en una carpeta temporal. • Instantánea cifrada para otro PC: AES-256-GCM, la clave no se envía al servidor • Una skill SKILL.md en lugar de un servidor MCP: en el contexto solo ocupa una línea de descripción • Código sobre la biblioteca estándar de Go, licencia MIT, compilación en tres comandos
Procesado por IA desde Habr AI; editado por Hamidun News
Las cuotas de cinco horas de los planes de $20 suelen agotarse en mitad de una depuración, y no existe un puente oficial entre Claude Code, Codex, Antigravity CLI (agy), Pi y Hermes. El autor de baton ha escrito en Go una herramienta de consola que toma la sesión de los registros locales de un agente y se la entrega a otro, ya sea en la misma máquina o, a través de la red, en otro ordenador. El código fuente está en GitHub bajo licencia MIT.
Por qué HANDOFF.md no basta
El consejo habitual es pedirle al agente que, antes de despedirse, anote en un archivo HANDOFF.md el estado de la tarea, los pasos dados y el plan. El autor señala tres problemas.
El primero: cuando se agota el límite, el agente deja de responder y ya no hay nadie que pueda escribir el resumen. El segundo: incluso si se detecta el momento con antelación, el modelo cuenta su propia historia de memoria. La ventana de contexto admite entre 200 mil y un millón de tokens, pero la longitud de una sola respuesta está limitada a unas pocas decenas de miles, de modo que el resumen resulta inevitablemente comprimido.
Se pierden los argumentos exactos de los comandos, los números de línea, las hipótesis descartadas y los pequeños cambios. El tercero: los tokens de salida cuestan a los proveedores aproximadamente cinco veces más que los de entrada y consumen antes lo que queda de cuota.
Claude Code, para quien usa varias cuentas, tiene la opción --resume, pero al cambiar de cuenta se invalida la caché de prompts del servidor, y volver a procesar un historial largo se come una parte notable de la cuota nueva. Esta opción tampoco permite pasar a un agente de otro proveedor.
Cómo baton construye el resumen a partir de los registros
Cada agente ya escribe en disco un registro detallado. Claude Code guarda JSONL en ~/.claude/projects, Codex, archivos rollout en ~/.codex/sessions, agy, transcript.jsonl y capturas Protobuf en ~/.gemini/antigravity-cli, Pi, un JSONL v3 en forma de árbol con los campos id y parentId, y Hermes, una base de datos SQLite, state.db. El comando /compact no borra nada: los registros funcionan en modo de solo añadir, y al flujo se incorpora una entrada con el resumen de la conversación anterior.
baton recorre el registro desde la primera entrada (en Pi, por la rama activa del árbol; en Hermes, por la cadena parent_session_id), reúne la lista de archivos modificados y comandos ejecutados y, al llegar a un marcador de compresión, vacía el búfer de mensajes antiguos. El resumen operativo incluye el texto de la última compresión y todos los mensajes posteriores, completos. El historial íntegro y las salidas largas de los comandos van a /tmp/baton-handoff/<id-de-sesión>/ (en Windows, a %TEMP%); las carpetas con más de un día se eliminan y el árbol de trabajo queda limpio para git status.
En el chat se muestran los metadatos, el estado del repositorio, los archivos afectados, los últimos comandos y las rutas de los volcados. El agente recupera el detalle que necesite de full_dialogue.md o con el comando baton turn.
El flujo de trabajo gira en torno al par save y load. La sesión se nombra con el comando nativo del agente o con baton save; después, en otro agente, se escribe «Continúa la sesión auth-refactor» o «Retoma la última sesión». Si no se ha puesto nombre, baton list muestra una lista numerada de candidatos con la carpeta de trabajo, la hora de modificación y la primera petición.
El autor descartó deliberadamente un servidor MCP. Ese tipo de servidor arranca con cada sesión, permanece en memoria y las descripciones de sus funciones pasan al prompt del sistema, donde consumen tokens de entrada incluso cuando las sesiones no se trasladan durante semanas. Una skill SKILL.md mantiene en el contexto una sola línea, y la utilidad se ejecuta una vez y termina de inmediato. Los cinco agentes saben cargar skills bajo demanda.
Traslado a otro portátil sin commits
El segundo escenario consiste en dejar el PC de casa y seguir en el portátil sin subir código sin pulir a una rama compartida. El comando baton push empaqueta en un tar.gz el historial de la sesión, los archivos modificados y los nuevos sin seguimiento (según el historial de escritura del agente y el estado de Git, Fossil o SVN), los archivos locales de reglas (CLAUDE.md, AGENTS.md, GEMINI.md, .cursorrules, .agents/rules/) y una copia de las instrucciones globales.
El archivo se cifra en el cliente con AES-256-GCM y una clave aleatoria de 256 bits, y se envía a paste.rs (hasta 10 MiB); si falla, a dpaste.org y después a termbin.com:9999. También hay una opción con carpeta de sincronización local: Dropbox, Nextcloud, Syncthing. La clave, que es la parte del token posterior al símbolo #, no llega al servidor del servicio intermediario, y sin ella el paquete parece ruido aleatorio.
En el segundo ordenador basta con pegar el prompt generado en cualquier agente: este lee INSTALL.md, compila la utilidad y despliega la sesión. Si un archivo local difiere del que se va a sobrescribir, se crea al lado una copia con la extensión .baton.bak. Las reglas globales se descomprimen en un directorio temporal y no tocan las configuraciones del sistema de la segunda máquina.
Instalación, actualización y limitaciones
La compilación se resume en tres comandos: git clone, go build -ldflags="-s -w" y baton install. No hay dependencias externas, solo la biblioteca estándar de Go. baton install copia SKILL.md a los directorios de skills de los cinco agentes y añade el comando de barra /baton. El autor aconseja compilar desde el código fuente en lugar de usar las versiones ya compiladas. Las actualizaciones se comprueban en un proceso en segundo plano, como máximo una vez al día; baton update recompila la utilidad con go install y verificación en sum.golang.org, o bien descarga el binario de GitHub Releases y comprueba su SHA-256.
También hay limitaciones. Los pastebins públicos siguen siendo infraestructura ajena, y el token de traslado es en la práctica un secreto, porque contiene la clave de descifrado. Los formatos de los registros son internos y pueden cambiar con la actualización de cualquiera de los agentes. La velocidad «en una fracción de segundo» es una estimación del autor; no hay mediciones independientes. Él mismo admite que una herramienta parecida se puede montar en un día y propone considerar que el principal valor está en haber desentrañado los formatos de almacenamiento de sesiones.
- 1 nov 2026Los modelos locales pierden ante Opus y Codex: 0,21 puntos en un MacBook frente a 1,00 de Codex
- 1 nov 2026Kimi logra un 96,2 % en un test de analítica sobre una base de 1C y se perfila como plan B ante un bloqueo de Claude
- 1 nov 2026OpenAI reescribe las reglas de comportamiento de GPT: cinco valores y una cadena de prioridades
- 1 nov 2026Google admite que AI Mode reduce los ingresos de su buscador: las acciones caen un 15%
Preguntas frecuentes sobre la noticia
¿Qué se sabe sobre Por qué HANDOFF.md no basta?
El consejo habitual es pedirle al agente que, antes de despedirse, anote en un archivo HANDOFF.md el estado de la tarea, los pasos dados y el plan. El autor señala tres problemas. El primero: cuando se agota el límite, el agente deja de responder y ya no hay nadie que pueda escribir el resumen. El segundo: incluso si se detecta el momento con antelación, el modelo cuenta su propia historia de memoria. La ventana de contexto admite entre 200 mil y un millón de tokens, pero la longitud de una sola respuesta está limitada a unas pocas decenas de miles, de modo que el resumen r
Cómo baton construye el resumen a partir de los registros?
Cada agente ya escribe en disco un registro detallado. Claude Code guarda JSONL en ~/.claude/projects, Codex, archivos rollout en ~/.codex/sessions, agy, transcript.jsonl y capturas Protobuf en ~/.gemini/antigravity-cli, Pi, un JSONL v3 en forma de árbol con los campos id y parentId, y Hermes, una base de datos SQLite, state.db. El comando /compact no borra nada: los registros funcionan en modo de solo añadir, y al flujo se incorpora una entrada con el resumen de la conversación anterior. baton recorre el registro desde la primera entrada (en Pi, por la rama activa del árbo
¿Qué se sabe sobre Traslado a otro portátil sin commits?
El segundo escenario consiste en dejar el PC de casa y seguir en el portátil sin subir código sin pulir a una rama compartida. El comando baton push empaqueta en un tar.gz el historial de la sesión, los archivos modificados y los nuevos sin seguimiento (según el historial de escritura del agente y el estado de Git, Fossil o SVN), los archivos locales de reglas (CLAUDE.md, AGENTS.md, GEMINI.md, .cursorrules, .agents/rules/) y una copia de las instrucciones globales. El archivo se cifra en el cliente con AES-256-GCM y una clave aleatoria de 256 bits, y se envía a paste.rs (ha
Build & Ship Production AI Agents Without Boilerplate Code
Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.
Lo esencial de la IA — una vez por semana
Siete historias que de verdad importaron, elegidas a mano. Sin ruido ni notas de prensa.
¡Listo! Revisa tu correo para la confirmación.