Lesson 76 — Intermediate
Compression & Compaction
Context badhta jaata hai, budget fix hai — isliye beech ka rasta hai compaction: size kam karo par task-critical information bachao. Is lesson mein history summarize, tool outputs slim aur facts pin karna seekhoge.
Reduction vs information loss
WHAT
History aur tool outputs ko chhota karna bina goals, constraints, decisions aur open work khoye. Summary mein narrative compress hota hai, facts pin hote hain.
WHEN
History budget paar kare, lamba task ghanton chale, tool calls se bade dumps aayein — trigger budget threshold, har turn nahi.
WHERE
Rolling summary buffer (recent turns raw + summary), tool-result preprocessor, aur pinned facts block jo kabhi compress nahi hota.
Compression ka golden rule: shabd bacha sakte ho, facts nahi. Ek number, ID ya decision gayab ho gaya toh agent dobara kaam karega — cost aur confusion dono badhenge.
History compress karo
Nayi summary mein kya preserve karna hai: goal (verbatim), constraints, decisions + kyun, unresolved work. Baaki turns ka narrative ghulao, last kuch turns raw chhodo.
def compact_history(turns, summary, keep_last=4):
if len(turns) <= keep_last:
return summary, turns
new_summary = summarize(
"Purani summary:\n" + summary +
"\nNayi conversation — facts, decisions, open items only:\n" +
render(turns[:-keep_last]))
return new_summary, turns[-keep_last:]
# Goal hamesha VERBATIM pin rehta hai — summarize nahi hota
Tool outputs slim karo
- Fields slice: model ko sirf wahi fields do jo usne maangi — bade API dumps nahi.
- Paginate: pehla page + cursor; details chahiye toh agla call (full result external store mein, L6.6).
- Dedupe/sort: repeat rows hatao, top-k rank karo, relevance se chhota karo.
- Errors chhote: status + short message; poora stack trace model ko nahi, log mein.
def slim(result, keep=5):
return {
"total": len(result["items"]),
"items": result["items"][:keep],
"next_cursor": result["next"], # details phir se maang lenge
}
Rolling & hierarchical summaries
Lambi chalne wale tasks mein ek summary kaafi nahi — layers banao: turn summary → session summary → project summary. Har layer mein upar wali ka compressed version + naya content.
- Rolling: har trigger par old turns summary mein ghul jaate hain, recent raw rehte hain.
- Hierarchical: hafte/chapters ke summaries alag — bade archives mein sab kuch ek summary mein mat gholo.
- Pinned facts alag: IDs, URLs, exact values, open TODOs — kabhi summarize nahi, sirf copy hote hain.
- Verbatim decisions: "schema X choose kiya (kyun)" — narrative compress, decision line pin.
Failure modes
- Goal drift: summary mein goal badal gaya — agent alag kaam karne lagta hai (goal verbatim pin karo).
- Over-compression: instructions bhi ghul gayin — constraints hamesha full text.
- Double compression: bina caps ke har trigger par chhota hota jaana — hierarchical + min-size cap rakho.
- Fabricated summary: summarizer ne fact jod diye — summary generation bhi structured output se validate karo.
Exercise
Question: Badi conversation ko chhota karke rakhna — ek shabd, English?
Question: History se chhota summary banane ka verb — ek shabd, English?
Question: IDs, URLs, exact values ko compression se pehle protect karna — verb, ek shabd, English?
Common mistakes
- Goal bhi summarize kar dena: Goal ghula toh agent ka compass gayab. Goal + constraints ekdum raw pinned block mein — compression se exempt.
- Tool dump seedha andar: Ek paginated API ka full dump window ka aadha kha jaata hai. Slim preprocessor mandatory hai har tool result par.
- Summary of summary of summary: Compounding loss se facts phisalte jate hain. Hierarchical layers + verbatim anchors rakho, min-size cap ke saath.
Advocate poora trial transcript nahi rakhta — key dates, orders aur admissions pin karta hai, baaki narrative summary. Wahi compaction hai: narrative compress, facts pin.
summary = "Data fetch done, schema X decide (kyun: ...)"
pinned = {"ids": [...], "numbers": {...}, "todo": [...]}
recent = last_4_turns_raw # dono ke upar recent raw- Q: Compaction kab trigger karoge? (budget threshold — har turn nahi; aur kya preserve karte ho: goals, decisions, IDs)
- Q: Tool output slim kaise karoge? (field slice, top-k, pagination cursor, short errors, full result external)
- Q: Rolling vs hierarchical summary kab? (rolling = session ke andar; hierarchical = hafte/archives, layered)
- Q: Compression se information loss kaise measure karoge? (eval set: compress ke baad facts yaad rahe ya nahi — L7 regression style)
History, tool outputs aur pinned facts — teenon ab sambhalne aate hain. Agli lesson: window se information ko kaise bahar offload karte hain.