Pular para o conteúdo

Loops e bubbles

Um bubble é um agente com um papel. Cada vez que o loop o alcança, o bubble faz uma passada: ele lê o que o bubble anterior repassou, trabalha (lendo arquivos, escrevendo código, executando comandos, conforme o seu papel permite) e termina com um veredito.

Os papéis:

Papel O que faz Pode escrever arquivos
Architect Planeja o trabalho e sua estrutura Apenas docs
Planner Divide o trabalho em cartões Não
Designer Escreve o DESIGN.md e fornece uma direção visual para o coder Apenas docs
Coder Escreve o código Sim
Reviewer Lê o trabalho, executa a revisão visual para aplicativos com interface Não
Tester Escreve e executa testes Sim
Fixer Repara o que uma revisão ou teste encontrou Sim
Documenter Escreve documentação Apenas docs
Researcher Pesquisa coisas na web Não
Security Verifica o trabalho em busca de vulnerabilidades Não
Creative, Feasibility Propõem ideias e as julgam, para quadros que geram seu próprio trabalho Não
Subloop Não executa nenhum agente. Abre um Sub-loop e direciona para ele (veja abaixo) Não
Wait Não executa nenhum agente. Mantém um loop em espera até que algo aconteça, como outro bolo terminar ou um cartão chegar Não
Custom Seu próprio bubble: entradas, saídas, propósito e o que tem permissão para fazer Conforme você configurar

Cada passada termina em um de quatro resultados:

  • PASS e PARTIAL são o julgamento do próprio agente de que o trabalho está bom ou parcialmente bom.
  • FAIL é o julgamento do agente de que não está. Um FAIL pode ser direcionado para um fixer.
  • ERROR significa que o agente nunca chegou a rodar: o provedor estava fora do ar, o modelo não pôde responder, uma configuração está faltando. Um ERROR decorrente de uma pane ou de uma configuração ausente nunca é direcionado para um fixer. Uma passada que esgota os passos é.

Arraste dois bubbles um sobre o outro e eles formam um loop. Arraste mais para o ring para adicioná-los. A ordem ao redor do ring é a ordem das passadas, e as conexões são desenhadas para você a partir dessa ordem.

Um Sub-loop fica pendurado em um bubble Subloop no seu loop principal. Quando a condição do bubble é atendida, o loop principal aguarda enquanto o Sub-loop roda, e então continua de onde parou. Por padrão, isso acontece quando o bubble anterior falha: uma revisão com falha vai para um Fixer, e o loop é retomado no bubble Subloop.

A opção Divert when do bubble Subloop escolhe a condição. Cada uma é exibida pelo seu código, com esta linha abaixo dela:

Divert when O que testa
ON_FAIL (o padrão) A etapa relatou uma falha
VULNERABILITY_FOUND A etapa relatou uma falha, o mesmo teste que ON_FAIL, nomeado para uma verificação de segurança
ON_PASS A etapa passou
TASKS_EMPTY Nada restante na fila

A etapa é o próprio bubble Subloop, que não executa nenhum agente: ele relata uma falha enquanto qualquer coisa antes dele no loop ainda estiver relatando uma, e passa assim que cada falha for respondida.

How often escolhe entre Every time the condition holds e Once, then stay on the main loop.

Cada loop que escreve código possui uma pasta dentro do projeto, e nenhum par de loops pode compartilhar a mesma. Os bubbles de um loop podem ler o projeto inteiro. As ferramentas de arquivo sempre mantêm um loop restrito à sua pasta. Seus comandos são mantidos lá pelo sistema operacional apenas com Sandbox agent commands ativado em Settings. Um loop sem nenhum bubble de escrita não precisa de pasta. Um Sub-loop escreve na pasta do seu loop principal.

Pressione Play no quadro para executar todos os loops, ou em um único loop para executar apenas aquele. Vários loops rodam ao mesmo tempo, cada um em sua própria faixa. Os loops compartilham trabalho por meio do Task Book e dos arquivos em disco, não por meio da conversa uns dos outros.

  • Pause permite que a passada em andamento termine; o botão então passa a exibir Stop, que para imediatamente e descarta essa passada.
  • Play após uma pausa continua de onde o loop parou.
  • Um loop nunca pega um cartão Draft; ele começa apenas em cartões Approved. Draft é onde você revisa o trabalho antes que qualquer loop comece a atuar nele.

Cada loop possui três limites definidos em suas configurações:

Limite Padrão Para o loop quando
Max loop executions 100 ele realizou este número de passadas
Max errors per step 8 um bubble falhou este número de vezes seguidas
Total loop error cap 15 o loop falhou este número de vezes no total

Um loop também para quando um bubble continua produzindo a mesma alteração, ou quando não há nada que ele possa fazer (por exemplo, todo cartão ainda está em Draft). Um loop parado indica o motivo em um aviso e em seu painel no canvas. Um loop com limite de taxa informa isso apenas em seu painel. Corrija a causa e pressione Play, o que limpa os contadores do loop e o executa novamente a partir de onde parou.

Limites de taxa e falhas no provedor não consomem os limites de erro, a menos que o loop esteja com Continue on error ativado. Um loop com limite de taxa aguarda e é retomado sozinho quando o provedor indica quanto tempo esperar; uma falha gera um aviso e aguarda você pressionar Play.