Skip to main content

lellm_agent/runtime/context/
execution.rs

1//! AgentExecutionContext — Agent 执行期的运行时缓存。
2//!
3//! 不可持久化,Checkpoint 不保存,Resume 时重建。
4//! 用于替代 LoopState.estimated_tokens 等派生数据的缓存。
5
6use lellm_core::Message;
7
8use super::estimate_tokens;
9
10/// Agent 运行时上下文 — 不可持久化的执行期缓存。
11#[derive(Debug, Clone)]
12pub struct AgentExecutionContext {
13    /// 消息历史的估算 Token 数(与 messages 同步更新)
14    pub cached_token_count: usize,
15}
16
17impl AgentExecutionContext {
18    /// 从消息列表创建上下文,初始计算 token 估算值。
19    pub fn new(messages: &[Message]) -> Self {
20        Self {
21            cached_token_count: estimate_tokens(messages),
22        }
23    }
24
25    /// 新增 token 时累加缓存。
26    pub fn add_tokens(&mut self, tokens: usize) {
27        self.cached_token_count += tokens;
28    }
29
30    /// compact 后重新计算缓存。
31    pub fn reset_after_compact(&mut self, messages: &[Message]) {
32        self.cached_token_count = estimate_tokens(messages);
33    }
34}