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§
- Agent
State - Agent state
- Compressed
History - Compressed history with zstd compression
- Compression
Stats - Compression statistics
- Context
Summary - Context summary
- File
Change - File change event
- File
State - File state
- Message
- A message in the conversation
- Session
Config - Session configuration
- Session
Context - Session context containing AI-relevant state
- Task
Context - Current task context
- Token
Efficient History - Token-efficient conversation history with real zstd compression
- Workspace
State - Workspace state
Enums§
- File
Change Type - Type of file change
- Message
Role - Message role
- Task
Priority - Task priority