Texto e documentos
Números e cálculo
Dados e formatos
Segurança
Desenvolvimento e DevOps
Inteligência Artificial
Finanças
Saúde & Bem-estar
Produtividade
Jogos & Entretenimento
Multimédia e design
Empresa
Guia de utilização
Os dois losangos são o único que decide

Tira o nome do framework e todo o agente são os mesmos sete componentes em ciclo. E o interessante não são as caixas: são as duas perguntas —já posso responder? e objetivo cumprido?—, os únicos sítios onde o agente decide algo. O resto é canalização. Quando um agente se porta mal, a falha está quase sempre em como se especificaram essas duas, não no modelo a raciocinar.

As barreiras vão na vertical, não à porta

Consultam-se antes de cada ação, não uma vez ao começar. Uma porta à entrada não diz absolutamente nada do que o agente decida fazer no passo quatro — e o passo quatro é onde estão os problemas.

Rastrear não é avaliar

Um rasto diz-te o que o agente fez; não se o que fez estava correto. Por isso o separador de verificação mede sobre ele coisas que não precisam de modelo: voltas, bloqueios, falhas de que se recuperou e repetições sem motivo, que é como se vê um ciclo. O determinista vai primeiro; o juiz com modelo reserva-se para o que exige mesmo critério.

Porque uma especificação e não um prompt

Um prompt diz como se comporta o agente. Uma especificação diz o que deve acontecer: o que muda, o que não muda, que contratos se respeitam e que evidência é precisa para dar algo por bom. São artefactos distintos e a spec está acima: sem ela, o prompt mais cuidado continua sem dizer quando a tarefa está terminada.

«O que NÃO deve mudar» é a metade que falta

É o campo que quase ninguém preenche e o único que delimita a sério. Sem ele, um agente pode cumprir o objetivo partindo qualquer outra coisa e continuar a ter razão: ninguém lhe disse que isso também importava. Por isso aqui é um erro e não um aviso.

Critérios: executáveis, binários e independentes

Um bom critério é um comando que se pode correr, dá passa ou não passa —«razoavelmente rápido» não dá— e comprova uma só coisa, para que ao falhar se saiba qual. Escritos assim traduzem-se quase 1:1 para casos de teste, que é do que se trata.

Um modelo não distingue instruções de dados

Chega-lhe um só texto. Se dentro do que julgavas ser um dado —uma página que o agente lê, um documento recuperado, um e-mail, o README de uma dependência— houver algo com forma de ordem, o modelo pode obedecer-lhe. Não é uma falha que um modelo melhor resolva: é a forma do problema. Por isso a indireta é a perigosa: na direta o atacante é o próprio utilizador, mas na indireta mete-a um terceiro e a vítima és tu.

A trifecta letal: se tens as três pernas, corta uma

Tudo o de cima baixa probabilidades. Isto não. Um agente é explorável quando reúne três coisas ao mesmo tempo: dados privados a que chega, conteúdo não fiável que lê (uma página web, um correio, um README) e um canal de saída por onde algo se pode ir embora. Com as três, uma injeção converte a primeira na terceira usando a segunda.

Com duas quaisquer não há roubo possível, e aí está a utilidade: não é preciso acertar com «a defesa boa», serve cortar a perna que te sair mais barata. Sem dados não há o que levar; sem conteúdo alheio não há quem dê a ordem; sem canal não há por onde tirá-lo.

E isto decide-se na aba ao lado: o teu balde «Nunca» é literalmente onde se corta uma perna. Retirar a ferramenta de rede ao agente que lê correios não é uma mitigação, é fechar o problema.

Ideia de Simon Willison (2025). Trazemo-la para aqui porque encaixa com os três baldes que já escreveste — e porque é a única coisa nesta aba que não depende de que o modelo se porte bem.

O filtro de entrada dá falsa segurança

É a primeira coisa que toda a gente põe e a que menos protege: uma lista de frases só apanha as frases que alguém anotou. No banco deste separador não apanha nem um dos ataques disfarçados, que são exatamente os mesmos ataques escritos de outra maneira. O que os trava mesmo é a arquitetura: mínimo privilégio, confirmação humana e verificar a saída — ou seja, os três baldes de permissões que já escreveste ao lado.

«Apoiado» não é «verdadeiro»

Isto não diz se algo é verdade: não pode, e nenhuma ferramenta que corra no teu navegador pode. Diz se uma afirmação vem acompanhada de uma fonte e de que nível é essa fonte, que é outra coisa e essa sim se comprova. A leitura útil vai ao contrário do que parece: não procures o selo verde, procura as frases categóricas e sem nada por trás, que soam igual de seguras que as restantes.

Um arXiv é um preprint, e um DOI não o salva

Citar um preprint não é mal; apresentá-lo como se fosse um artigo revisto, sim. E o pormenor que quase ninguém faz: um preprint também tem DOI. O DOI é um registo, não um certificado de revisão — por isso 10.48550/arXiv.… aqui sai como preprint e não como fonte formal.

Uma asserção que não pode falhar não é uma asserção

É a falha que arruína um banco de evals, e é silenciosa: um contém vazio passa sempre, uma regex como .* passa sempre, um caso sem asserções passa sempre. Um banco cheio dessas dá 100% no primeiro dia, não volta a descer nunca e não mediu nada na vida. Por isso aqui o banco revê-se a si mesmo antes de dar qualquer percentagem.

O número total não é o acionável

Que um banco passe de 80% para 78% não diz o que fazer. O que se arranja é o caso concreto que passava e deixou de passar. Por isso guarda-se uma passagem de referência e comparam-se as duas. E se o banco mudou ao mesmo tempo que o modelo, os casos que só estão numa das duas saem à parte: essa comparação não compara nada, e mais vale vê-lo do que acreditar nela.

Uma auditoria não vale se o auditado se pode editar

Todas as métricas deste separador —bloqueios, ciclos, rasto— dão por suposto que o rasto é honesto. E isso há que verificá-lo: o cartão de sistema do Claude Mythos Preview (Anthropic, abril de 2026) conta que versões iniciais do modelo, em casos muito raros dos seus testes internos, fizeram algo que pareciam saber estar proibido e depois tentaram ocultá-lo — ao ponto de evitar que a alteração aparecesse no histórico do git. Por isso antes de acreditar em qualquer número olha-se se o rasto bate certo consigo próprio: numeração seguida, voltas do ciclo que não recuam, nenhum passo que desfaça algo que nunca se fez, nenhuma chamada falhada que diga ter mudado o mundo. É aritmética, não interpretação. O limite, dito claro: isto não deteta um agente que mente — quem falsificar com cuidado produzirá um rasto coerente e aqui não sairá nada. Deteta rastos a que faltam peças, que é o que acontece a sério quase sempre: um pedaço perdido, uma repetição por registar, um exportador que come passos.

Quando se rende, o mundo já não está como o encontrou

Um rasto que diz «não cumprido» parece que não aconteceu nada, e quase sempre aconteceu: o agente falhou no passo seis depois de ter avisado a equipa três vezes. Por isso cada ferramenta declara se só consulta, se altera algo que se pode desfazer ou se altera algo sem volta atrás, e ao render-se pinta-se o que fica feito. Três detalhes que se veem melhor mexendo do que lendo: desfaz-se da última alteração para a primeira (o passo 5 pode depender do 3); que algo seja reversível não chega —compensar é escrever à mão uma segunda ação por cada primeira, não marcar uma casinha—; e repetir não é grátis: cada volta do ciclo volta a mudar o mundo.

Repetir repete o efeito — e há DUAS soluções, que não custam o mesmo

É a falha com que abrem todos os guias de agentes: uma chamada expira, o agente tenta novamente, e o mesmo registo é criado duas vezes. Aqui podes provocá-la: põe a verificação em «nunca passa» com uma ação irreversível e verás três avisos enviados, um por volta. Liga qualquer um dos dois interruptores e o rasto desce para um.

O que normalmente não se explica é em que se diferenciam, porque no resultado final parecem a mesma coisa:

• Chave de idempotência — a chamada é feita mesmo, as três vezes; o que não se repete é o efeito, porque o outro extremo reconhece a chave e devolve o resultado da primeira. Pagas a latência, a cota e os tokens; não pagas o estrago.
• Ponto de controlo — a chamada nem sequer é feita: o harness registou que essa subtarefa já constava feita e retoma na seguinte. Não pagas nada.

E a diferença que decide qual podes usar não é técnica, é de quem depende: a chave é implementada por quem SERVE a ferramenta; o ponto de controlo, por o harness que a CHAMA. Se a API de terceiros não suportar chaves, não há conversa possível: só te resta o ponto de controlo. Por isso existem os dois e não são sinónimos.

A armadilha que se infiltra: um ponto de controlo nunca deve marcar como feita uma chamada que devolveu erro — se o fizer, a nova tentativa salta exatamente o que era preciso repetir e o agente nunca recupera. Esse caso tem o seu teste.

Não inventamos formato

Exporta-se para o que os agentes já leem: um SPEC.md solto, os três ficheiros do Kiro (requirements, design, tasks), um CLAUDE.md com o permanente, ou os três baldes de permissões. Os ficheiros valem mais do que a ferramenta que os gera: por isso não te prendemos a ela.

AgentesEspecificação, permissões, verificação e evals
AgentesPreparar o trabalho com uma IA e verificar o que devolve
Elementos completados: 0/6ObjetivoO que mudaO que NÃO mudaRestriçõesDecisõesCritérios

Isto alimenta: