Disena el ensamblado de la ventana de contexto de un agente para maximizar reuso de prefix/KV cache (estatico-first) y mitigar dilucion softmax con edge placement (curva en U) y compactacion sobre umbral fijo.
Ingeniería para diseñar el ensamblado de la ventana de contexto de un agente de modo que (1) maximice el reuso de prefix cache (KV cache) y (2) minimice la pérdida de instrucciones por dilución softmax. Se logra organizando el contexto estático-first / dinámico-last —el prefijo estable se cachea y se reutiliza con factores cercanos a ~10x [SUPUESTO: verifica el factor real midiendo cache-hit rate en tu proveedor]— y colocando lo que el modelo no puede olvidar en los bordes del contexto (apertura y cierre), donde la atención es más alta (curva en U). Al acercarse al límite, se compacta por encima de un umbral fijo para preservar las instrucciones de borde. [DOC]
Cuándo NO usarla (anti-scope). Prompts de un solo turno sin reuso de prefijo (el caching no aporta); proveedores/SDKs sin prefix caching (la ganancia es nula, no inventes una); recortar el contenido del prompt por calidad de redacción —eso es prompt engineering, no ensamblado de ventana. [INFERENCIA]
<reminder> al cierre, después del prefijo estable. [DOC]<reminder>), nunca enterradas en el centro de un bloque largo. [DOC]# GOOD: estatico-first (cacheable), dinamico-last, reglas criticas en bordes
def build_context(turn_state: TurnState, history: list[Message]) -> list[Block]:
static_prefix = [
Block("role", ROLE_AND_TOOLS), # estable byte a byte -> cacheable
Block("policies", CRITICAL_RULES), # regla critica en el borde inicial
Block("schema", OUTPUT_SCHEMA),
]
compacted = compact_if_over(history, threshold=0.55) # umbral fijo, no toca bordes
dynamic_tail = [
Block("reminder", render_reminder(
now=turn_state.timestamp, # volatil -> SOLO aqui, al final
critical=CRITICAL_RULES_RESTATED, # reafirma regla en borde final
)),
]
return static_prefix + compacted + dynamic_tail# ANTI: timestamp al inicio invalida el cache; regla critica enterrada en el centro
def build_context(turn_state, history):
return [
Block("header", f"Current time: {turn_state.timestamp}"), # rompe prefix cache
Block("role", ROLE_AND_TOOLS),
Block("history", history), # regla critica queda sepultada aqui
Block("rules", CRITICAL_RULES), # zona de minima atencion (centro de la U)
]
# Sin umbral de compactacion -> al crecer el historial, las reglas se diluyen.Marca la skill como aplicada solo si TODO se cumple:
<reminder> al final del contexto. [DOC]grep de timestamp|now|request_id|uuid|counter dentro del bloque estático). [INFERENCIA]Declara el ensamblado ANTES de escribir prompts o adapters, y verifícalo con artefactos reproducibles:
assets/context-assembly-schema.json y assets/context-policy.json para declarar el ensamblado. [SUPUESTO: crea estos assets; aún no están en el repo de la skill]scripts/compile-context-window.py <contexto.json> --output <reporte.md> genera un reporte de prefijo, zona compactable, cola dinámica, reglas críticas y validaciones. [SUPUESTO: script por crear]bash skills/context-window-engineering/scripts/check.sh antes de marcar la skill como lista. [SUPUESTO: script por crear]katas-10, katas-11. [CONFIG]katas-prefix-caching, katas-context-dilution-mitigation. [CONFIG]JaviMontano/jm-adk-beta
fdad39c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.