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.mdQ17.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/evolverintegration 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 -vpara verificar; las versiones antiguas no son compatibles, primero debes actualizar). La integración opcional@evomap/evolveres 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)
- Instala Node ≥22 (el generador de trampas y pi/evolver lo requieren; consulta FAQ·Q8);
- 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); - 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, needsnpm 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 installes 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;
$ENVinterpolation 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.
--querywith 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:
--toppredeterminado 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_matchdel 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
geneConflictselimina automáticamente los de baja puntuación conanti_patternsmutuos; 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 --errorauto-extracts signals + pre-fills AVOID + writes anti_patterns; fill in FIX then--commit. Manual path:distillwith explicit signals. strategy MUST be an executable fix (params/commands/encodings) - success summaries are filtered by the repair-signal guard.--shareableonly 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ón | Qué escribir | Lí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ón | Debe 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ón | Solo 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);
--shareablesolo 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 --commitse revisa cada entrada; si no es válida, se rechaza directamente (no se guarda):
| Condición de rechazo | Motivo | Próximo paso |
|---|---|---|
FIX es un marcador de posición sin rellenar <aquí la corrección ejecutable> | Sin valor después de la inyección | Completa 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ón | Escribe EVITAR(por qué falló)+FIX(cómo hacerlo) |
| Apertura narrativa (Now I understand…) | Razonamiento en lenguaje natural no ejecutable | Lo mismo que arriba |
| Falta palabra clave de señal de corrección | No parece describir un error y su corrección | Lo 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.
| Escenario | Comportamiento predeterminado | Cómo sobrescribir |
|---|---|---|
Depósito interactivo local (draft --commit / distill, con TTY) | Aprobado automáticamente | config --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 pull | Nivel oficial pasa directamente (verificación de firma); Nivel comunitario aislado por defecto | Lo determina --tier |
- Por qué
approveestá vinculado a la evidencia: en 0.20.3 se creó el comandoevidencepero 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.jsonles LWW (último escritor gana) de tipo append,approve/quarantineson reversibles bidireccionalmente; 'pendiente de revisión' eninfo= el último estado no es ni approved ni quarantined. - Relación con las dos capas de control de calidad:
depositionGaterechaza 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, runevidence <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_kvfamilia 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) endocs/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>(--yespara guardar); OpenClaw/Hermes usarinstall-hooks; las reglas de activación se pueden escribir en cualquier archivo de instrucciones coninstall-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 archivowithLock; 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-signalspuede 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:
reportsemanal (L1 actividad / L2 tasa de retroalimentación / L3 recurrencia,--jsonlegible 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 endocs/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) endocs/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? |
|---|---|---|---|
| 1 | Guardia de corrección | Si hay una corrección real (sin contenido ejecutable → no inyectar; mejor escaso que abundante) | Recuperación |
| 2 | Guardia de narración | Si es lenguaje narrativo fluido (la narración es información cero para el agente, medido como ruido equivalente +36pp) | Recuperación |
| 3 | Guardia de inyección | Si 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 |
| 4 | Puerta de desinfección | Si 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 ensignals_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) endocs/common-mistakes.md.
| Práctica incorrecta | Por qué está mal (mecanismo) | Correcto |
|---|---|---|
| Escribir resúmenes de éxito como |
… [truncado para traducción]