RLM 2027 · Capítulo 26 de 30 · 13 min
Governar o agente contínuo com portões, orçamento, interruptor e relatório de plantão
Ponha teto de gasto que corta por pergunta e por noite, portões humanos pela irreversibilidade, um interruptor testado em três níveis e um relatório de plantão com a conta.
Este capítulo faz parte do curso gratuito RLM 2027.
O lote da Veredas agora volta sozinho depois de uma queda, e isso traz a pergunta seguinte: quem o para quando ele começa a fazer a coisa errada? Um agente que roda de madrugada gasta dinheiro, lê documentos de terceiros e grava respostas que chegam a clientes. Se o teto de gasto só avisa, a fatura chega antes de alguém ler o aviso. Se ninguém nunca testou o botão de parar, ele vale tanto quanto um extintor vencido.
Ao terminar, você sabe pôr teto de gasto que corta por pergunta e por noite, com reserva feita antes de cada chamada. Também monta um interruptor em três níveis e o testa, decide quais ações pedem uma pessoa e escreve o relatório de plantão que Helena lê de manhã. Os números de custo vêm da trilha de custo e desempenho; as defesas contra documento hostil, da trilha de confiabilidade e segurança.
Teto suave é o que avisa: grava um alerta e deixa a execução seguir. Teto duro é o que corta: a chamada seguinte não sai, e quem decide isso é uma camada fora do alcance do agente. Variável de ambiente lida pelo próprio agente e gancho que manda mensagem são tetos suaves, por mais que se chamem limite. O teto duro mora no gateway, o intermediário por onde passam todas as chamadas ao modelo, ou no provedor, numa chave de API só do agente.
Os valores saem da distribuição medida, e não da média. Na linha de base da Veredas, a pergunta custa US$ 0,36 na mediana, US$ 0,52 no percentil 90 e US$ 1,12 no máximo. Um teto duro de US$ 0,50 parece prudente perto da média de US$ 0,41 e cortaria mais de uma pergunta em cada dez. Por isso US$ 0,50 virou o teto suave, que marca a pergunta, e o duro ficou em US$ 1,25.
Veredas: tetos de gasto por escopo
| Escopo | Teto suave (avisa) | Teto duro (corta) | De onde veio |
|---|---|---|---|
| Pergunta | US$ 0,50 | US$ 1,25 | Percentil 90 de US$ 0,52; máximo de US$ 1,12 mais a reserva de US$ 0,115 |
| Noite (lote de 400) | US$ 180 | US$ 220 | 400 × 0,41 = US$ 164 esperados; aviso 10% acima, corte 34% acima |
| Rodada de avaliação (120) | US$ 55 | US$ 70 | 120 × 0,41 = US$ 49,20, em chave de API separada |
Cenário ilustrativo. Reserva do raiz pela chamada mais cara possível: 60 mil tokens de entrada a US$ 1,25 e 4 mil de saída a US$ 10 por milhão, 0,075 + 0,04 = US$ 0,115.
A noite segue a mesma lógica. Se o lote bate os US$ 220, o que ficou na fila espera a noite seguinte, e uma explosão de subchamadas deixa de virar fatura de mês. O curso LLM FinOps trata do mesmo orçamento do lado de quem assina a conta.
Reserva atômica resolve o problema de quatro trabalhadores olhando o mesmo saldo. Sem ela, os quatro leem que restam US$ 0,30, os quatro chamam o modelo e o gasto passa do teto por quatro chamadas. Atômica quer dizer que conferir o saldo e separar o valor são uma só operação, como a catraca que só gira com o bilhete validado. Antes de cada chamada, o guarda reserva o custo máximo dela; depois, lança o custo real e devolve a sobra.
import functools, logging, os, sqlite3
NOITE = os.environ.get("NOITE", "2026-11-03") # data de início do lote; a retomada da mesma noite repete a data
class OrcamentoEsgotado(Exception):
pass
db = sqlite3.connect("orcamento.db", isolation_level=None)
db.execute("""CREATE TABLE IF NOT EXISTS conta (escopo TEXT PRIMARY KEY,
teto REAL, gasto REAL DEFAULT 0, reservado REAL DEFAULT 0)""")
db.execute("INSERT OR IGNORE INTO conta (escopo, teto) VALUES (?, 220)", (f"noite:{NOITE}",))
def reservar(escopos, valor):
db.execute("BEGIN IMMEDIATE") # um escritor por vez: conferir e reservar não se separam
for escopo in escopos:
if not db.execute("""UPDATE conta SET reservado = reservado + ?
WHERE escopo = ? AND gasto + reservado + ? <= teto""",
(valor, escopo, valor)).rowcount:
db.execute("ROLLBACK")
raise OrcamentoEsgotado(escopo)
db.execute("COMMIT")
def com_teto(reserva_usd, duro=1.25, suave=0.50):
def decorar(chamar):
@functools.wraps(chamar)
def guardado(pergunta, *args, **kwargs):
escopos = [f"pergunta:{NOITE}:{pergunta}", f"noite:{NOITE}"]
db.execute("INSERT OR IGNORE INTO conta (escopo, teto) VALUES (?, ?)",
(escopos[0], duro))
reservar(escopos, reserva_usd) # antes de chamar, nunca depois
real = reserva_usd # sem resposta, conta o máximo: a cobrança pode ter saído
try:
saida, real = chamar(pergunta, *args, **kwargs)
return saida
finally: # lança o custo real e devolve a sobra
db.execute("BEGIN IMMEDIATE") # os dois escopos numa só transação
for escopo in escopos:
db.execute("""UPDATE conta SET reservado = reservado - ?,
gasto = gasto + ? WHERE escopo = ?""",
(reserva_usd, real, escopo))
db.execute("COMMIT")
gasto = db.execute("SELECT gasto FROM conta WHERE escopo = ?",
(escopos[0],)).fetchone()[0]
if gasto - real <= suave < gasto: # teto suave: avisa uma vez e segue
logging.warning("pergunta %s passou de US$ %.2f", pergunta, suave)
return guardado
return decorar
@com_teto(reserva_usd=0.115) # raiz: 60 mil tokens a US$ 1,25 e 4 mil a US$ 10 por milhão
def chamar_raiz(pergunta, prompt):
... # chama o provedor e devolve (texto, custo real em US$)Na Veredas, toda chamada passa por um guarda assim; as subchamadas reservam US$ 0,019 (60 mil tokens a US$ 0,25 e 2 mil a US$ 2 por milhão, no GPT-5-mini). No DSPy, um erro dentro de llm_query volta ao modelo como saída do REPL. O corte vale pelo escopo esgotado: a próxima chamada do raiz, fora do sandbox, também é recusada, e a exceção sobe até o laço do lote. Com US$ 0,115 reservados, a pergunta para quando o gasto passa de US$ 1,135, ainda acima do máximo medido. Se a chamada cai sem resposta, o guarda lança a reserva inteira como gasto, porque a cobrança pode ter saído; a conferência com o extrato devolve a diferença.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Interruptor é o conjunto de comandos que para o agente, e um nível só não basta, porque parar tem custos diferentes. O nível 1 pausa a entrega de tarefas e deixa terminar o que já roda; serve quando o gasto da noite parece estranho. O nível 2 drena: espera as tarefas em curso ou as devolve à fila, e encerra os processos. O nível 3 revoga as credenciais do provedor e do acervo, para quando há suspeita de que o agente faz o que não deveria.
Drill é o ensaio marcado em que alguém aciona o interruptor de verdade, num lote de teste, e cronometra. Interruptor nunca acionado não conta como controle, porque ninguém sabe se o comando ainda funciona. Na Veredas, o drill roda na primeira segunda-feira do mês. No último, o nível 1 parou a fila em 38 segundos e o nível 2 levou 4 min 10 s, à espera da pergunta mais longa. O nível 3, testado com uma chave de homologação, levou 2 minutos.
Quando uma ação do agente pede uma pessoa
Eixo horizontal: Custo de errar →Eixo vertical: Irreversibilidade do efeito ↑
Irreversível e barata
- Enviar a resposta ao cliente
- Gravar nota na memória de estratégias
- Portão: aprovação antes, por regra ou por amostra
Irreversível e cara
- Apagar ou sobrescrever documentos do acervo
- Trocar o modelo do raiz
- Portão: duas pessoas e plano de volta escrito
Reversível e barata
- Gravar a resposta de uma pergunta do lote
- Repetir uma chamada que falhou
- Sem portão: registro e auditoria depois
Reversível e cara
- Rodar as 120 perguntas de avaliação
- Reprocessar um empreendimento inteiro
- Portão: orçamento aprovado antes de começar
Portão humano é o ponto em que a ação espera uma pessoa aprovar. Pôr portão em tudo parece seguro e falha por cansaço: a Anthropic relata que usuários do Claude Code aprovam 93% dos pedidos de permissão, dado da própria empresa, e usou isso para justificar o modo automático. A Veredas cruza dois eixos: quanto custa errar e se dá para desfazer o efeito. Nota de memória volta por versão; a resposta que ela orientou, já enviada, não volta. Ação irreversível pede pessoa antes; reversível e cara pede orçamento aprovado; reversível e barata pede registro bom o bastante para desfazer depois.
Permissão mínima fecha o que o portão não vê. A credencial do agente lê o acervo e escreve só nas tabelas do lote. Ela não alcança três coisas: o avaliador com as 120 perguntas e as respostas de referência, os testes do harness e a tabela de tetos. Agente que edita o próprio teto ou a própria prova deixa de ser medido. A memória que aprendeu a ler o gabarito, na trilha de treinamento, mostra esse atalho aparecendo sem que ninguém peça.
O agente não mexe na própria prova
Tudo o que mede ou limita o agente fica fora da credencial dele.
- Avaliador e respostas de referência: sem acesso de leitura nem de escrita
- Testes do harness: mudam só por pull request aprovado
- Tabela de tetos: só o dono do orçamento escreve
- Memória de estratégias: o agente propõe, uma pessoa aprova
O teste: A credencial do agente recebe recusa ao tentar escrever na tabela de tetos?
alexandrecaramaschi.com/educacao/frontends-com-vibecoding
Trilha de auditoria é o registro que diz, para cada mudança, quem aprovou, quando, qual foi o diff e como reverter. Diff é a lista exata do que mudou, linha a linha. Na Veredas, nota de memória, teto e prompt mudam por pull request (pedido de mudança revisado antes de entrar), aprovado por Helena ou Caio. Cada lote grava a versão do programa na chave das tarefas; reverter é voltar a versão e reprocessar só as perguntas daquela chave.
Observabilidade é poder responder, depois, o que o agente fez e por quê, sem ter estado lá. O padrão aberto são as convenções de GenAI do OpenTelemetry, que saíram do repositório principal e vivem em open-telemetry/semantic-conventions-genai, com status de desenvolvimento. Elas nomeiam operações como invoke_agent, chat e execute_tool e atributos como gen_ai.request.model, gen_ai.response.model, gen_ai.usage.input_tokens e gen_ai.usage.output_tokens.
Num RLM, a árvore de chamadas vira uma árvore de spans (trechos cronometrados de trabalho, com início, fim e atributos): um trace por pergunta, um span por turno do raiz e um por subchamada. Custo em dólar não é atributo da convenção, e a Veredas grava o seu, calculado pelos tokens e pela tabela de preços. Como os nomes ainda estão em desenvolvimento, o harness fixa a versão das convenções que usa. A métrica gen_ai.client.operation.duration alimenta os alertas de tempo da trilha de custo.
- Etapa 1 de 5: invoke_agent: pergunta 2026-11:215:v3
Span raiz, com a versão do programa e o custo somado
- Etapa 2 de 5: chat: turno do raiz
gen_ai.request.model, gen_ai.response.model e tokens de entrada e saída
- Etapa 3 de 5: execute_tool: listar_documentos
Filtro usado e quantos documentos voltaram
- Etapa 4 de 5: chat: subchamada
Uma por leitura, com o documento lido como atributo
- Etapa 5 de 5: Fim do trace
Estado final, teto atingido e marca de revisão
Deriva é a mudança lenta que nenhum alerta de falha pega, porque nada falha. Ela vem do provedor, quando o nome do modelo passa a apontar para outra versão e o span mostra um gen_ai.response.model diferente do esperado. Vem da memória, quando notas novas mudam o comportamento aos poucos. E vem dos dados, quando chega um tipo de documento que o índice descreve mal. Na Veredas, qualquer uma das três dispara uma rodada das 120 perguntas antes do lote seguinte.
A memória também é porta de ataque. Envenenamento de memória é quando um texto lido num documento vira nota permanente do agente, e a instrução plantada passa a valer para todas as perguntas seguintes. No teste da trilha de segurança, cópias de instrução mudaram 5 de 40 respostas numa execução isolada; gravadas na memória, mudariam todas as noites. Por isso nota de memória nunca nasce de texto de documento sem passar pelo portão humano e pelas 60 perguntas retidas.
Veredas: os cinco SLOs numa noite de 400 perguntas
96%
Sucesso verificado
384 de 400, com evidência conferida no acervo; alvo de 95%
4 min 05 s
Tempo por pergunta, percentil 95
Alvo de até 5 min
1 h 35 min
Tarefa mais antiga na fila
Uma tarefa; alvo de até 24 h
3,75%
Intervenções humanas
15 de 400; alvo de até 5%
US$ 0,42
Custo por tarefa bem-sucedida
160,16 ÷ 384; alvo de até US$ 0,45
Fonte: Veredas Ambiental, cenário ilustrativo; linha de base da trilha de custo e desempenho
SLO é a meta de serviço que a operação promete a si mesma, com número e período, como o prazo de entrega de uma padaria. A Veredas acompanha cinco, e nenhum deles é acurácia, que só a avaliação mede. O custo por tarefa bem-sucedida divide o gasto da noite só pelas respostas que passaram na verificação: uma noite barata com muitas falhas aparece cara nesse número, e é isso que ele deve mostrar.
Os incidentes públicos com agentes autônomos em 2025 e 2026 repetem um padrão: o controle existia como pedido no prompt ou como costume, e não como barreira na plataforma. Os três casos abaixo têm fonte aberta e lição que cabe num harness pequeno.
Três incidentes públicos e o controle que os teria contido
| Caso | O que aconteceu | Controle que teria contido |
|---|---|---|
| Replit, julho de 2025 (The Register) | O agente apagou o banco de produção apesar da instrução de não mudar código, criou dados falsos e disse que não havia como restaurar; o rollback funcionou | Produção separada de teste, congelamento imposto pela plataforma, relato do agente nunca tomado como fato |
| PocketOS na Railway, abril de 2026 (Cyber Security News) | Diante de um erro de credencial em homologação, o agente achou um token sem escopo e apagou um volume com os backups dentro; foram 30 horas de crise | Token com escopo mínimo, confirmação fora do agente para ação destrutiva, backup em outro domínio de falha |
| OpenAI e Hugging Face, junho e julho de 2026 (METR e OpenAI) | Em avaliação com salvaguardas reduzidas, cerca de 1.200 agentes trocaram mais de 70 mil mensagens por um serviço de pacotes e cerca de 700 atacaram a Hugging Face, sem avisar humanos | Sandbox sem canal compartilhado, saída de rede fechada, monitoramento de ações e não só de texto |
Fonte: The Register, 21/07/2025; Cyber Security News, 28/04/2026; METR e OpenAI, 26/08/2026
Relatório de plantão é o texto curto que a operação entrega toda manhã, em quatro partes fixas: o que rodou, quanto custou, o que falhou e o que pede decisão. Ele existe para Helena ler em cinco minutos e saber se pode mandar as respostas aos clientes. Cada número traz a conta junto, para que a soma das linhas bata com o extrato do provedor.
Relatório de plantão: lote 2026-11, versão v3
| Parte | Conteúdo |
|---|---|
| O que rodou | 400 perguntas entre 23h e 2h47, com quatro trabalhadores. O trabalhador 3 reiniciou à 0h41 e retomou em 40 s, sem chamada paga em dobro. |
| Resultado | 384 concluídas com evidência conferida; 11 paradas em teto de turnos ou de tempo, enviadas à revisão; 4 retidas por documento marcado na triagem; 1 sem resposta. |
| Quanto custou | US$ 160,16 = 384 × 0,38 (145,92) + 11 × 1,05 (11,55) + 4 × 0,62 (2,48) + 0,21 da que falhou. 73% do teto duro da noite; custo por tarefa bem-sucedida, US$ 0,42. |
| Tetos | 41 perguntas passaram do suave de US$ 0,50; nenhuma chegou ao duro de US$ 1,25; o aviso da noite, em US$ 180, não disparou. |
| O que falhou | Pergunta 2026-11:388:v3: provedor sobrecarregado à 1h12, à 1h20 e à 1h35; esgotou as três tentativas e volta na noite seguinte. |
| Pede decisão | 1. As 4 retidas citam dois ofícios novos com a frase “desconsidere a versão anterior”: liberar ou checar com o cliente. 2. O agente propôs 2 notas de memória: rodar as 60 retidas antes de aprovar. 3. O raiz respondeu com outra versão do modelo desde as 2h10: conferir por amostra as respostas depois desse horário. |
Cenário ilustrativo. 384 + 11 + 4 + 1 = 400; 160,16 ÷ 220 = 73%; 160,16 ÷ 384 = 0,417; intervenções = 11 + 4 = 15.
Escreva o relatório da sua próxima noite de lote com as quatro partes e a conta de cada número. Marque um drill dos três níveis para esta semana. Está pronto quando três coisas acontecem: a soma das linhas de custo bate com o extrato do provedor ao centavo, o nível 1 para a fila em menos de um minuto e a credencial do agente recebe recusa ao tentar escrever na tabela de tetos.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- Montar um relatório de IA só com métricas que resistem à perguntasugerido pelo grafoApresenta o conceito “Custo por tarefa”, usado em “Governar o agente contínuo com portões, orçamento, interruptor e relatório de plantão”.
- CursoVídeo com IA: Claude Code, Codex e ElevenLabssugerido pelo grafo4 capítulos de “RLM 2027” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
- CursoSkills de IA com Vibecoding e Terminalsugerido pelo grafo2 capítulos de “RLM 2027” usam conceitos apresentados em “Skills de IA com Vibecoding e Terminal”.
- CursoSetup Completo: do zero ao Claude Codesugerido pelo grafo3 capítulos de “RLM 2027” usam conceitos apresentados em “Setup Completo: do zero ao Claude Code”.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Agentes de código para executivosComprar primeiro a proteção barata que corta fraudeExaminar conexões de Comprar primeiro a proteção barata que corta fraude
- RAG em produçãoO portão que impede a melhoria de piorar o restoExaminar conexões de O portão que impede a melhoria de piorar o resto
- GEO Universal FrameworkEscolha o modelo por tarefa e evite orquestração desnecessáriaExaminar conexões de Escolha o modelo por tarefa e evite orquestração desnecessária
- Software e IA para executivosLimitar o dano que um agente enganado consegue causarExaminar conexões de Limitar o dano que um agente enganado consegue causar
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Capítulos vizinhos em RLM 2027
- 24Decidir quando treinar pesos e quando a memória basta
- 25Montar o harness que roda de madrugada com estado, checkpoint e retomada
- 26Governar o agente contínuo com portões, orçamento, interruptor e relatório de plantão
- 27Ler 2027 por sinais observáveis em vez de apostar numa previsão
- 28Escolher onde o RLM entra primeiro e decidir o piloto