Skip to main content

CompositeStrategy

Struct CompositeStrategy 

Source
pub struct CompositeStrategy { /* private fields */ }
Expand description

Chains multiple strategies, applying each in order until token budget is met.

Each strategy is tried in sequence. After each strategy’s compact runs, the resulting token count is re-estimated. If it falls below max_tokens, iteration stops early.

Use BoxedStrategy::new to wrap concrete strategies before collecting them.

§Example

use neuron_context::{CompositeStrategy, SlidingWindowStrategy, ToolResultClearingStrategy};
use neuron_context::strategies::BoxedStrategy;

let strategy = CompositeStrategy::new(vec![
    BoxedStrategy::new(ToolResultClearingStrategy::new(2, 100_000)),
    BoxedStrategy::new(SlidingWindowStrategy::new(10, 100_000)),
], 100_000);

Implementations§

Source§

impl CompositeStrategy

Source

pub fn new(strategies: Vec<BoxedStrategy>, max_tokens: usize) -> Self

Creates a new CompositeStrategy.

§Arguments
  • strategies — ordered list of type-erased strategies to apply
  • max_tokens — token threshold above which compaction is triggered

Trait Implementations§

Source§

impl ContextStrategy for CompositeStrategy

Source§

fn should_compact(&self, messages: &[Message], token_count: usize) -> bool

Whether compaction should be triggered given the current messages and token count.
Source§

fn compact( &self, messages: Vec<Message>, ) -> impl Future<Output = Result<Vec<Message>, ContextError>> + WasmCompatSend

Compact the message list to reduce token usage.
Source§

fn token_estimate(&self, messages: &[Message]) -> usize

Estimate the token count for a list of messages.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WasmCompatSend for T
where T: Send,

Source§

impl<T> WasmCompatSync for T
where T: Sync,