Overview
A scheduled summariser agent runs periodically (e.g. hourly or at end-of-day) against the session's conversation history. It extracts structured facts — decisions made, preferences stated, tasks completed, open threads — and writes them into the session memory store (see #41). This gives the assistant a persistent, queryable knowledge layer that survives context window compaction.
This is distinct from context compaction (#19), which manages what fits in the current prompt. The summariser is about building durable knowledge, not just summarising for space.
Behaviour
- Runs as a trigger on a configurable schedule (e.g. hourly, or triggered at end of an active conversation window)
- Reads the conversation history since the last summariser run
- Extracts structured facts using a one-shot agent prompt
- Writes extracted facts as files into the session memory store (e.g.
facts/YYYY-MM-DD.json)
- Updates a running
facts/index.json manifest so the assistant can query what's known without reading all fact files
Fact schema
Each extracted fact should carry enough structure to be useful:
type — category (preference, decision, task_completed, open_thread, person, etc.)
content — the fact itself in plain language
confidence — high / medium / low
source_date — when the conversation segment occurred
extracted_at — when the summariser ran
Integration with session memory (#41)
- Fact files are written into the session filestore under a
facts/ prefix
- The assistant can use
file_list and file_read tools to retrieve facts on demand
- The index file provides a lightweight lookup without loading all facts
- Semantic search over fact content can be added later as a
memory_search tool
Prompt design
The summariser agent prompt should:
- Instruct the model to extract only verifiable, concrete facts (not inferences)
- Avoid duplicating facts already present in the index
- Output structured JSON matching the fact schema above
- Be conservative — better to miss a fact than to hallucinate one
Notes
Overview
A scheduled summariser agent runs periodically (e.g. hourly or at end-of-day) against the session's conversation history. It extracts structured facts — decisions made, preferences stated, tasks completed, open threads — and writes them into the session memory store (see #41). This gives the assistant a persistent, queryable knowledge layer that survives context window compaction.
This is distinct from context compaction (#19), which manages what fits in the current prompt. The summariser is about building durable knowledge, not just summarising for space.
Behaviour
facts/YYYY-MM-DD.json)facts/index.jsonmanifest so the assistant can query what's known without reading all fact filesFact schema
Each extracted fact should carry enough structure to be useful:
type— category (preference, decision, task_completed, open_thread, person, etc.)content— the fact itself in plain languageconfidence— high / medium / lowsource_date— when the conversation segment occurredextracted_at— when the summariser ranIntegration with session memory (#41)
facts/prefixfile_listandfile_readtools to retrieve facts on demandmemory_searchtoolPrompt design
The summariser agent prompt should:
Notes