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_patho 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()usamax_tokens, NOmax_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 desarrolladortesting.instructions.md— reglas de testing (pytest)git-workflow.instructions.md— commits convencionalesdocker-devops.instructions.md— Docker, CI/CD