From a82a1d7def830e12313024d6e2d8ee2dd947215e Mon Sep 17 00:00:00 2001 From: Chujiang <110803307+hobostay@users.noreply.github.com> Date: Thu, 12 Feb 2026 19:05:03 +0800 Subject: [PATCH] fix: replace panic with proper error handling in get_tokenizer (#7175) Signed-off-by: hobostay <110hqc@gmail.com> Co-authored-by: Claude Sonnet 4.5 --- crates/goose/src/token_counter.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/goose/src/token_counter.rs b/crates/goose/src/token_counter.rs index c689d73245..64efa48ac0 100644 --- a/crates/goose/src/token_counter.rs +++ b/crates/goose/src/token_counter.rs @@ -8,7 +8,7 @@ use tokio::sync::OnceCell; use crate::conversation::message::Message; -static TOKENIZER: OnceCell> = OnceCell::const_new(); +static TOKENIZER: OnceCell, String>> = OnceCell::const_new(); const MAX_TOKEN_CACHE_SIZE: usize = 10_000; @@ -182,15 +182,15 @@ impl TokenCounter { } async fn get_tokenizer() -> Result, String> { - let tokenizer = TOKENIZER + TOKENIZER .get_or_init(|| async { match tiktoken_rs::o200k_base() { - Ok(bpe) => Arc::new(bpe), - Err(e) => panic!("Failed to initialize o200k_base tokenizer: {}", e), + Ok(bpe) => Ok(Arc::new(bpe)), + Err(e) => Err(format!("Failed to initialize o200k_base tokenizer: {}", e)), } }) - .await; - Ok(tokenizer.clone()) + .await + .clone() } pub async fn create_token_counter() -> Result {