CommunityProgramación y desarrollogithub.com

stwhwing/pi-evox-loop

Proporciona un 'runtime de herencia de experiencia' a tu agente de codificación: recuerda correcciones validadas de un almacén de genes (Evolver) al inicio de la tarea, registra aciertos cuando una corrección se usa realmente y deposita nuevas correcciones aprendidas después de reparar una falla no obvia. Opcionalmente, ejecuta experimentos controlados de bucle cerrado (R1 trampa → destilar → inyectar → R2) para medir las ganancias de herencia.

¿Qué es pi-evox-loop?

Esta habilidad, pi-evox-loop, es un sistema de 'herencia de experiencia' para agentes de codificación como Claude Code, Cursor y Codex. Su propósito principal es evitar que el agente cometa el mismo error dos veces: cuando corrige una falla no obvia, la solución se almacena en un 'almacén de genes' junto con las señales de error y el contexto. Luego, al iniciar una tarea similar, el agente puede recuperar automáticamente esas correcciones validadas. El sistema funciona con Node.js (versión ≥22) y no requiere dependencias npm para los flujos básicos A y B (recuperación y depósito). Incluye múltiples compuertas de seguridad para filtrar correcciones inválidas o maliciosas, y ofrece un modo de experimentos controlados (flujo C) para medir cuantitativamente la efectividad de la 'herencia'. Es útil para evitar errores repetitivos en entornos complejos, especialmente aquellos dependientes del sistema, la codificación o la configuración.

Compatible con✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/stwhwing/pi-evox-lab/tree/HEAD

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Pi × EvoX Loop — Habilidad de Herencia de Experiencia para Agentes

Haz que tu agente solo cometa cada error una vez: las experiencias de fallo se almacenan automáticamente (filtradas por guardias) y se recuperan automáticamente las correcciones validadas para tareas similares.

Convención de términos (0.29): El cuerpo principal está en español. Los campos técnicos se escriben en inglés la primera vez que aparecen (por ejemplo, 'señales de coincidencia signals_match'), y luego siempre en español, sin mezcla repetida. La correspondencia completa inglés-español está en docs/faq.md Q17.

Mapa de documentación (0.21 capas):

  • Los nuevos usuarios solo necesitan leer tres secciones: Inicio rápido (30 segundos) → Flujo A → Flujo B (aproximadamente 60 líneas); el resto, consultar según sea necesario.
  • Decisión en un minuto: docs/one-pager.md (nuevo en 0.30)
  • Punto de entrada central para mejores prácticas: examples/quickstart.md (cierre en 5 minutos) + docs/overview.md (visión general del proyecto) + docs/common-mistakes.md (14 antipatrones) — tres documentos cubren 'inicio/panorama/evitación de errores'.
  • El resto de este archivo = puntos de activación/resumen de seguridad/consulta rápida de antipatrones/navegación; docs/advanced.md = direccionamiento de retroalimentación/línea de tiempo/cosecha/bloqueo de concurrencia/biblioteca compartida/integración de host/operaciones/detalles de compuerta de seguridad; docs/common-mistakes.md = lista completa de usos incorrectos comunes; docs/config-errors.md = errores de configuración comunes; docs/faq.md = FAQ completa.
  • docs/research.md = Flujo C de experimentos controlados + disciplina de diseño de trampas — solo para investigación, la mayoría de los usuarios no necesitan abrirlo.

Inicio rápido (30 segundos)

EN: Requires Node >= 22. Optional @evomap/evolver integration is GPL-3.0-or-later (only if you install and use --engine evolver); the default light backend is MIT, zero-dependency, zero-exfiltration. Three things only: A recall validated fixes at task start, B deposit after fixing a non-obvious failure, C (optional, research) controlled experiments. Daily use = A/B only. ⚠️ Requisito previo: Node ≥ 22 (node -v para verificar; las versiones antiguas no son compatibles, primero debes actualizar). La integración opcional @evomap/evolver es GPL-3.0-or-later — solo si instalas y usas activamente --engine evolver; el backend ligero predeterminado es MIT, sin dependencias y sin filtraciones externas.

Esta habilidad solo hace tres cosas: A recuperar correcciones validadas al inicio de la tarea, B depositar después de corregir una falla no obvia, C (opcional, para investigación) experimentos controlados para cuantificar los beneficios. En el uso diario, solo A/B; C está desactivado por defecto; no lo uses en producción.

# A — Al inicio de la tarea, recuperación dirigida (reemplaza con una frase de tu tarea)
node code/evolver-recall.mjs --query "Procesar archivos con codificación GBK da error" --top 5

# B — Después de corregir una falla no obvia, pega el error original para generar un borrador y luego completa FIX para almacenar
node code/light-cli.mjs draft --error "<error original>" --tool <nombre de herramienta> --context "<qué estabas haciendo>"
node code/light-cli.mjs draft --error "<error original>" --strategy "EVITAR: <qué no hacer> FIX: <parámetros/comandos/codificación específicos>" --commit

Todos los comandos se ejecutan en el directorio raíz de este repositorio; si no tienes las dependencias instaladas, consulta la sección 'Instalación' a continuación.

Primera ejecución · 3 pasos para prepararse (primero autocomprobación, luego depósito)

  1. Instala Node ≥22 (el generador de trampas y pi/evolver lo requieren; consulta FAQ·Q8);
  2. Autocomprobación del entorno: node code/light-cli.mjs doctor — verifica la versión de Node, que el directorio del almacén de experiencia sea escribible, que el directorio de registro de aciertos sea accesible (proporciona instrucciones de corrección si falla);
  3. Activa el almacén de experiencia: si el almacén está vacío y no hay correcciones que recuperar, es normal; sigue el Flujo B a continuación para depositar la primera corrección y activarlo.

Lectura obligatoria para principiantes (preguntas frecuentes rápidas)

  • ¿La primera recuperación muestra 'No hay correcciones recuperables'? Normal: el almacén comienza desde cero; ejecuta B una vez para activarlo (FAQ·Q1).
  • ¿Versión de Node necesaria? Debe ser ≥22 (el generador de trampas también necesita Python 3); si es demasiado baja, pi/evolver fallará al iniciar (FAQ·Q8).
  • Más preguntas en docs/faq.md (14 preguntas completas) y la tabla de antipatrones a continuación.

Instalación (única vez)

EN: One-time setup. A/B flows need ONLY Node >= 22 — zero npm dependencies. Get the folder by any of three paths below; any location works (a "skill" is just a folder — put it wherever your host expects, e.g. ~/.claude/skills/pi-evox-lab). Default backend = built-in light (pure Node, MIT). evolver is an optional integration (--engine evolver, needs npm install). Flow C additionally needs Pi CLI + an OpenAI-compatible LLM key.

Tres formas de obtener la carpeta (elige una):

# Ruta 1: git clone (recomendado)
git clone https://github.com/stwhwing/pi-evox-lab.git && cd pi-evox-lab
# Ruta 2: Red restringida → Descargar zip de Release (con sha256), descomprimir y usar
#   https://github.com/stwhwing/pi-evox-lab/releases (espejo en China disponible en FAQ Q7)
# Ruta 3: Instalación con un clic desde el mercado — skillhub.cn / ClawHub busca pi-evox-loop (para usuarios de WorkBuddy/OpenClaw)
node -v                # Requisito previo: Node >= 22 (única dependencia obligatoria)
node code/light-cli.mjs doctor   # Autocomprobación de 30 segundos — si pasa, puedes usarlo sin ningún paso de instalación
  • Los flujos A/B diarios tienen cero dependencias npm; el siguiente npm install es solo para la integración opcional / modo experimental C:

Configuración del Proveedor (solo necesario para el Flujo C)

EN: Flow C only - any OpenAI-compatible endpoint; $ENV interpolation needs pi >= 0.85.1. Examples + domestic endpoints (DeepSeek/Bailian/SiliconFlow/Zhipu): docs/providers.md.

Flujo A: Inicio de Tarea — Recuperar Experiencia (cualquier tarea no trivial)

EN: Flow A - recall at task start. --query with the task text does targeted recall (unrelated experience is never injected - injection is gated by signals_match x query-token overlap, below threshold = no injection). On error (T3), the raw error text IS the query. Multiple matches: geneConflicts drops anti_patterns-mutual low scorers; no targeted hit = no injection. Register the hit at task end with --register-hit --gene <id> (id-addressed, concurrency-safe).

# Escenario común en China (logs de Windows / CSV predeterminados GBK, al leer como utf-8 falla) — después de ejecutar el starter con almacén vacío, prueba esto primero para obtener el mayor efecto
node code/evolver-recall.mjs --query "Leer logs chinos da UnicodeDecodeError" --top 5

# Recomendado: recuperación dirigida con el texto de la tarea (la experiencia no relacionada no se inyecta)
node code/evolver-recall.mjs --query "<frase clave/señal de la tarea actual>" --top 5

# Al encontrar un error (T3): el texto del error original es la consulta — el error en sí mismo es un recordatorio
node code/evolver-recall.mjs --error "UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4"
  • Solo genera una lista numerada de correcciones que han sido revisadas, han pasado la guardia de corrección y coinciden con la consulta dirigida (si el almacén está vacío, se muestra un aviso claro, lo cual es normal);
  • Valores por defecto de parámetros: --top predeterminado 5 (la inyección de mensajes tiene un costo de contexto, mejor menos que más); el almacén de experiencia no tiene un límite de capacidad duro, pero se recomienda <500 entradas por almacén (más allá, la precisión de coincidencia disminuye; se puede usar un pool compartido para distribuir);
  • Regla de coincidencia dirigida: se puntúa según la intersección de signals_match del gen con los términos de la consulta; si está por debajo del umbral, toda la corrección no se inyecta (evitar inyectar información no relevada que aumente los costos);
  • Cuando hay múltiples genes en conflicto: la guardia geneConflicts elimina automáticamente los de baja puntuación con anti_patterns mutuos; si aún quedan varios, se toma el de mayor puntuación; si no hay coincidencia dirigida, es mejor no inyectar que usar genes irrelevantes;
  • Si es relevante para esta tarea, prioriza su uso; al finalizar, si realmente se utilizó una corrección, registra el acierto (--gene <id> direccionado por id, seguro para concurrencia):
node code/evolver-recall.mjs --register-hit --gene <asset_id o gene_id> --note "<frase de la tarea>"
  • No fuerces experiencia no relacionada; no es necesario registrar entradas no utilizadas.

Flujo B: Después de Reparar una Falla — Depositar Experiencia

EN: Flow B - deposit after fixing a non-obvious failure. Deposit bar (any one): docs/2+ tries needed, environment-specific, counter-intuitive error, or second occurrence. Guided path: draft --error auto-extracts signals + pre-fills AVOID + writes anti_patterns; fill in FIX then --commit. Manual path: distill with explicit signals. strategy MUST be an executable fix (params/commands/encodings) - success summaries are filtered by the repair-signal guard. --shareable only for genes meant for the shared pool. Criterios de decisión (cualquier condición es suficiente para depositar):

  • El proceso de diagnóstico requirió consultar documentación / prueba y error ≥2 veces para resolverlo;
  • Depende de la máquina o las características del entorno (codificación, convenciones de ruta, diferencias de shell, entorno de red);
  • El mensaje de error es contraintuitivo o no coincide con la descripción de la documentación;
  • El mismo error ha aparecido por segunda vez en tareas históricas. (Si no se cumple ninguna condición, no es necesario depositar fallas comunes, para evitar ruido en el almacén de experiencia).

Ruta recomendada: Guiada (pega el error original, las señales y la 'experiencia negativa' se extraen automáticamente)

# 1) Generar borrador: extrae automáticamente signals_match + rellena la plantilla EVITAR + escribe anti_patterns (token de experiencia negativa)
node code/light-cli.mjs draft --error "<texto del error original>" --tool <nombre de la herramienta que falló> --context "<qué estabas haciendo>"

# 2) Completa FIX según el borrador y luego almacena (--strategy sobrescribe el marcador de posición prellenado)
node code/light-cli.mjs draft --error "<texto del error original>" \
    --strategy "EVITAR: <qué no hacer> FIX: <parámetros/comandos/codificación específicos>" --commit

# 3) Revisar (la máquina de estados semánticos de cuatro estados se encuentra en la sección 'Máquina de estados de revisión' a continuación; approve ejecuta automáticamente la recopilación de evidencia primero)
node code/light-cli.mjs approve <gene_id>

Límites de la plantilla EVITAR/FIX (si no está claro, la guardia lo rechazará):

SecciónQué escribirLímite
EVITAR:Qué no hacer (experiencia negativa, puede incluir palabras peligrosas — son advertencias)Una o dos frases; no escribir resúmenes de éxito
FIX:Corrección ejecutable específica a parámetros/comandos/codificaciónDebe llenarse realmente — marcadores de posición, registros de reintentos o comentarios narrativos serán rechazados por depositionGate (fail-closed)
anti_patterns:Literal de un solo token (p. ej., assume-default-utf8)La detección de conflictos coincide con la cadena completa; no escribas frases largas en kebab-case
signals_match:Palabras de señal para la coincidencia de recuperaciónSolo se recupera si hay intersección con los términos de la consulta; no apiles palabras irrelevantes

Ruta alternativa: Manual (cuando las señales ya están claras)

node code/light-cli.mjs distill --category repair --signals bash,exception \
    --strategy "<corrección en una frase; si son varios pasos, separar con punto y coma; debe ser específica a parámetros/comandos/codificación>" \
    --summary "<descripción del error en una frase>" [--shareable]
  • La estrategia debe ser una corrección ejecutable (con parámetros/comandos específicos), no un resumen de éxito — la guardia de corrección en el lado de recuperación filtrará los resúmenes de éxito (mejor escaso que abundante);
  • --shareable solo si deseas que este gen entre en el pool compartido (por defecto no compartido = no se envía fuera);
  • Umbral de depósito (límites honestos basados en datos): en sesiones reales de producción, la densidad de 'pares de corrección limpios' extraíbles automáticamente es muy baja (medido distillablePairs=0) — los genes de esta biblioteca provienen principalmente de depósito manual/guiado.

Control de calidad de depósito depositionGate (0.17.0, fail-closed)

EN: Quality gate at DEPOSITION time (fail-closed): rejects unfilled placeholder / retry-log repetition / narration openings / missing repair-signal words / AVOID-without-FIX. Non-interactive deposits default to quarantined. Full review semantics: the「Máquina de estados de revisión」section below. En distill / draft --commit se revisa cada entrada; si no es válida, se rechaza directamente (no se guarda):

Condición de rechazoMotivoPróximo paso
FIX es un marcador de posición sin rellenar <aquí la corrección ejecutable>Sin valor después de la inyecciónCompleta la corrección real en el borrador y vuelve a enviar
retry with corrected args (repetición del registro de reintento)'Reintenté y funcionó' no es una correcciónEscribe EVITAR(por qué falló)+FIX(cómo hacerlo)
Apertura narrativa (Now I understand…)Razonamiento en lenguaje natural no ejecutableLo mismo que arriba
Falta palabra clave de señal de correcciónNo parece describir un error y su correcciónLo mismo que arriba
Tiene EVITAR pero no FIX (incompleto)Solo el error, sin corrección, sin valor después de la inyección (evidencia de 0.22: 3 depósitos truncados eran todos de esta forma)Agrega la corrección ejecutable (parámetros/comandos/codificación)

Máquina de estados de revisión (fuente única de verdad · 0.36 convergencia)

Toda la semántica de revisión, desde que un gen entra hasta que se puede inyectar, se mantiene solo en esta sección; el resto de los documentos se remiten a ella (para evitar la deriva de expresiones — mencionado en la evaluación 0.35). EN: The single source of truth for all review semantics; other docs only point here.

EscenarioComportamiento predeterminadoCómo sobrescribir
Depósito interactivo local (draft --commit / distill, con TTY)Aprobado automáticamenteconfig --auto-approve off cambia a manual; solo afecta depósitos locales
Depósito no interactivo local (script/cron/pipe, sin TTY)Aislado por defecto (quarantined)Pasar explícitamente --auto-approve para aprobar
approve <gene_id>Primero ejecuta automáticamente la recopilación de evidencia — verifica los cuatro registros locales (errores de herramienta/recuperación/inyección/retroalimentación) con tres niveles de salida (evidencia fuerte/contexto débil/sin evidencia); solo aprueba si son coherentes--skip-evidence como puerta de escape explícita para escenarios sin evidencia conocida (no recomendado); si la conclusión es refutada por eventos posteriores, se mantiene aislado y se deja constancia
Importación de pool gene import / gene pullNivel oficial pasa directamente (verificación de firma); Nivel comunitario aislado por defectoLo determina --tier
  • Por qué approve está vinculado a la evidencia: en 0.20.3 se creó el comando evidence pero dependía de 'recordar ejecutarlo' — ese día se revisaron 6 entradas y ninguna se ejecutó. El mecanismo debe estar vinculado al nodo de acción (Filosofía T3: el error en sí mismo es un recordatorio).
  • El registro de estado review.jsonl es LWW (último escritor gana) de tipo append, approve/quarantine son reversibles bidireccionalmente; 'pendiente de revisión' en info = el último estado no es ni approved ni quarantined.
  • Relación con las dos capas de control de calidad: depositionGate rechaza antes de la entrada (sección anterior), las cuatro guardias filtran en el lado de recuperación (sección siguiente) — cualquier capa que rechace impide la inyección.
  • Los genes sin evidencia local (de pool compartido/otras máquinas/paquete inicial) se revisan según el contenido y la fuente, anotando la aprobación.

EN: Review-with-evidence (0.20.3): before approve, run evidence <gene_id> to check the four local ledgers for events matching the gene's claimed failure/fix. Approve only when consistent; genes whose conclusions were overturned by later events stay quarantined with an audit note. Genes without local evidence (pool imports / other machines / starter pack) are reviewed on content and source, noted at approval.

Firma genética y procedencia (0.21)

EN: Every deposit is signed with this machine's Ed25519 identity (private key 0600, never leaves the machine); pool imports verify signatures - tampered content is REJECTED. Version-by-version details (v2 canonicalization, source attribution, source_kv, decay): docs/advanced.md §Provenance.

  • El depósito se firma automáticamente, la firma viaja con el gen al pool, la importación verifica la firma: contenido manipulado → importación rechazada; los genes antiguos sin firma se aceptan tal cual (legacy);
  • La clave privada no sale de la máquina; la clave pública viaja con el gen dentro y fuera del pool para que otras máquinas verifiquen la firma — el modelo de confianza es 'rastrear por keyid', no una CA centralizada;
  • Los campos de procedencia se registran automáticamente al depositar/retroalimentar (source_model / source_host / source_kv familia de esquemas comprimidos); la validez del gen se atenúa según la retroalimentación (semivida de 90 días + presión negativa, piso 0.25, sin retroalimentación no se atenúa) — detalles versión por versión (normalización v2 / atribución precisa / registro de fase / parámetros de atenuación) en docs/advanced.md §Provenance.

Despliegue y Distribución (0.23)

EN: Download paths, host integration, pool collaboration, concurrency semantics and scoring; version-by-version detail in docs/advanced.md §Deployment.

  • Descarga: Release zip de GitHub / npm (espejo en China en FAQ Q7, con verificación sha256);
  • Integración con el host: light-cli.mjs install <claude-code|cursor|codex|agents-md> (--yes para guardar); OpenClaw/Hermes usar install-hooks; las reglas de activación se pueden escribir en cualquier archivo de instrucciones con install-snippet;
  • Colaboración en pool de genes: gene pull --pool <URL|nombre> --tier official [--scene <escenario>] (verificación de firma); gene submit --bundle <archivo> devuelve al mantenedor; los pools con nombre se definen en ~/.evomap/pools.json; términos de contribución en CONTRIBUTING.md (CC-BY-4.0);
  • Semántica de concurrencia (tres capas, tabla de comportamiento completo en docs/boundary-and-triggers.md §5): sesiones múltiples en la misma máquina = bloqueo de archivo withLock; entre máquinas = pool de genes como Git (decidido por registro LWW); múltiples hosts direccionan por gene_id (desde 0.18);
  • Puntuación y umbral de recuperación (valores públicos): Cada acierto de señales +3, intersección de tokens del cuerpo +1, sesgo de equilibrio de carga ±2; por debajo del umbral de 2 puntos no se inyecta (inyectar sin coincidencia dirigida es peor que no inyectar, medido +36pp); tokenización = tokens ASCII (≥3 caracteres) + bigramas de 2 caracteres chinos — las frases chinas de varios caracteres escritas en señales no son efectivas (fix-signals puede diagnosticar);
  • Valla de sesión (0.27): session open "<tarea>" completa la recuperación T1 y la contabilidad en un solo paso; session close "<conclusión>" cierra — las sesiones open/close no emparejadas serán rechazadas por la puerta de construcción (auditoría vinculante);
  • Cuantificación y retroalimentación: report semanal (L1 actividad / L2 tasa de retroalimentación / L3 recurrencia, --json legible por máquina); recall --record "<conclusión>" completa la conclusión de verificación; license verify <token> verifica licencia de firma Ed25519;
  • Resiliencia de E/S y códigos de error (0.34): Los errores transitorios se reintentan automáticamente (3 veces/3s) → después de 5 fallos consecutivos, disyuntor por 10s (se cierra cuando la E/S se recupera); todos los fallos incluyen códigos de error nombrados [E_USAGE]/[E_ARGS]/[E_GUARD]/[E_NOTFOUND]/[E_INTERNAL] (manteniendo códigos de salida 0/1/2) — parámetros y tabla completa en docs/advanced.md;
  • Fundamento teórico: La conciencia del problema de verificación heterogénea proviene de arXiv:2512.05117 (detalles en la sección de agradecimientos del README y docs/research.md); detalles versión por versión (procedencia/alias de palabras de activación/licencia/parámetros de atenuación) en docs/advanced.md §Deployment.

Seguridad: Cuatro Puertas (0.16.0)

EN: Four gates: repair-signal guard, narration guard, injection guard (malice; AVOID=warning allowed vs FIX=instruction blocked), redaction gate (privacy, fail-closed off-machine). Per-gate details: docs/security-and-license.md §Gates.

#Puerta¿Qué controla?¿Dónde actúa?
1Guardia de correcciónSi hay una corrección real (sin contenido ejecutable → no inyectar; mejor escaso que abundante)Recuperación
2Guardia de narraciónSi es lenguaje narrativo fluido (la narración es información cero para el agente, medido como ruido equivalente +36pp)Recuperación
3Guardia de inyecciónSi es una instrucción maliciosa (inyección de mensajes → no inyectar; línea de defensa principal contra 'genes que manipulan al host')Recuperación (CLI / Puente de extensión Pi versión simplificada / Orquestador) + Importación + Exportación
4Puerta de desinfecciónSi filtra contenido privado (IP/ruta/clave → bloquear salida de la red)Exportación + Importación
  • Semántica de degradación: Exportación/Importación fail-closed (si falta el módulo de guardia, se rechaza la ejecución); en el lado de recuperación, solo se salta la puerta de inyección, las otras tres funcionan normalmente (la ruta de bootstrap del host no debe bloquear al usuario por una falla de guardia — solo lectura no bloquea, escritura debe ser closed).
  • Qué escanea exactamente cada puerta, el comportamiento después del acierto, las dos detecciones omitidas en 0.31 y los casos de regresión: todo en docs/security-and-license.md §Gates — este documento no repite las características de activación de inyección para evitar que la documentación sea considerada una muestra por los escáneres (este repositorio tiene precedentes de versiones anteriores por esta razón).

Límites de capacidad (cuándo no esperar que funcione)

6 categorías de escenarios no aplicables (varias máquinas escribiendo en la misma base de datos / garantía de evitar errores al 100% / base de datos sincronizada en tiempo real / tareas únicas / como base de conocimiento autorizada / reutilización directa entre arquitecturas) y límites cuantitativos (inyección predeterminada de 5 entradas, límite de tamaño de base no medido, sin bloqueo distribuido entre máquinas, Node ≥22) todo en docs/boundary-and-triggers.md §1–§2. EN: Capability limits ("when NOT to use") and quantitative bounds: docs/boundary-and-triggers.md §1–§2.

Cuándo recordar: Cinco puntos de activación (diseño central de 0.16.0)

EN: Recall bound to concrete action nodes, never left to memory: T1 task start, T2 before first side-effecting action, T3 on error (the error text IS the query), T4 after fixing, T5 task end (register-hit/negate). Full spec: docs/boundary-and-triggers.md. 'Instalé la habilidad pero nadie la llama' es el modo de fallo más fundamental de este proyecto — incluso el autor lo olvida (medido: los genes relevantes pueden ocupar el puesto #1 en la recuperación, pero el error se repite porque no se ejecutó la recuperación antes de actuar). Por lo tanto, no se puede esperar que 'el usuario recuerde'; la recuperación debe vincularse a nodos de acción concretos.

| # | Punto de activación | Momento | Comando | ¿Qué pasa si no se conecta? | |---|---|---|---| | T1 | Inicio de tarea | Cuando se recibe una tarea no trivial, antes de planificar | recall --query "<tarea>" | Fallo de prevención: se cae en los errores que se podrían evitar | | T2 | Antes de una acción | Justo antes de ejecutar la primera acción irreversible (escribir archivo/confirmar código/desplegar/llamar a API externa/eliminar datos); dentro de la misma tarea, acciones similares solo se activan una vez, las siguientes usan la conclusión actual | Igual que arriba (query=la acción específica a realizar, p. ej., 'reescribir archivos por lote con un script') | Prevención cercana (opcional) | | T3 | Al encontrar un error | La herramienta devuelve un error, antes de preparar un reintento | recall --error "<texto del error>" | Lo más lamentable: aunque haya una corrección en el almacén, se reintenta a ciegas | | T4 | Después de corregir el error | Se corrigió un error no obvio | draft --error ... (depósito) | La experiencia se pierde, la próxima máquina vuelve a caer | | T5 | Finalización de la tarea | Cierre | --register-hit --gene <id> / --negate --gene <id> | No se puede medir, las correcciones ineficaces pasan desapercibidas |

T3 resaltado (el de mayor beneficio, pero el más fácil de pasar por alto): El único punto de activación que no requiere que recuerdes — el error en sí mismo es un recordatorio. Cuando la herramienta devuelve un error, antes de preparar un reintento, usa el texto del error original directamente como consulta (no lo resumas): node code/evolver-recall.mjs --error "<texto del error>"; después del acierto, reintenta según la corrección; si aún falla → ve a T4 para depositar.

Especificación completa de activación en docs/boundary-and-triggers.md — incluye criterios de juicio de T2 con 3 ejemplos, matriz de concurrencia de múltiples hosts, mapeo de palabras de activación ↔ comandos, tres formas de integración de host, espejo en China, autocomprobación de 'instalado pero no funciona'. Este archivo solo mantiene la tabla central anterior; ambas ubicaciones ya no divergen. Las palabras de activación son solo sugerencias de llamada, no el mecanismo de coincidencia de recuperación (el acierto se basa en signals_match × query-token); al inicio de tarea, si se determina 'no trivial', se ejecuta T1, sin necesidad de que la redacción coincida con un conjunto de palabras.

Usos incorrectos comunes (consulta rápida de antipatrones)

EN: Anti-pattern quick list - each row explains the MECHANISM, not just the symptom. Full 14-item catalog with [A] evidence: docs/common-mistakes.md. Key ones: success-summary strategies are noise (+36pp worse than nothing), model-may-fail traps have unreliable hit rates, token deltas need a no-injection control group (~-22% repeat-execution baseline), error counting must use authoritative flags (isError=true), cold start needs flow-B deposits first. Cada fila explica 'por qué está mal' — se centra en el mecanismo, no en el fenómeno. Lista completa (con más entradas) en docs/common-mistakes.md.

Práctica incorrectaPor qué está mal (mecanismo)Correcto
Escribir resúmenes de éxito como

… [truncado para traducción]

Skills relacionados