Agentes de IA

Orquestração, memória e contexto dos agentes

Como os agentes de IA da Radhr AI são disparados (fila, cadeias, Queues × waitUntil), o esqueleto comum executarAnalise, os modelos e preços, o limite de IA por organização, a memória (analises_ia, recomendacoes_ia, copiloto_conversas), os vetores, o contexto por organização, a segurança de prompt e a documentação viva como fonte de contexto.

Esta página descreve a infraestrutura comum aos agentes. O papel de cada agente está em [Agentes de IA — funil comercial](ia/agentes-comerciais), em [Agentes de IA — contrato, entrega e carteira](ia/agentes-entrega) e em [Organization Intelligence](ia/organization-intelligence) (perfil, auditoria, Health Score, Delivery Advisor e Customer Success).

Fila de agentes

Arquivo: src/fila.ts. Executor: src/agentes.ts.

A fila está ligada desde 26/09/2026 (Workers Paid; queues em wrangler.jsonc: Queue radar-agentes, lote de até 5, 3 entregas). Se o envio para a fila falha, a mensagem roda inline no waitUntil (log fila.envio_falhou). Sem o binding (desenvolvimento, testes), tudo roda inline.

Cadeias (CADEIAS)

GatilhoAgenteDepoisQuem dispara hoje
handoffsiteembedding, resumo, proxima_acaoAgente SDR, no handoff ou no encerramento da Triagem
fechadoembedding—Conversão do lead em cliente
convertidoriscosucessoConversão (alvo: cliente): risco e plano de sucesso do cliente novo
cliente_movimentorisco—Nota, oportunidade aberta ou tarefa concluída no Cliente 360
assinadoescopoauditoriaÚltimo signatário na assinatura Radar (/c/:token/assinar) e conclusão pela Clicksign; o contrato novo é evidência para o Organization Auditor
escopo_concluidoexpansao—Encerramento do projeto em /radar/escopo/:id
escopo_movimentoentrega—Etapa do escopo movida em /radar/escopo/:id (item, concluir, adicionar, status, datas)
onboarding_publicadosaudeauditoriaPerfil publicado pelo onboarding (alvo: organização)
fonte_alteradaauditoriasaudeFonte da organização (site, redes) relida com conteúdo diferente no onboarding
catalogo_editadoauditoria—Edição do catálogo em /radar/catalogo
detalhamento_fechadoproxima_acao—Fechamento da etapa 2 (POST /d/:codigo/fechar), com forcar e origem detalhamento
aberturaproxima_acao—Abertura da Pré-proposta (/p) e da Proposta (/pp, origem proposta_aberta); respeita o intervalo mínimo

Toda cadeia declarada tem quem a dispare, e test/fila.test.ts confere isso no código-fonte. A próxima ação continua síncrona onde o resultado é usado na hora:

Por isso não há cadeias reuniao_registrada nem silencio. Os demais gatilhos avulsos (aceite pelo lead, WhatsApp, webhooks do Resend, formulário de contato) também chamam gerarProximaAcao direto.

O botão "reler" da expansão no 360 despacha uma mensagem avulsa (agente: 'expansao', sem cadeia).

Crons

Os crons rodam por executarCron em src/cron.ts (o scheduled() de src/index.ts só delega; o "Rodar agora" de /radar/plataforma chama a mesma função), uma vez por organização ativa (paraCadaOrganizacao), cada uma no seu contexto. Detalhes de operação (marcadores, alertas, recuperação) em [Infraestrutura](tecnica/infraestrutura).

Esqueleto comum: executarAnalise

Arquivo: src/agentes.ts. Usam o esqueleto o risco do cliente (ANALISE_RISCO_CLIENTE), a expansão (ANALISE_EXPANSAO), o Delivery Advisor (ANALISE_ENTREGA, alvo escopo, evento entrega_sugerida) e o Customer Success (ANALISE_SUCESSO, alvo cliente, evento sucesso_plano). Os agentes mais antigos (site, resumo, estratégia, reunião, detalhamento, próxima ação, briefing) e o Organization Auditor (tipo auditoria, alvo organização) repetem o mesmo padrão à mão. Contrato, escopo e mudança gravam nas próprias tabelas.

O fluxo tem sete passos:

  1. Entrada: entrada(env, alvoId) monta o system prompt, a mensagem do usuário e a chaveHash. Devolver null significa "nada a analisar".
  2. Hash: SHA-256 de {v: versao, k: chaveHash}. A chave contém só o que muda a resposta: ids de eventos, status, datas. O risco do cliente não inclui a data: o passar do tempo entra pelas regras calculadas na hora (chave e nível). A expansão inclui o mês. Os agentes que leem o perfil da Organização põem a versão dele na chave, e os que leem um documento funcional, a versão do documento (versaoDocumental).
  3. Cache: se já existe uma linha em analises_ia para o mesmo alvo, tipo e hash_entrada, ela é devolvida sem chamar o modelo. Com forcar, o hash é gravado com o sufixo :timestamp e não serve de cache depois.
  4. Chamada: chamarClaude com o modelo, maxTokens e thinking do agente, rótulo = tipo. O custo vai para ia_chamadas.
  5. Validação em código: interpretar(texto) devolve o objeto tipado ou null. O código nunca confia no texto: vocabulários fechados, tamanhos cortados, ids conferidos.
  6. Fallback: sem saída válida, roda regra(env, alvoId), a versão determinística. A linha é gravada com modelo: 'regra' e sem custo.
  7. Gravação: grava em analises_ia (com alvo_tipo/alvo_id, e lead_id quando há lead de origem), registra o evento <tipo>_gerado (regra, custo_usd) e roda aplicar, se houver. A expansão, por exemplo, reprecifica e reescreve o conteúdo em aplicar.

Modelos, preços e limite

Arquivo: src/claude.ts.

Um modelo desconhecido é cobrado pelo preço de MODELO.

Memória

OndeO que guardaValidade e reaproveitamento
analises_iaSaída de cada análise por alvo (lead_id ou alvo_tipo/alvo_id) e tipo: site, resumo, estrategia, detalhamento, reuniao, risco (do lead, vindo da próxima ação), risco_cliente, expansao, entrega (alvo escopo), sucesso (alvo cliente), auditoria (alvo organizacao), briefing (alvo usuario), relatorio (alvo organizacao). Também grava modelo, versao_prompt, hash_entrada, tokens e custo_usd.Cache por hash de entrada. Os leitores pegam a mais recente (order=id.desc). O histórico fica.
recomendacoes_iaPróxima ação do lead: ação, título, porquê, urgência, assunto, rascunho, alternativa, confiança, modelo, versão, hash, custo e o desfecho (status, motivo, resolvida_por, resolvida_em).Uma pendente por lead; a nova expira as anteriores (expirada). O desfecho (executada, editada, dispensada) é o dado de treino.
copiloto_conversasConversa do Consultor com o Copiloto: mensagens (com tool use), ações pendentes, auditoria das decisões, número de chamadas, custo.Uma conversa ativa por usuário; expira_em padrão de 7 dias (migração 0015). O histórico é cortado para as últimas 60 mensagens.
conversasTranscrição da Triagem do Agente SDR (com os blocos tool_use/tool_result).Uma por sessão do widget. Lida pelo resumo, pela próxima ação, pela estratégia, pelo rascunho e pelo detalhamento.
ia_chamadasUma linha por chamada ao modelo: rótulo, modelo, tokens, cache, US$.Base do custo por lead e por Organização e do limite mensal.

Além delas, o perfil de IA da Organização (organizacao_perfil_ia, lido por contextoOrganizacional com cache de 1 min) entra no system prompt de quase todos os agentes; ver [Agentes de IA — funil comercial](ia/agentes-comerciais) e [Organization Intelligence](ia/organization-intelligence).

A memória de cada agente é montada a cada chamada a partir dessas tabelas e das de negócio (eventos, notas, tarefas, propostas). Nenhum agente guarda estado próprio fora delas.

Vetores (leads parecidos)

Arquivo: src/embeddings.ts. Tabela lead_embeddings. Função SQL leads_parecidos (pgvector, migração 0011).

Contexto por organização

Arquivo: src/org-contexto.ts.

Segurança de prompt

Documentação viva como fonte de contexto

Pelo ADR-0010, a documentação desta pasta (docs/conhecimento/), empacotada em src/conhecimento/base.gerada.ts por scripts/conhecimento.mjs, é fonte de contexto dos agentes pela ferramenta de leitura **consultar_documentacao** do Copiloto. Com ela, o Copiloto responde "como funciona" e "por que a Radhr AI fez isso" citando o documento, e não de memória. O prompt do Copiloto manda consultá-la antes de explicar a Radhr AI e dizer que a documentação não cobre o assunto em vez de supor.

Ela segue as regras das ferramentas de leitura:

Desde a fase 1, a documentação também entra no system prompt de alguns agentes: promptDocumental(area) (src/conhecimento/contexto.ts) anexa a seção "Regras de negócio" do documento funcional da área, com o aviso de que as validações do código prevalecem, e, na estratégia, no risco do cliente e na expansão, versaoDocumental(area) põe a versão do documento no hash (documento revisado → análise refeita). Usam: estratégia (propostas), risco do cliente e expansão (clientes), Scope Builder/Validator e Change Request Analyzer (escopos).

Na fase 2, documentos editados na Radhr AI valem por cima do bundle (sincronizarBase, src/conhecimento/edicao.ts): a busca, o assistente, o Copiloto e o contexto dos agentes leem o texto novo. Toda consulta do Copiloto à documentação é registrada em doc_perguntas (registrarPergunta), com as fontes devolvidas, e conta no uso da documentação (fase 4). A consulta sem fonte também entra na fila de revisão.

O assistente de documentação e o Smart Changelog estão em Documentation Agent e Knowledge Center.

Registro central e avaliação

Revisado em 12/10/2026 · ← Toda a documentação