重构: F-09批2 调用方迁移per-conv(双写桥接共存期)
- agentic.rs: GeneratingGuard加conv_id + 三处退出校验改conv存在性(决策e) + stop_flag/notify/messages/iteration per-conv + try_continue加conv_id参数 - commands.rs: IPC写路径双写桥接(per_conv新真相源+顶层双写,批4删) + ai_is_generating读per_conv fallback顶层 - audit/conversation/title/knowledge_inject/lib.rs: per_conv读写迁移 - conv()/conv_read()去allow(批2有调用方) 共存期双写: per_conv主+顶层双写兼容批4前IPC,批4签名改后删顶层 主代兜底: cargo check --workspace 0 + test 96 passed + grep三处退出/GeneratingGuard/双写印证
This commit is contained in:
@@ -43,24 +43,48 @@ pub(crate) async fn ensure_conversation_title(
|
||||
}
|
||||
|
||||
// 取对话文本(仅 user/assistant,跳过 tool 噪音),取前 6 条供 LLM 总结
|
||||
// F-260616-09 B 批2:读 per_conv.messages(conv_id 来源:本函数入参)。
|
||||
// per_conv 未建时 fallback 顶层(switch 触发的 spawn_ensure_title 可能无 per_conv)。
|
||||
let (summary_msgs, all_msgs) = {
|
||||
let session = session_arc.lock().await;
|
||||
let summary: Vec<ChatMessage> = session.messages.iter()
|
||||
.filter(|m| matches!(m.role, MessageRole::User | MessageRole::Assistant))
|
||||
.take(6)
|
||||
.map(|m| ChatMessage {
|
||||
role: m.role.clone(),
|
||||
content: m.content.clone(),
|
||||
parts: None,
|
||||
tool_call_id: None,
|
||||
tool_calls: None,
|
||||
model: None,
|
||||
status: None,
|
||||
reasoning_content: m.reasoning_content.clone(),
|
||||
timestamp: m.timestamp,
|
||||
})
|
||||
.collect();
|
||||
(summary, session.messages.all_messages_clone())
|
||||
let conv = session.conv_read(conv_id);
|
||||
let summary: Vec<ChatMessage> = match conv {
|
||||
Some(c) => c.messages.iter()
|
||||
.filter(|m| matches!(m.role, MessageRole::User | MessageRole::Assistant))
|
||||
.take(6)
|
||||
.map(|m| ChatMessage {
|
||||
role: m.role.clone(),
|
||||
content: m.content.clone(),
|
||||
parts: None,
|
||||
tool_call_id: None,
|
||||
tool_calls: None,
|
||||
model: None,
|
||||
status: None,
|
||||
reasoning_content: m.reasoning_content.clone(),
|
||||
timestamp: m.timestamp,
|
||||
})
|
||||
.collect(),
|
||||
None => session.messages.iter()
|
||||
.filter(|m| matches!(m.role, MessageRole::User | MessageRole::Assistant))
|
||||
.take(6)
|
||||
.map(|m| ChatMessage {
|
||||
role: m.role.clone(),
|
||||
content: m.content.clone(),
|
||||
parts: None,
|
||||
tool_call_id: None,
|
||||
tool_calls: None,
|
||||
model: None,
|
||||
status: None,
|
||||
reasoning_content: m.reasoning_content.clone(),
|
||||
timestamp: m.timestamp,
|
||||
})
|
||||
.collect(),
|
||||
};
|
||||
let all_msgs = match conv {
|
||||
Some(c) => c.messages.all_messages_clone(),
|
||||
None => session.messages.all_messages_clone(),
|
||||
};
|
||||
(summary, all_msgs)
|
||||
};
|
||||
if summary_msgs.is_empty() {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user