|
| 1 | +<!-- Translated from README.md at commit: 735e38a --> |
| 2 | + |
| 3 | +<div align="center"> |
| 4 | + |
| 5 | +<img src="mascot/mex-mascot.svg" alt="Mascota de Mex" width="80"> |
| 6 | + |
| 7 | +<br> |
| 8 | + |
| 9 | +<img src="mascot/mex-ascii.svg" alt="Logotipo ASCII de MEX" width="520"> |
| 10 | + |
| 11 | +<h1 align="center">Mex: capa de memoria de proyectos para agentes de programación con IA</h1> |
| 12 | + |
| 13 | +**Memoria persistente de proyectos para agentes de programación con IA.** |
| 14 | + |
| 15 | +[English](README.md) | [简体中文](README.zh-CN.md) | **Español** | [Português (Brasil)](README.pt-BR.md) |
| 16 | + |
| 17 | +[](https://www.npmjs.com/package/mex-agent) |
| 18 | +[](https://www.npmjs.com/package/mex-agent) |
| 19 | +[](https://github.com/theDakshJaitly/mex/stargazers) |
| 20 | +[](https://mexmemory.com) |
| 21 | +[](https://discord.gg/VG7ySSMQM) |
| 22 | +[](LICENSE) |
| 23 | +[](https://github.com/theDakshJaitly/mex/actions/workflows/ci.yml) |
| 24 | +[](package.json) |
| 25 | +[](package.json) |
| 26 | +[](README.md) |
| 27 | +[](#servidor-mcp) |
| 28 | + |
| 29 | +</div> |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +Los agentes de programación con IA olvidan todo entre sesiones. Mex les proporciona una memoria de proyecto permanente y navegable para que cada sesión comience con el contexto adecuado, en lugar de un bloque de instrucciones sin orientación. Ayuda a comprender el código, conservar decisiones y mantener el contexto del proyecto alineado con el repositorio mediante herramientas para desarrolladores. |
| 34 | + |
| 35 | +> **Estado de la versión:** npm y `main` permanecen en la versión estable v0.6.3. El grafo de código basado en AST/Tree-sitter es una vista previa para desarrolladores de la versión v0.7.0 aún no publicada, disponible en `code-graph-preview`; todavía no se ha publicado en npm. |
| 36 | +
|
| 37 | +💬 **Únete a la comunidad de Mex en Discord** — comenta ideas, obtén ayuda, comparte tus opiniones y contribuye al proyecto. |
| 38 | + |
| 39 | +[Unirse a Discord →](https://discord.gg/VG7ySSMQM) |
| 40 | + |
| 41 | +```bash |
| 42 | +npx mex-agent setup |
| 43 | +``` |
| 44 | + |
| 45 | +<p align="center"> |
| 46 | + <img src="screenshots/mex-DashNew.jpg" alt="Panel operativo de memoria de proyectos de Mex" width="640"> |
| 47 | +</p> |
| 48 | + |
| 49 | +## ¿Por qué Mex? |
| 50 | + |
| 51 | +La mayoría de las soluciones de memoria para agentes terminan convertidas en un enorme archivo de instrucciones. Eso funciona durante un tiempo, pero después satura la ventana de contexto, consume tokens y se aleja del código real. |
| 52 | + |
| 53 | +| Sin Mex | Con Mex | |
| 54 | +|---------|---------| |
| 55 | +| Archivos enormes de `CLAUDE.md` / reglas | Un pequeño archivo de anclaje y contexto dirigido | |
| 56 | +| Los agentes olvidan decisiones y convenciones | Las decisiones, patrones y el estado del proyecto persisten | |
| 57 | +| La documentación se desvía del código en silencio | `mex check` detecta afirmaciones obsoletas o rotas en el scaffold | |
| 58 | +| Cada sesión comienza desde cero | Los agentes cargan solo los archivos relevantes para la tarea | |
| 59 | +| El trabajo repetido depende del conocimiento informal | Los nuevos patrones surgen de tareas reales | |
| 60 | + |
| 61 | +## Qué hace |
| 62 | + |
| 63 | +Mex crea un scaffold estructurado en Markdown para la memoria del agente: |
| 64 | + |
| 65 | +- `AGENTS.md` / `CLAUDE.md` — pequeño archivo de anclaje cargado por la herramienta |
| 66 | +- `ROUTER.md` — tabla que dirige cada tarea a su contexto específico |
| 67 | +- `context/` — arquitectura, stack, configuración, decisiones y convenciones |
| 68 | +- `patterns/` — guías reutilizables con consideraciones y pasos de verificación |
| 69 | +- `.mex/events/decisions.jsonl` — notas de solo anexado mediante `mex log` |
| 70 | + |
| 71 | +La CLI mantiene ese scaffold en orden. Comprueba rutas, comandos, dependencias, índices de patrones, antigüedad y cobertura de scripts sin consumir tokens de IA. Cuando aparece una desviación, `mex sync` genera instrucciones específicas para que el agente corrija únicamente las partes obsoletas. |
| 72 | + |
| 73 | +## Inicio rápido |
| 74 | + |
| 75 | +La versión estable de npm es v0.6.3. Instálala con Node.js 20 o posterior: |
| 76 | + |
| 77 | +El paquete de npm se llama `mex-agent` porque `mex` ya estaba ocupado. El comando de la CLI sigue siendo `mex`. |
| 78 | + |
| 79 | +```bash |
| 80 | +npx mex-agent setup |
| 81 | +``` |
| 82 | + |
| 83 | +Para probar o contribuir a la vista previa del grafo de código, usa Node.js 22.5 o posterior y compila `code-graph-preview` desde el código fuente: |
| 84 | + |
| 85 | +```bash |
| 86 | +git clone https://github.com/theDakshJaitly/mex.git |
| 87 | +cd mex |
| 88 | +git switch code-graph-preview |
| 89 | +npm install |
| 90 | +npm run build |
| 91 | +``` |
| 92 | + |
| 93 | +La configuración crea el scaffold `.mex/`, pregunta qué herramienta de IA utilizas, preanaliza el repositorio y genera una instrucción específica para completar los archivos de memoria. Tarda unos cinco minutos. |
| 94 | + |
| 95 | +Al terminar, puedes instalar Mex globalmente: |
| 96 | + |
| 97 | +```bash |
| 98 | +mex check # puntuación de desviación |
| 99 | +mex sync # corregir desviaciones |
| 100 | +``` |
| 101 | + |
| 102 | +Si omites la instalación global, usa npx: |
| 103 | + |
| 104 | +```bash |
| 105 | +npx mex-agent check |
| 106 | +npx mex-agent sync |
| 107 | +``` |
| 108 | + |
| 109 | +También puedes instalarlo globalmente más adelante: |
| 110 | + |
| 111 | +```bash |
| 112 | +npm install -g mex-agent |
| 113 | +``` |
| 114 | + |
| 115 | +### Windows |
| 116 | + |
| 117 | +El flujo recomendado, `npx mex-agent setup`, funciona en cualquier terminal (Símbolo del sistema, PowerShell o WSL) y no necesita bash. Por tanto, la mayoría de los usuarios de Windows no tienen que preocuparse por esta sección. |
| 118 | + |
| 119 | +> **Usuarios de Windows (flujo antiguo con `setup.sh`):** ejecuten todos los comandos dentro de WSL o Git Bash. No mezclen entornos. |
| 120 | +
|
| 121 | +Si instalaste mediante el script antiguo `setup.sh`, compilar dentro de WSL y ejecutar después la CLI desde una terminal nativa de Windows provoca errores de “module not found”, porque `node_modules` y la resolución de rutas difieren entre ambos sistemas de archivos. Ejecuta la instalación, compilación y comandos de la CLI en un único entorno: todo en WSL / Git Bash, o todo en Windows nativo mediante `npx mex-agent`. |
| 122 | + |
| 123 | +Consulta el [issue #10](https://github.com/theDakshJaitly/mex/issues/10) para conocer el contexto. |
| 124 | + |
| 125 | +## Cómo funciona |
| 126 | + |
| 127 | + |
| 128 | + |
| 129 | +El agente comienza con un pequeño archivo cargado automáticamente. Este archivo apunta a `ROUTER.md`, y el router carga únicamente el contexto necesario para la tarea actual. Después de un trabajo significativo, el paso GROW actualiza el estado del proyecto, las decisiones y los patrones de tareas para que el scaffold resulte más útil con el tiempo. |
| 130 | + |
| 131 | +Fuente editable: [docs/diagrams/context-routing.excalidraw](docs/diagrams/context-routing.excalidraw) |
| 132 | + |
| 133 | +## Detección de desviaciones |
| 134 | + |
| 135 | +Once verificadores validan el scaffold frente al código real. Cero tokens, cero IA. |
| 136 | + |
| 137 | +| Verificador | Qué detecta | |
| 138 | +|-------------|-------------| |
| 139 | +| **path** | Rutas de archivos referenciadas que no existen en el disco | |
| 140 | +| **edges** | Destinos de aristas en el frontmatter YAML que apuntan a archivos inexistentes | |
| 141 | +| **index-sync** | `patterns/INDEX.md` no sincronizado con los archivos de patrones reales | |
| 142 | +| **staleness** | Archivos del scaffold sin actualizar durante más de 30 días o 50 commits | |
| 143 | +| **command** | Referencias `npm run X` / `make X` a scripts inexistentes | |
| 144 | +| **dependency** | Dependencias declaradas que faltan en `package.json` | |
| 145 | +| **cross-file** | Una misma dependencia con versiones distintas entre archivos | |
| 146 | +| **script-coverage** | Scripts de `package.json` no mencionados en ningún archivo del scaffold | |
| 147 | +| **tool-config-sync** | Archivos de configuración de herramientas de IA instaladas (p. ej., `CLAUDE.md`, `.cursorrules`) sin sincronizar entre sí | |
| 148 | +| **todo-fixme** | Marcadores `TODO` / `FIXME` sin resolver en el Markdown del scaffold | |
| 149 | +| **broken-link** | Enlaces Markdown locales a archivos que no existen en el disco | |
| 150 | + |
| 151 | +La puntuación comienza en 100. Mex resta 10 por error, 3 por advertencia y 1 por información. |
| 152 | + |
| 153 | + |
| 154 | + |
| 155 | +Fuente editable: [docs/diagrams/drift-sync.excalidraw](docs/diagrams/drift-sync.excalidraw) |
| 156 | + |
| 157 | +## Comandos |
| 158 | + |
| 159 | +Todos los comandos se ejecutan desde la raíz del proyecto. Si no hiciste una instalación global, sustituye `mex` por `npx mex-agent`. |
| 160 | + |
| 161 | +| Comando | Qué hace | |
| 162 | +|---------|----------| |
| 163 | +| `mex` | Abre el panel interactivo de terminal | |
| 164 | +| `mex tui` | Abre explícitamente el panel interactivo de terminal | |
| 165 | +| `mex setup` | Configuración inicial: crea el scaffold `.mex/` y lo completa con IA | |
| 166 | +| `mex setup --mode agent-memory` | Crea plantillas para espacios de memoria de agentes persistentes / homelab | |
| 167 | +| `mex setup --dry-run` | Previsualiza la configuración sin realizar cambios | |
| 168 | +| `mex check` | Ejecuta los verificadores de desviación y muestra un informe con puntuación | |
| 169 | +| `mex check --quiet` | Una línea: `mex: drift score 92/100 (1 warning)` | |
| 170 | +| `mex check --json` | Informe completo en JSON | |
| 171 | +| `mex check --fix` | Comprueba y pasa directamente a la sincronización si encuentra errores | |
| 172 | +| `mex sync` | Detecta desviaciones, elige un modo, permite que la IA corrija, verifica y repite | |
| 173 | +| `mex sync --dry-run` | Previsualiza instrucciones específicas sin ejecutarlas | |
| 174 | +| `mex sync --warnings` | Incluye en la sincronización archivos que solo tienen advertencias | |
| 175 | +| `mex init` | Preanaliza el repositorio y crea un resumen estructurado para la IA | |
| 176 | +| `mex init --json` | Resumen bruto del analizador en JSON | |
| 177 | +| `mex log <message>` | Añade una nota, decisión, riesgo o tarea pendiente | |
| 178 | +| `mex timeline` | Muestra las entradas recientes del registro de eventos | |
| 179 | +| `mex heartbeat` | Ejecuta una vez las comprobaciones ligeras de salud para agentes persistentes | |
| 180 | +| `mex doctor` | Resumen legible del estado del scaffold | |
| 181 | +| `mex watch` | Instala un hook post-commit | |
| 182 | +| `mex watch --interval` | Ejecuta heartbeat repetidamente en primer plano | |
| 183 | +| `mex watch --uninstall` | Elimina el hook | |
| 184 | +| `mex completion <shell>` | Imprime el autocompletado para el shell | |
| 185 | +| `mex commands` | Enumera comandos y scripts con sus descripciones | |
| 186 | + |
| 187 | +## Herramientas compatibles |
| 188 | + |
| 189 | +`mex setup` pregunta qué herramienta utilizas y crea el archivo de configuración correspondiente. |
| 190 | + |
| 191 | +| Herramienta | Archivo de configuración | |
| 192 | +|-------------|--------------------------| |
| 193 | +| Claude Code | `CLAUDE.md` | |
| 194 | +| Cursor | `.cursorrules` | |
| 195 | +| Windsurf | `.windsurfrules` | |
| 196 | +| GitHub Copilot | `.github/copilot-instructions.md` | |
| 197 | +| OpenCode | `.opencode/opencode.json` | |
| 198 | +| Codex | `AGENTS.md` | |
| 199 | + |
| 200 | +Los usuarios de Neovim pueden consultar [docs/vim-neovim.md](docs/vim-neovim.md) para configurar Claude Code, Avante.nvim, Copilot.vim y plugins genéricos. |
| 201 | + |
| 202 | +## Servidor MCP |
| 203 | + |
| 204 | +`packages/mex-mcp` expone Mex a agentes de IA mediante llamadas nativas del [Model Context Protocol](https://modelcontextprotocol.io): sin invocar un shell y con respuestas JSON estructuradas. Importa `mex-agent` directamente, por lo que las herramientas ejecutan el mismo código que la CLI y nunca se desvían de ella. |
| 205 | + |
| 206 | +| Herramienta | CLI equivalente | Devuelve | |
| 207 | +|-------------|-----------------|----------| |
| 208 | +| `mex_check` | `mex check --json` | Informe de desviación: puntuación, problemas y archivos comprobados | |
| 209 | +| `mex_log` | `mex log` / `mex timeline` | Añade un evento (`decision`/`note`/`risk`/`todo`) o lee los recientes | |
| 210 | +| `mex_timeline` | `mex timeline` | Eventos filtrados por tipo/fecha, los más recientes primero | |
| 211 | +| `mex_heartbeat` | `mex heartbeat` | Comprobación de salud: archivos obsoletos y limpieza de memoria pendiente | |
| 212 | +| `mex_read_file` | — | Contenido de un archivo del scaffold, restringido a `.mex/` | |
| 213 | + |
| 214 | +Cada herramienta acepta un `projectRoot` opcional (el directorio actual de forma predeterminada), por lo que un servidor puede trabajar con cualquier proyecto. Ejecuta primero `mex setup`: las herramientas necesitan un scaffold `.mex/`. |
| 215 | + |
| 216 | +Configura tu cliente (Claude Code / `.mcp.json` de Cursor): |
| 217 | + |
| 218 | +```json |
| 219 | +{ |
| 220 | + "mcpServers": { |
| 221 | + "mex": { |
| 222 | + "command": "node", |
| 223 | + "args": ["packages/mex-mcp/dist/index.js"] |
| 224 | + } |
| 225 | + } |
| 226 | +} |
| 227 | +``` |
| 228 | + |
| 229 | +Compílalo primero con `npm run build --workspace mex-mcp`. Una vez publicado, se convertirá en `"command": "npx", "args": ["mex-mcp"]`. |
| 230 | + |
| 231 | +Al comenzar una sesión, el agente se orienta con dos llamadas: |
| 232 | + |
| 233 | +``` |
| 234 | +mex_check() # ¿se está desviando el scaffold? |
| 235 | +mex_read_file("ROUTER.md") # carga el router y después solo el contexto necesario |
| 236 | +``` |
| 237 | + |
| 238 | +## Antes y después |
| 239 | + |
| 240 | +Salida real de las pruebas de Mex en Agrow, una línea de ayuda agrícola por voz basada en IA. |
| 241 | + |
| 242 | +**Scaffold antes de la configuración:** |
| 243 | + |
| 244 | +```markdown |
| 245 | +## Current Project State |
| 246 | +<!-- What is working. What is not yet built. Known issues. |
| 247 | + Update this section whenever significant work is completed. --> |
| 248 | +``` |
| 249 | + |
| 250 | +**Scaffold después de la configuración:** |
| 251 | + |
| 252 | +```markdown |
| 253 | +## Current Project State |
| 254 | + |
| 255 | +**Working:** |
| 256 | +- Voice call pipeline (Twilio -> STT -> LLM -> TTS -> response) |
| 257 | +- Multi-provider STT with configurable selection |
| 258 | +- RAG system with Supabase pgvector |
| 259 | +- Streaming pipeline with barge-in support |
| 260 | + |
| 261 | +**Not yet built:** |
| 262 | +- Admin dashboard for call monitoring |
| 263 | +- Automated test suite |
| 264 | +- Multi-turn conversation memory across calls |
| 265 | + |
| 266 | +**Known issues:** |
| 267 | +- Sarvam AI STT bypass active; ElevenLabs fallback in use |
| 268 | +``` |
| 269 | + |
| 270 | +**Directorio de patrones después de la configuración:** |
| 271 | + |
| 272 | +```text |
| 273 | +patterns/ |
| 274 | +├── add-api-client.md |
| 275 | +├── add-language-support.md |
| 276 | +├── debug-pipeline.md |
| 277 | +└── add-rag-documents.md |
| 278 | +``` |
| 279 | + |
| 280 | +## Resultados en el mundo real |
| 281 | + |
| 282 | +Un miembro de la comunidad lo probó de forma independiente en **OpenClaw** con 10 escenarios estructurados de homelab que abarcan Ubuntu 24.04, Kubernetes, Docker, Ansible, Terraform, redes y monitorización. Las 10 pruebas fueron satisfactorias. Puntuación de desviación: 100/100. |
| 283 | + |
| 284 | +| Escenario | Sin Mex | Con Mex | Ahorro | |
| 285 | +|-----------|---------|---------|--------| |
| 286 | +| «¿Cómo funciona K8s?» | ~3,300 tokens | ~1,450 tokens | 56% | |
| 287 | +| «Abrir un puerto UFW» | ~3,300 tokens | ~1,050 tokens | 68% | |
| 288 | +| «Explicar Docker» | ~3,300 tokens | ~1,100 tokens | 67% | |
| 289 | +| Consulta multicontexto | ~3,300 tokens | ~1,650 tokens | 50% | |
| 290 | + |
| 291 | +**Reducción media de tokens de aproximadamente un 60 % por sesión.** |
| 292 | + |
| 293 | +## Modo de memoria del agente |
| 294 | + |
| 295 | +`mex setup --mode agent-memory` crea un scaffold para agentes persistentes cuyo «proyecto» es un entorno operativo y no un repositorio de código. Añade un contrato `HEARTBEAT.md` y plantillas que presentan Mex como memoria estructurada y dirigida por tareas: |
| 296 | + |
| 297 | +- `ROUTER.md` registra el estado operativo actual y dirige al agente a los archivos de memoria correctos. |
| 298 | +- `context/` almacena arquitectura, stack, convenciones, configuración y decisiones. |
| 299 | +- `patterns/` almacena procedimientos reutilizables. |
| 300 | +- `.mex/events/decisions.jsonl` almacena notas y razonamientos de solo anexado mediante `mex log`. |
| 301 | + |
| 302 | +`mex heartbeat` es intencionadamente más ligero que `mex check`: lee el frontmatter `last_updated` y los metadatos de limpieza de memoria, imprime `HEARTBEAT_OK` cuando todo está correcto y solo informa cuando el agente debe revisar archivos de contexto o memoria obsoletos. Usa `mex watch --interval` para ejecutar heartbeat repetidamente en un espacio de trabajo de agente persistente. |
| 303 | + |
| 304 | +## Configuración |
| 305 | + |
| 306 | +Los ajustes opcionales se encuentran en `.mex/config.json`. Los valores ausentes usan los predeterminados. |
| 307 | + |
| 308 | +```json |
| 309 | +{ |
| 310 | + "staleness": { |
| 311 | + "warnDays": 30, |
| 312 | + "errorDays": 90, |
| 313 | + "warnCommits": 50, |
| 314 | + "errorCommits": 200 |
| 315 | + }, |
| 316 | + "heartbeat": { |
| 317 | + "staleDays": 7, |
| 318 | + "memoryCleanupDays": 7, |
| 319 | + "dailyMemoryRetentionDays": 14 |
| 320 | + }, |
| 321 | + "watch": { |
| 322 | + "intervalMinutes": 30 |
| 323 | + } |
| 324 | +} |
| 325 | +``` |
| 326 | + |
| 327 | +## Telemetría |
| 328 | + |
| 329 | +Mex recopila datos de uso anónimos y opcionales (nombre del comando, versión y sistema operativo; nunca rutas, argumentos, contenido de archivos, IP ni datos personales) para comprender cómo se utiliza. Inspecciona la carga exacta con `mex telemetry inspect` y desactívala en cualquier momento con `DO_NOT_TRACK=1`, `MEX_TELEMETRY=0` o `mex config set telemetry off`. Consulta todos los detalles en [TELEMETRY.md](TELEMETRY.md). |
| 330 | + |
| 331 | +## Ecosistema |
| 332 | + |
| 333 | +Mex es independiente del proveedor. Las guías de integración, los ejemplos patrocinados y las recetas de la comunidad deben ser útiles por sí mismos, estar claramente identificados y vivir en la documentación en lugar de modificar silenciosamente la experiencia predeterminada. |
| 334 | + |
| 335 | +## Contribuir |
| 336 | + |
| 337 | +Las contribuciones son bienvenidas. Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para ver la configuración y las directrices. |
| 338 | + |
| 339 | +## Registro de cambios |
| 340 | + |
| 341 | +Consulta [CHANGELOG.md](CHANGELOG.md) para conocer el historial de versiones. |
| 342 | + |
| 343 | +## Licencia |
| 344 | + |
| 345 | +[MIT](LICENSE) |
0 commit comments