Agentes a trabalhar em conjunto

Os agentes no Bromure podem trabalhar em conjunto. Um agente pode entregar um pedaço de trabalho delimitado a um agente novo. Também pode pedir a uma sessão que já está em execução, na mesma máquina ou noutra, algo que ela sabe ou pode fazer. Pode sugeri-lo você mesmo («pede a @payments o esquema do webhook»), ou o agente pode decidi-lo por si.

Os dois agentes nunca falam diretamente. Cada mensagem passa pelo anfitrião Bromure, que:

  • mostra a cada sessão apenas as conversas de que faz parte
  • filtra cada mensagem em busca de injeção de prompt
  • registra cada mensagem na Linha do tempo de segurança
  • copia os ficheiros que viajam com ela entre máquinas

Este capítulo diz «máquina» para aquilo a que o editor de definições chama espaço de trabalho.

Delegações e pedidos

Há dois tipos de troca:

DelegaçãoPedido
Quem faz o trabalhoUma sessão nova, iniciada para issoUma sessão que já existe, nomeada pelo seu @apelido
OndePor omissão numa worktree git ramificada da pasta de quem delega, no seu próprio ramo. Corre na mesma pasta quando esta não é um repositório, e numa pasta própria quando a delegação vai para outra máquina.Onde essa sessão já corre
Como abreCom o título de quem delega, o resumo, o que «terminado» significa (o contrato) e os caminhos de onde não sairComo um aviso de uma linha na linha de comando do par
Como terminaO delegado entrega. Quem delegou aceita ou rejeita com close_delegation, ou cancela. A sessão do delegado é então arquivada, enquanto o seu ramo fica para integrar ou descartar.O deliver do par é a resposta. Nada é iniciado nem terminado do lado dele.

Um delegado fica aninhado sob quem o delegou na barra lateral, como uma sessão de ramo. Uma delegação para outra máquina arranca essa máquina se estiver desligada. Fá-lo discretamente, sem tomar conta do chat que está a ver.

Como as mensagens chegam a um agente

Um agente recebe mensagens de três formas:

  • À espera: se o agente está bloqueado em wait ou ask, recebe a mensagem de imediato.
  • Inativo: se a sua linha de comando está inativa, o anfitrião escreve lá um aviso de uma linha, a dizer-lhe que chame read_inbox.
  • Ocupado: se está a meio de uma vez, ou há um diálogo no ecrã dele, o aviso espera que a linha de comando fique livre.

Um aviso ainda não lido alguns minutos depois é enviado de novo, até três vezes. Se o agente do destinatário tiver terminado, a mensagem retoma-o. Por exemplo, orientar um delegado terminado traz-no de volta ao ponto onde estava.

O que o anfitrião ainda deve a uma sessão é guardado na própria mensagem, pelo que sobrevive a um reinício da aplicação.

@apelidos

Um apelido é a forma como você e os outros agentes se dirigem a uma sessão. Defina um com Apelido… no menu de contexto da sessão ou no menu ⋯ do seu cabeçalho.

A folha explica: «Como os outros agentes alcançam «sessão»: pedem-lhe com request(to: "@nome"), e pode escrever @nome em qualquer compositor. Letras, dígitos, pontos, traços e sublinhados.» Pré-visualiza o resultado («Será @payments»). Clique em Definir, ou em Limpar para o remover.

Os apelidos são únicos no Mac. Escolher um já em uso é recusado («@payments já é «Refatoração da Payments API».»). O apelido aparece ao lado do título da sessão na barra lateral, no cabeçalho e nas células de sala, e pode procurá-lo na barra lateral.

A paleta @

Escreva @ no compositor de um chat ou no ecrã de nova sessão para obter uma paleta de sessões que pode nomear:

  • Lista todas as sessões exceto a atual.
  • As sessões com apelido aparecem como estão. As que não têm aparecem com o apelido que receberiam, derivado do título e marcado nome novo. Escolher uma dessas dá à sessão esse apelido na hora, pelo que o @nome que acabou de escrever é um que um agente consegue resolver.
  • As correspondências de nome ficam acima das de título, e as sessões nomeadas acima das que não o são.
  • ↑ e ↓ movem, Tab ou ⏎ completa, e Esc fecha.

Escrever «@nome» numa mensagem não envia nada por si. Diz ao seu agente a que par se refere, e o agente usa depois request para lhe pedir.

As ferramentas bromure-delegation

Cada sessão de agente recebe o servidor MCP bromure-delegation (porta vsock 5835). O anfitrião identifica a sessão que chama pela janela de terminal em que corre o intermediário das ferramentas, nunca por nada que o agente afirme.

FerramentaQuem a usaO que faz
delegatequem delegaInicia um delegado: título, resumo, contrato, âmbito, agente (o seu próprio, por omissão), worktree verdadeiro/falso, um eventual outro workspace, e ficheiros a enviar com ele.
requestquem pedePede a um par por @nick (ou id de sessão), com ficheiros opcionais. Espera pela resposta: 50 segundos por omissão, até 600.
list_peersqualquer umLista as sessões que consegue alcançar, com apelidos, títulos, máquinas, agentes e estados, e as máquinas para as quais pode delegar.
list_delegationsqualquer umLista as suas delegações e pedidos, de qualquer dos lados, com o estado e a última palavra.
read_inboxqualquer umRecolhe as mensagens que o esperam, as mais antigas primeiro.
waitqualquer umBloqueia até chegar uma mensagem: 50 segundos por omissão, até 600.
askdelegado / parFaz uma pergunta bloqueante a quem lhe pediu, e espera pela resposta.
reportdelegadoEnvia uma nota de progresso. Nunca interrompe quem delegou.
deliverdelegado / parEntrega o trabalho (o que mudou, como verificá-lo, o que fica em aberto), ou responde a um pedido. Pode devolver ficheiros.
answerquem delegaResponde à pergunta de um delegado ou de um par.
steerquem delegaEnvia um seguimento ou uma correção de rumo, com ficheiros opcionais.
close_delegationquem delegaFecha uma delegação entregue como aceita ou rejeitada, com uma nota.
cancelquem delegaPára um delegado antes de ele entregar, ou retira um pedido.
worktree_create, worktree_status, worktree_mergequalquer umInicia sessões de ramo a partir da sua própria pasta, acompanha-as, e pede-lhe para integrar uma. Ver Ramos e revisão.

Confiança e perguntas

Aos agentes é dito que você os configurou para trabalharem em conjunto. Um pedido, resumo, resposta ou correção de outro agente deve ser tratado como se tivesse sido você a pedi-lo, sem voltar a consultá-lo. A filtragem de injeção de prompt do anfitrião aplica-se de qualquer forma.

As perguntas voltam pelo caminho por onde veio o trabalho, para que fique numa só janela:

  1. Um delegado ou par que precisa de uma decisão usa ask para alcançar quem lhe pediu. Nunca pergunta ao seu próprio utilizador.
  2. O agente que pediu responde a partir da sua própria conversa, se puder.
  3. Se não puder, põe-lhe a pergunta, palavra por palavra e dizendo quem pergunta, e devolve depois a sua resposta com answer.

Limites

LimiteValor
Encadeamento de delegações (um delegado que delega mais)3 níveis
Delegações e pedidos abertos por sessão8
Tempo limite de wait, ask e request50 s por omissão, 600 s no máximo
Ficheiros por mensagem20 (envie uma pasta ou um arquivo para mais; uma pasta viaja como tarball)
Tamanho total dos ficheiros de uma mensagem4 GB (verificado primeiro face ao espaço livre em disco do destinatário)

Um pedido a uma sessão arquivada é recusado até a trazer de volta.

Ficheiros e a caixa de entrada

As máquinas não partilham qualquer sistema de ficheiros, pelo que os ficheiros nomeados numa mensagem são copiados pelo anfitrião. Aterram em ~/.bromure/inbox/<id>/ da máquina destinatária, antes de ela ler a mensagem que os menciona.

Os caminhos são resolvidos em relação à pasta do remetente, e ~ é a home do remetente. Entre duas sessões na mesma máquina, a cópia é local.

Filtragem e auditoria

Cada resumo, pedido, pergunta, resposta, relatório, entrega e correção é analisado pelo detetor de injeção de prompt no dispositivo antes de ser retransmitido.

  • Uma mensagem que faça disparar o detetor é retida. Fica no registo, marcada como bloqueada. O remetente é informado do motivo, é-lhe mostrado o fragmento problemático, e é-lhe pedido que reformule em termos simples.
  • Cada mensagem, retransmitida ou retida, é uma linha na Linha do tempo de segurança sob o motor Delegação de agentes, com a decisão retransmitida ou retida — injeção de prompt. Em instalações inscritas, as linhas vão também para o registo de auditoria da organização. Ver Empresa.

O painel Delegações

Quando uma sessão delegou ou pediu algo, aparece um painel Delegações acima do seu compositor. O cabeçalho conta as delegações e quaisquer perguntas e entregas à espera («1 pergunta», «2 entregas»). A seta recolhe-o.

Cada linha mostra:

  • o avatar e o título da outra sessão (clique para Abrir a sessão do delegado, ou Abrir a sessão do par num pedido)
  • uma etiqueta pedido nos pedidos
  • o estado: Iniciando, A trabalhar, Fez uma pergunta, Entregue, Aceita, Rejeitada, Cancelada ou Falhou
  • o nome da máquina quando a outra sessão corre noutra máquina
  • o seu ramo
  • a última palavra trocada, por exemplo «O delegado entregou: …»

Quando um delegado ou par fez uma pergunta, a sua linha mostra a pergunta com um campo Resposta para o agente… e Enviar. «O seu agente também lhe pode responder — isto envia a sua em vez da dele.» Responder aí poupa a ida e volta pelo seu agente.

Na outra ponta, o chat do próprio delegado ou par mostra uma faixa a dizer a quem responde. A faixa diz «Delegado por sessão» ou «Pedido de sessão», com o estado e uma ligação Mostrar quem delegou (ou Mostrar quem pediu).

Um delegado que termina sem entregar faz falhar a sua delegação, e quem delegou é informado. As delegações terminadas (aceitas, rejeitadas, canceladas ou falhadas) arquivam a sessão do delegado. Ela continua legível na dobra Arquivadas.

Entre máquinas, e entre Macs

  • Entre máquinas deste Mac: por omissão, os agentes de qualquer máquina podem alcançar todas as outras máquinas, tanto para delegar para lá como para pedir às suas sessões. Para restringir uma máquina, abra as suas definições, painel Geral, secção Alcance, e desligue Todos os espaços de trabalho: aparece um interruptor por cada outra máquina, e os agentes dela só podem alcançar as que ligar (com nenhuma ligada, só as sessões da própria máquina). A regra é de sentido único: se os agentes da outra máquina podem responder define-se nessa máquina. Uma máquina restringida deixa também de oferecer as sessões dos Macs remotos que espelha (ver o ponto seguinte).
  • Entre Macs: quando este Mac espelha um Bromure remoto numa janela de cliente pesado, os agentes de uma máquina que ficou em Todos os espaços de trabalho também podem enviar pedidos às sessões desse servidor, por @apelido. O pedido viaja pelo túnel do espelho, ficheiros incluídos. No painel Delegações, a linha nomeia o anfitrião a que foi. Isto funciona do Mac para o servidor que ele espelha, não no sentido inverso.
  • Os espelhos mostram as delegações apenas para leitura. Uma janela de cliente pesado mostra o painel Delegações das sessões do servidor, mas não pode responder a perguntas a partir de lá.