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:
- Dispara. O gatilho casa. O TaskGoblin abre — ou reaproveita — uma thread para aquele trabalho.
- 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.
- Trabalho. Roda dentro de um sandbox isolado na nuvem com uma cópia do seu repositório: lê arquivos, edita, roda comandos e testes.
- Entrega. Abre um merge request, deixa comentários de review inline, ou responde na thread — onde aquele trabalho pertence.
- 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
- Loops de evento — loops que disparam num pull request, numa issue atribuída ou numa label, e os que você já tem.
- Loops agendados — loops por cadência, e os templates para começar.
- Execuções pontuais — os pedidos diretos que não são loops, e como saber quando um quer virar loop.
- Como uma execução funciona — o que acontece dentro de um único turno.