Documentation
¶
Overview ¶
Package timing mide la duración REAL de una conversación: el "tiempo activo" (trabajo efectivo) frente al span de calendario. La clave es que un agente no estima en unidades de equipo humano sin calibrar; con esto puede anclar sus estimaciones en cuánto tardó de verdad un trabajo análogo.
Modelo role-aware: se recorren los mensajes en orden cronológico y cada hueco entre dos se clasifica por quién habló último —si el agente terminó y esperaba al humano (assistant→user) el hueco se topea corto (te fuiste); cualquier otro hueco es trabajo del agente y se topea generoso. Así un rato largo en que el agente está ocupado cuenta como activo (sus tool calls/results lo pueblan), y solo las ausencias reales del usuario se descuentan.
Index ¶
Constants ¶
const ( // WorkCap: máximo que aporta un hueco de trabajo (agente ocupado), por si fue // una sola generación larga sin pasos intermedios timestampeados. WorkCap = 30 * time.Minute // WaitCap: máximo que aporta un hueco de espera (agente terminó, espera al // humano); más que esto = el usuario se fue. WaitCap = 5 * time.Minute // SessionGap: hueco a partir del cual contamos una "sentada" nueva (volviste // más tarde). Independiente de los caps de tiempo activo. SessionGap = 45 * time.Minute )
Topes por hueco (cap del modelo role-aware). Ajustables.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Span ¶
type Span struct {
Active time.Duration // tiempo activo (trabajo real), role-aware
Wall time.Duration // span de calendario (último - primer mensaje)
Sessions int // nº de sentadas (huecos que superan su cap, +1)
Msgs int // nº de mensajes con timestamp válido
First int64 // unix del primer mensaje
Last int64 // unix del último mensaje
}
Span resume la duración de una conversación (o agregado de varias).
func Compute ¶
Compute calcula el Span de una secuencia de eventos en orden cronológico (orden de Seq). Filtra timestamps inválidos (<=0) preservando el orden.
func SpanForChats ¶
SpanForChats computa el Span agregado de uno o varios chats leyendo sus timestamps del store. Reusado por `nem timeline`, `nem stats`, el tool MCP nem_duration y el `index` (para poblar la duración en los nodos).