From c52461055ded33f22336898d30dd74d6902d20b2 Mon Sep 17 00:00:00 2001 From: xiaoxixi Date: Tue, 28 Apr 2026 21:03:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A3=9E=E4=B9=A6=E6=B8=A0?= =?UTF-8?q?=E9=81=93=20/dump=20=E5=92=8C=20/info=20=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=EF=BC=9A=E6=94=AF=E6=8C=81=E6=97=A0=E4=BC=9A=E8=AF=9D=E6=97=B6?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当 Feishu 用户首次发送斜杠命令时,如果没有会话则自动创建。 这使得 /dump 和 /info 命令可以在对话开始前使用。 --- src/session/session.rs | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/session/session.rs b/src/session/session.rs index be3a403..9d5b3a1 100644 --- a/src/session/session.rs +++ b/src/session/session.rs @@ -370,28 +370,34 @@ impl SessionManager { } } "info" => { - if let Some(sid) = current_session_id { - let session = self.get_or_create_session(sid).await?; - let session_guard = session.lock().await; - let message_count = session_guard.get_history().len(); - let session_id_str = session_guard.session_id(); - Ok((None, format!( - "Session ID: {}\nMessage count: {}", - session_id_str, message_count - ))) + let sid = if let Some(s) = current_session_id { + s.clone() } else { - Ok((None, "No active session.".to_string())) - } + // Create a new session if none exists (e.g., Feishu first message) + let (new_id, _) = self.create_session(channel, chat_id, None).await?; + new_id + }; + let session = self.get_or_create_session(&sid).await?; + let session_guard = session.lock().await; + let message_count = session_guard.get_history().len(); + let session_id_str = session_guard.session_id(); + Ok((None, format!( + "Session ID: {}\nMessage count: {}", + session_id_str, message_count + ))) } "dump" => { - if let Some(sid) = current_session_id { - let session = self.get_or_create_session(sid).await?; - let session_guard = session.lock().await; - let md = session_guard.dump_as_markdown(); - Ok((None, md)) + let sid = if let Some(s) = current_session_id { + s.clone() } else { - Ok((None, "No active session.".to_string())) - } + // Create a new session if none exists (e.g., Feishu first message) + let (new_id, _) = self.create_session(channel, chat_id, None).await?; + new_id + }; + let session = self.get_or_create_session(&sid).await?; + let session_guard = session.lock().await; + let md = session_guard.dump_as_markdown(); + Ok((None, md)) } _ => Err(AgentError::Other(format!("Command not implemented: {}", cmd.name))), }