Ir al contenido

Agentes

Herdr está hecho para ejecutar más de un agente de programación a la vez. Cada agente vive en un panel de terminal real, con su shell, sus registros, sus prompts y sus procesos intactos. Herdr sabe qué paneles contienen agentes, agrega su estado a las pestañas y a los espacios de trabajo, y te lleva directamente al panel que necesita atención en lugar de obligarte a revisar cada terminal a mano.

Para coordinar agentes desde scripts o desde otro agente, mira Automatización con agentes.

La detección automática funciona de serie con los agentes de programación habituales. La tabla indica qué señal decide idle, working y blocked en cada uno.

Agente Autoridad del estado Papel de la integración
Pi ganchos de ciclo de vida si están instalados; si no, manifiesto de pantalla estado y sesión
OMP ganchos de ciclo de vida si están instalados estado y sesión
GitHub Copilot CLI manifiesto de pantalla sesión
Devin CLI manifiesto de pantalla sesión
Kimi Code CLI ganchos de ciclo de vida si están instalados; si no, manifiesto de pantalla estado y sesión
Hermes Agent manifiesto de pantalla sesión
Qoder CLI manifiesto de pantalla sesión
Qwen Code manifiesto de pantalla sesión
Letta Code manifiesto de pantalla sesión
Droid manifiesto de pantalla sesión
OpenCode plugin de ciclo de vida si está instalado; si no, manifiesto de pantalla estado y sesión
Kilo Code CLI plugin de ciclo de vida si está instalado; si no, manifiesto de pantalla estado y sesión
MastraCode ganchos de ciclo de vida si están instalados estado y sesión
Claude Code manifiesto de pantalla sesión
Codex manifiesto de pantalla sesión
Cursor Agent CLI manifiesto de pantalla sesión
Amp manifiesto de pantalla ninguno
Grok CLI manifiesto de pantalla sesión
Antigravity CLI manifiesto de pantalla sesión
Kiro CLI manifiesto de pantalla ninguno
Maki manifiesto de pantalla ninguno
Muse manifiesto de pantalla ninguno

Se detectan, pero están menos probados: Gemini CLI y Cline. Los agentes no compatibles funcionan igual como procesos de terminal; solo que no tendrán estado detallado a menos que añadas una integración o informes del estado por la API de socket.

Herdr detecta primero el proceso en primer plano de cada panel. A partir de ahí, cada panel tiene una única autoridad del estado.

En los agentes con ganchos de ciclo de vida completos, la integración es la autoridad cuando está instalada e informando activamente para el panel en marcha. Herdr usa esos informes para idle, working, blocked y la identidad de la sesión. No ejecuta además el manifiesto de pantalla como respaldo para esa misma autoridad: así evita dos fuentes de verdad en competencia.

En los agentes sin ganchos de ciclo de vida completos, Herdr identifica el proceso en primer plano y lee una instantánea de la parte baja de la pantalla. Evalúa manifiestos TOML sobre esa instantánea para clasificar idle, working y blocked. En los agentes que las emiten, los manifiestos también pueden usar como evidencia el título de la terminal y las secuencias de progreso (OSC); cuando esa evidencia no está, las reglas de pantalla bastan por sí solas.

La instantánea sale de las últimas líneas del búfer del panel, no de la zona visible al desplazarse. Si retrocedes en el historial dentro de Herdr, la detección sigue mirando la interfaz viva del agente al fondo.

Las integraciones marcadas como sesión en la tabla no son, a propósito, autoridades de ciclo de vida. Aportan la identidad nativa de la sesión para restaurarla, pero sus ganchos no cubren todo el ciclo: pueden perderse el resultado de una aprobación de permisos, una interrupción con Escape u otras transiciones. En esos agentes Herdr sigue usando la detección por manifiesto de pantalla.

Máquinas virtuales y envoltorios de sandbox

Sección titulada «Máquinas virtuales y envoltorios de sandbox»

En Linux y macOS, un envoltorio visible desde el host puede ocultar a Herdr el proceso real del agente. Define HERDR_AGENT=<agente> en el comando del envoltorio para indicar a Herdr qué manifiesto de pantalla debe usar. Por ejemplo, HERDR_AGENT=claude fence -- claude en Linux o HERDR_AGENT=claude nono run --profile claude-code -- claude en macOS. La pista solo se aplica a ese proceso en primer plano. Herdr no puede verla si la defines solo dentro de una máquina virtual o un contenedor. Evita exportarla de forma global salvo que todos los procesos en primer plano que la hereden deban tratarse como ese agente.

Algunos entornos Linux restringidos no exponen el grupo de procesos en primer plano de la terminal. Arranca el servidor de Herdr con HERDR_PROCESS_DETECTION=child-groups para activar la inferencia directa por grupos de procesos hijos cuando la detección nativa no está disponible. La detección nativa sigue siendo la preferida, y el modo native por defecto nunca hace esa inferencia. El modo opcional es de mejor esfuerzo: un trabajo en segundo plano reciente puede confundirse con el de primer plano. La variable la lee el servidor y requiere reinicio; defínela en el entorno del servidor remoto, no en el cliente que se conecta.

La detección de blocked es estricta a propósito en los agentes por manifiesto de pantalla. Herdr solo marca blocked cuando la instantánea viva del fondo del búfer coincide con una interfaz conocida de aprobación, pregunta o permiso. Si ninguna regla del manifiesto coincide para un agente conocido, Herdr recurre a idle y etiqueta ese respaldo como default_known_agent_idle_fallback en la salida de explain.

Esto significa que los prompts nuevos o poco habituales de un agente pueden aparecer al principio como idle en vez de blocked, hasta que Herdr aprenda esa forma de pantalla. El error afecta solo al estado visible y a las esperas. No debería hacer que Herdr envíe entrada ni realice acciones destructivas.

Los manifiestos incluidos viven dentro de Herdr. Herdr también consulta herdr.dev para ver si hay manifiestos remotos actualizados y aplica automáticamente las actualizaciones válidas de reglas por agente sin reiniciar. Los manifiestos remotos se guardan en el directorio de estado de Herdr. Define [update] manifest_check = false para desactivar la comprobación en segundo plano.

Un fichero local puede sustituir a un manifiesto remoto o incluido desde el directorio de configuración de la plataforma:

~/.config/herdr/agent-detection/<agente>.toml

El fichero local siempre gana. Sin fichero local, Herdr usa el manifiesto compatible más reciente entre el remoto en caché y el incluido en el binario en ejecución. En compilaciones de depuración, el mismo mecanismo puede usar un directorio de desarrollo como herdr-dev. Los ficheros locales no válidos se ignoran con un aviso y Herdr recurre al manifiesto remoto en caché o al incluido para ese agente.

Los manifiestos remotos parchean las reglas de detección de agentes que Herdr ya sabe identificar. Añadir un agente completamente nuevo sigue requiriendo una actualización del binario para la detección del proceso, las etiquetas y el comportamiento de la integración.

El servidor carga en memoria los manifiestos activos al arrancar. Las actualizaciones remotas automáticas recargan esa caché en memoria después de escribir las reglas nuevas. Ejecuta herdr server update-agent-manifests para descargar de inmediato las actualizaciones remotas y recargar el servidor. Después de editar a mano un fichero local, reinicia Herdr o ejecuta herdr server reload-agent-manifests para aplicarlo al servidor en marcha.

Usa herdr agent explain cuando un panel muestre un estado incorrecto:

Ventana de terminal
herdr agent explain <destino>
herdr agent explain --file screen.txt --agent codex --json

El explain en vivo lo evalúa el servidor en marcha, así que refleja la caché de manifiestos activa. La salida muestra el agente, el estado final, si la detección por pantalla se omitió por una autoridad de ciclo de vida completa, la fuente y versión del manifiesto, la versión remota en caché, si un fichero local está tapando otro, el estado de la actualización remota, la regla que ha coincidido, los indicadores de evidencia visible, la evidencia de comparadores y regiones de las reglas evaluadas, el motivo por el que se omitió una actualización en los visores de transcripción, y el motivo del respaldo a idle cuando ninguna regla coincide.

Herdr puede ejecutarse dentro de tmux como entorno de terminal exterior. La detección de agentes no inspecciona las sesiones de tmux lanzadas dentro de un panel de Herdr. Si un framework de shell entra automáticamente en tmux dentro de Herdr, Herdr ve tmux como proceso del panel en vez del agente que hay detrás.

La barra lateral agrega el estado hacia arriba.

Un agente bloqueado hace que su panel, su pestaña y su espacio de trabajo se vean bloqueados. Un agente trabajando hace que el espacio de trabajo se vea activo. Un agente hecho sigue visible hasta que lo miras.

Este es el flujo de trabajo principal de Herdr: arranca varios agentes, déjalos trabajar en paralelo y usa la barra lateral para ver qué proyecto necesita una decisión, cuál sigue en marcha y cuál está listo para revisar.

Instala la integración de cada agente que uses para que Herdr reciba informes por ganchos o plugins en vez de depender solo de la detección por pantalla:

Ventana de terminal
herdr integration install claude
herdr integration status

Cada agente compatible tiene su propio nombre de integración y su comportamiento. Mira Integraciones para el detalle por agente y la lista completa. Si estás construyendo un agente, la guía de integración propia explica cómo informar del estado de ciclo de vida sin añadir soporte nativo a Herdr.

Puedes renombrar un agente para mostrarlo con otro nombre:

Ventana de terminal
herdr agent rename w1:p1 reviewer
herdr agent rename reviewer --clear

Los destinos aceptan un nombre único de agente vivo o el ID del panel que lo aloja en ese momento. No se aceptan IDs de terminal ni etiquetas genéricas de tipo de agente.

Las integraciones informan del ciclo de vida solo como estado semántico. La personalización de lo que se muestra se añade aparte, con tokens de metadatos del panel.

Ventana de terminal
herdr pane report-agent w1:p1 \
--source custom:indexer \
--agent docs-bot \
--state working
herdr pane report-metadata w1:p1 \
--source custom:indexer-display \
--token summary=indexing

state controla las esperas, las notificaciones y el estado agregado. El token summary es solo visual y puede usarse como $summary en una fila de agente de la barra lateral.

Las filas de agente también pueden incluir terminal_title o terminal_title_stripped; ninguno aparece en las filas por defecto. El primero muestra el último título OSC 0/2 de la terminal, normalizado por seguridad. El segundo elimina un glifo inicial reconocido de actividad o spinner y el espacio que le sigue. Estos valores los gestiona el servidor; son efímeros en un reinicio en frío y son independientes de los títulos de metadatos y del estado semántico del agente. Por eso la animación de un spinner puede cambiar el título en bruto sin generar una actualización del panel mientras el texto limpio no cambie.

Conecta tu terminal actual a la terminal de un solo agente, en vez de a toda la interfaz de Herdr:

Ventana de terminal
herdr agent attach reviewer

Desconecta con ctrl+b q. Para enviar un ctrl+b literal, ctrl+b ctrl+b.

Desplázate con la rueda del ratón o con Re Pág / Av Pág. Cualquier entrada normal vuelve al final.

Usa --takeover si otro cliente de conexión directa ya es dueño de la entrada:

Ventana de terminal
herdr agent attach reviewer --takeover

Usa herdr terminal attach <terminal_id> cuando quieras la misma conexión directa con una terminal que no es un agente.