CIAM: Ferramenta open-source reduz até 90% tokens de IA em projetos Django

Em um cenário onde o custo de tokens de IA se torna um fator crítico no desenvolvimento de software, uma solução brasileira emerge como resposta eficiente. O CIAM (Context IA Manager) é uma ferramenta open-source desenvolvida em Go que promete reduzir drasticamente o consumo de tokens em workflows que utilizam assistentes como GitHub Copilot, Claude ou similares em editores como VSCode, Cursor e Windsurf, especialmente em projetos Django.

O problema real: tokens consumidos antes da primeira linha de código

A motivação para criar o CIAM surgiu de uma frustração prática. Em projetos Django de médio porte — envolvendo autenticação, integração com Stripe, multi-tenancy e Celery — um padrão desgastante se repetia. Ao iniciar uma conversa com um assistente de IA para implementar um novo endpoint, o processo começava com pedidos sequenciais de arquivos: models.py, serializers.py, urls.py. O desenvolvedor colava arquivo por arquivo, consumindo cerca de 8k tokens de contexto antes mesmo de escrever a primeira linha de código útil. Quando a janela de contexto era excedida, todo o processo precisava ser reiniciado.

O problema se amplificava porque a IA não possuía memória persistente entre sessões. Decisões arquiteturais importantes — como usar UUID como primary key, padrões de response envelope ou configurações específicas de workers Celery (como acks_late=True devido a bugs de idempotência) — eram perdidas. Cada nova sessão começava do zero, elevando custos e reduzindo a eficiência que essas ferramentas prometem entregar.

Arquitetura do CIAM: busca semântica e compressão de contexto

Inspirado pelo projeto th0th (TypeScript/Node.js), que utiliza busca semântica e compressão de contexto para reduzir tokens, o CIAM foi reimplementado do zero em Go com diferenciações estratégicas. A ferramenta é um binário único que não requer Node.js como dependência, oferece consciência nativa da estrutura Django, memória persistente entre projetos e métricas reais de economia de tokens.

A arquitetura opera através de três componentes principais: uma API em Go (que indexa, gera embeddings via Ollama e armazena em SQLite), um servidor MCP (Model Context Protocol) que traduz chamadas do assistente em requisições HTTP, e uma CLI para comandos como indexação, busca e monitoramento.

Indexador com conhecimento específico de Django

Um diferencial crucial é o indexador que categoriza automaticamente os arquivos Django. Em vez de tratar todo código como “genérico”, o CIAM identifica e classifica:

  • models.py → chunk_type: model
  • views.py → chunk_type: view
  • serializers.py → chunk_type: serializer
  • urls.py → chunk_type: url
  • tasks.py → chunk_type: task
  • conftest.py → chunk_type: test
  • signals.py → chunk_type: signal

Esta categorização permite buscas filtradas e precisas. O usuário pode, por exemplo, buscar especificamente por modelos relacionados a autenticação, views para envio de email ou tasks com determinadas permissões.

Busca híbrida e indexação incremental

O CIAM implementa uma busca híbrida que combina similaridade vetorial (embeddings) com BM25 (busca por keywords), usando a estratégia Reciprocal Rank Fusion. Isso garante que termos exatos como nomes de classes ou campos sejam encontrados eficientemente, complementando a busca semântica.

A indexação incremental por arquivo resolve um problema comum: re-indexar completamente projetos com 200+ arquivos Python é lento e desperdiça recursos. O CIAM utiliza hash SHA-256 para cada arquivo, comparando com versões anteriores armazenadas. Se o hash não mudou, o arquivo é ignorado no processo de re-embedding, economizando tempo e processamento.

Gestão de conhecimento integrada: ADR, PRD e planos

O CIAM reconhece que código é apenas parte do contexto. As decisões arquiteturais (ADR), requisitos de produto (PRD) e planos de implementação são igualmente cruciales para que a IA compreenda o “porquê” e o “quê” além do “como”. A ferramenta incorpora um sistema de conhecimento diretamente na CLI, permitindo criar e indexar automaticamente esses documentos.

Comandos como ciam prd new "Sistema de billing via Stripe" ou ciam adr new "Fix: race condition no worker de emails" geram documentos estruturados e imediatamente indexados. Quando o assistente precisa implementar uma feature, pode recuperar em uma única chamada o PRD, o plano de execução e o código relevante, entendendo completamente o contexto da tarefa.

Memória persistente entre sessões e projetos

A capacidade de “lembrar” decisões é um dos pilares do CIAM. Com comandos como ciam remember "Usar UUID como PK em todos os models — decidido para facilitar merges entre ambientes" ou ciam remember "Celery workers com acks_late=True — bug de idempotência corrido em março" --type bug, essas informações são armazenadas em um banco separado com embeddings próprio.

Essas memórias são recuperáveis meses depois, em qualquer projeto. Quando o assistente investiga uma decisão sobre UUID, o contexto histórico é fornecido, evitando repetição de debates ou implementações inconsistentes.

Resultados concretos: economia de tokens em números

Os testes práticos demonstram reduções significativas. Em uso inicial pontual (com poucas buscas), a economia chegou a 95%: um projeto estimado em ~29104 tokens teve apenas 1240 tokens servidos à IA. Em uma tarde de uso intenso (25+ chamadas MCP reais), a redução foi de 41%, com ~30821 tokens de projeto tendo ~18315 tokens servidos, economizando ~12506 tokens.

A métrica é conservadora: compara tokens servidos com o tamanho total do índice. Na prática, o benefício real é maior, pois o consumo sem o CIAM cresce linearmente com o número de perguntas, enquanto o índice cresce apenas com o tamanho do projeto. A redução efetiva no dia-a-dia se aproxima de 90%+.

Integração via MCP: 12 ferramentas para o assistente

Quando integrado ao editor via MCP, o assistente ganha acesso a 12 ferramentas especializadas:

  • ciam_route: Direciona a intenção do usuário (em linguagem natural) à ferramenta adequada.
  • ciam_search: Busca genérica no código indexado.
  • ciam_context: Busca e comprime contexto em uma única chamada.
  • ciam_django_map: Mapa estrutural do projeto (apps → models → views → urls).
  • ciam_adr_search: Recupera decisões arquiteturais.
  • ciam_prd_search: Consulta requisitos de produto.
  • ciam_plan_search: Acessa planos de implementação.
  • ciam_research_search: Pesquisa em documentos externos (artigos, PDFs).
  • ciam_decision_context: Ferramenta mais poderosa, que fornece chunks de código, ADRs, PRDs e planos relevantes em um único request.
  • ciam_remember: Armazena novas decisões na memória persistente.
  • ciam_recall: Recupera memórias de sessões anteriores.
  • ciam_compress: Comprime código (mantém assinaturas, remove docstrings).
  • ciam_index: Re-indexa o projeto via MCP.

Esta suite transforma o assistente de IA em um agente verdadeiramente contextualizado, com conhecimento profundo e histórico do projeto.

Instalação e uso prático

A implementação é simplificada em três comandos básicos, exigindo apenas Go 1.22+ e Docker como pré-requisitos. Clone o repositório, execute make install para obter o binário CIAM, inicie os serviços com ciam up, e no seu projeto Django utilize ciam init (para auto-detectar o editor e gerar configuração MCP), ciam index . (para indexação inicial) e ciam watch . (para monitoramento e re-indexação automática em background).

A ferramenta é projetada para operação 100% offline, preservando a privacidade do código, e oferece uma dashboard web com estatísticas de economia por projeto.

Para desenvolvedores Django que enfrentam custos crescentes com tokens de IA ou perda de contexto entre sessões, o CIAM apresenta uma solução tangível. A redução de custos, a precisão das respostas e a memória persistente não apenas otimizam o workflow, mas transformam a relação entre o desenvolvedor e o assistente de IA, tornando-o um colaborador verdadeiramente inteligente e autônomo.

O projeto, disponível como open-source, continua evoluindo com planos para suporte a FastAPI e GenericPython, indexação por eventos de filesystem (inotify) e expansão da dashboard. A comunidade é incentivada a testar, reportar melhorias e compartilhar métricas de redução de tokens em seus próprios projetos, contribuindo para uma ferramenta que busca democratizar o uso eficiente de IA no desenvolvimento de software.

Compartilhar este artigo
Canal oficial de conteúdo do portal Overcentral. A Equipe Central produz notícias, guias e análises com foco em credibilidade e relevância, garantindo que você receba o melhor conteúdo editorial diariamente.