重构并拆分项目

This commit is contained in:
2026-06-25 17:23:11 +08:00
parent 3476d8cbcb
commit 79ec21bfd4
127 changed files with 1555 additions and 12411 deletions
+62
View File
@@ -0,0 +1,62 @@
use crate::{
AppState,
core::context::{add_assistant_message, add_tool_message, add_user_message, snapshot_context},
};
use ai::core::send_message;
use axum::Json;
use axum::extract::State;
use common::queue::{ChannelMessage, QueueMessage};
use serde_json::error;
use std::sync::Arc;
use tokio::sync::{mpsc, mpsc::Sender};
pub async fn create_queue() -> Result<Sender<QueueMessage>, error::Error> {
let (sender, mut receiver) = mpsc::channel::<QueueMessage>(100);
let result_sender = sender.clone();
tokio::spawn(async move {
while let Some(msg) = receiver.recv().await {
let queue_sender = sender.clone();
match msg {
QueueMessage::Aissitant(reasoning, content) => {
println!("\n\n收到llm回复:\n{}\n-------\n{}", reasoning, content);
add_assistant_message(content).await;
}
QueueMessage::Channel(name, text) => {
println!("\n\n收到来自{}消息:\n{}", name, text);
add_user_message(text).await;
send_message(queue_sender, snapshot_context().await)
.await
.unwrap();
}
QueueMessage::Tool(tool_call_id, name, result) => {
println!("\n\n调用{}工具的结果:\n{}", name, result);
add_tool_message(tool_call_id, result).await;
send_message(queue_sender, snapshot_context().await)
.await
.unwrap();
}
}
}
});
Ok(result_sender)
}
pub async fn send_to_queue(
State(state): State<Arc<AppState>>,
Json(body): Json<ChannelMessage>,
) -> Json<serde_json::Value> {
match state
.sender
.send(QueueMessage::Channel(body.channel, body.content))
.await
{
Ok(_) => Json(serde_json::json!({
"success":true,
"message":"queued"
})),
Err(_) => Json(serde_json::json!({
"success":true,
"message":"queue closed"
})),
}
}