6ab93d34858363664dd8b7f0e9d34053bdaa9367
Sistema local de gestión de contexto para IA: - Log inmutable (blockchain-style) - Algoritmos versionados y mejorables - Agnóstico al modelo (Anthropic, OpenAI, Ollama) - Sistema de métricas y A/B testing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Context Manager
Sistema local de gestión de contexto para IA, agnóstico al modelo.
Características
- Log inmutable: Tabla de referencia no editable con encadenamiento de hashes (blockchain-style)
- Gestor de contexto mejorable: Algoritmos versionados y configurables
- Agnóstico al modelo: Soporta Anthropic, OpenAI, Ollama y cualquier otro proveedor
- Sistema de métricas: Evaluación continua del rendimiento
- A/B Testing: Experimentación entre versiones de algoritmos
- Auto-mejora: Sugerencias automáticas basadas en métricas
Arquitectura
┌─────────────────────────────────────────────────────────────────┐
│ TABLAS NO EDITABLES │
│ ┌─────────────────┐ │
│ │ immutable_log │ ← Log de mensajes (blockchain-style) │
│ │ sessions │ ← Registro de sesiones │
│ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ TABLAS EDITABLES │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ context_blocks │ │ memory │ │ knowledge_base │ │
│ │ (bloques ctx) │ │ (memoria LP) │ │ (RAG simple) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ algorithms │ │ metrics │ │
│ │ (versionados) │ │ (rendimiento) │ │
│ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Instalación
# Clonar
git clone <repo>/context-manager
cd context-manager
# Instalar dependencias
pip install -r requirements.txt
# Inicializar base de datos
python -m src.cli init --database context_manager
Uso básico
CLI
# Chat interactivo con Anthropic
python -m src.cli chat --provider anthropic --model claude-sonnet-4-20250514
# Chat con Ollama (local)
python -m src.cli chat --provider ollama --model llama3
# Analizar rendimiento del algoritmo
python -m src.cli analyze --days 30
# Sugerir mejoras
python -m src.cli suggest --apply
# Verificar integridad de sesión
python -m src.cli verify <session_id>
Python API
from src import ContextManager
from src.providers import AnthropicProvider
# Inicializar
manager = ContextManager(
host="localhost",
database="context_manager"
)
# Iniciar sesión
session = manager.start_session(
user_id="user1",
model_provider="anthropic",
model_name="claude-sonnet-4-20250514"
)
# Obtener contexto para un mensaje
context = manager.get_context_for_message(
"¿Cómo configuro el servidor?",
max_tokens=4000
)
# Usar con proveedor
provider = AnthropicProvider()
response = provider.send_message("¿Cómo configuro el servidor?", context)
# Registrar en log inmutable
manager.log_user_message("¿Cómo configuro el servidor?", context)
manager.log_assistant_message(
response.content,
tokens_input=response.tokens_input,
tokens_output=response.tokens_output
)
# Verificar integridad
result = manager.verify_session_integrity()
assert result["is_valid"]
Mejora de algoritmos
from src.algorithm_improver import AlgorithmImprover
improver = AlgorithmImprover(db)
# Analizar rendimiento
analysis = improver.analyze_algorithm(days=30)
print(f"Calidad promedio: {analysis.avg_quality}")
print(f"Sugerencias: {analysis.suggestions}")
# Crear experimento A/B
experiment_id = improver.create_experiment(
control_id=current_algorithm_id,
treatment_id=new_algorithm_id,
name="Test nuevo algoritmo",
traffic_split=0.5,
min_samples=100
)
# Evaluar resultados
result = improver.evaluate_experiment(experiment_id)
print(f"Ganador: {result.winner}")
print(f"Mejora: {result.improvement_pct}%")
Estructura de archivos
context-manager/
├── schemas/
│ ├── 00_base.sql # Tipos y funciones base
│ ├── 01_immutable_log.sql # Log inmutable (NO editable)
│ ├── 02_context_manager.sql # Bloques, memoria, conocimiento
│ └── 03_algorithm_engine.sql # Algoritmos y métricas
├── src/
│ ├── __init__.py
│ ├── models.py # Modelos de datos
│ ├── database.py # Conexión PostgreSQL
│ ├── context_selector.py # Motor de selección
│ ├── algorithm_improver.py # Sistema de mejora
│ ├── cli.py # Interfaz de línea de comandos
│ └── providers/
│ ├── base.py # Clase base
│ ├── anthropic.py # Adaptador Anthropic
│ ├── openai.py # Adaptador OpenAI
│ └── ollama.py # Adaptador Ollama
├── config/
│ └── default.yaml # Configuración por defecto
├── tests/
├── requirements.txt
└── README.md
Configuración del algoritmo
{
"max_tokens": 4000,
"sources": {
"system_prompts": true,
"context_blocks": true,
"memory": true,
"knowledge": true,
"history": true,
"ambient": true
},
"weights": {
"priority": 0.4,
"relevance": 0.3,
"recency": 0.2,
"frequency": 0.1
},
"history_config": {
"max_messages": 20,
"summarize_after": 10,
"include_system": false
},
"memory_config": {
"max_items": 15,
"min_importance": 30
},
"knowledge_config": {
"max_items": 5,
"require_keyword_match": true
}
}
Integridad del log
El log inmutable usa encadenamiento de hashes similar a blockchain:
Mensaje 1 → hash1 = SHA256(content1)
Mensaje 2 → hash2 = SHA256(hash1 + content2)
Mensaje 3 → hash3 = SHA256(hash2 + content3)
Verificar integridad:
SELECT * FROM verify_chain_integrity('session-uuid');
Variables de entorno
PGHOST=localhost
PGPORT=5432
PGDATABASE=context_manager
PGUSER=postgres
PGPASSWORD=
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
OLLAMA_HOST=localhost
OLLAMA_PORT=11434
Licencia
MIT
Description
Sistema local de gestión de contexto para IA - Log inmutable, algoritmos mejorables, agnóstico al modelo
Languages
Python
73.5%
PLpgSQL
26.3%
Shell
0.2%