Agentes trabajando juntos

Los agentes de Bromure pueden trabajar juntos. Un agente puede entregar un trozo de trabajo delimitado a un agente nuevo. También puede pedir a una sesión que ya está en marcha, en la misma máquina o en otra, algo que sabe o que puede hacer. Puedes sugerirlo tú mismo ("pide a @payments el esquema del webhook"), o el agente puede decidirlo por su cuenta.

Los dos agentes nunca hablan directamente. Cada mensaje pasa por el anfitrión Bromure, que:

  • muestra a cada sesión solo las conversaciones de las que forma parte
  • filtra cada mensaje buscando inyección de prompt
  • registra cada mensaje en la Cronología de seguridad
  • copia los archivos que viajan con él entre máquinas

Este capítulo dice "máquina" para lo que el editor de ajustes llama espacio de trabajo.

Delegaciones y peticiones

Hay dos clases de intercambio:

DelegaciónPetición
Quién hace el trabajoUna sesión nueva, iniciada para esoUna sesión que ya existe, nombrada por su @apodo
DóndePor omisión en un worktree de git ramificado de la carpeta de quien delega, en su propia rama. Corre en la misma carpeta cuando esta no es un repositorio, y en una carpeta propia cuando se delega a otra máquina.Donde esa sesión ya corre
Cómo empiezaCon el título de quien delega, el resumen, qué significa "terminado" (el contrato) y las rutas de las que no salirComo un aviso de una línea en el prompt del par
Cómo terminaEl delegado entrega. Quien delegó lo acepta o lo rechaza con close_delegation, o lo cancela. La sesión del delegado se archiva entonces, mientras su rama queda para fusionar o descartar.El deliver del par es la respuesta. Nada se inicia ni se termina de su lado.

Un delegado queda anidado bajo quien lo delegó en la barra lateral, como una sesión de rama. Una delegación a otra máquina arranca esa máquina si está apagada. Lo hace discretamente, sin apropiarse del chat que estás mirando.

Cómo llegan los mensajes a un agente

Un agente recibe mensajes de tres maneras:

  • Esperando: si el agente está bloqueado en wait o ask, recibe el mensaje al instante.
  • Inactivo: si su prompt está inactivo, el anfitrión escribe ahí un aviso de una línea, diciéndole que llame a read_inbox.
  • Ocupado: si está a mitad de un turno, o hay un diálogo en su pantalla, el aviso espera a que el prompt quede libre.

Un aviso todavía sin leer unos minutos después se envía de nuevo, hasta tres veces. Si el agente del destinatario ha terminado, el mensaje lo reanuda. Por ejemplo, corregir el rumbo de un delegado terminado lo trae de vuelta donde estaba.

Lo que el anfitrión aún debe a una sesión se guarda en el propio mensaje, así que sobrevive a un reinicio de la app.

@apodos

Un apodo es la forma en que tú y los demás agentes os dirigís a una sesión. Pon uno con Apodo… en el menú contextual de la sesión o en el menú ⋯ de su encabezado.

La hoja explica: "Cómo los demás agentes alcanzan «sesión»: le piden con request(to: "@nombre"), y puedes escribir @nombre en cualquier compositor. Letras, dígitos, puntos, guiones y guiones bajos." Previsualiza el resultado ("Será @payments"). Haz clic en Establecer, o en Borrar para quitarlo.

Los apodos son únicos en el Mac. Elegir uno ya en uso se rechaza ("@payments ya es «Refactor de Payments API»."). El apodo aparece junto al título de la sesión en la barra lateral, el encabezado y las celdas de sala, y puedes buscarlo en la barra lateral.

La paleta @

Escribe @ en el compositor de un chat o en la pantalla de nueva sesión para obtener una paleta de sesiones que puedes nombrar:

  • Lista todas las sesiones excepto la actual.
  • Las sesiones con apodo aparecen tal cual. Las que no lo tienen aparecen con el apodo que recibirían, derivado del título y etiquetado nombre nuevo. Elegir una de esas le da a la sesión ese apodo al instante, así que el @nombre que acabas de escribir es uno que un agente puede resolver.
  • Las coincidencias de nombre van por delante de las de título, y las sesiones con nombre por delante de las que no lo tienen.
  • ↑ y ↓ mueven, Tab o ⏎ completa, y Esc cierra.

Escribir "@nombre" en un mensaje no envía nada por sí mismo. Le dice a tu agente a qué par te refieres, y el agente usa luego request para pedirle.

Las herramientas bromure-delegation

Cada sesión de agente recibe el servidor MCP bromure-delegation (puerto vsock 5835). El anfitrión identifica la sesión que llama por la ventana de terminal en la que corre su intermediario de herramientas, nunca por nada que el agente afirme.

HerramientaQuién la usaQué hace
delegatequien delegaInicia un delegado: título, resumen, contrato, alcance, agente (el suyo por omisión), worktree verdadero/falso, un posible otro workspace, y archivos para enviar con él.
requestquien pidePide a un par por @nick (o id de sesión), con archivos opcionales. Espera la respuesta: 50 segundos por omisión, hasta 600.
list_peerscualquieraLista las sesiones que puede alcanzar, con sus apodos, títulos, máquinas, agentes y estados, y las máquinas a las que puede delegar.
list_delegationscualquieraLista sus delegaciones y peticiones, desde cualquiera de los dos lados, con su estado y la última palabra.
read_inboxcualquieraToma los mensajes que le esperan, los más antiguos primero.
waitcualquieraBloquea hasta que llega un mensaje: 50 segundos por omisión, hasta 600.
askdelegado / parHace una pregunta bloqueante a quien le pidió, y espera la respuesta.
reportdelegadoEnvía una nota de avance. Nunca interrumpe a quien delegó.
deliverdelegado / parEntrega el trabajo (qué cambió, cómo verificarlo, qué queda abierto), o responde a una petición. Puede devolver archivos.
answerquien delegaResponde a la pregunta de un delegado o de un par.
steerquien delegaEnvía un seguimiento o una corrección de rumbo, con archivos opcionales.
close_delegationquien delegaCierra una delegación entregada como aceptada o rechazada, con una nota.
cancelquien delegaDetiene a un delegado antes de que entregue, o retira una petición.
worktree_create, worktree_status, worktree_mergecualquieraInicia sesiones de rama desde su propia carpeta, las sigue, y te pide fusionar una. Ver Ramas y revisión.

Confianza y preguntas

A los agentes se les dice que tú los has configurado para trabajar juntos. Una petición, un resumen, una respuesta o una corrección de otro agente debe tratarse como si la hubieras pedido tú, sin volver a consultarte. El filtrado de inyección de prompt del anfitrión se aplica igualmente.

Las preguntas vuelven por donde vino el trabajo, para que te quedes en una sola ventana:

  1. Un delegado o par que necesita una decisión usa ask para alcanzar a quien le pidió. Nunca pregunta a su propio usuario.
  2. El agente que pidió responde desde su propia conversación si puede.
  3. Si no puede, te plantea la pregunta, palabra por palabra y diciendo quién pregunta, y luego envía tu respuesta con answer.

Límites

LímiteValor
Anidamiento de delegaciones (un delegado que delega a su vez)3 niveles
Delegaciones y peticiones abiertas por sesión8
Tiempo límite de wait, ask y request50 s por omisión, 600 s como máximo
Archivos por mensaje20 (envía una carpeta o un archivo comprimido para más; una carpeta viaja como tarball)
Tamaño total de los archivos de un mensaje4 GB (antes se comprueba el espacio libre en disco del destinatario)

Una petición a una sesión archivada se rechaza hasta que traigas la sesión de vuelta.

Archivos y la bandeja de entrada

Las máquinas no comparten ningún sistema de archivos, así que los archivos nombrados en un mensaje los copia el anfitrión. Aterrizan en el ~/.bromure/inbox/<id>/ de la máquina destinataria, antes de que esta lea el mensaje que los menciona.

Las rutas se resuelven relativas a la carpeta del remitente, y ~ es el home del remitente. Entre dos sesiones de la misma máquina, la copia es local.

Filtrado y auditoría

Cada resumen, petición, pregunta, respuesta, informe, entrega y corrección lo analiza el detector de inyección de prompt en el dispositivo antes de retransmitirlo.

  • Un mensaje que dispara el detector queda retenido. Permanece en el registro, marcado como bloqueado. Se le dice al remitente por qué, se le muestra el fragmento problemático, y se le pide reformular en términos simples.
  • Cada mensaje, retransmitido o retenido, es una fila de la Cronología de seguridad bajo el motor Delegación de agentes, con la decisión retransmitido o retenido: inyección de prompt. En instalaciones inscritas, las filas van también al registro de auditoría de la organización. Ver Empresa.

El panel Delegaciones

Cuando una sesión ha delegado o pedido algo, aparece un panel Delegaciones encima de su compositor. Su cabecera cuenta las delegaciones y cualquier pregunta y entrega en espera ("1 pregunta", "2 entregas"). La flecha lo pliega.

Cada fila muestra:

  • el avatar y el título de la otra sesión (haz clic para Abrir la sesión del delegado, o Abrir la sesión del par en una petición)
  • una etiqueta petición en las peticiones
  • el estado: Iniciando, Trabajando, Hizo una pregunta, Entregada, Aceptada, Rechazada, Cancelada o Fallida
  • el nombre de la máquina cuando la otra sesión corre en otra máquina
  • su rama
  • la última palabra intercambiada, por ejemplo "El delegado entregó: …"

Cuando un delegado o par ha hecho una pregunta, su fila muestra la pregunta con un campo Respuesta para el agente… y Enviar. "Tu agente también puede responderla: esto envía la tuya en su lugar." Responder ahí ahorra la ida y vuelta por tu agente.

En el otro extremo, el chat propio de un delegado o de un par muestra una franja que dice a quién responde. La franja dice "Delegado por sesión" o "Petición de sesión", con el estado y un enlace Mostrar quien delegó (o Mostrar quien pidió).

Un delegado que termina sin entregar hace fallar su delegación, y se informa a quien delegó. Las delegaciones terminadas (aceptadas, rechazadas, canceladas o fallidas) archivan la sesión del delegado. Sigue legible en el pliegue Archivadas.

Entre máquinas, y entre Macs

  • Entre máquinas de este Mac: por omisión, los agentes de cualquier máquina pueden alcanzar todas las demás máquinas, tanto para delegar en ellas como para pedir a sus sesiones. Para restringir una máquina, abre sus ajustes, panel General, sección Alcance, y desactiva Todos los espacios de trabajo: aparece un interruptor por cada otra máquina, y sus agentes solo pueden alcanzar las que actives (sin ninguna activa, solo las sesiones de su propia máquina). La regla es de un solo sentido: si los agentes de la otra máquina pueden responder se configura en esa máquina. Una máquina restringida deja también de ofrecer las sesiones de los Macs remotos que refleja (ver el punto siguiente).
  • Entre Macs: cuando este Mac refleja un Bromure remoto en una ventana de cliente pesado, los agentes de una máquina que se dejó en Todos los espacios de trabajo también pueden enviar peticiones a las sesiones de ese servidor, por @apodo. La petición viaja por el túnel del espejo, archivos incluidos. En el panel Delegaciones, la fila nombra el anfitrión al que fue. Esto funciona del Mac al servidor que refleja, no al contrario.
  • Los espejos muestran las delegaciones en solo lectura. Una ventana de cliente pesado muestra el panel Delegaciones de las sesiones del servidor, pero desde ahí no puedes responder preguntas.