Documentation
¶
Index ¶
- Constants
- type ConversationMessage
- type MemoryConfig
- type MemoryManager
- func (m *MemoryManager) ClearUserMemory(ctx context.Context, userID string) error
- func (m *MemoryManager) Close() 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) GetUserMemory(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) UpdateConfig(config *MemoryConfig)
- func (m *MemoryManager) UpsertUserMemory(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 = `` /* 2954-byte string literal not displayed */ DefaultSessionSummaryPrompt = `` /* 1306-byte string literal not displayed */ DefaultIncrementalSessionSummaryPrompt = `` /* 708-byte string literal not displayed */ )
const ( // UserMemoryOpUpdate 更新记忆 UserMemoryOpUpdate = "update" // UserMemoryOpNoop 无需更新 UserMemoryOpNoop = "noop" )
用户记忆操作类型
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"`
// 异步处理的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"`
// 定期清理间隔(小时),默认12小时
CleanupInterval int `json:"cleanupInterval"`
}
MemoryConfig 记忆配置
type MemoryManager ¶
type MemoryManager struct {
// 外部注入的清理函数
CleanupOldMessagesFunc func(ctx context.Context) error // 按时间清理旧消息
CleanupMessagesByLimitFunc func(ctx context.Context) error // 按数量限制清理消息
// contains filtered or unexported fields
}
MemoryManager 记忆管理器 负责管理用户记忆、会话摘要和对话历史
func NewMemoryManager ¶
func NewMemoryManager(cm model.ToolCallingChatModel, memoryStorage MemoryStorage, config *MemoryConfig) (*MemoryManager, error)
NewMemoryManager 创建新的记忆管理器
func (*MemoryManager) ClearUserMemory ¶ added in v0.1.0
func (m *MemoryManager) ClearUserMemory(ctx context.Context, userID string) error
ClearUserMemory 清空用户记忆
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) GetUserMemory ¶ added in v0.1.0
func (m *MemoryManager) GetUserMemory(ctx context.Context, userID string) (*UserMemory, error)
GetUserMemory 获取用户记忆
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) UpdateConfig ¶
func (m *MemoryManager) UpdateConfig(config *MemoryConfig)
UpdateConfig 更新配置
func (*MemoryManager) UpsertUserMemory ¶ added in v0.1.0
func (m *MemoryManager) UpsertUserMemory(ctx context.Context, memory *UserMemory) error
UpsertUserMemory 创建或更新用户记忆
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)
// UpsertUserMemory 创建或更新用户记忆(每个用户一条记录)
UpsertUserMemory(ctx context.Context, memory *UserMemory) error
// GetUserMemory 获取用户的记忆
GetUserMemory(ctx context.Context, userID string) (*UserMemory, error)
// ClearUserMemory 清空用户记忆
ClearUserMemory(ctx context.Context, userID string) 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(主键)
UserID string `json:"userId"`
// 记忆内容(Markdown格式)
Memory string `json:"memory"`
// 创建时间
CreatedAt time.Time `json:"createdAt"`
// 最后更新时间
UpdatedAt time.Time `json:"updatedAt"`
}
UserMemory 用户记忆结构 每个用户一条记录,使用Markdown格式存储所有记忆内容
type UserMemoryAnalyzer ¶
type UserMemoryAnalyzer struct {
// contains filtered or unexported fields
}
UserMemoryAnalyzer 分析对话并更新用户记忆
func NewUserMemoryAnalyzer ¶
func NewUserMemoryAnalyzer(cm model.ToolCallingChatModel) *UserMemoryAnalyzer
NewUserMemoryAnalyzer 创建新的用户记忆分析器
func (*UserMemoryAnalyzer) SetSystemPrompt ¶ added in v0.0.13
func (u *UserMemoryAnalyzer) SetSystemPrompt(systemPrompt string)
func (*UserMemoryAnalyzer) ShouldUpdateMemory ¶
func (u *UserMemoryAnalyzer) ShouldUpdateMemory(ctx context.Context, existingMemory *UserMemory, historyMessages []*ConversationMessage) (bool, string, error)
ShouldUpdateMemory 分析对话并生成更新后的记忆内容 返回值: (是否需要更新, 更新后的记忆内容, 错误)
type UserMemoryAnalyzerParam ¶
type UserMemoryAnalyzerParam struct {
// 操作类型: update(更新记忆)、noop(无需更新)
Op string `json:"op"`
// 记忆内容(完整Markdown文档,op为update时有效)
Memory string `json:"memory"`
}
UserMemoryAnalyzerParam 用户记忆更新参数