Fixed-interval summarization wins because each call compresses a similar amount, so quality is consistent and easy to evaluate, and the known schedule lets it run in the background instead of spiking one turn.
Imagine emptying the dishwasher. You could wait until it is completely jammed and then do one big exhausting unload, or you could empty it as soon as it finishes its cycle. The big-unload plan looks efficient because you only do it when forced to, but in practice it ruins one specific morning every few days. Emptying on schedule is steady, predictable, and easier to plan around. Summarizing a chatbot's history works the same way. Waiting until the window fills concentrates the cost onto one unlucky turn that takes seconds longer than the rest. Summarizing on a fixed cadence keeps each job small and predictable, so it can be done in the background and no single turn becomes the bad one.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Picking when to summarize is one of those design choices that looks like an implementation detail until it lands in front of real users. The at-threshold policy sounds efficient: only summarize when you need to, save the LLM call cost otherwise. The fixed-interval policy sounds wasteful: summarize on a schedule even when the budget is not tight. In practice, the second policy often wins for user-facing chat, because the efficiency claim of the first policy is measured against the wrong objective.
The two policies, side by side
The at-threshold policy fires the summarizer when the live context approaches some fraction of the model's budget, for example 75 percent. The trigger is a function of the conversation state, so it fires irregularly: a session of terse turns might never trigger; a session of verbose turns might trigger every five turns.
The fixed-interval policy fires the summarizer every N turns regardless of state. The trigger is a function of the turn counter, so it fires predictably: every fifth turn, every tenth turn, on a schedule the system controls.
At first glance, the at-threshold policy is more efficient: it only runs the summarizer when summarization is needed. The terse-session case is free, and even the verbose-session case is bounded by the model budget.
This framing measures efficiency in summarizer calls per session, and that is the wrong metric. The real metrics are tail latency, summary quality variance, and operational simplicity. On all three, the fixed-interval policy has the edge, as long as its summarizer runs in the background.
Situations where this technique stops working.
2–4 min · Everything important, quickly.
Real products, models, and research that use this idea.
- Anthropic's server-side compaction (beta) replaces older turns with a summary in two forms: at a token threshold (default 150,000 input tokens, minimum 50,000), or on demand, where the application decides when to compact and can run it in the background. Anthropic recommends the on-demand form.
- OpenAI's Responses API compaction fires when the context crosses compact_threshold, and a standalone compact endpoint lets the application compact on its own schedule, which supports a fixed cadence.
What an interviewer would ask next. Try answering before peeking at the approach.
QHow does asynchronous summarization change the cost trade-off, and what are its risks?
Running the summarizer in parallel with the next model forward pass hides its latency entirely. The risk is staleness: if the user's next turn lands before the summary completes, the model has to decide whether to wait or to proceed with the older summary. A common choice is to proceed with the older summary and let the next interval catch up, accepting one turn of staleness in exchange for zero perceived latency.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Picking the at-threshold policy because it minimizes summarizer calls. The hidden costs (latency spikes, non-stationary eval inputs, variable summary quality) usually dwarf the call-count saving.
60 second bullets to scan on the way to the call.
Describe the at-threshold policy and its trigger condition
Describe the fixed-interval policy and its trigger condition
Primary sources. Browse if you want the original framing.
Same topic, related formats. Practice these next.