Subagents
Mostre o trabalho que um agente passa para outros agentes, uma linha por execução. Cada execução diz o que está fazendo agora e se recolhe em um resumo curto ao terminar. Execuções em paralelo compartilham um cabeçalho com progresso ao vivo, e cada uma pode ser parada, repetida e aberta para ver suas chamadas de ferramentas e o relatório.
Agentes de programação como Claude Code, Codex e Cursor passam partes de um trabalho para outros agentes, muitas vezes vários ao mesmo tempo. Subagents dá a cada uma dessas execuções uma linha que se lê como alguém delegando: o agente, a tarefa em palavras simples, um rótulo ao vivo do que ele está fazendo (“Reading auth/session.ts”), um cronômetro e quantas ferramentas ele usou.
As execuções começam recolhidas, para que uma resposta cheia de trabalho continue curta. Cada linha continua dizendo o que sua execução está fazendo, e ao abri-la as chamadas de ferramentas aparecem numa janela curta que acompanha o passo mais recente. Quando uma execução termina, a linha vira um resumo no passado como “Mapped the token refresh flow · 14 tool uses · 32s”, com a primeira frase do relatório embaixo e o relatório completo dentro.
Execuções em paralelo compartilham um cabeçalho que mostra “Running 3 agents” com uma barra de progresso e depois “3 agents finished in 48s”. Uma execução pode estar na fila, em andamento, concluída, com falha e motivo e Retry, parada ou rodando em segundo plano. getSubagentFromPart lê uma ferramenta do AI SDK cuja saída transmite as mensagens do próprio subagente, e os passos aninhados são exibidos com Tool Calls e o relatório com Markdown.
Obtenha o HextaUI Pro
Um único pagamento libera todos os blocos, incluindo os futuros. Ver preços.
Adicione o registro Pro ao components.json
components.json Adicione seu token
Crie um token na sua página de conta e coloque-o em
.env.localcomoHEXTAUI_PRO_TOKEN.Adicione o bloco
pnpm dlx shadcn@latest add @hextaui-pro/subagents
Com o AI SDK
Transforme o subagente numa ferramenta cujo execute é um gerador assíncrono que entrega as mensagens de UI do subagente, para que cada uma chegue como saída preliminar. getSubagentFromPart transforma essa parte numa execução, as partes de ferramentas aninhadas em passos do Tool Calls e o texto depois da última chamada de ferramenta no relatório. Mantenha a ferramenta no servidor e a renderização num componente de cliente.
Execuções em paralelo
Passe várias execuções para Subagents para ter um cabeçalho com progresso ao vivo e Stop all. Ligue onStop e onRetry ao que executa os agentes, e o botão da linha alterna entre os dois conforme o status da execução muda.
A partir de dados salvos
Exiba uma execução concluída do histórico com props simples. Uma duração salva substitui o cronômetro ao vivo, e o relatório fica a um clique.
Anatomia
As partes que você compõe, de fora para dentro.
| Parte | Descrição |
|---|---|
Subagents | Um grupo de execuções com um cabeçalho de resumo, progresso, Stop all e anúncios. |
Subagent | Uma execução: marca de status, agente, tarefa, rótulo ao vivo, contagem de ferramentas, cronômetro e o botão Stop ou Retry. |
SubagentMark | A marca de status sozinha: um orbe durante a execução e depois um check, um alerta ou um ícone de parada. |
getSubagentFromPart | Converte uma parte de ferramenta do AI SDK com mensagens de subagente em streaming numa execução. |
Subagents
Também aceita qualquer prop de section, exceto children. Uma única execução é exibida sem cabeçalho.
| Prop | Tipo | Padrão |
|---|---|---|
runsExecuções na ordem em que começaram. Elas mantêm o lugar ao terminar. | SubagentProps[] | – |
labelDá nome à região e à barra de progresso. | string | "Subagents" |
durationTotal de segundos salvos, para o histórico. Por padrão, o tempo medido enquanto as execuções trabalhavam. | number | – |
defaultOpenComeça com as execuções listadas sob o cabeçalho. | boolean | true |
onStopAllChamada pelo Stop all. Sem ela, o Stop all chama o onStop de cada execução em andamento. | () => void | – |
Subagent
Também aceita qualquer prop de div, exceto children.
| Prop | Tipo | Padrão |
|---|---|---|
idId estável, geralmente o toolCallId. | string | – |
taskO que o agente foi chamado a fazer, em poucas palavras: “Map the token refresh flow”. | string | – |
statusqueued, running, done, failed ou stopped. | SubagentStatus | – |
agentO tipo ou nome do agente, como Explore ou Plan. | string | – |
titleSubstitui a tarefa na linha enquanto a execução trabalha. | string | – |
doneTitleA linha ao terminar. Por padrão, a tarefa no passado quando a primeira palavra é um verbo conhecido. | string | – |
promptAs instruções completas, exibidas no topo ao abrir. | string | – |
callsOs passos da execução, exibidos com Tool Calls. | ToolCallProps[] | – |
activitySubstitui o rótulo ao vivo, que, caso contrário, vem do passo ativo mais recente. | string | – |
resultO relatório final, em Markdown. | string | – |
resultStreamingO relatório ainda está chegando. | boolean | – |
previewUma linha para a execução recolhida. Por padrão, a primeira frase do relatório. | string | – |
errorPor que a execução falhou, mostrado na linha e por completo ao abrir. | string | – |
toolUsesSubstitui a contagem, que por padrão é o número de chamadas. | number | – |
modelExibido como badge em telas mais largas. | string | – |
durationSegundos salvos, para o histórico. | number | – |
startedAtQuando uma execução que já está trabalhando começou, em milissegundos, para o cronômetro não reiniciar ao montar. | number | – |
backgroundA execução continua trabalhando enquanto o chat segue. Ela mostra um badge Background e fica recolhida. | boolean | – |
defaultOpenComeça a execução aberta, com as chamadas de ferramentas e o relatório. | boolean | false |
onStopMostra Stop enquanto a execução está na fila ou em andamento. | () => void | – |
onRetryMostra Retry quando a execução falhou ou foi parada. | () => void | – |
getSubagentFromPart(part, options)
Retorna uma execução a partir de uma parte de ferramenta. Passe o resultado direto para Subagent ou para as runs de Subagents.
| Prop | Tipo | Padrão |
|---|---|---|
partA parte de ferramenta do subagente. A saída é uma mensagem de UI cujas partes contêm raciocínio, chamadas de ferramentas e texto. | ToolUIPart | DynamicToolUIPart | – |
options.stoppedO chat parou, então uma execução inacabada mostra Stopped. | boolean | false |
options.describeToolAdiciona um tipo, um alvo ou uma visualização para cada ferramenta aninhada. Nomes comuns como readFile, grep e bash são deduzidos para você. | (part) => Partial<ToolCallProps> | – |
options.agentNome do agente. Por padrão, subagent_type na entrada e, depois, o nome da ferramenta. | string | – |
options.modelBadge do modelo. Por padrão, model nos metadados da mensagem. | string | – |
| Tecla | Ação |
|---|---|
| EnterSpace | Abre ou fecha uma execução, ou a lista sob o cabeçalho do grupo. |
| Tab | Vai de uma execução para o botão Stop ou Retry dela, e do cabeçalho para Stop all. |
- O cabeçalho de cada execução é um botão com aria-expanded cujo nome lê o agente, a tarefa, o rótulo ao vivo, a contagem de ferramentas e o tempo.
- O grupo é uma região nomeada com aria-busy enquanto os agentes trabalham. Uma região ao vivo educada anuncia quando uma execução recomeça, termina, falha ou para, e depois o resumo do grupo. Passos de ferramentas e os ticks do cronômetro ficam em silêncio.
- Stop e Retry são botões de verdade com o nome da execução, como “Stop Explore: Map the token refresh flow”. Quando um botão some, o foco volta para o cabeçalho da execução.
- O status nunca depende só da cor: cada estado tem sua própria marca e texto. Com movimento reduzido, o orbe fica parado e as linhas mudam sem deslizar.
Construído com
Os componentes gratuitos do HextaUI de que Subagents é feito. Cada um é instalado separadamente.
Código
6 arquivos, adicionados a components/blocks/subagents.