feat: 添加 Web 前端及服务端 SSE 流式支持,扩展多模型兼容
后端:
- server: 实现完整的 HTTP 会话管理(CRUD)+ SSE 事件流推送,
支持双通道架构(POST 发消息 + GET SSE 接收流式响应)
- runtime: ContentBlock 新增 Thinking / RedactedThinking 变体,
支持思考过程和已编辑思考的序列化/反序列化
- api: 注册 GLM 系列模型(glm-4/5 等)到模型注册表,
扩展 XAI/OpenAI 兼容提供商的请求构建逻辑
前端:
- 基于 Ant Design X 构建完整聊天界面:Bubble.List 消息列表、
Sender 输入框、Conversations 会话管理、Think 思考过程折叠、
ThoughtChain 工具调用链展示
- XMarkdown 集成:代码高亮、Mermaid 图表、LaTeX 公式、
自定义脚注、流式渲染(incomplete 占位符)
- SSE Hook 对接服务端事件流,手动管理 AssistantBuffer 累积 delta
- 深色/浅色主题切换,会话侧边栏(新建/切换/删除)
This commit is contained in:
@@ -603,7 +603,7 @@ pub fn suggest_slash_commands(input: &str, limit: usize) -> Vec<String> {
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
ranked.sort_by(|left, right| left.cmp(right));
|
||||
ranked.sort();
|
||||
ranked.dedup_by(|left, right| left.2 == right.2);
|
||||
ranked
|
||||
.into_iter()
|
||||
@@ -842,7 +842,7 @@ pub fn handle_branch_slash_command(
|
||||
Ok(if trimmed.is_empty() {
|
||||
"Branch\n Result no branches found".to_string()
|
||||
} else {
|
||||
format!("Branch\n Result listed\n\n{}", trimmed)
|
||||
format!("Branch\n Result listed\n\n{trimmed}")
|
||||
})
|
||||
}
|
||||
Some("create") => {
|
||||
@@ -882,7 +882,7 @@ pub fn handle_worktree_slash_command(
|
||||
Ok(if trimmed.is_empty() {
|
||||
"Worktree\n Result no worktrees found".to_string()
|
||||
} else {
|
||||
format!("Worktree\n Result listed\n\n{}", trimmed)
|
||||
format!("Worktree\n Result listed\n\n{trimmed}")
|
||||
})
|
||||
}
|
||||
Some("add") => {
|
||||
|
||||
Reference in New Issue
Block a user