feat(ai): add comprehensive AI streaming and non-streaming processing services
Some checks failed
CI / Rust Lint & Check (push) Has been cancelled
CI / Rust Tests (push) Has been cancelled
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled

This commit is contained in:
ZhenYi 2026-05-01 01:14:00 +08:00
parent fdca1fbf86
commit 4cc14687e0

View File

@ -67,12 +67,10 @@ pub async fn process_message_ai_streaming(
let ai_display_name_for_final = ai_display_name.clone(); let ai_display_name_for_final = ai_display_name.clone();
let chunk_count = std::sync::Arc::new(std::sync::atomic::AtomicU64::new(0)); let chunk_count = std::sync::Arc::new(std::sync::atomic::AtomicU64::new(0));
let room_manager_cb = room_manager.clone();
let queue_for_chunk = queue.clone(); let queue_for_chunk = queue.clone();
let on_chunk = move |chunk: agent::chat::AiStreamChunk| { let on_chunk = move |chunk: agent::chat::AiStreamChunk| {
Box::pin({ Box::pin({
let room_manager = room_manager_cb.clone();
let queue = queue_for_chunk.clone(); let queue = queue_for_chunk.clone();
let streaming_msg_id = streaming_msg_id; let streaming_msg_id = streaming_msg_id;
let room_id = room_id_inner; let room_id = room_id_inner;
@ -102,7 +100,6 @@ pub async fn process_message_ai_streaming(
chunk_type: Some(chunk_type_str.to_string()), chunk_type: Some(chunk_type_str.to_string()),
}; };
queue.publish_stream_chunk(&event).await; queue.publish_stream_chunk(&event).await;
room_manager.broadcast_stream_chunk(event).await;
} }
}) as Pin<Box<dyn std::future::Future<Output = ()> + Send>> }) as Pin<Box<dyn std::future::Future<Output = ()> + Send>>
}; };