修复飞书渠道 /dump 和 /info 命令:支持无会话时自动创建

当 Feishu 用户首次发送斜杠命令时,如果没有会话则自动创建。
这使得 /dump 和 /info 命令可以在对话开始前使用。
This commit is contained in:
xiaoxixi 2026-04-28 21:03:58 +08:00
parent 30b68599a4
commit c52461055d

View File

@ -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))),
}