Summary
Implement multi-level summarization for long conversation sessions to free context space.
Motivation
Long agent sessions accumulate 200K+ tokens. Older conversation turns can be summarized to concise representations while preserving key decisions, code changes, and errors.
Components
Technical Design
type Summarizer interface {
Summarize(ctx context.Context, turns []Turn, opts SummarizeOptions) ([]Turn, SummarizeStats, error)
}
type Turn struct {
ID string
Role string // "user", "assistant", "tool"
Content string
Timestamp time.Time
Level int // Current compression level
}
type SummarizeOptions struct {
MaxTokens int // Target total tokens
PreserveRecent int // Keep N recent turns uncompressed
ImportanceThreshold float64 // Score above this = preserve
}
Files to Create
pkg/summarize/
├── summarize.go # Main summarization interface
├── turns.go # Conversation turn detection
├── hierarchy.go # Multi-level summarization
├── importance.go # Importance scoring
└── summarize_test.go # Tests
Acceptance Criteria
Summary
Implement multi-level summarization for long conversation sessions to free context space.
Motivation
Long agent sessions accumulate 200K+ tokens. Older conversation turns can be summarized to concise representations while preserving key decisions, code changes, and errors.
Components
Technical Design
Files to Create
Acceptance Criteria