vv_agent/memory/manager/
microcompact.rs1use super::MemoryManager;
2use crate::memory::microcompact::{microcompact, MicrocompactConfig};
3use crate::types::Message;
4
5impl MemoryManager {
6 pub fn should_preemptive_microcompact(&self, message_length: u64) -> bool {
7 let threshold = self.microcompact_trigger_threshold();
8 threshold > 0 && message_length > threshold
9 }
10
11 pub fn microcompact_messages(
12 &self,
13 messages: &[Message],
14 cycle_index: u32,
15 ) -> (Vec<Message>, usize) {
16 microcompact(
17 messages,
18 cycle_index,
19 &MicrocompactConfig {
20 trigger_ratio: self.config.microcompact_trigger_ratio,
21 keep_recent_cycles: self.config.microcompact_keep_recent_cycles,
22 min_result_length: self.config.microcompact_min_result_length,
23 compactable_tools: self.config.microcompact_compactable_tools.clone(),
24 },
25 )
26 }
27
28 pub fn microcompact_trigger_threshold(&self) -> u64 {
29 let ratio = self.config.microcompact_trigger_ratio.clamp(0.0, 1.0);
30 (self.autocompact_threshold() as f64 * ratio).floor() as u64
31 }
32}