Por Que Seu Agente Precisa
de um Primitivo Cognitivo

LLMs sao bons em raciocinio. Sao ruins em leitura.

Aqui esta uma especificacao de construcao com seis secoes. Seu agente precisa le-la e descobrir o que importa. Vai:

## 1. Escopo do Trabalho O Contratado devera fornecer toda mao de obra, materiais... conforme ACI 318-19 e ASTM C150-22. ## 2. Informacoes Gerais Este projeto esta localizado na esquina da Rua Principal... O arquiteto responsavel e Smith & Associados. ## 3. Requisitos Estruturais A pressao maxima admissivel no solo nao devera exceder 4.000 psf... ASTM A615, Grau 60. ## 4. Requisitos de Seguranca Todo trabalho devera estar em conformidade com OSHA 1926. Trabalhadores devem usar capacetes, oculos de seguranca... ## 5. Condicoes de Pagamento Retencao de 10%... Multa por atraso de $2.500 por dia corrido... ## 6. Contexto Para referencia, projetos similares na regiao normalmente levam 8-12 meses para trabalho de fundacao.

Um LLM bruto vai ler todas as seis secoes com a mesma atencao. Vai gastar a mesma quantidade de computacao em "O arquiteto responsavel e Smith & Associados" que gasta em "Multa por atraso de $2.500 por dia corrido." Vai tratar a secao de contexto com a mesma importancia que a secao de seguranca.

Esse e o problema fundamental. Seu agente le tudo igualmente porque nao tem estrutura para dizer o que importa.

O que e um primitivo cognitivo

Uma CPU nao raciocina sobre dados. Ela tem primitivos: ADD, COMPARE, LOAD, STORE. Pensamento de alto nivel e composto a partir dessas operacoes de baixo nivel.

Agentes de IA funcionam da mesma forma. Sua camada de orquestracao — LangChain, CrewAI, chamadas diretas de API, qualquer coisa — compoe a partir de primitivos. Os usuais: retrieve, summarize, generate, classify. Mas falta um no stack.

Decomposicao: dividir texto bruto em unidades semanticas classificadas e priorizadas antes do raciocinio comecar.

Isso nao e sumarizacao. Sumarizacao perde informacao. Nao e retrieval. Retrieval requer uma query. Nao e classificacao no sentido de ML. Nao ha modelo, dados de treino, nem probabilidades.

E analise estrutural. O mesmo documento entra. Unidades classificadas saem. Toda vez. Em 4 milissegundos.

Como a decomposicao funciona

Aquela especificacao de seis secoes? Uma chamada de funcao:

from decompose import decompose_text result = decompose_text(spec_text) # ~14ms media, 6 unidades

Aqui esta o que seu agente ve em vez de 2.045 caracteres de texto bruto:

4. Requisitos de Seguranca
8.0
5. Condicoes de Pagamento
3.0
1. Escopo do Trabalho
2.0
3. Requisitos Estruturais
0.6
2. Informacoes Gerais
0.4
6. Contexto
0.1

Secao 4 recebeu 8.0. Secao 6 recebeu 0.1. Seu agente agora sabe quais 30% do documento enviar para o LLM e quais 70% pular.

Por que Seguranca recebeu 8.0

Quatro palavras ativaram: shall (autoridade obrigatoria), must (obrigatorio), required (obrigatorio), e comply (risco de conformidade). A formula de atencao e direta:

authority_weight = 1.0 # mandatory: 4 correspondencias risk_multiplier = 2.0 # categoria compliance attention = min(10.0, auth_score × risk_mult) = min(10.0, 4.0 × 2.0) = 8.0

Sem machine learning. Sem embeddings. A palavra "shall" significa "obrigatorio" desde que a RFC 2119 foi publicada em 1997. Significa a mesma coisa em uma especificacao de construcao, uma especificacao de software e um contrato de compras. Regex e a ferramenta certa aqui.

Por que Contexto recebeu 0.1

Sem palavras-chave obrigatorias. Sem indicadores de risco. Uma correspondencia "permissiva" da linguagem generica. A formula de atencao atinge o minimo:

authority_weight = 0.35 # permissive risk_multiplier = 0.3 # informational attention = 0.35 × 0.3 = 0.1

"Projetos similares na regiao normalmente levam 8-12 meses." Contexto util, mas nao e uma obrigacao, nao e um risco, e nao e algo que seu agente precisa agir. Atencao: 0.1.

O que mais o primitivo extrai

Atencao e a manchete, mas cada unidade carrega uma classificacao completa:

Unidade 5 — Condicoes de Pagamento
authority: mandatory risk: financial attention: 3.0 actionable: true irreducible: true dates: ["December 31, 2026"] financial: ["$2,500", "10%"] → Prazo, valor em dolar, percentual. Tudo extraido. Tudo tipado.
Unidade 3 — Requisitos Estruturais
authority: mandatory risk: informational attention: 0.6 actionable: true irreducible: true entities: ["ASTM A615"] irreducibility: PRESERVE_VERBATIM → "4.000 psf" e "4.000 psi" sao valores de engenharia. Nao podem ser parafraseados. PRESERVE_VERBATIM.

Observe a unidade de requisitos estruturais: pontuacao de atencao baixa (0.6) mas marcada PRESERVE_VERBATIM. Seu agente pode pular essa unidade na triagem inicial, mas se algum dia resumir o documento, ele sabe: nao parafrasear "4.000 psf." Esse numero e irredutivel. Erra-lo mata pessoas.

Como isso muda a arquitetura do agente

Sem um primitivo de decomposicao, o pipeline do seu agente e assim:

documento → chunk → embed → retrieve → LLM → resposta # Todo chunk tratado igualmente. # O LLM decide o que importa. # 100% dos tokens vao para o modelo.

Com decomposicao:

documento → decompose → rotear → LLM → resposta # Cada unidade tem authority, risk, attention. # Unidades de alta atencao vao para o modelo. # Unidades de baixa atencao sao puladas ou resumidas. # ~30% dos tokens vao para o modelo.

A diferenca nao e apenas eficiencia. E corretude. Tres coisas mudam:

1. Alocacao de atencao

Em vez do LLM decidir no que focar (o que ele faz mal para documentos tecnicos), os scores de atencao pre-alocam computacao. Conteudo critico de seguranca e processado. Contexto nao. Seu agente age como um engenheiro experiente que sabe quais secoes de uma especificacao ler primeiro.

2. Consciencia de irredutibilidade

Quando uma unidade e marcada PRESERVE_VERBATIM, seu agente sabe que nao deve resumir ou parafrasear. "4.000 psf" permanece "4.000 psf" — nao se torna "aproximadamente 4.000 psf" ou "cerca de 4 kips por pe quadrado." Essa e a diferenca entre uma ferramenta util e uma responsabilidade legal.

3. Roteamento consciente de entidades

Decompose extrai cada referencia a normas (ASTM, ASCE, IBC, OSHA), cada data, cada valor em dolar. Seu agente pode rotear por tipo de entidade: enviar referencias OSHA para uma cadeia de conformidade de seguranca, valores financeiros para uma cadeia de auditoria de pagamento, referencias ACI para uma cadeia de analise estrutural. Sem busca por similaridade de embeddings. Apenas correspondencia de padroes em metadados estruturados.

O que isso nao e

Decompose nao e substituto de LLMs. E um pre-processador. Algumas coisas que ele explicitamente nao faz:

Esse e o ponto. Seu LLM cuida de nuance, referencia cruzada, intencao e raciocinio de dominio. Decompose cuida de todo o resto — o trabalho mecanico de dividir, classificar, pontuar e extrair — para que o LLM possa focar no que ele realmente faz bem.

Por que precisa ser deterministico

Imagine um agente processando documentos de conformidade de seguranca. Roda na segunda-feira, sinaliza a secao 4 como critica de seguranca. Roda na quarta-feira, classifica a mesma secao como "consultiva" porque o LLM estava um pouco mais criativo naquele dia.

Isso nao e uma ferramenta. E um cara ou coroa.

Decompose retorna a mesma saida para a mesma entrada. Toda vez. Nao tem botao de temperatura, variacao de amostragem, nem drift de modelo. Se "shall" correspondeu a mandatory ontem, corresponde a mandatory hoje. Se a secao 4 pontuou 8.0 em producao, pontua 8.0 na sua suite de testes. Voce pode escrever assercoes contra isso. Pode audita-lo.

Para industrias onde documentos tem peso legal — construcao, saude, defesa, financas — determinismo nao e um diferencial. E pre-requisito.

O padrao primitivo

O ponto mais amplo: agentes precisam de mais primitivos, nao de mais parametros.

A trajetoria atual de ferramentas de IA e: tornar o modelo maior, dar mais contexto, adicionar mais retrieval. Isso funciona, ate nao funcionar. Uma janela de contexto de 200K nao ajuda se 70% dos tokens sao ruido de fundo. RAG nao ajuda se os embeddings nao conseguem distinguir um requisito obrigatorio de uma nota informativa.

Primitivos ajudam porque operam em uma camada diferente. Nao competem com o LLM — alimentam-no. Um documento bem decomposto faz qualquer modelo funcionar melhor: menor contexto, maior sinal, metadados estruturados para rotear.

Decompose e um primitivo. Deveria haver mais. Resolucao de entidades, ordenacao temporal, construcao de grafos de referencia, rastreamento de obrigacoes — sao todas operacoes deterministicas que agentes atualmente terceirizam para o modelo. Cada uma delas poderia ser uma biblioteca de regex-e-heuristicas que roda em milissegundos e da ao LLM entradas estruturadas em vez de texto bruto.

Estamos construindo esses primitivos na Echology. Decompose e o primeiro que abrimos como open source.

Experimente

pip install decompose-mcp from decompose import decompose # Decomponha qualquer documento result = decompose(open("contrato.md").read()) # Roteie por atencao for unit in result["units"]: if unit["attention"] >= 2.0: llm_analyze(unit) # enviar ao modelo elif unit["irreducible"]: preserve(unit) # manter literal else: skip(unit) # ruido de fundo # Ou rode como ferramenta MCP para seu agente python -m decompose --serve

Cada unidade vem com authority, risk, attention, actionable, irreducible, entities, dates, financial. Sem API key. Sem setup. Roda offline.

Seu LLM cuida do raciocinio. Deixe outra coisa cuidar da leitura.