Skip to main content

TokenBudgetConfig

Struct TokenBudgetConfig 

Source
pub struct TokenBudgetConfig {
    pub work_budget: usize,
    pub reminder_threshold: usize,
    pub reminder_template: String,
    pub fallback_prompt: String,
    pub fallback_buffer: usize,
    pub guidance_message: String,
    pub seed_message: String,
    pub min_work_multiple: f64,
    pub min_absolute_work_room: usize,
    pub user_trail_max_tokens: usize,
}
Expand description

Configuration for the token-budget window strategy.

Work-room semantics: work_budget is the conversation space ABOVE the window’s fixed base (system prompt + per-window boilerplate), not the total window size. The reset point is base + work_budget + buffer, so any positive budget produces a window that fits — the “budget below system-prompt overhead” failure class is structurally impossible. Use TokenBudgetConfig::with_work_budget to keep the reminder/buffer thresholds proportional when overriding the default.

Fields§

§work_budget: usize

Work-room budget: tokens of conversation space above the fixed window base. Corresponds to “how much room the model has to work with” — the base is added by the framework.

§reminder_threshold: usize

Reminder threshold: inject the reminder when remaining work room ≤ this value.

§reminder_template: String

Reminder message template. {n_remaining} is replaced with estimated remaining work-room tokens.

§fallback_prompt: String

Fallback prompt injected when the work budget is exhausted (window about to reset).

§fallback_buffer: usize

Extra work-room overshoot tolerated past work_budget before the reset fires. Allows the model one more turn to save state after the fallback.

§guidance_message: String

Guidance message injected once per window start (explains the private context-management tools).

§seed_message: String

User seed message injected as the LAST message of every new window. Satisfies the engine’s compaction-output contract (at least one non-System message — System maps to the top-level system parameter, and an all-System window is an HTTP 400) and gives the model a turn to reconstruct state.

§min_work_multiple: f64

Minimum viable work budget as a multiple of the base overhead. Below this no single turn of work fits in the room (one tool result overflows it) and the session thrashes. Construction clamps the work budget up to max(min_work_multiple × base, min_absolute_work_room) and scales the reminder/buffer bands to match.

§min_absolute_work_room: usize

Absolute floor for the work room, independent of base size. Tool results don’t shrink with the system prompt — an app with a tiny prompt still needs room for real tool output, so the viability floor is whichever is larger: the proportional bound or this constant.

§user_trail_max_tokens: usize

Token cap for the mechanical user-message trail carried into a fresh window. User messages are the task trail — facts, not model output — so they are re-injected verbatim (newest-first under this cap, oldest truncated) instead of asking the model to recover them from history (cf. codex build_compacted_history).

Implementations§

Source§

impl TokenBudgetConfig

Source

pub fn with_work_budget(work_budget: usize) -> TokenBudgetConfig

Config with proportional reminder/buffer thresholds for a custom work budget (reminder = 20%, buffer = 10% of work_budget).

Source

pub fn hard_limit(&self, base_overhead: usize) -> usize

Hard reset threshold in absolute estimated tokens: base_overhead + work_budget + fallback_buffer.

Trait Implementations§

Source§

impl Clone for TokenBudgetConfig

Source§

fn clone(&self) -> TokenBudgetConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TokenBudgetConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for TokenBudgetConfig

Source§

fn default() -> TokenBudgetConfig

Returns the “default value” for a type. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more