Documentation
¶
Index ¶
- Constants
- type ConversationMessage
- type MemoryConfig
- type MemoryManager
- func (m *MemoryManager) AddUserMemory(ctx context.Context, userID, memoryContent, input string) error
- func (m *MemoryManager) ClearUserMemories(ctx context.Context, userID string) error
- func (m *MemoryManager) Close() error
- func (m *MemoryManager) DeleteUserMemory(ctx context.Context, memoryID string) error
- func (m *MemoryManager) ForceCleanupNow(ctx context.Context) error
- func (m *MemoryManager) GetConfig() *MemoryConfig
- func (m *MemoryManager) GetMemoryStats() map[string]interface{}
- func (m *MemoryManager) GetMessages(ctx context.Context, sessionID, userID string, limit int) ([]*schema.Message, error)
- func (m *MemoryManager) GetSessionSummary(ctx context.Context, sessionID, userID string) (*SessionSummary, error)
- func (m *MemoryManager) GetTaskQueueStats() TaskQueueStats
- func (m *MemoryManager) GetUserMemories(ctx context.Context, userID string) ([]*UserMemory, error)
- func (m *MemoryManager) ProcessAssistantMessage(ctx context.Context, userID, sessionID, assistantMessage string) error
- func (m *MemoryManager) ProcessUserMessage(ctx context.Context, userID, sessionID, content string, ...) error
- func (m *MemoryManager) SaveMessage(ctx context.Context, message *ConversationMessage) error
- func (m *MemoryManager) SearchUserMemories(ctx context.Context, userID, query string, limit int) ([]*UserMemory, error)
- func (m *MemoryManager) UpdateConfig(config *MemoryConfig)
- func (m *MemoryManager) UpdateUserMemory(ctx context.Context, memory *UserMemory) error
- type MemoryQuery
- type MemoryRetrieval
- type MemoryStorage
- type SessionState
- type SessionSummary
- type SessionSummaryGenerator
- type SummaryTriggerConfig
- type SummaryTriggerManager
- func (stm *SummaryTriggerManager) CleanupOldSessions(maxAge time.Duration)
- func (stm *SummaryTriggerManager) GetSessionState(sessionKey string) *SessionState
- func (stm *SummaryTriggerManager) MarkSummaryUpdated(sessionKey string)
- func (stm *SummaryTriggerManager) ShouldTriggerSummary(sessionKey string, currentMessageCount int) bool
- type SummaryTriggerStrategy
- type TaskQueueStats
- type UserMemory
- type UserMemoryAnalyzer
- type UserMemoryAnalyzerParam
Constants ¶
const ( DefaultUserMemoryPrompt = `` /* 2181-byte string literal not displayed */ DefaultSessionSummaryPrompt = `` /* 1306-byte string literal not displayed */ DefaultIncrementalSessionSummaryPrompt = `` /* 708-byte string literal not displayed */ )
const ( //UserMemoryAnalyzerOpCreate 创建 UserMemoryAnalyzerOpCreate = "create" //UserMemoryAnalyzerOpUpdate 更新 UserMemoryAnalyzerOpUpdate = "update" //UserMemoryAnalyzerOpDelete 删除 UserMemoryAnalyzerOpDelete = "del" )
用户记忆分类操作
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConversationMessage ¶
type ConversationMessage struct {
// 消息ID
ID string `json:"id"`
// 会话ID
SessionID string `json:"sessionId"`
// 用户ID
UserID string `json:"userId"`
// 角色 (user/assistant/system)
Role string `json:"role"`
// 消息内容(简单文本消息)
Content string `json:"content,omitempty"`
// 多部分内容,支持文本、图片、音频、视频、文件等
Parts []schema.MessageInputPart `json:"parts,omitempty"`
// 创建时间
CreatedAt time.Time `json:"createdAt"`
}
ConversationMessage 对话消息结构 存储完整的对话历史
type MemoryConfig ¶
type MemoryConfig struct {
// 是否启用用户记忆
EnableUserMemories bool `json:"enableUserMemories"`
// 是否启用会话摘要
EnableSessionSummary bool `json:"enableSessionSummary"`
// 用户记忆检索方式 EnableUserMemories开启采生效
Retrieval MemoryRetrieval `json:"retrieval"`
// 记忆数量限制
MemoryLimit int `json:"memoryLimit"`
// 是否异步处理记忆分析和会话摘要
AsyncProcessing bool `json:"asyncProcessing"`
// 异步处理的goroutine池大小
AsyncWorkerPoolSize int `json:"asyncWorkerPoolSize"`
// 摘要触发配置
SummaryTrigger SummaryTriggerConfig `json:"summaryTrigger"`
TablePre string `json:"tablePre"`
// 清理配置
// 会话状态清理间隔(小时),默认24小时
SessionCleanupInterval int `json:"sessionCleanupInterval"`
// 会话状态保留时间(小时),默认168小时(7天)
SessionRetentionTime int `json:"sessionRetentionTime"`
// 消息历史保留数量限制,默认1000条
MessageHistoryLimit int `json:"messageHistoryLimit"`
// 消息历史保留时间(小时),默认720小时(30天)
MessageRetentionTime int `json:"messageRetentionTime"`
// 定期清理间隔(小时),默认12小时
CleanupInterval int `json:"cleanupInterval"`
}
MemoryConfig 记忆配置
type MemoryManager ¶
type MemoryManager struct {
// contains filtered or unexported fields
}
MemoryManager 记忆管理器 负责管理用户记忆、会话摘要和对话历史
func NewMemoryManager ¶
func NewMemoryManager(cm model.ToolCallingChatModel, memoryStorage MemoryStorage, config *MemoryConfig) (*MemoryManager, error)
NewMemoryManager 创建新的记忆管理器
func (*MemoryManager) AddUserMemory ¶
func (m *MemoryManager) AddUserMemory(ctx context.Context, userID, memoryContent, input string) error
AddUserMemory 手动添加用户记忆
func (*MemoryManager) ClearUserMemories ¶
func (m *MemoryManager) ClearUserMemories(ctx context.Context, userID string) error
ClearUserMemories 清空用户记忆
func (*MemoryManager) DeleteUserMemory ¶
func (m *MemoryManager) DeleteUserMemory(ctx context.Context, memoryID string) error
DeleteUserMemory 删除用户记忆
func (*MemoryManager) ForceCleanupNow ¶ added in v0.0.10
func (m *MemoryManager) ForceCleanupNow(ctx context.Context) error
ForceCleanupNow 强制立即执行清理
func (*MemoryManager) GetMemoryStats ¶ added in v0.0.10
func (m *MemoryManager) GetMemoryStats() map[string]interface{}
GetMemoryStats 获取内存管理器统计信息
func (*MemoryManager) GetMessages ¶
func (m *MemoryManager) GetMessages(ctx context.Context, sessionID, userID string, limit int) ([]*schema.Message, error)
GetMessages 获取会话消息
func (*MemoryManager) GetSessionSummary ¶
func (m *MemoryManager) GetSessionSummary(ctx context.Context, sessionID, userID string) (*SessionSummary, error)
GetSessionSummary 获取会话摘要
func (*MemoryManager) GetTaskQueueStats ¶ added in v0.0.10
func (m *MemoryManager) GetTaskQueueStats() TaskQueueStats
GetTaskQueueStats 获取异步任务队列统计
func (*MemoryManager) GetUserMemories ¶
func (m *MemoryManager) GetUserMemories(ctx context.Context, userID string) ([]*UserMemory, error)
GetUserMemories 获取用户记忆
func (*MemoryManager) ProcessAssistantMessage ¶
func (m *MemoryManager) ProcessAssistantMessage(ctx context.Context, userID, sessionID, assistantMessage string) error
ProcessAssistantMessage 处理助手回复消息
func (*MemoryManager) ProcessUserMessage ¶
func (m *MemoryManager) ProcessUserMessage(ctx context.Context, userID, sessionID, content string, parts []schema.MessageInputPart) error
ProcessUserMessage 处理包含多部分内容的用户消息 根据配置决定是否创建用户记忆、更新会话摘要等
func (*MemoryManager) SaveMessage ¶
func (m *MemoryManager) SaveMessage(ctx context.Context, message *ConversationMessage) error
SaveMessage 保存消息
func (*MemoryManager) SearchUserMemories ¶
func (m *MemoryManager) SearchUserMemories(ctx context.Context, userID, query string, limit int) ([]*UserMemory, error)
SearchUserMemories 搜索用户记忆
func (*MemoryManager) UpdateConfig ¶
func (m *MemoryManager) UpdateConfig(config *MemoryConfig)
UpdateConfig 更新配置
func (*MemoryManager) UpdateUserMemory ¶
func (m *MemoryManager) UpdateUserMemory(ctx context.Context, memory *UserMemory) error
UpdateUserMemory 更新用户记忆
type MemoryQuery ¶
type MemoryQuery struct {
// 用户ID
UserID string
// 会话ID (可选)
SessionID string
// 时间范围 (可选)
CreatedAfter *int64 // Unix时间戳
CreatedBefore *int64 // Unix时间戳
// 内容关键词 (可选)
Keywords []string
// 分页
Offset int
Limit int
}
MemoryQuery 记忆查询条件
type MemoryRetrieval ¶
type MemoryRetrieval string
MemoryRetrieval 记忆检索方式
const ( // RetrievalLastN 检索最近的N条记忆 RetrievalLastN MemoryRetrieval = "last_n" // RetrievalFirstN 检索最早的N条记忆 RetrievalFirstN MemoryRetrieval = "first_n" // RetrievalSemantic 语义检索(基于相似性) RetrievalSemantic MemoryRetrieval = "semantic" )
type MemoryStorage ¶
type MemoryStorage interface {
AutoMigrate() error
//SetTablePrefix 设置表前缀
SetTablePrefix(prefix string)
// SaveUserMemory 保存用户记忆
SaveUserMemory(ctx context.Context, memory *UserMemory) error
// GetUserMemories 获取用户的记忆列表
// userID: 用户ID
// limit: 限制返回数量,0表示不限制
// retrieval: 检索方式
GetUserMemories(ctx context.Context, userID string, limit int, retrieval MemoryRetrieval) ([]*UserMemory, error)
// UpdateUserMemory 更新用户记忆
UpdateUserMemory(ctx context.Context, memory *UserMemory) error
// DeleteUserMemory 删除用户记忆
DeleteUserMemory(ctx context.Context, memoryID string) error
// DeleteUserMemoriesByIds 批量删除用户记忆
DeleteUserMemoriesByIds(ctx context.Context, userID string, memoryIDs []string) error
// ClearUserMemories 清空用户的所有记忆
ClearUserMemories(ctx context.Context, userID string) error
// SearchUserMemories 搜索用户记忆(支持语义搜索)
SearchUserMemories(ctx context.Context, userID string, query string, limit int) ([]*UserMemory, error)
// SaveSessionSummary 保存会话摘要
SaveSessionSummary(ctx context.Context, summary *SessionSummary) error
// GetSessionSummary 获取会话摘要
GetSessionSummary(ctx context.Context, sessionID string, userID string) (*SessionSummary, error)
// UpdateSessionSummary 更新会话摘要
UpdateSessionSummary(ctx context.Context, summary *SessionSummary) error
// DeleteSessionSummary 删除会话摘要
DeleteSessionSummary(ctx context.Context, sessionID string, userID string) error
// SaveMessage 保存对话消息
SaveMessage(ctx context.Context, message *ConversationMessage) error
// GetMessages 获取会话的消息历史
// sessionID: 会话ID
// userID: 用户ID
// limit: 限制返回数量,0表示不限制
GetMessages(ctx context.Context, sessionID string, userID string, limit int) ([]*ConversationMessage, error)
// DeleteMessages 删除会话的消息历史
DeleteMessages(ctx context.Context, sessionID string, userID string) error
// Close 关闭存储连接
Close() error
// Health 检查存储健康状态
Health(ctx context.Context) error
// CleanupOldMessages 清理指定时间之前的消息
CleanupOldMessages(ctx context.Context, userID string, before time.Time) error
// CleanupMessagesByLimit 按数量限制清理消息,保留最新的N条
CleanupMessagesByLimit(ctx context.Context, userID, sessionID string, keepLimit int) error
// GetMessageCount 获取消息总数
GetMessageCount(ctx context.Context, userID, sessionID string) (int, error)
}
MemoryStorage 记忆存储接口 定义了记忆存储的基本操作,可以有多种实现(内存、SQL、NoSQL等)
type SessionState ¶
type SessionState struct {
// 上次摘要更新时间
LastSummaryTime time.Time
// 上次摘要后新增的消息数量
MessagesSinceLastSummary int
// 会话的总消息数量
TotalMessages int
}
SessionState 会话状态
type SessionSummary ¶
type SessionSummary struct {
// 会话ID
SessionID string `json:"sessionId"`
// 用户ID
UserID string `json:"userId"`
// 摘要内容
Summary string `json:"summary"`
// 创建时间
CreatedAt time.Time `json:"createdAt"`
// 最后更新时间
UpdatedAt time.Time `json:"updatedAt"`
}
SessionSummary 会话摘要结构 存储对话会话的智能摘要
type SessionSummaryGenerator ¶
type SessionSummaryGenerator struct {
// contains filtered or unexported fields
}
SessionSummaryGenerator 基于AI的会话摘要生成器
func NewSessionSummaryGenerator ¶
func NewSessionSummaryGenerator(cm model.ToolCallingChatModel) *SessionSummaryGenerator
NewSessionSummaryGenerator 创建新的会话摘要生成器
func (*SessionSummaryGenerator) GenerateIncrementalSummary ¶
func (s *SessionSummaryGenerator) GenerateIncrementalSummary(ctx context.Context, recentMessages []*ConversationMessage, existingSummary string) (string, error)
GenerateIncrementalSummary 生成增量摘要(基于最新消息更新现有摘要)
func (*SessionSummaryGenerator) GenerateSummary ¶
func (s *SessionSummaryGenerator) GenerateSummary(ctx context.Context, messages []*ConversationMessage, existingSummary string) (string, error)
GenerateSummary 生成会话摘要
type SummaryTriggerConfig ¶
type SummaryTriggerConfig struct {
// 触发策略类型
Strategy SummaryTriggerStrategy `json:"strategy"`
// 基于消息数量触发的阈值
MessageThreshold int `json:"messageThreshold"`
// 最小触发间隔(秒)
MinInterval int `json:"minInterval"`
}
SummaryTriggerConfig 摘要触发配置
type SummaryTriggerManager ¶
type SummaryTriggerManager struct {
// contains filtered or unexported fields
}
SummaryTriggerManager 摘要触发管理器
func NewSummaryTriggerManager ¶
func NewSummaryTriggerManager(config SummaryTriggerConfig) *SummaryTriggerManager
NewSummaryTriggerManager 创建新的摘要触发管理器
func (*SummaryTriggerManager) CleanupOldSessions ¶
func (stm *SummaryTriggerManager) CleanupOldSessions(maxAge time.Duration)
CleanupOldSessions 清理旧会话状态(建议定期调用)
func (*SummaryTriggerManager) GetSessionState ¶
func (stm *SummaryTriggerManager) GetSessionState(sessionKey string) *SessionState
GetSessionState 获取会话状态(用于调试)
func (*SummaryTriggerManager) MarkSummaryUpdated ¶
func (stm *SummaryTriggerManager) MarkSummaryUpdated(sessionKey string)
MarkSummaryUpdated 标记摘要已更新
func (*SummaryTriggerManager) ShouldTriggerSummary ¶
func (stm *SummaryTriggerManager) ShouldTriggerSummary(sessionKey string, currentMessageCount int) bool
ShouldTriggerSummary 判断是否应该触发摘要更新
type SummaryTriggerStrategy ¶
type SummaryTriggerStrategy string
SummaryTriggerStrategy 摘要触发策略
const ( // TriggerAlways 每次都触发(原有行为) TriggerAlways SummaryTriggerStrategy = "always" // TriggerByMessages 基于消息数量触发 TriggerByMessages SummaryTriggerStrategy = "by_messages" // TriggerByTime 基于时间间隔触发 TriggerByTime SummaryTriggerStrategy = "by_time" // TriggerSmart 智能触发(综合考虑多种因素) TriggerSmart SummaryTriggerStrategy = "smart" )
type TaskQueueStats ¶ added in v0.0.10
type TaskQueueStats struct {
// 队列大小
QueueSize int `json:"queueSize"`
// 队列容量
QueueCapacity int `json:"queueCapacity"`
// 已处理任务数
ProcessedTasks int64 `json:"processedTasks"`
// 丢弃任务数
DroppedTasks int64 `json:"droppedTasks"`
// 当前工作goroutine数
ActiveWorkers int `json:"activeWorkers"`
// 队列使用率
QueueUtilization float64 `json:"queueUtilization"`
}
TaskQueueStats 异步任务队列统计
type UserMemory ¶
type UserMemory struct {
// 记忆的唯一标识符
ID string `json:"id"`
// 用户ID
UserID string `json:"userId"`
// 记忆内容
Memory string `json:"memory"`
// 触发该记忆的原始用户输入
Input string `json:"input,omitempty"`
// 创建时间
CreatedAt time.Time `json:"createdAt"`
// 最后更新时间
UpdatedAt time.Time `json:"updatedAt"`
}
UserMemory 用户记忆结构 存储关于用户的个人化信息,如偏好、兴趣、个人事实等
type UserMemoryAnalyzer ¶
type UserMemoryAnalyzer struct {
// contains filtered or unexported fields
}
UserMemoryAnalyzer determines if a message should be stored as a memory
func NewUserMemoryAnalyzer ¶
func NewUserMemoryAnalyzer(cm model.ToolCallingChatModel) *UserMemoryAnalyzer
NewUserMemoryAnalyzer creates a new MemoryClassifier instance
func (*UserMemoryAnalyzer) SetSystemPrompt ¶ added in v0.0.13
func (u *UserMemoryAnalyzer) SetSystemPrompt(systemPrompt string)
func (*UserMemoryAnalyzer) ShouldUpdateMemoryWithParts ¶ added in v0.0.10
func (u *UserMemoryAnalyzer) ShouldUpdateMemoryWithParts(ctx context.Context, content string, parts []schema.MessageInputPart, userMemoryList []*UserMemory) ([]UserMemoryAnalyzerParam, error)
ShouldUpdateMemoryWithParts determines if a message with multi-part content should be added to memory
type UserMemoryAnalyzerParam ¶
type UserMemoryAnalyzerParam struct {
Op string `json:"op"`
Id string `json:"id"`
Memory string `json:"memory"`
}
MemoryClassifierParam 用户记忆分类参数