PTENES
MÓDULO 1.2

🏗 Arquitectura general

Cómo se conectan los 5 componentes, el flujo completo de un mensaje de Telegram hasta la respuesta y el sistema de workspace que configura todo.

6
Temas
60
Minutos
Básico
Nivel
Diagrama
Tipo
1

🔄 Los 5 componentes fundamentales

INTELECTO tiene exactamente 5 responsabilidades distintas. Esta división no es arbitraria: cada componente puede sustituirse, probarse y evolucionar independientemente de los demás. Es el secreto que mantiene el sistema manejable.

🧩 Los 5 componentes

🤖
Agent

El cerebro. Recibe mensajes, construye el contexto, decide si usar tools o responder directamente y lo orquesta todo.

🔮
Proveedores

Acceso a los LLM. OpenRouter, Ollama, API directa. Cualquiera que implemente BaseProvider funciona.

📡
Channels

Cómo se comunica el usuario. Telegram, WhatsApp, Discord, CLI. Implementan BaseChannel.

🧠
Memory

Persistencia del contexto. SQLite FTS5 con búsqueda semántica BM25 y deduplicación automática.

🔧
Herramientas

Acciones en el mundo real. Google Calendar, GitHub, navegador, shell. Implementan BaseTool.

2

📨 Flujo completo de un mensaje

Cada mensaje sigue una ruta precisa. Entender este flujo es fundamental para saber dónde intervenir cuando algo falla y dónde agregar nuevas funcionalidades.

📊 Diagrama de flujo

U
El usuario escribe un mensaje en Telegram
↓
CH
Channel.receive() → normaliza al formato interno
↓
S
Safety.check() → valida contra la lista de bloqueo y la inyección
↓
AG
Agent.loop() → arma el contexto con el workspace + la memoria
↓
PR
Provider.chat() → envía al LLM y recibe una respuesta
↓ (si tool_call)
TL
Tool.execute() → ejecuta una acción, devuelve el resultado
↓ (hasta max 5 rounds)
ME
Memory.store() → persiste hechos relevantes
↓
CH
Channel.send() → envía la respuesta a Telegram
↓
U
El usuario recibe la respuesta

💡 Consejo práctico

Para depurar, agrega logs en cada etapa del flujo. El logging de Python con distintos niveles (DEBUG para Channel, INFO para Agent, WARNING para Safety) permite filtrar exactamente dónde ocurre el problema.

3

🔁 El Agent Loop — Max 5 Rounds

O loop.py es el corazón de INTELECTO. Implementa el patrón ReAct (Reason + Act): la IA piensa, decide actuar con una herramienta, recibe el resultado, vuelve a pensar y así sucesivamente, hasta llegar a una respuesta final o alcanzar el límite de 5 rounds.

🔄 El ciclo ReAct

R
Reason (Razonar)

El LLM analiza el mensaje + el contexto y decide qué hacer

↓
A
Act (Actuar)

Si decides usar una tool → llama a tool.execute() con los parámetros

↓
O
Observa (Observar)

El resultado de la herramienta entra en el contexto → vuelve a Reason

↓ (loop hasta la respuesta o max 5)
F
Final

El LLM genera una respuesta en lenguaje natural para el usuario

⚠ ¿Por qué el límite de 5 rondas?

Sin un límite, un error en la lógica de la IA puede causar un bucle infinito, que cueste cientos de dólares en tokens. El límite de 5 es el disyuntor que protege tu facturación. Para tareas complejas, ajusta el límite con cuidado y siempre con monitoreo.

4

📁 El Workspace — Configuración en Markdown

El directorio workspace/ es donde defines qué es tu Jarvis. Tres archivos Markdown que se leen y se inyectan en cada system prompt. Cambiar el comportamiento de la IA no requiere modificar el código: solo editar estos archivos.

🧬 SOUL.md

La personalidad de la IA: nombre, tono de voz, valores, estilo de comunicación, limitaciones éticas. Define quién es Jarvis.

Eres Atlas, asistente personal directo y técnico. Prefieres Python. No tienes miedo de discrepar.

📋 AGENTS.md

Reglas de comportamiento: qué hacer, qué nunca hacer, cómo priorizar tareas y cuándo pedir confirmación.

NUNCA ejecutes rm -rf sin confirmación. SIEMPRE verifica que los archivos existan antes de sobrescribirlos.

🧠 MEMORY.md

Hechos de bootstrap: información que la IA necesita conocer desde la primera conversación sin que tengas que enseñársela.

Usuario: João Silva. Stack: Python, FastAPI. Empresa: Acme Corp. Zona horaria: America/Sao_Paulo.

💡 Configuration as Code

Los archivos del workspace son «código» en el sentido de que controlan el comportamiento del sistema. Contrólalos con git, haz copias de seguridad y trata los cambios en ellos con el mismo cuidado que los cambios de código.

5

🧩 Contratos de interfaz

El secreto de la extensibilidad de INTELECTO son los contratos de interfaz. Cada tipo de componente tiene una clase base abstracta con métodos obligatorios. Si respetas el contrato, tu componente funciona automáticamente con todo lo demás.

📋 Los 3 contratos principales

BaseProviderproviders/base.py
async def chat(messages: list[dict], **kwargs) -> str: ...

Único método obligatorio. Cualquier LLM que implemente esto funciona con el Agent.

BaseChannelchannels/base.py
async def start() → None
async def send(user_id, msg) → None
async def stop() → None

3 métodos. Telegram, WhatsApp, CLI: todos implementan estos 3.

BaseTooltools/base.py
name: str
description: str
parameters: dict # JSON Schema
async def execute(**kwargs) → str

La descripción + los parámetros se envían al LLM para que sepa cómo usar la tool.

6

🗄 Persistencia en ~/.intelecto/

Todo lo que INTELECTO persiste queda en ~/.intelecto/. Tres archivos críticos que debes conocer, respaldar y nunca eliminar accidentalmente.

DB

memory.db

Base de datos SQLite con FTS5 habilitado. Almacena datos (categoría: fact/conversation/solution), historial de conversaciones y resultados de búsquedas anteriores. BM25 para la clasificación por relevancia.

🔐

.secrets

Claves de API cifradas con Fernet. La clave de cifrado se deriva del UUID del hardware mediante PBKDF2. El archivo solo puede descifrarse en la misma máquina.

📋

audit.log

Registro de todas las acciones: quién las solicitó, qué se ejecutó, cuándo y con qué resultado. Inmutable por diseño: cada línea es append-only.

✅ Resumen del Módulo 1.2

✓
5 componentes — Agent, Providers, Channels, Memory, Tools con responsabilidades estrictamente separadas
✓
Flujo completo — 8 etapas desde el mensaje recibido hasta la respuesta enviada, cada una auditable
✓
Bucle ReAct — Reason-Act-Observe con límite de 5 rounds como circuit breaker de costos
✓
Workspace — SOUL.md (personalidad), AGENTS.md (reglas), MEMORY.md (bootstrap facts)
✓
Contratos — BaseProvider, BaseChannel, BaseTool garantizan que cualquier implementación sea plug-and-play
✓
Persistencia — memory.db (SQLite FTS5), .secrets (Fernet), audit.log (append-only)

Próximo módulo:

1.3 — Configuración del entorno: desde cero hasta tener Jarvis funcionando en Telegram