infimium

camada de contexto privado para agentes de IA

Documentação

Infimium

Infimium

A Camada de Contexto Privada e o Super Cérebro para o seu Código. Dê aos agentes de IA memória persistente, gráficos de dependência profundos e contexto de código instantâneo — 100% local, zero inchaço de tokens.

npm version MCP Badge MIT GitHub stars

Demonstração

Infimium demo

Por quê

Repositórios grandes fazem os agentes lerem código demais ou perderem o símbolo certo. O Infimium recupera contexto compacto e relevante antes de o agente começar a editar.

200,000 lines of code
Agent reads everything -> context blown + expensive
grep "price calculation" -> misses calcPropertyValue()
tool: semantic_code_search
query: "price calculation logic"

-> services/property/calc.ts:142 · calcPropertyValue()
-> callers: getListingPrice(), estimatePropertyTax()

Início Rápido

Requer Node.js 22.5+. A partir da pasta do seu projeto:

cd /path/to/your/project
npx infimium@latest setup

Execute a configuração a partir do repositório que você deseja indexar, não do seu diretório inicial (~). O Infimium interrompe raízes amplas automaticamente para que não possa escanear arquivos não relacionados.

Isso cria a configuração global, inicia o Ollama se estiver instalado, baixa o nomic-embed-text, indexa o projeto ou workspace atual, executa o doctor e abre o Playground.

O CLI publicado mantém seu ponto de entrada executável, para que clientes MCP possam iniciá-lo diretamente por meio da configuração abaixo.

Se o Ollama ainda não estiver instalado:

npx infimium@latest setup --install-deps

infimium setup cria uma configuração global em ~/.infimium/.env. Você não precisa de um .env em todos os projetos. Código, documentação, memória, gráficos e vetores são armazenados localmente em ~/.infimium/.

A busca na web é opcional. Adicione uma chave Tinyfish somente quando precisar:

SEARCH_PROVIDER=tinyfish
SEARCH_API_KEY=your_key

A geração completa de infimium plan também precisa de um modelo de texto local:

ollama pull llama3.1

infimium plan --dry-run "your task" funciona sem esse modelo e mostra o contexto de código recuperado primeiro.

Conecte Seu Agente

Cursor, Windsurf, Claude Desktop e outros clientes MCP:

{
  "mcpServers": {
    "infimium": {
      "command": "npx",
      "args": ["-y", "infimium", "serve"]
    }
  }
}

Reinicie o cliente e use:

Use Infimium hello_infimium.
Use Infimium get_context before starting.
Use Infimium semantic_code_search to explain this repository.

O Infimium normalmente usa o diretório de trabalho do processo MCP. Se o seu cliente o iniciar em outro lugar, passe project_path uma vez; o Infimium lembra do projeto ativo e o indexa automaticamente.

Ferramentas

FerramentaO que ela faz
hello_infimiumConfirma que o servidor MCP está saudável.
get_contextLê o contexto do repositório YAML salvo, a memória atual e o handoff; a atualização explícita renova o estado do Git/índice.
infimium_updateAtualiza a memória episódica e os gráficos de handoff; controla checkpoints automáticos de memória.
semantic_code_searchEncontra código por significado e retorna assinaturas de símbolos primeiro.
expand_symbolCarrega uma implementação completa somente quando necessário.
query_local_docsPesquisa arquivos locais Markdown, texto, HTML e PDF.
dep_graphMostra importações, chamadores, chamados e rotas HTTP para um símbolo.
project_memoryMantém eventos ativos de scratchpad, marcos compactos e regras de projeto duráveis entre agentes.
planConstrói um plano de implementação fundamentado a partir do código e do contexto do gráfico.
web_searchPesquisa na web por meio da configuração opcional do Tinyfish.
fetch_urlExtrai Markdown ou texto legível de uma URL.
shellExecuta comandos da lista de permissões com limites de tempo e de saída.

CLI

ComandoDescrição
infimium doctorExecuta verificações de saúde nas suas dependências e configuração.
infimium statusMostra o status atual do índice e da memória.
infimium --helpMostra todos os comandos CLI relevantes.
infimium playgroundInicia a interface web local para explorar índice, gráfico e memória.
infimium indexEscaneia e indexa o diretório do projeto atual (código, documentação, dependências).
infimium watchExecuta o indexador em modo de observação para indexar mudanças continuamente.
infimium get-contextGera o contexto completo achatado como YAML (layer.md).
infimium code-search <query>Pesquisa código semanticamente e retorna assinaturas de símbolos.
infimium expand-symbol <symbol>Busca o código de implementação completo para um símbolo específico.
infimium docs-search <query>Pesquisa semanticamente documentação local em markdown/texto.
infimium dep-graph <symbol>Mostra dependências, chamadores, chamados e o gráfico de rotas.
infimium plan --dry-run "<task>"Elabora um plano de implementação com base em um prompt fornecido.
infimium remember "<note>"Adiciona um marco, progresso ou decisão à memória do projeto.
infimium resumeMostra a tarefa ativa e os eventos recentes de memória do scratchpad.
infimium memory completeCompacta o scratchpad ativo em um marco arquivado.
infimium memory search "<query>"Pesquisa semanticamente regras passadas do projeto e o registro de memória.

Use npx infimium ... se você não instalou o pacote globalmente.

Memória do Projeto

Atualize a memória você mesmo ou habilite checkpoints periódicos para o projeto atual:

infimium update --note "Implemented login validation" --task "Finish login" --handoff "Run the auth tests next"
infimium update start --interval 300
infimium update status
infimium update stop

Substitua as notas de exemplo pelas suas. Adicione --project /path/to/repo para selecionar um projeto e --file src/auth.ts para anexar um arquivo relevante. infimium_update e infimium-update são aliases de CLI. Agentes MCP usam a ferramenta infimium_update com action: refresh|start|stop|status, project_path e opcionalmente note, task, handoff, files ou interval_seconds.

A atualização automática é opcional e roda enquanto o observador CLI em primeiro plano ou um servidor MCP estiver aberto. Sua configuração por projeto sobrevive a reinicializações; stop desativa checkpoints futuros (uma atualização em andamento pode terminar). Checkpoints vinculam episódios, tarefas, referências de arquivos e notas de handoff no SQLite local. Observações inalteradas são deduplicadas. Checkpoints automáticos registram estado observável, não intenção adivinhada, e nunca marcam uma tarefa como concluída.

get-context / get_context agora lê o contexto salvo e a memória atual sem reescanear o repositório. Inclui um gráfico de memória limitado e orientação para responder perguntas de visão geral do repositório somente quando perguntado, usando a memória do Infimium primeiro. Contexto ausente é relatado explicitamente. Execute infimium update ou get-context --refresh para atualizar o contexto do sistema de arquivos. Estas são diretrizes de agente, não um mecanismo de imposição para outros clientes.

O Infimium mantém a memória limitada em sessões longas:

  • Scratchpad: eventos recentes para a tarefa ativa.
  • Arquivo: resumos compactos de tarefas concluídas.
  • Registro: decisões duráveis, regras, peculiaridades e bloqueadores não resolvidos.

Registre progresso significativo enquanto trabalha:

infimium remember "Added rate-limit middleware" --type progress --task "Rate limiting"
infimium remember "Use Redis-backed counters in production" --type decision

Quando a tarefa estiver concluída:

infimium memory complete

O Infimium usa o modelo local llama3.1 quando disponível e recorre à compactação determinística quando não está. Eventos compactados brutos permanecem armazenados localmente por sete dias antes da poda. get_context nunca chama um LLM ou serviço de rede.

A partir de um checkout de código-fonte, compile uma vez e execute o playground local com:

npm run build
npm run playground

Arquitetura Local

  • O Ollama cria embeddings na sua máquina.
  • O SQLite embutido armazena vetores, metadados de índice, memória do projeto e arestas de gráfico. Nenhum serviço ChromaDB ou Docker é necessário.
  • Documentos usam chunks recursivos com consciência de limites em vez de fatias fixas cegas.
  • Parsers de JavaScript, TypeScript, Python e Dart são incluídos.
  • Gramáticas Tree-sitter WASM de Go, Rust e Java são baixadas no primeiro uso e armazenadas em cache em ~/.infimium/grammars/.
  • .gitignore, .infimiumignore e padrões de framework excluem dependências, saída de build, artefatos Flutter, caches e binários antes da indexação.
  • semantic_code_search retorna assinaturas; expand_symbol fornece código completo sob demanda.
  • A memória do projeto usa scratchpads com escopo de sessão, arquivos de marcos compactos e um registro semântico versionado.
  • get_context emite âncoras estáticas, estado dinâmico do repositório e execução ativa como zonas YAML separadas.

Múltiplos Projetos

Execute o comando de indexação normal a partir de uma pasta contendo projetos relacionados:

infimium index

O Infimium detecta raízes de projeto imediatas a partir de arquivos como pubspec.yaml, package.json, Cargo.toml e go.mod. Ele mostra as funções e dependências detectadas, pergunta uma vez, então cria infimium.workspace.json, indexa todos os projetos e abre o Playground.

Para configuração não assistida:

infimium index --yes --no-playground

Use --no-workspace para indexar apenas o projeto atual. Projetos de workspace mantêm memória e estado Git separados enquanto get_context inclui resumos equilibrados e relações de gráfico de projetos relacionados.

Infimium - Playground

O Infimium reduz o custo inicial de payload de aproximadamente 1.460 tokens para 8 tokens por símbolo. A busca semântica retorna a assinatura AST primeiro; o agente solicita a implementação completa somente quando precisa com expand_symbol.

Full implementation   ~1,460 tokens
AST skeleton               ~8 tokens
Initial payload reduction  ~99.5%

Estes são valores de referência do Playground, não uma afirmação de que toda função tem o mesmo tamanho. Inspecione seu próprio repositório indexado e compare a recuperação AST-primeiro com a recuperação de texto completo localmente:

infimium playground

Abra Economia de Tokens para ver a diferença estimada de tokens em seus símbolos indexados reais.

Privacidade

Código, documentação, embeddings, memória, dados de gráfico, prompts, consultas, caminhos de arquivo e nomes de repositório permanecem locais.

O Infimium envia telemetria anônima de ciclo de vida segura para privacidade para que possamos entender o sucesso da configuração:

  • init_started, init_completed
  • doctor_run, doctor_passed
  • index_started, index_completed, setup_completed
  • serve_started, first_tool_call, playground_opened

A telemetria inclui um ID de instalação anônimo, versão do Infimium, SO, versão principal do Node, timestamp e nome do evento. Nunca inclui código, caminhos de arquivo, nomes de repositório, prompts, consultas de busca, notas de memória, chaves de API ou identidade do usuário.

Desative a qualquer momento:

infimium telemetry off

ou defina:

INFIMIUM_TELEMETRY=false

Solução de Problemas

FAQ e Confusões Comuns

Onde está layer.md? Quando você executa infimium get-context, ele imprime o contexto salvo diretamente no seu terminal (stdout). Atualizações armazenam YAML com escopo de projeto no diretório de dados local do Infimium. Para exportar o contexto salvo para um arquivo, use redirecionamento de terminal:

infimium get-context > layer.md

Por que a interface do Playground diz "Aguardando primeira interação do agente..."? O rastreador CURRENT TASK reflete o contexto do projeto armazenado. Execute infimium update --task "Your task" para atualizá-lo; get-context lê o snapshot salvo.

Como formatar infimium remember? O comando infimium remember requer uma mensagem e um sinalizador --type (tipos válidos: note, progress, decision, blocker, index, plan). Se você também quiser que ele atualize a tarefa ativa no Playground, inclua o sinalizador --task:

infimium remember "Added rate limiting" --type progress --task "Security Features"

Banco de dados bloqueado

Se você vir Failed to start Infimium: Database is locked, significa que outra instância do Infimium está segurando ativamente um bloqueio no banco de dados de memória SQLite. Isso geralmente acontece se você tentar executar infimium index manualmente em um terminal enquanto infimium playground ou infimium watch ainda está rodando em outro. Simplesmente pare o processo em execução (Ctrl+C) antes de executar comandos manuais.

Problemas Gerais de Configuração

Execute:

infimium doctor

Cada verificação falha imprime uma correção de copiar e colar. Se a configuração ainda falhar, dê este prompt ao seu agente de codificação:

Set up Infimium in this repository. Install/start Ollama, pull nomic-embed-text,
run npx infimium init, run npx infimium index, and make all six
npx infimium doctor checks pass. Do not commit secrets.

Contribuindo

Veja CONTRIBUTING.md. Adicionar um idioma começa com um fixture de parser e teste de extração.

Auto-hospedagem é gratuita para sempre sob a licença MIT.