Volver a la wiki

Handler MCP: wikiProposeMirrorUpdate — propuesta segura de actualizaciones mirror

Handler MCP: wikiProposeMirrorUpdate — propuesta segura de actualizaciones mirror

Descripción

wikiProposeMirrorUpdate es un handler del MCP de CreaRack Pro implementado en functions/api/mcp/handlers/wiki.ts. Su propósito es, dado un sourceDiff (diff del doc fuente) y un mirrorBody (contenido actual del mirror en otra wiki/idioma), generar mediante Haiku 4.5 un proposed_body actualizado coherente con el cambio, y opcionalmente abrir un PR con la propuesta.

Forma parte del subsistema sync-cascade: cuando una página fuente cambia, el sistema propaga el cambio a sus mirrors de forma asistida por LLM, evitando reescrituras manuales.


Parámetros de entrada

ParámetroTipoDescripción
sourceDiffstringDiff unificado del documento fuente
mirrorBodystringContenido actual del mirror a actualizar
(env)ANTHROPIC_API_KEYClave Anthropic; retorna error si no está configurada

Comportamiento y límites (post-fix s80, 2026-05-22)

Constantes de control

ConstanteValorPropósito
MAX_DIFF8 000 charsLímite de sourceDiff enviado a Haiku
MAX_BODY32 000 charsLímite de mirrorBody enviado a Haiku (era 8 000 antes del fix s80)
ABORT_BODY50 000 charsSi mirrorBody supera este umbral, se aborta y retorna should_propose: false
max_tokens output8 000Tokens máx. en respuesta Haiku (era 4 000 antes del fix s80)
SUSPICIOUS_REDUCTION_RATIO0.5Si proposed_body.length < mirrorBody.length × 0.5, se descarta la propuesta

Flujo de decisión

sourceDiff.length > MAX_DIFF × 2?
  → should_propose: false, reason: "diff_too_large_for_haiku"

mirrorBody.length > ABORT_BODY?
  → should_propose: false, reason: "mirror_body excede N chars. Revisa a mano."

Llamada Haiku con truncatedDiff (hasta MAX_DIFF) + truncatedBody (hasta MAX_BODY)
  → Error?    → { error: "Haiku call failed: ..." }
  → Parse OK?

proposed_body.length < mirrorBody.length × SUSPICIOUS_REDUCTION_RATIO?
  → shouldPropose = false
  → reasoning = "[safety] Propose descartado: ..." + reasoning original Haiku

→ Retorno: { should_propose, reasoning, proposed_body, changes_summary, cost_usd }

Safety check anti-truncado

El check post-Haiku protege contra el escenario donde el modelo, habiendo recibido solo un fragmento del mirror (por límite de contexto o error de output tokens), devuelve ese fragmento como proposed_body completo. Si el body resultante es menor al 50% del original, la propuesta se rechaza automáticamente y se registra el reasoning de Haiku para diagnóstico.


Historial de cambios relevantes

FechaCambioMotivo
2026-05-22MAX_BODY 8000 → 32000Incidente s80: docs largos se truncaban
2026-05-22max_tokens output 4000 → 8000Permitir respuestas proporcionales al input
2026-05-22Añadido ABORT_BODY=50000Abort explícito para docs muy largos
2026-05-22Safety check SUSPICIOUS_REDUCTION_RATIO=0.5Detectar y descartar propuestas truncadas

Coste estimado

El handler reporta cost_usd calculado con haikuCostUsd(inputTokens, outputTokens). Con MAX_BODY=32000 + max_tokens=8000, el techo teórico por llamada es aproximadamente:


Riesgos conocidos y mitigaciones

RiesgoMitigación
Mirror >50KB no procesadoABORT_BODY retorna skip con mensaje — revisión humana obligatoria
Haiku trunca output inesperadamenteSafety ratio 0.5 descarta propuesta y expone reasoning
Diff fuente demasiado grandeMAX_DIFF×2 check retorna skip
ANTHROPIC_API_KEY no configuradaReturn error inmediato antes de cualquier lógica

Véase también

Subir