Ir al contenido
OmniRoute source

Compression Engines (Español)

Las combinaciones de compresión son perfiles de compresión con nombre que se pueden asignar a combinaciones de enrutamiento:

  • compression_combos: almacena el modo, la canalización, la configuración de RTK, la configuración de idioma y el marcador predeterminado
  • compression_combo_assignments: asigna una combinación de compresión a una combinación de enrutamiento
  • la integración en tiempo de ejecución resuelve una combinación de compresión asignada antes que las sobrescrituras genéricas de combinaciones
  • los análisis incluyen compression_combo_id y engine

Ubicación en el panel: Dashboard -> Context & Cache -> Compression Combos.

Ruta Propósito
/api/settings/compression Configuración global de compresión (incluye la configuración mcpAccessibility)
/api/compression/preview Previsualizar cualquier modo de compresión
/api/compression/language-packs Enumerar los paquetes de idioma Caveman disponibles
/api/context/caveman/config Alias de la configuración de Caveman
/api/context/rtk/config Valores predeterminados y configuración de RTK
/api/context/rtk/filters Catálogo de filtros de RTK
/api/context/rtk/test Endpoint de previsualización/prueba de RTK
/api/context/rtk/raw-output/[id] Recuperación autenticada de la salida sin procesar censurada
/api/context/combos CRUD de combinaciones de compresión
/api/context/combos/[id]/assignments CRUD de asignaciones de combinaciones de enrutamiento
/api/context/analytics Alias de análisis de compresión

Las rutas de administración requieren autenticación de administración o comprobaciones de políticas de claves de API.

La compresión expone cinco herramientas MCP:

Herramienta Ámbito Propósito
omniroute_compression_status read:compression Configuración, análisis y estadísticas de caché
omniroute_compression_configure write:compression Actualizar la configuración global
omniroute_set_compression_engine write:compression Establecer el modo y la canalización opcional
omniroute_list_compression_combos read:compression Enumerar las combinaciones de compresión
omniroute_compression_combo_stats read:compression Consultar análisis por combinación/motor

Los embeddings nunca se comprimen. open-sse/handlers/embeddings.ts nunca invoca ningún motor de compresión: los cuerpos de solicitud/respuesta pasan directamente al ejecutor sin modificaciones. Esto es estructural actualmente (los embeddings y las finalizaciones de chat tienen controladores independientes), no una comprobación en tiempo de ejecución, pero significa que el problema de distorsión vectorial de #8034 no tiene ninguna superficie de exposición en la ruta de embeddings.

Filtro de exclusión por modelo/endpoint (#8034). Para las finalizaciones de chat, un operador puede indicar los identificadores de modelo o destinos provider/model que nunca deben comprimirse; una medida de protección útil si la compresión llegara a conectarse más adelante a una ruta próxima a los embeddings y, en general, útil para cualquier modelo en el que importe que el prompt sea exacto byte por byte (evaluaciones deterministas, prefijos sensibles a la caché, etc.).

  • Campo de configuración: exclusions?: string[] en la configuración global de compresión (GET/PUT /api/settings/compression), conservado mediante el espacio de nombres de compresión key_value existente (src/lib/db/compression.ts); no se requiere ninguna tabla nueva.
  • Pestaña del panel: Dashboard → Compression → Exclusions (/dashboard/compression/exclusions).
  • Sintaxis de patrones: * es el único comodín. Todos los demás metacaracteres de expresiones regulares de un patrón se escapan antes de la comparación, por lo que gpt-5.6 solo coincide con la cadena literal, nunca con gpt-5x6 (resistente a ReDoS, acotado y sin cuantificadores anidados). Los patrones se comparan sin distinguir entre mayúsculas y minúsculas tanto con el identificador de modelo simple como con el compuesto provider/model: gpt-5-6, openai/gpt-5-6 y openai/* funcionan, y * por sí solo excluye todos los modelos.
  • Coincidencia: isCompressionExcluded() / normalizeCompressionExclusions() en open-sse/services/compression/exclusions.ts. chatCore.ts comprueba el destino excluido justo después de resolver la configuración de compresión, antes de que se ejecute cualquier motor, y trata una coincidencia exactamente igual que si la compresión estuviera deshabilitada globalmente: el cuerpo de la solicitud es demostrablemente idéntico byte por byte. La omisión se registra mediante writeCompressionSkip(..., "excluded") para aportar visibilidad en los análisis.
  • Valor predeterminado (lista vacía/ausente): comportamiento idéntico al anterior a #8034; no se excluye nada.
  • LLMLingua-2 (SLM) requiere dependencias opcionales coubicadas. El worker solo se ejecuta en una compilación de producción cuando @atjsh/llmlingua-2 y sus dependencias pares se coubican en dist/node_modules (véase scripts/build/colocateOptionals.mjs, #4286). Sin ellas, el motor aplica una apertura ante fallos (devuelve el texto original). La resolución del worker ya no depende de import.meta.url (falla en el paquete independiente), sino que se basa en el cwd del entorno de ejecución / argv[1].
  • Los paquetes de idiomas de / fr / ja de Caveman están incompletos. Incluyen reglas context + filler + structural, pero no paquetes dedup / ultra, por lo que la intensidad ultra no es mayor que full para esos idiomas (utilizan únicamente sus propias reglas; no hay una conmutación por error silenciosa a las reglas dedup/ultra en inglés, lo que deformaría el texto extranjero). en / es / id / pt-BR están completos. Se agradecen contribuciones de dedup.json + ultra.json para los paquetes incompletos.
  • La telemetría apilada solo enumera los motores que realizaron compresión. Un paso de una canalización apilada cuyo motor se ejecutó, pero produjo un ahorro del 0 %, devuelve stats:null y, por tanto, no aparece en engineBreakdown; resulta indistinguible de un paso que se omitió. Distinguir entre «ejecutado, 0 %» y «omitido» requeriría un cambio en el modelo de desglose y se ha pospuesto.

Las comprobaciones específicas para esta área son:

Ventana de terminal
node --import tsx/esm --test tests/unit/compression/rtk-*.test.ts tests/unit/compression/pipeline-integration.test.ts tests/unit/compression/context-compression-api.test.ts
node --import tsx/esm --test tests/unit/compression/*.test.ts tests/golden-set/*.test.ts tests/integration/compression-pipeline.test.ts tests/unit/api/compression/compression-api.test.ts
node --import tsx/esm --test tests/unit/compression/mcpAccessibility*.test.ts
npm run typecheck:core

Código fuente de OmniRoute (a58000c7685f)

HagiCode

HagiCode es un espacio de trabajo de programación con agentes, flujos estructurados, ejecución multiagente y vistas de Hero Dungeon.

Convierte ideas en software útil con un flujo de trabajo con agentes más inteligente, rápido y ameno.

Interfaz principal de HagiCode con tema claro
  • SmartLos flujos estructurados convierten la intención en un itinerario ejecutable desde la idea hasta la entrega.
  • EfficientLos flujos multiagente permiten avanzar en paralelo con la investigación, implementación y revisión.
  • FunHero Dungeon hace que las largas sesiones de programación sean visuales y colaborativas.
Visitar HagiCode