pub enum TokenBudgetState {
Normal {
percent_remaining: f64,
},
Warning {
percent_remaining: f64,
},
Error {
percent_remaining: f64,
},
Blocking,
}Expand description
Token 用量状态 — 当前上下文占用量的分级警告。
UI 层用此枚举渲染进度条颜色和警告提示。 Agent loop 用此判断是否触发自动压缩。
§阈值对照(来源: claude-code)
|------ Normal ------|-- Warning --|-- Error --|-- Blocking --|
0% ~70% ~85% ~95% 100%§Examples
use katu_core::compaction::TokenBudgetState;
let state = TokenBudgetState::from_usage(150_000, 200_000, 13_000);Variants§
Normal
正常 — 充足余量。
Warning
警告 — 接近阈值,UI 显示黄色提示。
Error
危险 — 非常接近上限,UI 显示红色提示。
Blocking
阻塞 — 已达到上限,应阻止新消息发送。
Implementations§
Source§impl TokenBudgetState
impl TokenBudgetState
Sourcepub fn from_usage(
used_tokens: u64,
context_window: u64,
auto_compact_buffer: u64,
) -> Self
pub fn from_usage( used_tokens: u64, context_window: u64, auto_compact_buffer: u64, ) -> Self
根据当前 token 用量计算状态。
§Arguments
used_tokens: 当前已使用的 token 数context_window: 模型 context window 大小auto_compact_buffer: 自动压缩缓冲区大小(reserve_tokens)
§阈值计算
effective_window = context_window - summary_reserve (通常 20K)
auto_compact_threshold = effective_window - auto_compact_buffer
warning_threshold = auto_compact_threshold - 20K
error_threshold = effective_window - 20KSourcepub fn should_auto_compact(&self) -> bool
pub fn should_auto_compact(&self) -> bool
是否应触发自动压缩。
Sourcepub fn is_blocking(&self) -> bool
pub fn is_blocking(&self) -> bool
是否应阻止新消息发送。
Sourcepub fn is_warning_or_worse(&self) -> bool
pub fn is_warning_or_worse(&self) -> bool
是否处于警告或更严重状态。
Trait Implementations§
Source§impl Clone for TokenBudgetState
impl Clone for TokenBudgetState
Source§fn clone(&self) -> TokenBudgetState
fn clone(&self) -> TokenBudgetState
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for TokenBudgetState
impl Debug for TokenBudgetState
Source§impl<'de> Deserialize<'de> for TokenBudgetState
impl<'de> Deserialize<'de> for TokenBudgetState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
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 PartialEq for TokenBudgetState
impl PartialEq for TokenBudgetState
Source§fn eq(&self, other: &TokenBudgetState) -> bool
fn eq(&self, other: &TokenBudgetState) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for TokenBudgetState
impl Serialize for TokenBudgetState
impl Copy for TokenBudgetState
impl StructuralPartialEq for TokenBudgetState
Auto Trait Implementations§
impl Freeze for TokenBudgetState
impl RefUnwindSafe for TokenBudgetState
impl Send for TokenBudgetState
impl Sync for TokenBudgetState
impl Unpin for TokenBudgetState
impl UnsafeUnpin for TokenBudgetState
impl UnwindSafe for TokenBudgetState
Blanket Implementations§
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
Mutably borrows from an owned value. Read more