fix: 修复记忆力差和跨群聊上下文泄漏

记忆嵌入修复:
- 新增 memory.APIEmbedder 使用 text-embedding-3-small 替代 SimpleEmbedder
- Extractor 保存记忆时自动生成向量嵌入
- Embedder 接口增加 IsAvailable() 方法

跨群聊上下文隔离:
- Thinker 新增 thinkSessionID 字段,performThink 启动时绑定会话
- storeThought 优先使用绑定的 session 推送思考结果
- 防止思考过程中其他群消息改变 activeSessionID 导致串台

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-03 12:25:05 +08:00
parent 197c86fa72
commit 13a2c69d5e
5 changed files with 155 additions and 9 deletions
@@ -20,6 +20,7 @@ type Retriever struct {
// Embedder 文本嵌入接口
type Embedder interface {
Embed(ctx context.Context, text string) ([]float64, error)
IsAvailable() bool
}
// SimpleEmbedder 基于关键词的简单嵌入(MVP阶段可用,无需外部API)
@@ -43,6 +44,9 @@ func (e *SimpleEmbedder) Embed(ctx context.Context, text string) ([]float64, err
return vec, nil
}
// IsAvailable returns true (SimpleEmbedder is always available as fallback).
func (e *SimpleEmbedder) IsAvailable() bool { return true }
// NewRetriever 创建记忆检索器
func NewRetriever(store *Store, embedder Embedder) *Retriever {
if embedder == nil {