Skip to main content

Module context

Module context 

Source
Expand description

Session context management for AI agents

This module provides intelligent context management for AI agents, including conversation history, task context, and workspace state. The context system is designed to maximize AI performance while minimizing token usage through intelligent compression and summarization.

§Key Features

  • Efficient History Management: Real zstd compression for optimized context handling
  • Task Context: Structured task and goal tracking for AI agents
  • Agent State: Persistent agent memory and decision tracking
  • Workspace State: File system and project state awareness
  • Smart Compression: Zstd-based compression with message summarization

§Examples

§Basic Context Management

use ai_session::context::{SessionContext, Message, MessageRole};
use ai_session::SessionId;
use chrono::Utc;

let session_id = SessionId::new();
let mut context = SessionContext::new(session_id);

// Add conversation messages
let user_message = Message {
    role: MessageRole::User,
    content: "Help me implement a REST API".to_string(),
    timestamp: Utc::now(),
    token_count: 7,
};
context.add_message(user_message);

let assistant_message = Message {
    role: MessageRole::Assistant,
    content: "I'll help you create a REST API. Let's start with the basic structure...".to_string(),
    timestamp: Utc::now(),
    token_count: 18,
};
context.add_message(assistant_message);

// Check context stats
println!("Messages: {}", context.get_message_count());
println!("Total tokens: {}", context.get_total_tokens());

§Context Compression

use ai_session::context::{SessionContext, Message, MessageRole};
use ai_session::SessionId;

let session_id = SessionId::new();
let mut context = SessionContext::new(session_id);

// Fill context with many messages...
for i in 0..100 {
    let message = Message {
        role: MessageRole::User,
        content: format!("Message {}", i),
        timestamp: chrono::Utc::now(),
        token_count: 5,
    };
    context.add_message(message);
}

println!("Before compression: {} tokens", context.get_total_tokens());

// Compress when approaching token limit
if context.get_total_tokens() > 400 {
    let compressed = context.compress_context().await;
    if compressed {
        println!("After compression: {} tokens", context.get_total_tokens());
    }
}

Structs§

AgentState
Agent state
CompressedHistory
Compressed history with zstd compression
CompressionStats
Compression statistics
ContextSummary
Context summary
FileChange
File change event
FileState
File state
Message
A message in the conversation
SessionConfig
Session configuration
SessionContext
Session context containing AI-relevant state
TaskContext
Current task context
TokenEfficientHistory
Token-efficient conversation history with real zstd compression
WorkspaceState
Workspace state

Enums§

FileChangeType
Type of file change
MessageRole
Message role
TaskPriority
Task priority