Loops

Um loop é um gatilho e uma instrução. Tudo o que o TaskGoblin faz é um — code review, captura de issues, limpeza noturna — e é por isso que o trabalho acontece sem ninguém precisar lembrar de pedir.

A maioria das ferramentas de IA para código gira em torno de um prompt. Você descreve o que quer, um agente responde, e a troca acaba. Isso funciona até o momento em que o que vale deixa de ser uma boa resposta e passa a ser o mesmo trabalho acontecendo de forma confiável, sempre, sem ninguém precisar lembrar de pedir.

O TaskGoblin é construído em torno de um loop.

Um loop é um gatilho e uma instrução

Essa é a primitiva inteira.

  • Um gatilho decide quando os goblins acordam. É um evento — um pull request foi aberto, uma issue foi atribuída ao goblin — ou um agendamento: todo dia útil às 07:00.
  • Uma instrução é texto livre dizendo o que fazer quando isso acontecer. "Revise este merge request quanto a correção e segurança — aponte problemas reais, não detalhes de estilo que um linter pegaria." "Atualize dependências seguras de patch e minor, rode os testes e abra um MR por ecossistema."

Junte os dois e você não tem mais um pedido: tem uma capacidade permanente. Ninguém precisa estar no teclado e ninguém precisa lembrar.

Tudo é um loop

Isto não é um recurso ao lado do produto — é o produto. Os comportamentos que você assumiria serem mágica interna são loops comuns:

O que se vê de fora O loop por baixo
Todo pull request é revisado Um loop de evento em pull request aberto
Você atribui uma issue e recebe um merge request Um loop de evento em issue atribuída
As dependências ficam em dia sem ticket Um loop agendado toda segunda às 08:00
A documentação nunca desanda em relação ao código Um loop agendado toda quarta
Um resumo do que andou chega no Slack toda manhã Um loop agendado às 09:00

Ao conectar GitLab ou GitHub, o TaskGoblin instala um conjunto inicial — é por isso que o code review começa a funcionar antes de você configurar qualquer coisa. Eles não são especiais: abra, leia a instrução, reescreva com suas palavras, pause ou apague.

Um turno de um loop

Todo turno funciona igual, seja disparado por webhook ou por relógio, seja o primeiro ou o quingentésimo:

  1. Dispara. O gatilho casa. O TaskGoblin abre — ou reaproveita — uma thread para aquele trabalho.
  2. Contexto. O goblin lê a issue, a thread, o diff, as convenções da sua organização e as notas deixadas pelos goblins anteriores, antes de tocar em qualquer coisa.
  3. Trabalho. Roda dentro de um sandbox isolado na nuvem com uma cópia do seu repositório: lê arquivos, edita, roda comandos e testes.
  4. Entrega. Abre um merge request, deixa comentários de review inline, ou responde na thread — onde aquele trabalho pertence.
  5. Passagem de bastão. Anota o que aprendeu e o que ficou em aberto, para o próximo turno começar dali e não do zero.

O passo 5 é o que separa um loop de um cron. Cada turno é informado pelos anteriores: um loop que roda toda semana por um ano não é o mesmo loop cem vezes — é um que vem prestando atenção.

Por que um loop ganha de um prompt

  • Roda sem você. O trabalho já está feito quando você olha, em vez de esperar alguém notar que precisava ser feito.
  • É revisável. Todo turno termina em uma branch e um merge request, revisados como os de um colega. Nada faz merge sozinho.
  • Acumula. Corrija um goblin uma vez e a correção fica escrita para todos os seguintes.
  • Tem interruptor. Um loop é uma linha que pertence a você. Pause e o comportamento para na hora.

Onde os loops vivem

Gerencie na área Loops da sua organização (/{organisation}/loops). Cada loop tem sua página: a instrução, o gatilho, um botão de Ativo e o histórico das execuções recentes, para você ver o que ele realmente fez em vez de confiar que disparou.

Goblins também criam loops sozinhos no meio de uma execução. Um que perceba você pedindo a mesma coisa toda sexta pode propor o loop que elimina o pedido.

Para onde ir agora