# PAMPAr — Repository Guidelines > **PAMPAr** = Procesador Autónomo Modular de Patrones y Razonamiento > Para AI agents: Claude Code, Codex, Gemini CLI, GitHub Copilot. --- ## Visión PAMPAr es un **motor de razonamiento puro** de 108M parámetros. No memoriza respuestas — aprende a **pensar con información de referencia**. La analogía: un físico que entiende termodinámica puede resolver problemas de química, ingeniería o biología. No memorizó cada campo — tiene los axiomas correctos. - Los **pesos** (108M params) contienen la capacidad de **razonar**: leer documentación, entender un problema, derivar una solución step-by-step. - El **dispositivo** (PC, móvil, servidor) provee el **conocimiento**: docs de Python, MDN, man pages, archivos del usuario — vía RAG local. - El modelo no necesita "saber Python". Necesita saber **usar la referencia que tiene disponible** para resolver cualquier problema. **Objetivo**: un modelo local que razona con la misma metodología que los mejores modelos, usando la información del dispositivo como RAG. --- ## Estado actual - **Modelo activo**: `PamparV3` — **108.3M params**, vocab 48K, 4 streams × 5 niveles - **Mejor checkpoint**: `v3_ghidra_v9.pt` — Routing Score 89, eval 6/16 (38%) - **Tokenizer**: `data/tokenizer/pampar_48k.model` (48K, bilingüe ES+código) - **Runtime**: Agente + RAGResidual + Scanner + BootProtocol — funcional - **Classroom**: Mentor conversacional con Qwen-plus — lecciones dinámicas, 21 conceptos adaptativos, absorción + práctica + corrección - **Bio-Mechanisms**: Neuromodulación, LTP, Sleep Consolidation, Neurogenesis, Synaptic Pruning — `bio_mechanisms.py` - **Teacher API**: Qwen-plus via DashScope (principal), GitHub Models gpt-4o-mini (alternativa) - **Training data**: `master_sft.jsonl` — 1,253 ejemplos (en expansión vía Classroom) --- ## Quick Reference | Area | Convention | | ---------- | ------------------------------------------------------ | | Language | Python 3.13+ | | Framework | PyTorch 2.6+ | | Tokenizer | SentencePiece BPE — **48K** (`pampar_48k.model`) | | Type hints | Always required | | Docstrings | Google style | | Training | Local GTX 1650 (4 GB) + RunPod A100 para fases pesadas | | Budget | $300-500 USD total | --- ## Arquitectura — PamparV3 ### Grilla 2D: 4 streams × 5 niveles ``` tok_emb [48K × 640] → TalamoInicial → terr_acts [B, L, 4] / zona_acts [B, L, 52] → 4 streams paralelos (dim=640) Cada NivelProfundo (×5): 1. GQA Atención compartida (8 Q heads / 2 KV heads, head_dim=80) 2. Re-routing ligero del Tálamo (Linear dim→52, sin bias) 3. 4 × StreamFFN SwiGLU independientes (uno por stream) 4. Lateral gates por stream (bottleneck=128, fibras blancas) → norm_f (RMSNorm) → lm_head (weight-tied, vocab=48K) ``` ### Streams ↔ Capas lingüísticas | Stream | Territorio | Zonas | Especialización | Capa lingüística | | ------ | ----------- | ------- | ----------------------------------------- | ---------------- | | 0 | SINTAXIS | B01-B15 | Keywords, delimitadores, puntuación | Sintaxis | | 1 | SEMANTICA | B16-B30 | Variables, tipos, literales | Semántica | | 2 | LOGICO | B31-B42 | Operadores, flujo de control, excepciones | Pragmática | | 3 | ESTRUCTURAL | B43-B52 | Indentación, bloques, patrones | Discurso | ### PRESET_V3 | Parámetro | Valor | | ---------------- | ----------- | | `dim` | 640 | | `n_streams` | 4 | | `n_levels` | 5 | | `n_heads` | 8 | | `n_kv_heads` | 2 (GQA 4:1) | | `vocab_size` | 48 000 | | `max_seq_len` | 4096 | | **Total params** | **108.3M** | --- ## Subsistemas ### 1. Modelo (`pampar/coder/v3/`) | Archivo | Líneas | Propósito | | ------------------- | ------ | ------------------------------------------------------------------------------- | | `modelo.py` | 310 | PamparV3: forward, generate (nucleus sampling) | | `config.py` | 226 | ConfigV3, 3 presets (V3/SMALL/LARGE) | | `bloques.py` | 395 | RMSNorm, RoPE, BloqueAttn (GQA), StreamFFN (SwiGLU), LateralGate, NivelProfundo | | `talamo.py` | 133 | TalamoInicial: LLAVES 80% + attn_proj 20% + context_conv | | `llaves.py` | 266 | LlavesV2: clasificar_token(), tabla INT8, agregar_zonas_a_territorios | | `zonas.py` | 265 | Territorio(IntEnum), Zona(IntEnum), ZONAS dict, ZONA_TERRITORIO | | `ghidra_probe.py` | 343 | GhidraProbe: 36 forward hooks, diagnosis/debugging | | `engrama_stream.py` | 359 | BancoEngrama: O(1) activation memory, cosine-gated injection | ### 2. Memoria (`pampar/memoria/`) | Archivo | Propósito | | ------------------ | ----------------------------------------------------------------------------- | | `clasificador.py` | ClasificadorPareto: scoring L0-L3 por densidad, novedad, loss, frecuencia | | `rag.py` | RAGResidual: FAISS + sentence-transformers (fallback TF-IDF), 5K entradas max | | `cola_finetune.py` | ColaFinetune: acumula L3, exporta JSONL, propone mini-SFT | ### 3. Runtime (`pampar/runtime/`) | Archivo | Propósito | | ------------------- | ------------------------------------------------------------------ | | `agente.py` | Orquestador: prompt→RAG→generar→skills→retry→auto-SFT | | `scanner.py` | Inspección del dispositivo: OS, GPU, paquetes, servicios, archivos | | `boot.py` | BootProtocol: CONCIENCIA.md (L3) → Scanner (L2) → Workspace (L1) | | `generar_agents.py` | Genera AGENTS.md contextual desde ResultadoScan | ### 4. Skills (`pampar/skills/`) | Archivo | Propósito | | -------------------- | --------------------------------------------------------- | | `lector_archivos.py` | Lee archivos del dispositivo (30+ extensiones, sandboxed) | | `ejecutar_codigo.py` | Ejecuta código en subprocess con timeout y blocklist | ### 5. Inference (`pampar/inference.py`) Servidor JSON-lines stdin/stdout para extensión VS Code. Commands: `infer`, `boot`. ### 6. Classroom — Mentor Conversacional + Bio-Mechanisms Sistema donde Qwen-plus actúa como mentor conversacional — genera explicaciones, ejemplos y ejercicios dinámicos. PamparV3 absorbe el conocimiento via gradient descent en 3 phases por lección. **Flujo**: StudentProfile → Mentor genera lección → Phase A (absorber explicación+ejemplo) → Phase B (alumno intenta ejercicio) → Phase C (mentor corrige, entrenar en solución+replay) → actualizar perfil. | Módulo | Líneas | Responsabilidad | | -------------------------- | ------ | ------------------------------------------------------------------------------ | | `classroom.py` | ~608 | ClassroomEngine — motor conversacional (orquestador) | | `classroom_curriculum.py` | ~433 | ClassroomConfig + CONCEPT_TREE (21 conceptos) + StudentProfile + concept_level | | `classroom_teacher.py` | ~252 | Mentor API (Qwen/GitHub/OpenRouter) + parse de lecciones | | `classroom_training.py` | ~211 | Tokenización + LR diferencial + train_step | | `classroom_memory.py` | ~187 | EWC + ReplayBuffer + LessonResult + compute_ewc_baseline | | `classroom_events.py` | ~104 | Formateo dict-based de eventos para consola | | `classroom_persistence.py` | ~123 | Guardado de checkpoints, sesiones JSONL, grabaciones HTML | | `classroom_server.py` | ~255 | HTTP SSE server + CLI entry point | | `bio_mechanisms.py` | ~497 | 5 bio-mechanisms coordinados por BioOrchestrator | **CONCEPT_TREE**: 21 conceptos en 5 niveles con prerequisitos (arithmetic → algorithms). **StudentProfile**: mastery tracking adaptativo — prioriza refuerzo, luego nuevos, luego repaso. | Mecanismo | Propósito | | ------------------ | ----------------------------------------------------------------- | | **EWC** | Elastic Weight Consolidation — penaliza cambios en pesos críticos | | **Replay Buffer** | Mezcla ejemplos nuevos con anteriores (consolidación tipo sueño) | | **LR Diferencial** | LLAVES 0.01x, atención 0.1x, embed 0.1x, FFN 1.0x | | **Curriculum** | 5 niveles progresivos: básico → avanzado | | **Grabación** | Genera HTML con replay interactivo de cada sesión | **Bio-Mechanisms** (5 mecanismos de neurociencia en `bio_mechanisms.py`): | Mecanismo | Implementación | | ----------------------- | -------------------------------------------------------------------- | | **Neuromodulación** | Dopamina/Norepinefrina modulan LR dinámicamente (×0.3 a ×3.0) | | **LTP** | Fortalece `LateralGate.scale` de streams activos (Hebb rule, cada 5) | | **Sleep Consolidation** | REM (aleatorio) + SWS (ordenado por dificultad), cada 15 lecciones | | **Neurogenesis** | LoRA adapters (rank=8) en StreamFFN cuando loss > 4.0, max 8 | | **Synaptic Pruning** | Poda `LateralGate.scale < 0.03` cada 30 lecciones (decay ×0.5) | Coordinados por `BioOrchestrator.after_lesson()`. Desactivables con `--no-bio`. **Resultados piloto mentor conversacional (5 lecciones)**: Loss absorción ~7-8, loss ejercicios 5.89→3.94 (mejora), brain score 88.24% estable. **APIs soportadas**: `qwen` (Qwen-plus via DashScope, principal), `github` (gpt-4o-mini), `openrouter` (requiere créditos). --- ## Estructura del proyecto ``` PAMPAr-Coder/ ├── AGENTS.md # Este archivo — guía para AI agents ├── README.md # Documentación pública ├── PLAN.md # Plan de training y evolución ├── pampar/ │ ├── CONCIENCIA.md # Identidad invariante del modelo │ ├── coder/ │ │ └── v3/ # ARQUITECTURA ACTIVA (108M) │ │ ├── modelo.py # PamparV3 — forward, generate │ │ ├── config.py # ConfigV3, presets │ │ ├── talamo.py # TalamoInicial — routing │ │ ├── bloques.py # GQA, SwiGLU, LateralGate, NivelProfundo │ │ ├── llaves.py # LlavesV2 — lookup INT8 │ │ ├── zonas.py # 52 Zonas de Brodmann │ │ ├── ghidra_probe.py # Instrumentación read-only │ │ └── engrama_stream.py# Memoria de activaciones │ ├── memoria/ │ │ ├── clasificador.py # ClasificadorPareto — niveles L0-L3 │ │ ├── rag.py # RAGResidual — vector store local │ │ └── cola_finetune.py # ColaFinetune — buffer auto-SFT │ ├── skills/ │ │ ├── lector_archivos.py # Lee archivos (sandboxed) │ │ └── ejecutar_codigo.py # Ejecuta código (subprocess) │ ├── runtime/ │ │ ├── agente.py # Orquestador principal │ │ ├── scanner.py # Inspección del dispositivo │ │ ├── boot.py # Secuencia de arranque │ │ └── generar_agents.py # Generador de AGENTS.md │ └── inference.py # Servidor JSON-lines para VS Code ├── scripts/ │ ├── classroom.py # ClassroomEngine — motor conversacional (~608 líneas) │ ├── classroom_curriculum.py # ClassroomConfig + CONCEPT_TREE + StudentProfile + concept_level │ ├── classroom_teacher.py # Mentor API — Qwen/GitHub/OpenRouter + parse de lecciones │ ├── classroom_training.py # Tokenización + LR diferencial + train_step │ ├── classroom_events.py # Formateo dict-based de eventos para consola │ ├── classroom_memory.py # EWC + ReplayBuffer + LessonResult + compute_ewc_baseline │ ├── classroom_persistence.py # Guardado de checkpoints, sesiones, grabaciones HTML │ ├── classroom_server.py # HTTP SSE server + CLI entry point │ ├── bio_mechanisms.py # 5 bio-mechanisms (Neuromod, LTP, Sleep, Neurogenesis, Pruning) │ └── classroom_replay.html # Player HTML para replays ├── sessions/ # Grabaciones de sesiones classroom ├── data/ │ ├── tokenizer/ │ │ └── pampar_48k.model # Vocab 48K bilingüe │ └── *.jsonl # Datasets de training ├── checkpoints/ │ └── v3_ghidra_v9.pt # Mejor checkpoint actual ├── _archive/ # Backups de archivos antes de refactorizar └── tests/ ``` --- ## Critical Rules - **vocab_size = 48K** → DEBE coincidir con `pampar_48k.model` - **Tokenizer path**: usar `PRESET_V3.tokenizer_path` o constante compartida — no hardcodear - LLAVES son INT8 pre-computadas — **nunca** en el grafo de gradientes - Los 4 streams procesan en **paralelo** — sin secuencialidad entre streams - `targets.reshape(-1)` siempre, nunca `.view(-1)` (tensores no-contiguos) - `generate()` usa `max_tokens`, NO `max_new_tokens` - Imports: `pampar.memoria.*`, `pampar.skills.*`, `pampar.runtime.*` - **Backups**: antes de borrar/refactorizar, mover el original a `_archive/` ## Naming Conventions - **Español** para conceptos del dominio: `Talamo`, `Territorio`, `Zona`, `LLAVES`, `Agente`, `Scanner` - **Inglés** para ML estándar: `forward`, `embedding`, `hidden_states`, `loss`, `generate` ## Paradigma de inferencia ``` 1. Usuario hace una pregunta/pedido 2. Scanner provee contexto del dispositivo (OS, paquetes, archivos) 3. RAGResidual busca referencia relevante (docs, código, memoria) 4. Prompt se arma: [SYSTEM] + [REFERENCIA RAG] + [CONTEXTO DISPOSITIVO] + [PREGUNTA] 5. Modelo RAZONA sobre la referencia y genera solución step-by-step 6. Skills ejecutan la solución si aplica (código, lectura, tests) 7. Si falla → retry con error como contexto → ColaFinetune acumula patrones ``` --- ## Instructions Files Detailed instructions in `.github/instructions/`: - `global-profile.instructions.md` — perfil del desarrollador - `testing.instructions.md` — reglas de testing (pytest) - `git-workflow.instructions.md` — commits convencionales - `docker-devops.instructions.md` — Docker, CI/CD