Skip to content

[Feature] Hierarchical Summarization #2

Description

@Siddhant-K-code

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

  • Turn detection - Identify and segment conversation turns
  • Importance scoring - Score turns by: contains code, contains error, user explicitly referenced
  • Multi-level compression:
    • Level 0: Full content (recent)
    • Level 1: Paragraph summaries (medium age)
    • Level 2: Single-sentence summaries (old)
    • Level 3: Keywords only (very old)

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

  • Reduces 50-turn conversation to target token count
  • Preserves high-importance turns (code, errors, decisions)
  • Reversible: can retrieve original from reference
  • Integration with existing dedup pipeline

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions