@@ -602,6 +602,20 @@ pub fn run(mut app: ChatApp) -> anyhow::Result<()> {
// 停止输入线程
input_thread.shutdown();
+
+ // ★ 停止所有 teammates(关键修复:防止资源泄漏)
+ if let Ok(mut manager) = app.teammate_manager.lock() {
+ write_info_log("ChatApp", "Stopping all teammates...");
+ manager.stop_all();
+
+ // 等待 teammates 完成(可选,带超时)
+ for (name, handle) in &manager.teammates {
+ match handle.wait_for_completion(std::time::Duration::from_secs(5)) {
+ Ok(_) => write_info_log("ChatApp", &format!("Teammate '{}' stopped cleanly", name)),
+ Err(_) => write_info_log("ChatApp", &format!("Teammate '{}' stop timeout", name)),
+ }
+ }
+ }
// ★ 空会话不保存:删除无消息的 session 文件
if app.state.session.messages.is_empty() {