feat: 消息并行处理 + QQ卡片完整解析 + 视觉OCR融合格式修复

- platform-bridge: 8-worker per-session 并行分发,同会话保序跨会话并行
- platform-bridge: 静默消息 fire-and-forget,不阻塞同用户后续消息
- QQ卡片: html.UnescapeString 解码 NapCat HTML实体,正确解析卡片JSON
- QQ卡片: 输出含应用名/简介/来源/封面URL,封面注入图片管线走视觉
- ai-core: 视觉+OCR结果融合为单句,单图不编号,避免LLM误解为多张图

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-06 09:08:03 +08:00
parent 67b204b23c
commit 4954c1e58b
3 changed files with 354 additions and 105 deletions
@@ -804,7 +804,7 @@ func (o *Orchestrator) PreprocessImages(ctx context.Context, message string, ima
var combined string
switch {
case visionDesc != "" && ocrDesc != "":
combined = fmt.Sprintf("视觉描述%s\n(图中文字:%s", visionDesc, ocrDesc)
combined = fmt.Sprintf("这张图片的内容%s(图中包含的文字:%s", visionDesc, ocrDesc)
case visionDesc != "":
combined = visionDesc
case ocrDesc != "":
@@ -826,7 +826,11 @@ func (o *Orchestrator) PreprocessImages(ctx context.Context, message string, ima
augmented := message
for i, desc := range descriptions {
augmented += fmt.Sprintf("\n\n[图片%d分析结果]: %s", i+1, desc)
label := "图片分析结果"
if len(descriptions) > 1 {
label = fmt.Sprintf("图片%d分析结果", i+1)
}
augmented += fmt.Sprintf("\n\n[%s]: %s", label, desc)
}
return augmented
}