Guias

Website com autorreparação: um agente de IA que repara o que consegue verificar

Um agente de IA para um website com autorreparação é um ciclo agendado que lê o site tal como um leitor o recebe, regista cada defeito como um bug e põe um agente num ambiente isolado a reparar o que consegue reescrever e verificar de novo, e deixa o resto para uma pessoa. O ConvOps gere o varrimento semanal, o pool de bugs e a reparação de cada bug.

DM

David Marsa

Founder & CEO

Intermédio14 min de leituraPublicado em 08/10/2026

Última verificação: 08/10/2026

Ferramentas e modelos abordados:Claude CodeOpenCodeClaude Sonnet 5.5
O website como uma casa: um varrimento semanal assinala janelas partidas, um agente de IA arranja e volta a verificar o que consegue, uma fica à espera de uma pessoa e um escudo trava as repetições.

O que vai conseguir fazer

  • Definir nomes de regra fixos e um auditor que só reporta e devolve página, regra e detalhe, registados como bugs sem duplicados.
  • Guardar a consulta de bugs abertos como um pool e escolher o executor que recolhe a partir dele.
  • Escrever um ambiente isolado com privilégios mínimos: um repositório, listas de ferramentas permitidas, escritas só na própria tarefa, referências a credenciais, um limite de despacho.
  • Encaminhar os bugs para vias de reparação e para uma via de espera, e verificar cada escrita com um novo lint antes de fechar.
  • Manter um registo de prevenção que transforma deteções repetidas em verificações no momento da escrita.

Pontos-chave

  • Um agente de IA de autorreparação lê o que o leitor recebe, regista cada defeito como um bug e só repara o que consegue reescrever através da API do CMS e depois verificar de novo.
  • Mantenha separados o encontrar e o corrigir: um varrimento que só reporta regista bugs, e cada bug tem a sua própria execução de reparação no seu próprio ambiente isolado.
  • É a mecânica que decide a segurança: um pool decide o que é trabalhado, o ambiente decide aquilo em que o agente pode tocar, o fluxo de trabalho decide quando está concluído.
  • Uma reparação só conta depois de passar a nova verificação: um novo lint limpo do artigo guardado, um carimbo de verificação atualizado ou HTTP 200 com o conteúdo próprio da página; tudo o que o agente não consegue verificar fica à espera de uma pessoa.
  • Um defeito que está sempre a voltar pertence a uma recusa no momento da escrita, não ao varrimento da semana seguinte.

O que faz o ciclo do website com autorreparação

Um website só se repara sozinho onde o agente consegue provar a correção, e construímos todo o mecanismo à volta dessa fronteira. O nosso agente de IA de autorreparação faz um varrimento semanal ao site publicado, regista cada defeito como um bug e envia cada bug para a sua própria execução num ambiente isolado. Essa execução reescreve o que pode através da API do CMS, volta a verificar a página guardada e só fecha o bug se a verificação estiver limpa. O ConvOps gere o agendamento, a fila de bugs e os dois fluxos de trabalho. É um dos ciclos com que gerimos a nossa empresa.

Um website com autorreparação é um site em que um agente encontra os defeitos visíveis para o leitor e repara os que consegue verificar, e deixa os restantes para uma pessoa. Não é um conjunto de testes com autorreparação: esses reparam seletores nos testes, enquanto este ciclo repara o conteúdo que o leitor vê.

Todos os ecrãs e números abaixo usam dados de exemplo da Shutterlane, um site fictício de análises de material fotográfico, feito por duas pessoas, em shutterlane.example.com.

ParteO que é
AcionadorUm agendamento semanal, todas as terças-feiras às 05:00 UTC
EntradasAs páginas publicadas, a API do CMS, a base de dados de entidades por trás das páginas de modelos e do diretório
PeçasO varrimento, o pool de bugs, o executor e o seu ambiente isolado, o fluxo de trabalho de reparação por bug
ResultadosBugs, reparações, bugs em espera, propostas de prevenção, um registo de execução no git
ÂmbitoReescreve absolute-self-link, dead-link e encoding-artifact em artigos. Volta a verificar freshness e reader-error. Deixa em espera counter-sanity, vocab-drift e qualquer regra num formato de página em que não consegue escrever

Um varrimento semanal encontra defeitos, cada bug tem a sua própria execução de reparação e o registo transforma as repetições em verificações no momento da escrita.

O varrimento (legenda 1) regista as deteções (2), compara-as com o registo de prevenção (3) e despacha os bugs abertos (4). Cada bug é reparado conforme a sua via (5), é verificado (6) e depois é fechado ou fica em espera (7).

Porque o construímos: um agente de IA que corrige bugs de conteúdo do website

Um agente de QA que só reporta é um gerador de ruído. Um agente que encontra e corrige na mesma execução é juiz em causa própria. Separámos as duas coisas.

O nosso varrimento começou por só reportar. Encontrava os mesmos links partidos e as mesmas páginas desatualizadas todas as semanas, e ninguém era responsável pela correção. O gráfico mostra esse padrão com dados da Shutterlane: um bug é registado (legenda 1), recebe uma nota de recorrência todas as terças-feiras (2) e nunca é reparado (3).

Um varrimento que só reporta encontra o mesmo defeito todas as semanas e, sem um passo de reparação, a pilha de notas de recorrência só cresce.

Daqui saíram três princípios:

  1. Encontrar e corrigir são trabalhos separados. O varrimento nunca escreve conteúdo, e a reparação nunca avalia o site.
  2. Um defeito é uma unidade de trabalho. Cada deteção nova é o seu próprio bug, e cada execução de reparação é dona de exatamente um bug.
  3. Concluído significa verificado. Um bug só fecha depois de uma nova verificação da página guardada, nunca com base na palavra do agente.

Se os seus relatórios de QA se acumulam da mesma forma, veja como o ConvOps transforma deteções em bugs que os executores recolhem um a um(abre num novo separador).

Como funciona: pool, executor, ambiente, fluxo de trabalho

O modelo é a parte menos interessante. O pool decide o que é trabalhado, o ambiente aquilo em que o agente pode tocar, o fluxo de trabalho quando está concluído. Dois fluxos de trabalho fazem o trabalho: o fluxo de varrimento, WF-qa, e o fluxo de reparação, WF-bugfix. É um grafo de passos e portões, a forma que descrevemos em O que é a engenharia de grafos (graph engineering)?, o mesmo ciclo agendado e com portões das nossas experiências de SEO com o Claude Code e a resposta à proliferação de agentes.

Um pool decide o que é trabalhado, o executor executa, o ambiente limita aquilo em que pode tocar e o fluxo de trabalho decide quando está concluído.

As deteções tornam-se bugs num pool

Um pool é uma consulta guardada no ConvOps: um filtro por tipo de tarefa, etiquetas, projeto, horizonte e estado, mais uma ordenação. Nunca contém tarefas; quando é consultado, devolve as que correspondem, por isso os bugs de qualquer projeto aparecem em todos os pools a que correspondem. pools_next devolve a primeira tarefa, desempata pelo id da tarefa e regista uma linha de recolha por chamada, por isso todas as recolhas são auditáveis.

O pool open-qa-bugs da Shutterlane é type = bug AND tags contains qa-finding AND status in [backlog, todo], do mais antigo para o mais recente (legenda 1).

Os executores recolhem o trabalho

Um executor é um processo de execução com nome, opcionalmente associado ao pool de onde recolhe (legenda 2). Há exatamente dois tipos:

TipoComo corre um despacho
IsoladoO ConvOps arranca o Claude Code ou o OpenCode, numa versão do seu catálogo, como um Job de Kubernetes próprio
LocalUm agente de programação numa máquina, como o Claude Code ou o Kimi Code CLI, liga-se ao ConvOps, recebe o envelope de despacho e executa lá a tarefa

O nosso ciclo corre num executor isolado do Claude Code, indicado no agendamento. O passo de despacho do varrimento executa ele próprio a consulta com o formato do pool e envia cada bug para esse executor; associar o executor a um pool passa essa mesma recolha para o ConvOps. Uma execução encravada é terminada ao fim de time_limit_s (por executor, de 60 a 86.400 segundos, ou então a definição do espaço de trabalho: aqui, 14.400).

Os ambientes isolados limitam aquilo em que o agente pode tocar

Um ambiente isolado é a definição escrita de tudo aquilo em que uma execução pode tocar. Cada execução é um Job de Kubernetes, criado suspenso; um Secret por execução, pertencente ao Job, é adicionado antes de arrancar. Um volume da tarefa mantém a pasta de trabalho da tarefa entre as suas execuções. O Job é removido 300 segundos depois de terminar e o Secret vai com ele, por isso as credenciais nunca sobrevivem à execução.

Tudo aquilo em que o agente pode tocar é declarado antes de ele correr, e a credencial é uma referência, nunca um valor.

  • Repositórios. Exatamente um recebe trabalho e é sempre enviado com push (legenda 1): diretamente para a ref de que foi feito checkout, reaplicado uma vez, nunca forçado.
  • Regras de ferramentas. O servidor do CMS recusa por omissão e permite 8 ferramentas (legenda 2). O browser permite ferramentas só de leitura: navigate, snapshot, screenshot e mais três.
  • Referências, não valores. CMS_API_TOKEN aponta para uma entrada de um gestor de segredos (legenda 3), e a credencial do executor também é uma referência guardada (legenda 4). A legenda 5 é a associação ao pool.
  • Permissões no ConvOps. As escritas em tarefas só chegam à tarefa da própria execução. As notas e as leituras chegam a qualquer tarefa, para que o varrimento possa anotar bugs, mas só uma execução de reparação fecha o seu próprio bug.
  • Limites de despacho. run_dispatch_limit é 10 por execução, o que limita o custo e o raio de impacto de um varrimento. run_dispatch_named_environment é false, por isso uma execução não pode alargar a sandbox daquilo que despacha.

Dois fluxos de trabalho: um encontra, outro corrige

#Passo do varrimentoQuem o executaPortão
1recall-scopeAgente da execuçãoSem host de destino: regista um bug de execução falhada e para
2scan-auditqa-auditor, só reportaSete nomes de regra fixos. Uma leitura falhada é um reader-error
3file-findingsAgente da execuçãoqa-dedupe sobre (page, rule): uma deteção nova regista um bug, uma repetição acrescenta uma nota
4preventAgente da execuçãoFuga ou lacuna: uma prevention-proposal por regra
5dispatch-bugsAgente da execuçãoDo mais antigo para o mais recente, para no limite de despacho
6finalizeAgente da execuçãoFaz commit do registo de execução, guarda uma memória
#Passo da reparaçãoQuem o executaPortão
1read-bugAgente da execuçãoEscolhe a via. hold define blocked e para
2heal-postAgente da execuçãoUma escrita protegida pela versão, seguida de um novo lint limpo
3heal-freshnessverifierCarimbo geral na data de criação do bug ou depois dela
4heal-readerAgente da execuçãoHTTP 200 com o conteúdo próprio da página
5closeAgente da execuçãoReparado: concluído. Caso contrário, blocked com o motivo

O auditor lê as páginas tal como um leitor as recebe: algumas renderizadas num browser, as restantes como HTML em bruto, com os contadores e a atualidade cruzados com a base de dados. A promessa de atualidade é de 7 dias para modelos de câmaras e 14 para entradas do diretório, a cadência com que correm os respetivos ciclos de verificação.

O varrimento corre seis passos todas as terças-feiras às 05:00 UTC, encontra e regista, e nunca escreve conteúdo.

A reparação corre cinco passos sobre um bug, usa apenas a via desse bug e só o fecha depois de uma nova verificação.

O agendamento (legenda 1) é FREQ=WEEKLY;BYDAY=TU;BYHOUR=5;BYMINUTE=0. A frequência semanal acompanha a promessa de atualidade de 7 dias, por isso uma deteção ainda é atual quando a sua reparação corre.

Uma execução, passo a passo: um bug da deteção à correção verificada

O interessante numa reparação é a verificação depois da escrita, não a escrita. Eis o varrimento qa/2026-09-15 da Shutterlane, do agendamento ao veredito.

Terça-feira, 05:00 UTC: o varrimento encontra e regista

O varrimento corre em isolated-sonnet, num único Job com shutterlane-qa. O auditor lê 24 páginas (6 no browser, 18 como HTML em bruto) e devolve 7 deteções, uma por regra.

O auditor devolve uma deteção como página, regra e detalhe, e um par página e regra novo torna-se um bug com o título regra: página.

Esta deteção é nova, por isso torna-se o bug demo0101, absolute-self-link: /blog/best-travel-cameras-2026, com estado todo. A execução regista qa-dedupe: 5 novel, 2 recurrences; cada recorrência acrescenta uma nota ao respetivo bug aberto.

O passo de prevenção lê o registo. absolute-self-link está covered e o artigo tem 3 dias, dentro da janela de fuga de 7 dias, por isso o varrimento regista a ideia demo0110 como prevention-proposal.

O despacho lista os bugs de QA abertos, do mais antigo para o mais recente: 7, dentro do limite de 10. Cada um vai para isolated-sonnet sem indicar um ambiente, por isso recebe o ambiente predefinido do seu projeto.

Um bug, uma execução

Cada bug corre no seu próprio Job isolado, com o seu próprio volume, e anota a sua via antes de tocar em qualquer coisa.

demo0101 recebe o seu próprio Job, run-demoex01, e o seu próprio volume. read-bug escolhe a via a partir do formato da página e da regra: um link para o próprio site numa página /blog/ é post. Escreve bugfix-demo0101/2026-09-15 lane=post antes de tocar em qualquer coisa.

Uma escrita protegida

A única escrita leva a versão que leu, por isso um artigo alterado recusa-a, e nunca passa um estado.

heal-post corre o post-lint, que indica o destino errado e a respetiva correção. Depois faz uma única substituição ancorada com body_md_edits, protegida pela expected_version que leu. Nunca passa status, por isso uma reparação nunca pode publicar nem despublicar uma página.

Num conflito de versão, o agente volta a ler uma vez e reconstrói; uma segunda recusa termina como not healed. Um link morto sem endereço conhecido é removido e o texto mantém-se. Remover um link é seguro; adivinhar um destino não é.

Reparado ou em espera

Um bug só é concluído depois de um novo lint limpo e de o destino errado desaparecer, enquanto um bug da via de espera fica bloqueado para uma pessoa, com o conteúdo intacto.

O agente volta a ler e a passar o lint ao artigo guardado. Reparado significa que a regra já não tem nenhuma deteção E que o destino errado desapareceu do corpo guardado, porque o lint pode não detetar um destino que o auditor viu. A nota diz healed: https://shutterlane.example.com/models/orrin-k5 -> /models/orrin-k5, é feito o commit do registo de execução, o bug é concluído, e o Job e o Secret desaparecem 300 segundos depois.

À direita, demo0104 (counter-sanity: /news) cai em hold. Passa a blocked, «precisa de uma correção do produto ou do operador», com o conteúdo intacto.

Como é o resultado: relatório, notas, registo

Leia o varrimento pelo estado, não pela contagem. Uma repetição numa regra coberta é um bug na sua proteção, não no seu conteúdo.

Leia o varrimento pelo estado: as linhas novas são bugs novos, as recorrências são notas, e uma regra coberta que se repete significa que a proteção deixou passar.

ArtefactoColunasComo ler
Relatório do varrimentopágina, regra, detalhe, nova ou recorrência, viaAs linhas novas são bugs novos. As recorrências são notas em bugs abertos
Rasto de notas do bugid da execução, via, healed: ou not healed: com um motivoA decisão de uma execução, legível sem a transcrição
Registo de prevençãoregra, covered / partial / uncovered, prevenida por, via de reparaçãoOnde cada regra é travada antes de chegar ao site

Dois sinais alimentam o passo de prevenção:

  • Fuga: uma regra coberta num artigo /news/ ou /blog/ publicado há 7 dias ou menos. Só um artigo recente prova que a proteção no momento da escrita o deixou passar.
  • Lacuna: uma regra parcial ou não coberta em 2 ou mais páginas na mesma execução, ou que se repetiu. Uma página é um defeito; duas páginas ou uma repetição são um padrão.

Cada regra recebe uma proposta; uma proposta aberta recebe uma nota, nunca uma segunda ideia.

No relatório da Shutterlane, encoding-artifact está covered mas repetiu-se em /directory: a proteção a deixar passar através de um caminho de publicação mais antigo. Passámos por esse padrão, e ele deu origem a uma segunda proteção, o post-lint no portão de publicação, além das recusas no momento da escrita nas ferramentas do CMS. Todos os registos de execução vão para o git, o rasto que descrevemos em observabilidade de agentes de IA.

O que corre mal: uma regra, três grafias

A maioria das nossas falhas estava na infraestrutura e nas permissões, não no modelo. A pior parecia um ciclo a funcionar.

A deduplicação usa a chave (page, rule). O nosso auditor escrevia os nomes das regras livremente e, ao longo das execuções, escreveu a mesma verificação de três formas. A deduplicação viu três regras e registou três bugs para um único defeito. Com dados da Shutterlane: dead-link, broken-link e dead-internal-link em /news/corvane-x2-firmware-3 tornaram-se demo0081, demo0084 e demo0087.

Três grafias de uma regra registaram três bugs; um slug fixo deixa um único bug com uma nota de recorrência por execução.

A regra que daí resultou é uma linha na ficha do auditor: «rule é exatamente um de encoding-artifact, dead-link, absolute-self-link, counter-sanity, vocab-drift, freshness, reader-error; nunca uma variante.» Agora um link é um bug, com uma nota de recorrência por execução.

Falha menorRegra que produziu
Uma execução só chegava à sua própria tarefa, por isso não conseguia fechar nem anotar outros bugsPermissões por ambiente: notas e leituras em qualquer tarefa, tasks_dispatch e tasks_list ativos, escritas só na própria tarefa, despacho limitado a 10
Uma verificação só de preços não atualizava o carimbo geral de atualidade de uma entidadeUma reparação de atualidade precisa de uma verificação de content ou status; reparado significa que last_verified_date mudou
A deduplicação fazia correspondência com a própria linha de registo da execução e descartava todas as deteçõesUm registo do corpus idêntico às deteções recebidas é ignorado, nunca usado para correspondência

Construa o seu: a versão mínima

Comece pela via de espera e pelas permissões das ferramentas. Decida aquilo em que o agente nunca pode tocar antes de o deixar tocar em qualquer coisa.

O ciclo mínimo: um agendamento semanal, um auditor que só reporta, um script de deduplicação, um pool de bugs e um executor numa sandbox que repara e passa o lint, ou deixa em espera para uma pessoa.

Mantenha o script de lint fora da rede: o nosso avalia os links com base na tabela de rotas e nas listas de entidades, por isso o seu veredito repete-se exatamente. A via de espera é o portão humano de Construir sistemas de IA com human in the loop. A tabela de vias, pronta a copiar:

lanes:
  post:       # rewrite through the CMS API, then re-lint
    rules: [absolute-self-link, dead-link, encoding-artifact]
    pages: ["/blog/<slug>", "/news/<slug>"]
  freshness:  # re-verify; healed when the general stamp moves
    rules: [freshness]
    pages: ["/models/<slug>", "/directory/<slug>"]
  reader:     # re-read; healed on HTTP 200 with the page's own content
    rules: [reader-error]
  hold:       # everything else: blocked, a person fixes it
    rules: ["*"]

O ambiente, pronto a copiar:

environment: shutterlane-qa
repos:
  - repo: shutterlane/site-ops
    receives_work: true
    push_target: ref
mcp_servers:
  shutterlane-cms:
    default: deny
    allow: [post_get, post_list, post_update,
            translations_manage, model_get, tool_get,
            verification_log_manage, verdict_history]
  playwright:
    default: deny
    allow: [browser_navigate, browser_snapshot,
            browser_take_screenshot, browser_console_messages,
            browser_wait_for, browser_close]
convops_tools_any_task: [task_notes_add, task_notes_list, tasks_get]
run_dispatch_limit: 10
run_dispatch_named_environment: false
secrets:
  CMS_API_TOKEN: {kind: gcp-sm, ref: demo-project/cms-token}

Copie a tabela de vias e a definição do ambiente e depois agende o seu varrimento semanal no ConvOps(abre num novo separador). Quer isto a funcionar no seu próprio site? Marque uma sessão de descoberta gratuita.

Passos

  1. Fixe os nomes das regras

    Liste os slugs exatos das regras que o seu auditor pode devolver e proíba qualquer variante, para que a deduplicação por página e regra continue a funcionar entre execuções.

  2. Corra um auditor que só reporta

    Ponha-o a ler as páginas tal como um leitor as recebe e a devolver uma deteção por defeito, com página, regra e detalhe. Nunca escreve conteúdo.

  3. Elimine duplicados por página e regra

    Uma deteção nova torna-se um bug com o título regra: página. Uma repetição acrescenta uma nota ao bug aberto em vez de criar um segundo bug.

  4. Guarde a consulta de bugs abertos como um pool

    Filtre por tipo bug, pela sua etiqueta de QA e pelo estado backlog ou todo, do mais antigo para o mais recente, para que cada recolha seja a mesma consulta determinística.

  5. Defina o ambiente isolado

    Um repositório que recebe trabalho, o servidor MCP do CMS com uma lista de ferramentas permitidas, um browser só de leitura, escritas apenas na tarefa da própria execução, credenciais como referências e um limite de despacho.

  6. Defina o executor

    Escolha o agente de programação e a sua versão, o modelo e uma referência de credencial, e depois associe-o ao pool ou indique-o no agendamento.

  7. Escreva o fluxo de trabalho de reparação com uma via de espera

    Encaminhe cada bug para uma via segundo a regra e o formato da página. Tudo o que não consegue reescrever e verificar de novo vai para a via de espera e fica bloqueado com o seu motivo.

  8. Faça uma escrita protegida e depois um novo lint

    Escreva uma vez com a versão que leu e nunca altere o estado. Feche o bug apenas quando o novo lint estiver limpo e o destino errado tiver desaparecido.

  9. Mantenha um registo de prevenção

    Marque cada regra como coberta, parcial ou não coberta, e transforme as fugas e as repetições em recusas no momento da escrita no seu CMS.

  10. Agende o varrimento semanal

    Corra-o num dia e hora fixos e deixe o seu passo de despacho enviar os bugs abertos, do mais antigo para o mais recente, até ao limite de despacho.

Perguntas frequentes

O que é um website com autorreparação?

Um website com autorreparação é um site em que um agente de IA lê as páginas tal como um leitor as recebe, regista cada defeito como um bug, repara o que consegue reescrever e verificar de novo e deixa o resto para uma pessoa. O ConvOps gere o varrimento semanal, o pool de bugs e o fluxo de trabalho de reparação por bug. Não é um conjunto de testes com autorreparação, que repara seletores dentro de testes automáticos.

A quem se destina um ciclo de website com autorreparação?

Um ciclo de website com autorreparação destina-se a equipas pequenas que gerem um site de conteúdos através de uma API de CMS: fundadores, equipas de conteúdos e marketing e pequenas equipas de engenharia. O ConvOps agenda o varrimento semanal, e o varrimento despacha uma execução de reparação por bug, por isso os links partidos, os artefactos de codificação e as páginas de entidades desatualizadas são reparados e verificados de novo todas as semanas. As discrepâncias de contadores e os desvios de vocabulário chegam a uma pessoa como bugs bloqueados, com o motivo indicado.

Em que é que um website com autorreparação difere dos testes com autorreparação?

Os testes com autorreparação reparam seletores partidos dentro de um conjunto de testes para que os testes automáticos continuem a passar. Um ciclo de website com autorreparação no ConvOps repara o conteúdo que o leitor vê nas páginas publicadas: links, codificação e factos desatualizados. Corre como fluxos de trabalho agendados que escrevem através da API do CMS, voltam a verificar a página guardada e deixam em espera, para uma pessoa, tudo o que não conseguem verificar.

Como encontro e corrijo automaticamente os links partidos do meu website?

Adicione o servidor MCP do ConvOps em https://mcp.convops.app/ ao seu cliente de IA e inicie sessão uma vez. Depois crie um fluxo de trabalho de varrimento semanal cujo auditor devolva página, regra e detalhe para cada link partido, e registe cada deteção nova como um bug. Despache cada bug para uma execução de reparação que reescreva o link para o endereço conhecido, ou que o remova, e que volte a passar o lint à página guardada antes de fechar o bug.

Um agente de IA pode corrigir bugs do website sem revisão humana?

Sim, nos defeitos que consegue reescrever e verificar. No ConvOps, o fluxo de trabalho de reparação reescreve três regras de links e de codificação em artigos através da API do CMS e só fecha um bug depois de um novo lint limpo. O agente nunca publica nem despublica uma página. As discrepâncias de contadores e os desvios de vocabulário vão para uma via de espera, onde o bug fica bloqueado com o seu motivo e espera por uma pessoa.

Como é que os agentes de IA recolhem bugs de uma fila?

No ConvOps, um pool é uma consulta guardada sobre tipo de tarefa, etiquetas, projeto, horizonte e estado que, quando consultada, devolve as tarefas correspondentes. A chamada pools_next devolve a primeira tarefa segundo a ordenação do pool e regista a recolha. Um executor isolado ou local executa cada bug despachado, e cada execução de reparação é dona de exatamente um bug.

Como se isola numa sandbox um agente de IA que edita o seu website?

O ConvOps executa cada despacho isolado como um Job de Kubernetes próprio, com um Secret por execução que é removido com o Job. A definição do ambiente indica um repositório que recebe trabalho, servidores MCP com listas de ferramentas permitidas, escritas em tarefas limitadas à tarefa da própria execução e um limite de 10 despachos por execução. As credenciais são guardadas como referências, nunca como valores.

O que impede um agente de IA de fazer uma correção errada no meu site?

O ConvOps executa a reparação como um fluxo de trabalho com um portão depois de cada escrita. O agente faz uma escrita por artigo, protegida pela versão que leu, e nunca altera o estado do artigo. Num conflito volta a ler uma vez, e uma segunda recusa termina como não reparado. Um link morto sem endereço conhecido é removido, não adivinhado, e o bug só fecha com um novo lint limpo.