infimium
capa de contexto privada para agentes de IA
Documentación
Infimium
La Capa de Contexto Privada y Super Cerebro para tu Código. Dale a los agentes de IA memoria persistente, grafos de dependencias profundos y contexto de código instantáneo -- 100% local, cero inflado de tokens.
Demo
Por qué
Los repositorios grandes hacen que los agentes lean demasiado código o pierdan el símbolo correcto. Infimium recupera contexto compacto y relevante antes de que el agente comience 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()
Inicio rápido
Requiere Node.js 22.5+. Desde la carpeta de tu proyecto:
cd /path/to/your/project
npx infimium@latest setup
Ejecuta la configuración desde el repositorio que quieres indexar, no desde tu directorio de inicio (~).
Infimium detiene automáticamente las raíces amplias para que no pueda escanear archivos no relacionados.
Eso crea la configuración global, inicia Ollama si está instalado, descarga nomic-embed-text, indexa el proyecto o espacio de trabajo actual, ejecuta doctor y abre Playground.
El CLI publicado mantiene su punto de entrada ejecutable, por lo que los clientes MCP pueden lanzarlo directamente a través de la configuración a continuación.
Si Ollama aún no está instalado:
npx infimium@latest setup --install-deps
infimium setup crea una configuración global en ~/.infimium/.env. No necesitas un .env en cada proyecto. El código, la documentación, la memoria, los grafos y los vectores se almacenan localmente en ~/.infimium/.
La búsqueda web es opcional. Agrega una clave Tinyfish solo cuando la necesites:
SEARCH_PROVIDER=tinyfish
SEARCH_API_KEY=your_key
La generación completa de infimium plan también necesita un modelo de texto local:
ollama pull llama3.1
infimium plan --dry-run "your task" funciona sin este modelo y muestra primero el contexto de código recuperado.
Conecta tu agente
Cursor, Windsurf, Claude Desktop y otros clientes MCP:
{
"mcpServers": {
"infimium": {
"command": "npx",
"args": ["-y", "infimium", "serve"]
}
}
}
Reinicia el cliente y luego usa:
Use Infimium hello_infimium.
Use Infimium get_context before starting.
Use Infimium semantic_code_search to explain this repository.
Infimium normalmente usa el directorio de trabajo del proceso MCP. Si tu cliente lo inicia en otro lugar, pasa project_path una vez; Infimium recuerda el proyecto activo y lo auto-indexa.
Herramientas
| Herramienta | Qué hace |
|---|---|
hello_infimium | Confirma que el servidor MCP está saludable. |
get_context | Lee el contexto del repositorio YAML guardado, la memoria actual y la transferencia; la actualización explícita refresca el estado de Git/índice. |
infimium_update | Refresca la memoria episódica y los grafos de transferencia; controla los puntos de control automáticos de memoria. |
semantic_code_search | Encuentra código por significado y devuelve primero las firmas de símbolos. |
expand_symbol | Carga una implementación completa solo cuando es necesario. |
query_local_docs | Busca archivos locales Markdown, texto, HTML y PDF. |
dep_graph | Muestra importaciones, llamadores, llamados y rutas HTTP para un símbolo. |
project_memory | Mantiene eventos activos de bloc de notas, hitos compactos y reglas de proyecto duraderas entre agentes. |
plan | Construye un plan de implementación fundamentado a partir del código y el contexto del grafo. |
web_search | Busca en la web a través de la configuración opcional de Tinyfish. |
fetch_url | Extrae Markdown o texto legible de una URL. |
shell | Ejecuta comandos permitidos con tiempos de espera y límites de salida. |
CLI
| Comando | Descripción |
|---|---|
infimium doctor | Ejecuta verificaciones de salud en tus dependencias y configuración. |
infimium status | Muestra el estado actual del índice y la memoria. |
infimium --help | Muestra todos los comandos CLI relevantes. |
infimium playground | Lanza la interfaz web local para explorar índice, grafo y memoria. |
infimium index | Escanea e indexa el directorio del proyecto actual (código, documentación, dependencias). |
infimium watch | Ejecuta el indexador en modo de vigilancia para indexar cambios continuamente. |
infimium get-context | Genera el contexto completo aplanado como YAML (layer.md). |
infimium code-search <query> | Busca código semánticamente y devuelve firmas de símbolos. |
infimium expand-symbol <symbol> | Obtiene el código de implementación completo para un símbolo específico. |
infimium docs-search <query> | Busca semánticamente documentación local en markdown/texto. |
infimium dep-graph <symbol> | Muestra dependencias, llamadores, llamados y grafo de rutas. |
infimium plan --dry-run "<task>" | Redacta un plan de implementación basado en un prompt dado. |
infimium remember "<note>" | Agrega un hito, progreso o decisión a la memoria del proyecto. |
infimium resume | Muestra la tarea activa y los eventos recientes de memoria del bloc de notas. |
infimium memory complete | Compacta el bloc de notas activo en un hito archivado. |
infimium memory search "<query>" | Busca semánticamente reglas de proyectos pasados y el libro mayor de memoria. |
Usa npx infimium ... si no instalaste el paquete globalmente.
Memoria del proyecto
Refresca la memoria tú mismo o habilita puntos de control periódicos para el proyecto actual:
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
Reemplaza las notas de ejemplo con las tuyas. Agrega --project /path/to/repo para seleccionar un proyecto y --file src/auth.ts para adjuntar un archivo relevante. infimium_update y infimium-update son alias de CLI. Los agentes MCP usan la herramienta infimium_update con action: refresh|start|stop|status, project_path y opcionalmente note, task, handoff, files o interval_seconds.
La auto-actualización es opcional y se ejecuta mientras el vigilante CLI en primer plano o un servidor MCP esté abierto. Su configuración por proyecto sobrevive a los reinicios; stop desactiva futuros puntos de control (una actualización en curso puede terminar). Los puntos de control vinculan episodios, tareas, referencias de archivos y notas de transferencia en SQLite local. Las observaciones sin cambios se deduplican. Los puntos de control automáticos registran estado observable, no intención adivinada, y nunca marcan una tarea como completada.
get-context / get_context ahora lee el contexto guardado y la memoria actual sin volver a escanear el repositorio. Incluye un grafo de memoria acotado y orientación para responder preguntas de visión general del repositorio solo cuando se pregunte, usando primero la memoria de Infimium. El contexto faltante se informa explícitamente. Ejecuta infimium update o get-context --refresh para refrescar el contexto del sistema de archivos. Estas son pautas para agentes, no un mecanismo de aplicación para otros clientes.
Infimium mantiene la memoria acotada en sesiones largas:
- Bloc de notas: eventos recientes para la tarea activa.
- Archivo: resúmenes compactos de tareas completadas.
- Libro mayor: decisiones duraderas, reglas, peculiaridades y bloqueadores sin resolver.
Registra progreso significativo mientras trabajas:
infimium remember "Added rate-limit middleware" --type progress --task "Rate limiting"
infimium remember "Use Redis-backed counters in production" --type decision
Cuando la tarea esté completa:
infimium memory complete
Infimium usa el modelo local llama3.1 cuando está disponible y recurre a la compactación determinista cuando no lo está. Los eventos compactados en bruto permanecen almacenados localmente durante siete días antes de podarse. get_context nunca llama a un LLM o servicio de red.
Desde un checkout de la fuente, compila una vez y ejecuta el playground local con:
npm run build
npm run playground
Arquitectura local
- Ollama crea embeddings en tu máquina.
- SQLite integrado almacena vectores, metadatos de índice, memoria del proyecto y aristas del grafo. No se requiere servicio ChromaDB o Docker.
- Los documentos usan fragmentos recursivos conscientes de límites en lugar de cortes fijos ciegos.
- Los analizadores de JavaScript, TypeScript, Python y Dart están incluidos.
- Las gramáticas Tree-sitter WASM de Go, Rust y Java se descargan en el primer uso y se almacenan en caché en
~/.infimium/grammars/. .gitignore,.infimiumignorey los valores predeterminados del framework excluyen dependencias, salida de compilación, artefactos de Flutter, cachés y binarios antes de indexar.semantic_code_searchdevuelve firmas;expand_symbolproporciona código completo bajo demanda.- La memoria del proyecto usa blocs de notas con ámbito de sesión, archivos de hitos compactos y un libro mayor semántico versionado.
get_contextemite anclas estáticas, estado dinámico del repositorio y ejecución activa como zonas YAML separadas.
Múltiples proyectos
Ejecuta el comando de indexación normal desde una carpeta que contenga proyectos relacionados:
infimium index
Infimium detecta raíces de proyectos inmediatas a partir de archivos como pubspec.yaml, package.json, Cargo.toml y go.mod. Muestra los roles y dependencias detectados, pregunta una vez, luego crea infimium.workspace.json, indexa cada proyecto y abre Playground.
Para configuración desatendida:
infimium index --yes --no-playground
Usa --no-workspace para indexar solo el proyecto actual. Los proyectos del espacio de trabajo mantienen memoria y estado de Git separados mientras get_context incluye resúmenes equilibrados y relaciones de grafo de proyectos relacionados.
Infimium - Playground
Infimium reduce el costo inicial de carga de aproximadamente 1,460 tokens a 8 tokens por símbolo. La búsqueda semántica devuelve primero la firma AST; el agente solicita la implementación completa solo cuando la necesita con expand_symbol.
Full implementation ~1,460 tokens
AST skeleton ~8 tokens
Initial payload reduction ~99.5%
Estos son valores de referencia de Playground, no una afirmación de que cada función tenga el mismo tamaño. Inspecciona tu propio repositorio indexado y compara la recuperación AST-primero con la recuperación de texto completo localmente:
infimium playground
Abre Token Economics para ver la diferencia estimada de tokens en tus símbolos indexados reales.
Privacidad
El código, la documentación, los embeddings, la memoria, los datos del grafo, los prompts, las consultas, las rutas de archivos y los nombres de repositorios permanecen locales.
Infimium envía telemetría anónima de ciclo de vida segura para la privacidad para que podamos entender el éxito de la configuración:
init_started,init_completeddoctor_run,doctor_passedindex_started,index_completed,setup_completedserve_started,first_tool_call,playground_opened
La telemetría incluye un ID de instalación anónimo, versión de Infimium, SO, versión principal de Node, marca de tiempo y nombre del evento. Nunca incluye código, rutas de archivos, nombres de repositorios, prompts, consultas de búsqueda, notas de memoria, claves API o identidad del usuario.
Desactívala en cualquier momento:
infimium telemetry off
o establece:
INFIMIUM_TELEMETRY=false
Solución de problemas
Preguntas frecuentes y confusiones comunes
¿Dónde está layer.md?
Cuando ejecutas infimium get-context, imprime el contexto guardado directamente en tu terminal (stdout). Las actualizaciones almacenan YAML con ámbito de proyecto bajo el directorio de datos local de Infimium. Para exportar el contexto guardado a un archivo, usa la redirección de terminal:
infimium get-context > layer.md
¿Por qué la interfaz de Playground dice "Esperando la primera interacción del agente..."?
El rastreador CURRENT TASK refleja el contexto del proyecto almacenado. Ejecuta infimium update --task "Your task" para actualizarlo; get-context lee la instantánea guardada.
¿Cómo formateo infimium remember?
El comando infimium remember requiere un mensaje y una bandera --type (tipos válidos: note, progress, decision, blocker, index, plan). Si también quieres que actualice la tarea activa en Playground, incluye la bandera --task:
infimium remember "Added rate limiting" --type progress --task "Security Features"
Base de datos bloqueada
Si ves Failed to start Infimium: Database is locked, significa que otra instancia de Infimium está manteniendo activamente un bloqueo en la base de datos de memoria SQLite. Esto generalmente sucede si intentas ejecutar infimium index manualmente en una terminal mientras infimium playground o infimium watch aún se está ejecutando en otra. Simplemente detén el proceso en ejecución (Ctrl+C) antes de ejecutar comandos manuales.
Problemas generales de configuración
Ejecuta:
infimium doctor
Cada verificación fallida imprime una corrección de copiar y pegar. Si la configuración aún falla, dale este prompt a tu agente de codificación:
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.
Contribuir
Consulta CONTRIBUTING.md. Agregar un idioma comienza con un fixture de analizador y una prueba de extracción.
El auto-alojamiento es gratuito para siempre bajo la licencia MIT.
