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.
Agentes compatibles
Sección titulada «Agentes compatibles»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.
Autoridad del estado
Sección titulada «Autoridad del estado»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.
Estado bloqueado
Sección titulada «Estado bloqueado»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.
Manifiestos de detección
Sección titulada «Manifiestos de detección»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>.tomlEl 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:
herdr agent explain <destino>herdr agent explain --file screen.txt --agent codex --jsonEl 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.
Estado agregado
Sección titulada «Estado agregado»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.
Integraciones directas
Sección titulada «Integraciones directas»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:
herdr integration install claudeherdr integration statusCada 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.
Etiquetas personalizadas de agente
Sección titulada «Etiquetas personalizadas de agente»Puedes renombrar un agente para mostrarlo con otro nombre:
herdr agent rename w1:p1 reviewerherdr agent rename reviewer --clearLos 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.
Etiquetas personalizadas de estado
Sección titulada «Etiquetas personalizadas de estado»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.
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=indexingstate 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.
Conectarse directamente a un agente
Sección titulada «Conectarse directamente a un agente»Conecta tu terminal actual a la terminal de un solo agente, en vez de a toda la interfaz de Herdr:
herdr agent attach reviewerDesconecta 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:
herdr agent attach reviewer --takeoverUsa herdr terminal attach <terminal_id> cuando quieras la misma conexión directa con una terminal que no es un agente.