Skip to main content

EnrichmentConfig

Struct EnrichmentConfig 

Source
pub struct EnrichmentConfig {
    pub enabled: bool,
    pub max_parallel_prefetches: u32,
    pub prefetch_budget_tokens: u32,
    pub prefetch_timeout_ms: u32,
    pub respect_rate_limits: bool,
}
Expand description

Speculative-execution settings for the Paper 3 enrichment planner.

Off by default. Operators (or tune analyze --auto-enrichment) flip enabled to true once the corpus statistics show that speculation would have paid off. Once enabled, the host enforces the budget and concurrency limits below per turn.

Schema-v4 — added in CURRENT_SCHEMA_VERSION = 4.

Fields§

§enabled: bool

Master switch. false (default) means the planner runs only in telemetry-only mode: recent_tools is tracked, should_skip can be consulted, but no out-of-band tools/call is dispatched. Flip to true to enable real speculative pre-fetch.

§max_parallel_prefetches: u32

Maximum number of speculative pre-fetches the host issues in parallel from a single turn’s EnrichmentPlan. Caps fan-out so a Glob → 12 Read does not melt the API rate-limit. Default: 3 (matches the corpus finding that top-3 prefetch covers > 80% of cited follow-ups).

§prefetch_budget_tokens: u32

Token ceiling for the speculative part of one turn — distinct from the per-response budget. EnrichmentPlanner::build_plan reads this when constructing TurnContext. Default: 8000 tokens (~32 kB at the 4-byte-per-token heuristic).

§prefetch_timeout_ms: u32

Wall-clock budget the host waits for prefetches before returning the main response. Past this, the prefetch keeps running in the background (its result lands in the dedup cache when it returns) but the LLM gets the main response immediately

  • a hint that a prefetch is in flight.

Default: 1000 ms — wide margin so typical Glob/Read can land synchronously, but small enough that a slow API never holds the agent.

§respect_rate_limits: bool

Honour [tools.<name>].rate_limit_host when scheduling prefetches. When true, the host counts how many prefetches per class are inflight this turn and skips new ones once the cap is hit. Default: true — the only reason to disable is for a benchmark harness with a known sandbox API.

Trait Implementations§

Source§

impl Clone for EnrichmentConfig

Source§

fn clone(&self) -> EnrichmentConfig

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 EnrichmentConfig

Source§

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

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

impl Default for EnrichmentConfig

Source§

fn default() -> Self

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

impl<'de> Deserialize<'de> for EnrichmentConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for EnrichmentConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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> Same for T

Source§

type Output = T

Should always be Self
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 = 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> 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
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,