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»Un agente puede ser compatible con Herdr de dos formas: porque Herdr lo admite o porque él mismo admite Herdr. En los dos casos ves el estado idle, working y blocked de cada agente, recibes un aviso cuando termina o te necesita, y puedes esperarlo desde scripts.
Los demás agentes funcionan igual en los paneles de Herdr. Simplemente aparecen como terminales normales.
Admitidos por Herdr
Sección titulada «Admitidos por Herdr»Herdr reconoce estos agentes y lee su estado a partir de lo que pintan en pantalla. Para recuperar la misma sesión después de reiniciar el servidor de Herdr, instala la integración del agente con herdr integration install <nombre>. Mira Integraciones para saber qué instala cada una.
| Agente | Integración | Notas |
|---|---|---|
| Claude Code | claude |
|
| Codex | codex |
|
| GitHub Copilot CLI | copilot |
|
| Cursor Agent CLI | cursor |
|
| OpenCode | opencode |
también informa del estado |
| Pi | pi |
también informa del estado |
| OMP | omp |
el estado requiere la integración |
| Droid | droid |
|
| Devin CLI | devin |
|
| Kimi Code CLI | kimi |
también informa del estado |
| Kilo Code CLI | kilo |
también informa del estado |
| Hermes Agent | hermes |
|
| Qoder CLI | qodercli |
|
| Qwen Code | qwen |
|
| Letta Code | letta |
solo instalación por CLI |
| MastraCode | mastracode |
el estado requiere la integración |
| Grok CLI | grok |
|
| Antigravity CLI | antigravity-cli |
|
| Amp | ninguna | solo estado |
| Kiro CLI | ninguna | solo estado |
| Maki | ninguna | solo estado |
| Gemini CLI | ninguna | solo estado, menos probado |
| Cline | ninguna | solo estado, menos probado |
Admitidos por el agente
Sección titulada «Admitidos por el agente»Estos agentes informan a Herdr de su propio estado. No hay nada que instalar: ejecútalos en un panel de Herdr.
Un agente que además informa de su comando de reanudación vuelve en la misma sesión después de reiniciar el servidor de Herdr.
Si desarrollas un agente de programación, Añadir compatibilidad con Herdr a tu agente explica cómo entrar en esta lista. Bastan unas pocas llamadas a la CLI o al socket de Herdr, sin cambiar nada en Herdr.
Cómo funciona el estado
Sección titulada «Cómo funciona el estado»En los agentes que admite Herdr, Herdr localiza el proceso del agente en cada panel y lee la parte baja viva del panel, no la zona a la que te hayas desplazado. Las reglas de un manifiesto de detección deciden si esa pantalla significa idle, working o blocked. Cuando una integración también informa del estado, Herdr usa esos informes en vez de leer la pantalla.
En los agentes que admiten Herdr, el estado lo deciden los informes del propio agente.
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.
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. La detección en sí no envía entrada, pero una automatización que se fíe de un idle equivocado puede escribir en un diálogo de aprobación. Revisa los prompts inesperados antes de enviar más entrada: el estado en espera no es una autorización para aprobar una acción.
Antigravity y Grok cuentan como en espera en cuanto vuelven a su prompt, aunque sigan en marcha tareas en segundo plano, monitores o subagentes. agent wait y agent prompt --wait observan el estado del agente, no el final de esos trabajos.
Suspender un agente con Ctrl+Z conserva su nombre, su referencia de sesión y la autoridad de sus ganchos mientras ese mismo proceso siga vivo detrás del shell o de otro comando que no sea un agente. Al volver con fg mantiene esa identidad. Esto no cubre el caso de que otro agente reconocido pase a primer plano. Conservar la identidad no significa que el agente pueda recibir entrada mientras está suspendido; revisa el panel antes de enviarle un prompt.
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.
Si tu shell se conecta automáticamente a tmux siempre que TMUX no está definida, cambia esa regla de arranque para excluir los paneles de Herdr. Volver a conectar la sesión exterior de tmux desde dentro de un panel de Herdr puede encoger la terminal de forma recursiva y hacer que parpadee. Añade la comprobación de HERDR_ENV a tu condición actual antes de que ejecute tmux:
if [[ -z ${TMUX:-} && ${HERDR_ENV:-} != 1 ]]; then tmux new-session -A -s my-sessionfiEstado 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.
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.