pub enum CompactionStage {
Verbatim,
SelectiveTrim,
SemanticCompress,
TopicExtract,
Skeleton,
}Expand description
Progressive compaction stages, ordered from least to most aggressive.
The OPENDEV paper demonstrates that staged compression outperforms single-shot summarization because each stage preserves strictly more information than the next, allowing the system to use the least aggressive stage that fits the token budget.
Variants§
Verbatim
Stage 0: Full messages, no compression.
SelectiveTrim
Stage 1: Drop social filler (greetings, acks) but keep substantive content.
SemanticCompress
Stage 2: Apply entropy-based compression via PromptCompressor (~60% ratio).
TopicExtract
Stage 3: Reduce each message to its topic sentence.
Skeleton
Stage 4: Collapse entire conversation to a structural outline.
Implementations§
Source§impl CompactionStage
impl CompactionStage
Sourcepub fn from_excess(excess_ratio: f64) -> Self
pub fn from_excess(excess_ratio: f64) -> Self
Choose compaction stage based on how far over budget the content is.
excess_ratio = current_tokens / target_tokens.
A ratio of 1.0 means exactly at budget; >1.0 means over.
Trait Implementations§
Source§impl Clone for CompactionStage
impl Clone for CompactionStage
Source§fn clone(&self) -> CompactionStage
fn clone(&self) -> CompactionStage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CompactionStage
impl Debug for CompactionStage
Source§impl Ord for CompactionStage
impl Ord for CompactionStage
Source§fn cmp(&self, other: &CompactionStage) -> Ordering
fn cmp(&self, other: &CompactionStage) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for CompactionStage
impl PartialEq for CompactionStage
Source§impl PartialOrd for CompactionStage
impl PartialOrd for CompactionStage
impl Copy for CompactionStage
impl Eq for CompactionStage
impl StructuralPartialEq for CompactionStage
Auto Trait Implementations§
impl Freeze for CompactionStage
impl RefUnwindSafe for CompactionStage
impl Send for CompactionStage
impl Sync for CompactionStage
impl Unpin for CompactionStage
impl UnsafeUnpin for CompactionStage
impl UnwindSafe for CompactionStage
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.