memory

package
v0.35.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2025 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ReferenceTypeFilePath  = "file_path"
	ReferenceTypeURL       = "url"
	ReferenceTypeFunction  = "function"
	ReferenceTypeClass     = "class"
	ReferenceTypeLineRange = "line_range"
	ReferenceTypeVariable  = "variable"
)

ReferenceType 引用类型常量

Variables

This section is empty.

Functions

This section is empty.

Types

type AccessLevel

type AccessLevel int

AccessLevel 访问级别

const (
	AccessNone        AccessLevel = 0 // 无访问权限
	AccessRead        AccessLevel = 1 // 只读
	AccessWrite       AccessLevel = 2 // 读写
	AccessFullControl AccessLevel = 3 // 完全控制(含删除)
)

type CompressedObservation added in v0.17.0

type CompressedObservation struct {
	// Summary 压缩后的摘要
	Summary string `json:"summary"`

	// References 保留的引用(URL、文件路径等)
	References []Reference `json:"references,omitempty"`

	// Hash 原始内容的哈希值(用于验证恢复)
	Hash string `json:"hash"`

	// OriginalLength 原始内容长度
	OriginalLength int `json:"original_length"`

	// Recoverable 是否可恢复
	Recoverable bool `json:"recoverable"`

	// ToolName 产生此观察的工具名
	ToolName string `json:"tool_name"`

	// CompressionRatio 压缩比率
	CompressionRatio float64 `json:"compression_ratio"`
}

CompressedObservation 压缩后的观察结果

type CompressionLevel

type CompressionLevel int

CompressionLevel 压缩级别

const (
	CompressionLevelNone       CompressionLevel = 0 // 不压缩
	CompressionLevelLight      CompressionLevel = 1 // 轻度压缩(保留大部分细节)
	CompressionLevelModerate   CompressionLevel = 2 // 中度压缩(保留关键信息)
	CompressionLevelAggressive CompressionLevel = 3 // 激进压缩(只保留核心要点)
)

type CompressionStats

type CompressionStats struct {
	OriginalMessages   int           // 原始消息数
	CompressedMessages int           // 压缩后消息数
	OriginalTokens     int           // 原始 Token 数
	CompressedTokens   int           // 压缩后 Token 数
	CompressionRatio   float64       // 压缩比率
	Duration           time.Duration // 压缩耗时
}

CompressionStats 压缩统计信息

type ConfidenceCalculator

type ConfidenceCalculator struct {
	// contains filtered or unexported fields
}

ConfidenceCalculator 置信度计算器。

func NewConfidenceCalculator

func NewConfidenceCalculator(cfg ConfidenceConfig) *ConfidenceCalculator

NewConfidenceCalculator 创建置信度计算器。

func (*ConfidenceCalculator) Calculate

func (cc *ConfidenceCalculator) Calculate(p *MemoryProvenance) float64

Calculate 计算记忆的当前置信度。 综合考虑:初始置信度、时间衰减、验证次数、访问记录。

func (*ConfidenceCalculator) ScoreByRelevance

func (cc *ConfidenceCalculator) ScoreByRelevance(semanticScore float64, p *MemoryProvenance) float64

ScoreByRelevance 综合计算记忆的相关性得分。 结合语义相似度和置信度。

func (*ConfidenceCalculator) ShouldPrune

func (cc *ConfidenceCalculator) ShouldPrune(p *MemoryProvenance) bool

ShouldPrune 判断记忆是否应被剪枝(遗忘)。

func (*ConfidenceCalculator) UpdateConfidence

func (cc *ConfidenceCalculator) UpdateConfidence(p *MemoryProvenance)

UpdateConfidence 更新记忆的置信度。 这会修改 Provenance 对象的 Confidence 字段。

type ConfidenceConfig

type ConfidenceConfig struct {
	// DecayHalfLife 置信度衰减半衰期。
	// 记忆经过这个时长后,置信度衰减到原来的50%。
	DecayHalfLife time.Duration

	// MinConfidence 最低置信度阈值。
	// 低于此值的记忆应被剪枝(遗忘)。
	MinConfidence float64

	// CorroborationBoost 每次验证增加的置信度。
	CorroborationBoost float64

	// MaxCorroborationBoost 验证提升的最大累计值。
	MaxCorroborationBoost float64

	// RecencyWeight 最近访问对置信度的权重(0.0-1.0)。
	// 0 表示不考虑访问时间,1 表示完全基于访问时间。
	RecencyWeight float64
}

ConfidenceConfig 置信度计算配置。

func DefaultConfidenceConfig

func DefaultConfidenceConfig() ConfidenceConfig

DefaultConfidenceConfig 返回默认置信度配置。

type ConfidenceTier

type ConfidenceTier string

ConfidenceTier 将置信度分级。

const (
	TierVeryHigh ConfidenceTier = "very_high" // > 0.9
	TierHigh     ConfidenceTier = "high"      // 0.7 - 0.9
	TierMedium   ConfidenceTier = "medium"    // 0.5 - 0.7
	TierLow      ConfidenceTier = "low"       // 0.3 - 0.5
	TierVeryLow  ConfidenceTier = "very_low"  // < 0.3
)

func GetConfidenceTier

func GetConfidenceTier(confidence float64) ConfidenceTier

GetConfidenceTier 返回置信度分级。

type ConflictResolutionStrategy

type ConflictResolutionStrategy struct {
	// contains filtered or unexported fields
}

ConflictResolutionStrategy 冲突解决策略。 处理内容相似但有矛盾的记忆。

func NewConflictResolutionStrategy

func NewConflictResolutionStrategy(threshold float64, calculator *ConfidenceCalculator) *ConflictResolutionStrategy

NewConflictResolutionStrategy 创建冲突解决策略。

func (*ConflictResolutionStrategy) Consolidate

Consolidate 执行合并。

func (*ConflictResolutionStrategy) Name

Name 返回策略名称。

func (*ConflictResolutionStrategy) ShouldConsolidate

func (s *ConflictResolutionStrategy) ShouldConsolidate(ctx context.Context, memories []MemoryWithScore) (bool, ConsolidationReason)

ShouldConsolidate 判断是否应该合并。

type ConflictStrategy

type ConflictStrategy int

ConflictStrategy 冲突解决策略

const (
	ConflictKeepLatest   ConflictStrategy = 0 // 保留最新的
	ConflictKeepStronger ConflictStrategy = 1 // 保留强度更高的
	ConflictMerge        ConflictStrategy = 2 // 合并
)

type ConsolidatedMemory

type ConsolidatedMemory struct {
	Text           string              // 合并后的文本
	Metadata       map[string]any      // 合并后的元数据
	Provenance     *MemoryProvenance   // 合并后的溯源
	SourceMemories []string            // 源记忆 ID 列表
	Reason         ConsolidationReason // 合并原因
	ConsolidatedAt time.Time           // 合并时间
}

ConsolidatedMemory 合并后的记忆。

type ConsolidationAction added in v0.21.1

type ConsolidationAction struct {
	Operation       ConsolidationOperation
	TargetMemoryID  string              // 目标记忆 ID(用于 update/delete)
	SourceMemoryIDs []string            // 源记忆 ID 列表(用于 merge)
	NewMemory       *ConsolidatedMemory // 新记忆内容(用于 create/update/merge)
	Reason          string              // 操作原因
}

ConsolidationAction 描述一个合并操作。

type ConsolidationConfig

type ConsolidationConfig struct {
	// 相似度阈值(超过此值认为是冗余)
	SimilarityThreshold float64

	// 冲突检测阈值(语义相似但内容矛盾)
	ConflictThreshold float64

	// 最小记忆数量(少于此数量不触发合并)
	MinMemoryCount int

	// 批处理大小(每次处理的记忆数量)
	BatchSize int

	// 自动合并间隔
	AutoConsolidateInterval time.Duration

	// 是否保留原始记忆(合并后标记为已合并,而不是删除)
	PreserveOriginal bool

	// LLM 模型名称
	LLMModel string

	// 最大重试次数
	MaxRetries int
}

ConsolidationConfig 合并引擎配置。

func DefaultConsolidationConfig

func DefaultConsolidationConfig() ConsolidationConfig

DefaultConsolidationConfig 返回默认配置。

type ConsolidationEngine

type ConsolidationEngine struct {
	// contains filtered or unexported fields
}

ConsolidationEngine 内存合并引擎。 负责检测和合并冗余或冲突的记忆。

func NewConsolidationEngine

func NewConsolidationEngine(
	memory *SemanticMemory,
	strategy ConsolidationStrategy,
	llmProvider LLMProvider,
	config ConsolidationConfig,
) *ConsolidationEngine

NewConsolidationEngine 创建合并引擎。

func (*ConsolidationEngine) Consolidate

func (ce *ConsolidationEngine) Consolidate(ctx context.Context) (*ConsolidationResult, error)

Consolidate 执行内存合并。

func (*ConsolidationEngine) ConsolidateNewMemory added in v0.21.1

func (ce *ConsolidationEngine) ConsolidateNewMemory(
	ctx context.Context,
	newMemory *MemoryWithScore,
	namespace string,
) (*ConsolidatedMemory, error)

ConsolidateNewMemory 在添加新记忆时进行即时合并检查。 这是 Google Context Engineering 论文推荐的方式: 新记忆提取后,立即与现有记忆进行合并检查。 返回值: - 如果需要合并,返回合并后的记忆 - 如果不需要合并,返回原记忆 - 如果发生冲突,返回解决后的记忆

func (*ConsolidationEngine) GetStats

func (ce *ConsolidationEngine) GetStats() ConsolidationStats

GetStats 获取合并引擎统计信息。

func (*ConsolidationEngine) ShouldAutoConsolidate

func (ce *ConsolidationEngine) ShouldAutoConsolidate() bool

ShouldAutoConsolidate 检查是否应该自动触发合并。

type ConsolidationOperation added in v0.21.1

type ConsolidationOperation string

ConsolidationOperation 表示合并操作类型。

const (
	OpCreate ConsolidationOperation = "create" // 创建新记忆
	OpUpdate ConsolidationOperation = "update" // 更新现有记忆
	OpMerge  ConsolidationOperation = "merge"  // 合并多个记忆
	OpDelete ConsolidationOperation = "delete" // 删除记忆
)

type ConsolidationReason

type ConsolidationReason string

ConsolidationReason 合并原因。

const (
	ReasonRedundant ConsolidationReason = "redundant" // 冗余
	ReasonConflict  ConsolidationReason = "conflict"  // 冲突
	ReasonSummary   ConsolidationReason = "summary"   // 总结
	ReasonNone      ConsolidationReason = "none"      // 不需要合并
)

type ConsolidationResult

type ConsolidationResult struct {
	Success        bool
	Message        string
	StartTime      time.Time
	EndTime        time.Time
	Duration       time.Duration
	Strategy       string
	MemoryGroups   []MemoryGroup
	MergedCount    int // 合并的记忆数量
	NewMemoryCount int // 生成的新记忆数量
	Errors         []string
}

ConsolidationResult 合并结果。

type ConsolidationStats

type ConsolidationStats struct {
	LastConsolidation   time.Time
	ConsolidationCount  int64
	MergedMemoriesCount int64
}

ConsolidationStats 合并统计。

type ConsolidationStrategy

type ConsolidationStrategy interface {
	// Name 返回策略名称
	Name() string

	// ShouldConsolidate 判断是否应该合并这些记忆
	ShouldConsolidate(ctx context.Context, memories []MemoryWithScore) (bool, ConsolidationReason)

	// Consolidate 执行合并
	Consolidate(ctx context.Context, memories []MemoryWithScore, llm LLMProvider) (*ConsolidatedMemory, error)
}

ConsolidationStrategy 合并策略接口。

type DefaultObservationCompressor added in v0.17.0

type DefaultObservationCompressor struct {
	// contains filtered or unexported fields
}

DefaultObservationCompressor 默认的观察结果压缩器实现

func NewDefaultObservationCompressor added in v0.17.0

func NewDefaultObservationCompressor() *DefaultObservationCompressor

NewDefaultObservationCompressor 创建默认压缩器

func NewObservationCompressorWithConfig added in v0.17.0

func NewObservationCompressorWithConfig(config *ObservationCompressorConfig) *DefaultObservationCompressor

NewObservationCompressorWithConfig 创建带配置的压缩器

func (*DefaultObservationCompressor) CanRecover added in v0.17.0

func (c *DefaultObservationCompressor) CanRecover(compressed *CompressedObservation) bool

CanRecover 检查是否可以恢复

func (*DefaultObservationCompressor) Compress added in v0.17.0

func (c *DefaultObservationCompressor) Compress(ctx context.Context, toolName string, output string) (*CompressedObservation, error)

Compress 压缩观察结果

func (*DefaultObservationCompressor) Recover added in v0.17.0

Recover 恢复原始内容 注意:这需要外部工具(如文件系统访问)的支持

type FilePreferenceStorage

type FilePreferenceStorage struct {
	// contains filtered or unexported fields
}

FilePreferenceStorage 基于文件的偏好存储

func NewFilePreferenceStorage

func NewFilePreferenceStorage(dir string) (*FilePreferenceStorage, error)

NewFilePreferenceStorage 创建文件存储

func (*FilePreferenceStorage) Delete

func (fs *FilePreferenceStorage) Delete(ctx context.Context, userID string) error

Delete 实现 PreferenceStorage 接口

func (*FilePreferenceStorage) List

func (fs *FilePreferenceStorage) List(ctx context.Context) ([]string, error)

List 实现 PreferenceStorage 接口

func (*FilePreferenceStorage) Load

func (fs *FilePreferenceStorage) Load(
	ctx context.Context,
	userID string,
) ([]*Preference, error)

Load 实现 PreferenceStorage 接口

func (*FilePreferenceStorage) Save

func (fs *FilePreferenceStorage) Save(
	ctx context.Context,
	userID string,
	preferences []*Preference,
) error

Save 实现 PreferenceStorage 接口

type ImproveQuality

type ImproveQuality struct {
	MemoryID     string
	CurrentScore float64
	Suggestions  []string
}

ImproveQuality 质量改进建议

type InMemoryReferenceRegistry added in v0.17.0

type InMemoryReferenceRegistry struct {
	// contains filtered or unexported fields
}

InMemoryReferenceRegistry 内存实现的引用注册表

func NewInMemoryReferenceRegistry added in v0.17.0

func NewInMemoryReferenceRegistry(maxSize int) *InMemoryReferenceRegistry

NewInMemoryReferenceRegistry 创建内存引用注册表

func (*InMemoryReferenceRegistry) Cleanup added in v0.17.0

func (r *InMemoryReferenceRegistry) Cleanup(ctx context.Context, maxAge time.Duration) (int, error)

Cleanup 清理过期引用

func (*InMemoryReferenceRegistry) GetStats added in v0.17.0

GetStats 获取统计信息

func (*InMemoryReferenceRegistry) ListByType added in v0.17.0

func (r *InMemoryReferenceRegistry) ListByType(ctx context.Context, refType string, limit int) ([]ReferenceInfo, error)

ListByType 按类型列出引用

func (*InMemoryReferenceRegistry) ListRecent added in v0.17.0

func (r *InMemoryReferenceRegistry) ListRecent(ctx context.Context, limit int) ([]ReferenceInfo, error)

ListRecent 列出最近的引用

func (*InMemoryReferenceRegistry) Lookup added in v0.17.0

func (r *InMemoryReferenceRegistry) Lookup(ctx context.Context, refType, value string) (*ReferenceInfo, error)

Lookup 查找引用

func (*InMemoryReferenceRegistry) MarkAccessed added in v0.17.0

func (r *InMemoryReferenceRegistry) MarkAccessed(ctx context.Context, refType, value string) error

MarkAccessed 标记访问

func (*InMemoryReferenceRegistry) Register added in v0.17.0

func (r *InMemoryReferenceRegistry) Register(ctx context.Context, ref Reference, sourceContext string) error

Register 注册引用

type Inconsistency

type Inconsistency struct {
	Type        InconsistencyType // 不一致性类型
	MemoryID1   string            // 第一个记忆 ID
	MemoryID2   string            // 第二个记忆 ID(如果适用)
	Description string            // 描述
	Severity    float64           // 严重程度 (0.0-1.0)
	DetectedAt  time.Time         // 检测时间
}

Inconsistency 不一致性信息

type InconsistencyType

type InconsistencyType string

InconsistencyType 不一致性类型

const (
	InconsistencyContradiction InconsistencyType = "contradiction"  // 矛盾
	InconsistencyDuplicate     InconsistencyType = "duplicate"      // 重复
	InconsistencyOutdated      InconsistencyType = "outdated"       // 过时
	InconsistencyLowConfidence InconsistencyType = "low_confidence" // 低置信度
	InconsistencyConflict      InconsistencyType = "conflict"       // 冲突
)

type JSONSchema

type JSONSchema struct {
	Type       string                 `json:"type,omitempty"`       // object, string, number, array, boolean
	Properties map[string]*JSONSchema `json:"properties,omitempty"` // 对象属性(仅 type=object 时有效)
	Items      *JSONSchema            `json:"items,omitempty"`      // 数组元素(仅 type=array 时有效)
	Required   []string               `json:"required,omitempty"`   // 必需字段(仅 type=object 时有效)
	Enum       []any                  `json:"enum,omitempty"`       // 枚举值
	MinLength  *int                   `json:"minLength,omitempty"`  // 最小长度(仅 type=string 时有效)
	MaxLength  *int                   `json:"maxLength,omitempty"`  // 最大长度(仅 type=string 时有效)
	Pattern    string                 `json:"pattern,omitempty"`    // 正则模式(仅 type=string 时有效)
}

JSONSchema JSON Schema 定义 简化版的 JSON Schema,支持基本的类型验证

func NewJSONSchemaFromMap

func NewJSONSchemaFromMap(m map[string]any) (*JSONSchema, error)

NewJSONSchemaFromMap 从 map 创建 JSONSchema(方便从配置文件加载)

func (*JSONSchema) ToMap

func (s *JSONSchema) ToMap() map[string]any

ToMap 将 JSONSchema 转换为 map(方便序列化)

func (*JSONSchema) Validate

func (s *JSONSchema) Validate() error

Validate 验证 Schema 本身是否合法

func (*JSONSchema) ValidateContent

func (s *JSONSchema) ValidateContent(content string) error

ValidateContent 验证内容是否符合 Schema content: JSON 字符串或 Markdown 字符串 如果 Schema.Type 为空或 "string",直接验证字符串 如果 Schema.Type 为 "object" 等,先解析 JSON 再验证

type LLMProvider

type LLMProvider interface {
	// Complete 完成文本生成
	Complete(ctx context.Context, prompt string, options map[string]any) (string, error)
}

LLMProvider 提供 LLM 调用能力。

type LLMSummarizer

type LLMSummarizer struct {
	// contains filtered or unexported fields
}

LLMSummarizer LLM 驱动的会话总结器

func NewLLMSummarizer

func NewLLMSummarizer(config LLMSummarizerConfig) *LLMSummarizer

NewLLMSummarizer 创建 LLM 总结器

func (*LLMSummarizer) CompressMessages

func (s *LLMSummarizer) CompressMessages(ctx context.Context, messages []agentext.Message) ([]agentext.Message, error)

CompressMessages 实现 SessionCompressor 接口

func (*LLMSummarizer) GetCompressionStats

func (s *LLMSummarizer) GetCompressionStats() CompressionStats

GetCompressionStats 实现 SessionCompressor 接口

func (*LLMSummarizer) SummarizeSession

func (s *LLMSummarizer) SummarizeSession(ctx context.Context, messages []agentext.Message) (string, error)

SummarizeSession 实现 SessionCompressor 接口

type LLMSummarizerConfig

type LLMSummarizerConfig struct {
	// LLM 配置
	Provider string // LLM 提供商(如 "openai", "anthropic")
	Model    string // 模型名称
	APIKey   string // API 密钥
	BaseURL  string // API 基础 URL

	// 总结配置
	Level           CompressionLevel // 压缩级别
	MaxSummaryWords int              // 最大总结字数
	PreserveContext bool             // 是否保留上下文信息
	Language        string           // 总结语言("zh", "en")

	// Token 配置
	TokenCounter agentext.TokenCounter // Token 计数器
}

LLMSummarizerConfig LLM 总结器配置

func DefaultLLMSummarizerConfig

func DefaultLLMSummarizerConfig() LLMSummarizerConfig

DefaultLLMSummarizerConfig 返回默认配置

type LineageGraph

type LineageGraph struct {
	// contains filtered or unexported fields
}

LineageGraph 记忆谱系图。 追踪记忆之间的派生关系,支持级联删除和影响分析。

func NewLineageGraph

func NewLineageGraph() *LineageGraph

NewLineageGraph 创建谱系图。

func (*LineageGraph) GetDerivedMemories

func (lg *LineageGraph) GetDerivedMemories(memoryID string) []string

GetDerivedMemories 获取派生自指定记忆的所有记忆(递归)。

func (*LineageGraph) GetMemoriesBySource

func (lg *LineageGraph) GetMemoriesBySource(sourceID string) []string

GetMemoriesBySource 获取来自特定数据源的所有记忆。

func (*LineageGraph) GetParentMemories

func (lg *LineageGraph) GetParentMemories(memoryID string) []string

GetParentMemories 获取指定记忆的所有父记忆(递归)。

func (*LineageGraph) RemoveMemory

func (lg *LineageGraph) RemoveMemory(memoryID string)

RemoveMemory 从谱系图中移除记忆。

func (*LineageGraph) TrackMemory

func (lg *LineageGraph) TrackMemory(memoryID string, metadata *LineageMetadata)

TrackMemory 追踪一个新记忆。

type LineageManager

type LineageManager struct {
	// contains filtered or unexported fields
}

LineageManager 记忆谱系管理器。 提供高级的谱系追踪和级联删除功能。

func NewLineageManager

func NewLineageManager() *LineageManager

NewLineageManager 创建谱系管理器。

func (*LineageManager) DeleteMemoryWithLineage

func (lm *LineageManager) DeleteMemoryWithLineage(ctx context.Context, memoryID string, cascade bool) ([]string, error)

DeleteMemoryWithLineage 删除记忆及其派生记忆。

func (*LineageManager) GetLineageDepth

func (lm *LineageManager) GetLineageDepth(memoryID string) int

GetLineageDepth 获取记忆的谱系深度。 返回从根记忆到当前记忆的最长路径。

func (*LineageManager) GetLineageStats

func (lm *LineageManager) GetLineageStats() LineageStats

func (*LineageManager) RegenerateFromSource

func (lm *LineageManager) RegenerateFromSource(ctx context.Context, revokedSourceID string) error

RegenerateFromSource 从剩余有效数据源重新生成记忆。 这是一个更精确的删除策略,避免过度删除。

func (*LineageManager) RevokeDataSource

func (lm *LineageManager) RevokeDataSource(ctx context.Context, sourceID string) ([]string, error)

RevokeDataSource 撤销数据源权限。 删除所有派生自该数据源的记忆。

func (*LineageManager) TrackMemoryCreation

func (lm *LineageManager) TrackMemoryCreation(memoryID string, provenance *MemoryProvenance, derivedFromIDs []string) error

TrackMemoryCreation 追踪记忆创建事件。

type LineageMetadata

type LineageMetadata struct {
	ID             string   // 记忆ID
	SourceIDs      []string // 来源标识(session/document ID)
	DerivedFromIDs []string // 派生自哪些记忆
	CreatedAt      int64    // Unix timestamp
}

LineageMetadata 记忆的谱系元数据。

type LineageStats

type LineageStats struct {
	TotalMemories    int            // 总记忆数
	RootMemories     int            // 根记忆数(无父记忆)
	DerivedMemories  int            // 派生记忆数(有父记忆)
	MaxDepth         int            // 最大谱系深度
	MemoriesBySource map[string]int // 每个数据源的记忆数
}

GetLineageStats 获取谱系统计信息。

type LongTermBridge

type LongTermBridge struct {
	Sessions       session.Service
	SemanticMemory *SemanticMemory
}

LongTermBridge 提供从 Session 短期记忆保存到长期语义记忆的辅助方法。 这是一个轻量的工具类型,不参与核心运行时依赖注入。

func (*LongTermBridge) SaveSessionToSemanticMemory

func (b *LongTermBridge) SaveSessionToSemanticMemory(
	ctx context.Context,
	appName string,
	userID string,
	sessionID string,
	scopeMeta map[string]any,
	cfg *LongTermBridgeConfig,
) error

SaveSessionToSemanticMemory 从指定 Session 中抽取对话内容,并写入语义记忆。

约定: - 将所有 user/assistant 消息拼接为一个大文本,适合用于知识性长记忆; - 调用方通过 scopeMeta 控制命名空间(user_id/project_id/resource_id 等); - 具体要保存哪些 Session 由上层业务决定(教学会话、设置会话等)。

type LongTermBridgeConfig

type LongTermBridgeConfig struct {
	// MinTokens 用于过滤过短的内容(粗略按单词数统计),<=0 表示不做限制。
	MinTokens int
}

LongTermBridgeConfig 配置 Bridge 的行为。

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager 提供基于 BackendProtocol 的高级记忆能力 特点: - 所有记忆都以普通文本/Markdown 文件形式存储 - 通过 GrepRaw/GlobInfo 做全文搜索,不依赖向量数据库 - 约定好 memoryPath,统一管理长期记忆文件

func NewManager

func NewManager(cfg *ManagerConfig) (*Manager, error)

NewManager 创建 Memory 管理器

func (*Manager) AppendNote

func (m *Manager) AppendNote(ctx context.Context, file, title, content string) (string, error)

AppendNote 以追加模式写入一条记忆 file: 目标文件名(相对于 memoryPath) title: 记忆标题,为空时使用当前时间 content: 记忆内容正文

func (*Manager) ListFiles

func (m *Manager) ListFiles(ctx context.Context) ([]backends.FileInfo, error)

ListFiles 列出所有记忆文件

func (*Manager) MemoryPath

func (m *Manager) MemoryPath() string

MemoryPath 返回记忆根路径

func (*Manager) OverwriteWithNote

func (m *Manager) OverwriteWithNote(ctx context.Context, file, title, content string) (string, error)

OverwriteWithNote 使用单个 Note 覆盖整个记忆文件 与 AppendNote 不同,该方法会丢弃原有内容,仅保留新的标题与正文

func (*Manager) ReadFile

func (m *Manager) ReadFile(ctx context.Context, name string) (string, error)

ReadFile 读取指定记忆文件内容 name 为相对于 memoryPath 的路径,例如 "project_notes.md" 或 "user/alice.md"

func (*Manager) Search

func (m *Manager) Search(ctx context.Context, opts *SearchOptions) ([]SearchMatch, error)

Search 在 memoryPath 下执行全文搜索 默认使用大小写不敏感的字面量匹配,可选正则模式

type ManagerConfig

type ManagerConfig struct {
	Backend    backends.BackendProtocol
	MemoryPath string // 记忆文件根路径,默认: "/memories/"
}

ManagerConfig 配置高级 Memory 管理器

type MemoryGroup

type MemoryGroup struct {
	Memories       []MemoryWithScore
	ConsolidatedID string
	Reason         ConsolidationReason
}

MemoryGroup 记忆组。

type MemoryProvenance

type MemoryProvenance struct {
	// SourceType 数据来源类型。
	SourceType SourceType `json:"source_type"`

	// Confidence 置信度评分(0.0-1.0)。
	// 基于来源类型、年龄和验证状态计算。
	Confidence float64 `json:"confidence"`

	// Sources 来源标识列表(如 session IDs, document IDs)。
	// 用于追踪记忆的派生关系。
	Sources []string `json:"sources"`

	// CreatedAt 记忆创建时间。
	CreatedAt time.Time `json:"created_at"`

	// UpdatedAt 记忆最后更新时间。
	UpdatedAt time.Time `json:"updated_at"`

	// Version 记忆版本号。
	// 每次更新时递增,用于冲突检测和乐观锁。
	Version int `json:"version"`

	// IsExplicit 是否为用户显式指示记住的信息。
	// 显式记忆的初始置信度更高。
	IsExplicit bool `json:"is_explicit,omitempty"`

	// CorroborationCount 被其他来源验证的次数。
	// 多源验证可提升置信度。
	CorroborationCount int `json:"corroboration_count,omitempty"`

	// LastAccessedAt 记忆最后访问时间。
	// 用于计算相关性和实施LRU淘汰。
	LastAccessedAt *time.Time `json:"last_accessed_at,omitempty"`

	// Tags 记忆标签,用于分类和检索。
	Tags []string `json:"tags,omitempty"`
}

MemoryProvenance 记录记忆的完整溯源信息。 用于追踪记忆的来源、置信度和演变历史。

func FromMetadata

func FromMetadata(meta map[string]any) *MemoryProvenance

FromMetadata 从 metadata map 中提取 Provenance。

func NewExplicitProvenance

func NewExplicitProvenance(sourceType SourceType, sourceID string) *MemoryProvenance

NewExplicitProvenance 创建一个显式记忆的 Provenance。 显式记忆具有更高的初始置信度。

func NewProvenance

func NewProvenance(sourceType SourceType, sourceID string) *MemoryProvenance

NewProvenance 创建一个新的 Provenance 实例。

func (*MemoryProvenance) AddSource

func (p *MemoryProvenance) AddSource(sourceID string)

AddSource 添加一个新的来源标识。 用于追踪记忆被多个来源确认。

func (*MemoryProvenance) Age

func (p *MemoryProvenance) Age() time.Duration

Age 返回记忆的年龄(从创建到现在的时长)。

func (*MemoryProvenance) Corroborate

func (p *MemoryProvenance) Corroborate(sourceID string)

Corroborate 记录一次验证。 多源验证可提升置信度。

func (*MemoryProvenance) Freshness

func (p *MemoryProvenance) Freshness() time.Duration

Freshness 返回记忆的新鲜度(从最后更新到现在的时长)。

func (*MemoryProvenance) MarkAccessed

func (p *MemoryProvenance) MarkAccessed()

MarkAccessed 标记记忆被访问。

func (*MemoryProvenance) ToMetadata

func (p *MemoryProvenance) ToMetadata() map[string]any

ToMetadata 将 Provenance 转换为 metadata map。 用于存储到 VectorStore。

type MemoryQuality

type MemoryQuality struct {
	MemoryID  string       // 记忆 ID
	Score     QualityScore // 质量分数
	Issues    []string     // 检测到的问题
	UpdatedAt time.Time    // 更新时间
}

MemoryQuality 记忆质量信息

type MemoryScope

type MemoryScope string

MemoryScope 定义记忆的作用域

const (
	ScopePrivate MemoryScope = "private" // 私有,仅当前会话可访问
	ScopeShared  MemoryScope = "shared"  // 共享,指定会话可访问
	ScopeGlobal  MemoryScope = "global"  // 全局,所有会话可访问
)

type MemoryWithScore

type MemoryWithScore struct {
	DocID      string
	Text       string
	Metadata   map[string]any
	Provenance *MemoryProvenance
	Score      float64 // 与查询的相似度
}

MemoryWithScore 带相似度分数的记忆。

func FilterByQuality

func FilterByQuality(
	memories []MemoryWithScore,
	qualities map[string]*MemoryQuality,
	minQuality float64,
) []MemoryWithScore

FilterByQuality 根据质量阈值过滤记忆

func RankByQuality

func RankByQuality(
	memories []MemoryWithScore,
	qualities map[string]*MemoryQuality,
) []MemoryWithScore

RankByQuality 按质量排序记忆列表

type MultiLevelCompressor

type MultiLevelCompressor struct {
	// contains filtered or unexported fields
}

MultiLevelCompressor 多层次压缩器 支持消息级、对话轮次级、会话级的多层压缩

func NewMultiLevelCompressor

func NewMultiLevelCompressor(
	messageLevel SessionCompressor,
	turnLevel SessionCompressor,
	sessionLevel SessionCompressor,
	config MultiLevelCompressorConfig,
) *MultiLevelCompressor

NewMultiLevelCompressor 创建多层次压缩器

func (*MultiLevelCompressor) CompressMessages

func (m *MultiLevelCompressor) CompressMessages(ctx context.Context, messages []agentext.Message) ([]agentext.Message, error)

CompressMessages 实现 SessionCompressor 接口

func (*MultiLevelCompressor) GetCompressionStats

func (m *MultiLevelCompressor) GetCompressionStats() CompressionStats

GetCompressionStats 实现 SessionCompressor 接口

func (*MultiLevelCompressor) SummarizeSession

func (m *MultiLevelCompressor) SummarizeSession(ctx context.Context, messages []agentext.Message) (string, error)

SummarizeSession 实现 SessionCompressor 接口

type MultiLevelCompressorConfig

type MultiLevelCompressorConfig struct {
	// 消息级压缩配置
	EnableMessageLevel bool
	MessageThreshold   int // 超过多少条消息启用消息级压缩

	// 对话轮次级压缩配置
	EnableTurnLevel bool
	TurnThreshold   int // 超过多少轮对话启用轮次级压缩

	// 会话级压缩配置
	EnableSessionLevel bool
	SessionThreshold   int // 超过多少条消息启用会话级压缩

	// Token 预算
	TokenBudget agentext.TokenBudget
}

MultiLevelCompressorConfig 多层次压缩器配置

func DefaultMultiLevelCompressorConfig

func DefaultMultiLevelCompressorConfig() MultiLevelCompressorConfig

DefaultMultiLevelCompressorConfig 返回默认配置

type ObservationCompressor added in v0.17.0

type ObservationCompressor interface {
	// Compress 压缩观察结果
	Compress(ctx context.Context, toolName string, output string) (*CompressedObservation, error)

	// CanRecover 检查是否可以恢复原始内容
	CanRecover(compressed *CompressedObservation) bool

	// Recover 恢复原始内容(如果可能)
	Recover(ctx context.Context, compressed *CompressedObservation) (string, error)
}

ObservationCompressor 观察结果压缩器接口 用于压缩工具执行结果,同时保留可恢复的引用信息 这是 Manus 团队"文件系统作为上下文"理念的实现

type ObservationCompressorConfig added in v0.17.0

type ObservationCompressorConfig struct {
	MaxSummaryLength  int
	MinCompressLength int
}

ObservationCompressorConfig 压缩器配置

type PersistentPreferenceManager

type PersistentPreferenceManager struct {
	*PreferenceManager
	// contains filtered or unexported fields
}

PersistentPreferenceManager 带持久化的偏好管理器

func NewPersistentPreferenceManager

func NewPersistentPreferenceManager(
	config PreferenceManagerConfig,
	storage PreferenceStorage,
) *PersistentPreferenceManager

NewPersistentPreferenceManager 创建持久化偏好管理器

func (*PersistentPreferenceManager) AutoSave

func (pm *PersistentPreferenceManager) AutoSave(ctx context.Context, interval int)

AutoSave 启动自动保存协程

func (*PersistentPreferenceManager) DeleteUser

func (pm *PersistentPreferenceManager) DeleteUser(ctx context.Context, userID string) error

DeleteUser 删除用户的所有偏好(包括持久化)

func (*PersistentPreferenceManager) LoadAll

LoadAll 加载所有用户的偏好

func (*PersistentPreferenceManager) LoadUser

func (pm *PersistentPreferenceManager) LoadUser(ctx context.Context, userID string) error

LoadUser 从持久化存储加载用户的偏好

func (*PersistentPreferenceManager) SaveAll

SaveAll 保存所有用户的偏好

func (*PersistentPreferenceManager) SaveUser

func (pm *PersistentPreferenceManager) SaveUser(ctx context.Context, userID string) error

SaveUser 保存用户的偏好到持久化存储

type Preference

type Preference struct {
	ID          string             // 偏好 ID
	UserID      string             // 用户 ID
	Category    PreferenceCategory // 类别
	Key         string             // 偏好键(如 "theme", "language")
	Value       string             // 偏好值(如 "dark", "zh")
	Strength    float64            // 强度 (0.0-1.0),基于出现频率
	Confidence  float64            // 置信度 (0.0-1.0)
	CreatedAt   time.Time          // 创建时间
	UpdatedAt   time.Time          // 更新时间
	AccessCount int                // 访问次数
	Metadata    map[string]string  // 元数据
}

Preference 用户偏好

type PreferenceCategory

type PreferenceCategory string

PreferenceCategory 偏好类别

const (
	CategoryUI       PreferenceCategory = "ui"       // UI 偏好
	CategoryWorkflow PreferenceCategory = "workflow" // 工作流偏好
	CategoryContent  PreferenceCategory = "content"  // 内容偏好
	CategoryLanguage PreferenceCategory = "language" // 语言偏好
	CategoryTiming   PreferenceCategory = "timing"   // 时间偏好
	CategoryFormat   PreferenceCategory = "format"   // 格式偏好
	CategoryGeneral  PreferenceCategory = "general"  // 通用偏好
)

type PreferenceExtractor

type PreferenceExtractor struct {
	// contains filtered or unexported fields
}

PreferenceExtractor 偏好提取器

func NewPreferenceExtractor

func NewPreferenceExtractor(manager *PreferenceManager) *PreferenceExtractor

NewPreferenceExtractor 创建偏好提取器

func (*PreferenceExtractor) ExtractFromMessage

func (pe *PreferenceExtractor) ExtractFromMessage(
	ctx context.Context,
	userID string,
	message agentext.Message,
) ([]*Preference, error)

ExtractFromMessage 从消息中提取偏好

type PreferenceManager

type PreferenceManager struct {
	// contains filtered or unexported fields
}

PreferenceManager 偏好管理器

func NewPreferenceManager

func NewPreferenceManager(config PreferenceManagerConfig) *PreferenceManager

NewPreferenceManager 创建偏好管理器

func (*PreferenceManager) AddPreference

func (pm *PreferenceManager) AddPreference(ctx context.Context, pref *Preference) error

AddPreference 添加偏好

func (*PreferenceManager) ApplyDecay

func (pm *PreferenceManager) ApplyDecay(ctx context.Context) int

ApplyDecay 应用强度衰减

func (*PreferenceManager) DeletePreference

func (pm *PreferenceManager) DeletePreference(
	ctx context.Context,
	userID string,
	category PreferenceCategory,
	key string,
) error

DeletePreference 删除偏好

func (*PreferenceManager) GetPreference

func (pm *PreferenceManager) GetPreference(
	ctx context.Context,
	userID string,
	category PreferenceCategory,
	key string,
) (*Preference, error)

GetPreference 获取偏好

func (*PreferenceManager) GetStats

func (pm *PreferenceManager) GetStats(userID string) PreferenceStats

GetStats 获取统计信息

func (*PreferenceManager) GetTopPreferences

func (pm *PreferenceManager) GetTopPreferences(
	ctx context.Context,
	userID string,
	limit int,
) ([]*Preference, error)

GetTopPreferences 获取强度最高的 N 个偏好

func (*PreferenceManager) ListPreferences

func (pm *PreferenceManager) ListPreferences(
	ctx context.Context,
	userID string,
	category PreferenceCategory,
) ([]*Preference, error)

ListPreferences 列出用户的所有偏好

func (*PreferenceManager) UpdatePreference

func (pm *PreferenceManager) UpdatePreference(
	ctx context.Context,
	userID string,
	category PreferenceCategory,
	key string,
	value string,
) error

UpdatePreference 更新偏好

type PreferenceManagerConfig

type PreferenceManagerConfig struct {
	// 强度衰减(每天)
	StrengthDecay float64

	// 最小强度阈值(低于此值被删除)
	MinStrength float64

	// 最大偏好数量(每个用户)
	MaxPreferencesPerUser int

	// 冲突解决策略
	ConflictStrategy ConflictStrategy

	// 是否自动提取偏好
	AutoExtract bool
}

PreferenceManagerConfig 偏好管理器配置

func DefaultPreferenceManagerConfig

func DefaultPreferenceManagerConfig() PreferenceManagerConfig

DefaultPreferenceManagerConfig 返回默认配置

type PreferenceStats

type PreferenceStats struct {
	TotalPreferences     int                        // 总偏好数
	CategoryDistribution map[PreferenceCategory]int // 类别分布
	AverageStrength      float64                    // 平均强度
	HighStrengthCount    int                        // 高强度数量 (>= 0.7)
	MediumStrengthCount  int                        // 中等强度数量 (>= 0.4)
	LowStrengthCount     int                        // 低强度数量 (< 0.4)
}

PreferenceStats 偏好统计信息

type PreferenceStorage

type PreferenceStorage interface {
	// Save 保存偏好
	Save(ctx context.Context, userID string, preferences []*Preference) error

	// Load 加载偏好
	Load(ctx context.Context, userID string) ([]*Preference, error)

	// Delete 删除用户的所有偏好
	Delete(ctx context.Context, userID string) error

	// List 列出所有用户 ID
	List(ctx context.Context) ([]string, error)
}

PreferenceStorage 偏好存储接口

type QualityAnalyzer

type QualityAnalyzer struct {
	// contains filtered or unexported fields
}

QualityAnalyzer 质量分析器 提供高级质量分析功能,包括不一致性检测、趋势分析等

func NewQualityAnalyzer

func NewQualityAnalyzer(metrics *QualityMetrics, memory *SemanticMemory) *QualityAnalyzer

NewQualityAnalyzer 创建质量分析器

func (*QualityAnalyzer) AnalyzeTrends

func (qa *QualityAnalyzer) AnalyzeTrends(
	ctx context.Context,
	period time.Duration,
) ([]QualityTrend, error)

AnalyzeTrends 分析质量趋势(需要历史数据)

func (*QualityAnalyzer) DetectInconsistencies

func (qa *QualityAnalyzer) DetectInconsistencies(
	ctx context.Context,
	memories []MemoryWithScore,
) ([]Inconsistency, error)

DetectInconsistencies 检测记忆中的不一致性

func (*QualityAnalyzer) GenerateReport

func (qa *QualityAnalyzer) GenerateReport(
	ctx context.Context,
	memories []MemoryWithScore,
) (*QualityReport, error)

GenerateReport 生成质量报告

func (*QualityAnalyzer) SuggestImprovements

func (qa *QualityAnalyzer) SuggestImprovements(
	ctx context.Context,
) ([]ImproveQuality, error)

SuggestImprovements 为低质量记忆提供改进建议

type QualityDimension

type QualityDimension string

QualityDimension 质量维度

const (
	QualityAccuracy     QualityDimension = "accuracy"     // 准确性
	QualityCompleteness QualityDimension = "completeness" // 完整性
	QualityConsistency  QualityDimension = "consistency"  // 一致性
	QualityTimeliness   QualityDimension = "timeliness"   // 时效性
	QualityRelevance    QualityDimension = "relevance"    // 相关性
)

type QualityMetrics

type QualityMetrics struct {
	// contains filtered or unexported fields
}

QualityMetrics 质量评估系统

func NewQualityMetrics

func NewQualityMetrics(config QualityMetricsConfig) *QualityMetrics

NewQualityMetrics 创建质量评估系统

func (*QualityMetrics) Clear

func (qm *QualityMetrics) Clear()

Clear 清空所有质量信息

func (*QualityMetrics) Evaluate

func (qm *QualityMetrics) Evaluate(
	ctx context.Context,
	memoryID string,
	memory *MemoryWithScore,
) (*MemoryQuality, error)

Evaluate 评估记忆质量

func (*QualityMetrics) Get

func (qm *QualityMetrics) Get(memoryID string) (*MemoryQuality, bool)

Get 获取记忆的质量信息

func (*QualityMetrics) GetAll

func (qm *QualityMetrics) GetAll() []*MemoryQuality

GetAll 获取所有质量信息

func (*QualityMetrics) GetLowQuality

func (qm *QualityMetrics) GetLowQuality() []*MemoryQuality

GetLowQuality 获取低质量记忆列表

func (*QualityMetrics) GetStats

func (qm *QualityMetrics) GetStats() QualityStats

GetStats 获取统计信息

func (*QualityMetrics) Remove

func (qm *QualityMetrics) Remove(memoryID string)

Remove 删除质量信息

type QualityMetricsConfig

type QualityMetricsConfig struct {
	// 权重配置(各维度的权重,总和应为 1.0)
	AccuracyWeight     float64
	CompletenessWeight float64
	ConsistencyWeight  float64
	TimelinessWeight   float64
	RelevanceWeight    float64

	// 时效性配置
	MaxAge          time.Duration // 最大有效期
	TimelinessDecay float64       // 时效性衰减系数(每天)

	// 质量阈值
	MinQualityThreshold float64 // 最低质量阈值
	WarningThreshold    float64 // 警告阈值

	// 自动清理
	EnableAutoCleanup   bool // 启用自动清理低质量记忆
	AutoCleanupInterval time.Duration
}

QualityMetricsConfig 质量评估配置

func DefaultQualityMetricsConfig

func DefaultQualityMetricsConfig() QualityMetricsConfig

DefaultQualityMetricsConfig 返回默认配置

type QualityReport

type QualityReport struct {
	GeneratedAt time.Time
	Stats       QualityStats

	// 维度分布
	DimensionScores map[QualityDimension]float64

	// 问题统计
	Inconsistencies    []Inconsistency
	InconsistencyCount map[InconsistencyType]int
	TopIssues          []string

	// 建议
	Recommendations []string
}

QualityReport 质量报告

type QualityScore

type QualityScore struct {
	Accuracy     float64 // 准确性 (0.0-1.0)
	Completeness float64 // 完整性 (0.0-1.0)
	Consistency  float64 // 一致性 (0.0-1.0)
	Timeliness   float64 // 时效性 (0.0-1.0)
	Relevance    float64 // 相关性 (0.0-1.0)

	Overall float64 // 综合得分 (0.0-1.0)

	// 元数据
	CalculatedAt time.Time
	Source       string // 评分来源(如 "automatic", "manual", "llm")
}

QualityScore 质量分数(多维度)

type QualityStats

type QualityStats struct {
	TotalMemories      int     // 总记忆数
	TotalEvaluations   int64   // 总评估次数
	AverageQuality     float64 // 平均质量
	HighQualityCount   int     // 高质量记忆数 (>= 0.8)
	MediumQualityCount int     // 中等质量记忆数 (>= 0.5)
	LowQualityCount    int     // 低质量记忆数 (< 0.5)
	MemoriesWithIssues int     // 有问题的记忆数
}

QualityStats 质量统计信息

type QualityTrend

type QualityTrend struct {
	Dimension QualityDimension
	Trend     string  // "improving", "declining", "stable"
	Change    float64 // 变化量
	Period    time.Duration
}

QualityTrend 质量趋势

type RedundancyStrategy

type RedundancyStrategy struct {
	// contains filtered or unexported fields
}

RedundancyStrategy 冗余合并策略。 将多条相似度高、内容重复的记忆合并为一条。

func NewRedundancyStrategy

func NewRedundancyStrategy(threshold float64) *RedundancyStrategy

NewRedundancyStrategy 创建冗余合并策略。

func (*RedundancyStrategy) Consolidate

func (s *RedundancyStrategy) Consolidate(ctx context.Context, memories []MemoryWithScore, llm LLMProvider) (*ConsolidatedMemory, error)

Consolidate 执行合并。

func (*RedundancyStrategy) Name

func (s *RedundancyStrategy) Name() string

Name 返回策略名称。

func (*RedundancyStrategy) ShouldConsolidate

func (s *RedundancyStrategy) ShouldConsolidate(ctx context.Context, memories []MemoryWithScore) (bool, ConsolidationReason)

ShouldConsolidate 判断是否应该合并。

type Reference added in v0.17.0

type Reference struct {
	// Type 引用类型: "file_path", "url", "function", "class", "line_range"
	Type string `json:"type"`

	// Value 引用值
	Value string `json:"value"`

	// Context 上下文信息(可选)
	Context string `json:"context,omitempty"`

	// LineStart 起始行号(可选,用于文件引用)
	LineStart int `json:"line_start,omitempty"`

	// LineEnd 结束行号(可选,用于文件引用)
	LineEnd int `json:"line_end,omitempty"`
}

Reference 引用信息

type ReferenceInfo added in v0.17.0

type ReferenceInfo struct {
	// Reference 基本引用信息
	Reference Reference `json:"reference"`

	// SourceContext 引用来源的上下文
	SourceContext string `json:"source_context,omitempty"`

	// FirstSeen 首次出现时间
	FirstSeen time.Time `json:"first_seen"`

	// LastAccessed 最后访问时间
	LastAccessed time.Time `json:"last_accessed"`

	// AccessCount 访问次数
	AccessCount int `json:"access_count"`

	// ToolName 产生此引用的工具
	ToolName string `json:"tool_name,omitempty"`

	// Metadata 额外元数据
	Metadata map[string]any `json:"metadata,omitempty"`
}

ReferenceInfo 引用的详细信息

type ReferenceRegistry added in v0.17.0

type ReferenceRegistry interface {
	// Register 注册一个引用
	Register(ctx context.Context, ref Reference, sourceContext string) error

	// Lookup 查找引用信息
	Lookup(ctx context.Context, refType, value string) (*ReferenceInfo, error)

	// ListByType 按类型列出引用
	ListByType(ctx context.Context, refType string, limit int) ([]ReferenceInfo, error)

	// ListRecent 列出最近的引用
	ListRecent(ctx context.Context, limit int) ([]ReferenceInfo, error)

	// MarkAccessed 标记引用被访问
	MarkAccessed(ctx context.Context, refType, value string) error

	// GetStats 获取统计信息
	GetStats(ctx context.Context) (*RegistryStats, error)

	// Cleanup 清理过期引用
	Cleanup(ctx context.Context, maxAge time.Duration) (int, error)
}

ReferenceRegistry 引用注册表接口 用于跟踪和管理会话中出现的所有引用(文件、URL、函数等) 这使得压缩后的内容可以在需要时恢复

type ReferenceRegistryMiddleware added in v0.17.0

type ReferenceRegistryMiddleware struct {
	// contains filtered or unexported fields
}

ReferenceRegistryMiddleware 引用注册中间件 自动从工具结果中提取并注册引用

func NewReferenceRegistryMiddleware added in v0.17.0

func NewReferenceRegistryMiddleware(registry ReferenceRegistry) *ReferenceRegistryMiddleware

NewReferenceRegistryMiddleware 创建引用注册中间件

func (*ReferenceRegistryMiddleware) ProcessToolResult added in v0.17.0

func (m *ReferenceRegistryMiddleware) ProcessToolResult(ctx context.Context, toolName, content string) error

ProcessToolResult 处理工具结果,提取并注册引用

type RegistryStats added in v0.17.0

type RegistryStats struct {
	// TotalReferences 总引用数
	TotalReferences int `json:"total_references"`

	// ByType 按类型统计
	ByType map[string]int `json:"by_type"`

	// MostAccessed 最常访问的引用
	MostAccessed []ReferenceInfo `json:"most_accessed,omitempty"`

	// RecentlyAdded 最近添加的引用数
	RecentlyAdded int `json:"recently_added"`
}

RegistryStats 注册表统计信息

type Scope

type Scope struct {
	// UserID 当前用户ID,用于业务侧记录/审计; 是否叠加到路径中由 Shared 控制。
	UserID string

	// ProjectID 项目标识,为空表示不绑定项目。
	ProjectID string

	// ResourceType 资源类型: "article" | "novel" | "song" | "ppt" | ...
	ResourceType string

	// ResourceID 资源ID,与 ResourceType 配合使用。
	ResourceID string

	// Shared 是否作为全局/共享记忆:
	// - Shared=false: 生成的 namespace 不以 "/" 开头, 会叠加 BaseNamespace(通常是 users/<user-id>)。
	// - Shared=true : 生成的 namespace 以 "/" 开头, 不叠加 BaseNamespace, 落在全局共享空间。
	Shared bool
}

Scope 描述一段记忆所属的逻辑作用域,用于生成 namespace 字符串。

设计目标: - 支持多用户系统(user级隔离) - 支持项目级、资源级(文章/小说/歌曲/PPT等)场景 - 支持用户专属 vs 全局共享两种模式

注意: Scope 只负责生成 namespace, 最终路径仍然是:

/memories/<BaseNamespace>/<namespace>/<file>

其中 BaseNamespace 由 AgentMemoryMiddleware 决定, 通常为:

  • "" : 无用户隔离(单用户或纯共享)
  • "users/<user-id>" : 多用户系统中的用户私有前缀

func (Scope) Namespace

func (s Scope) Namespace() string

Namespace 根据 Scope 生成 namespace 字符串。

规则: - ProjectID 不为空时: 追加 "projects/<project-id>" - ResourceType & ResourceID 不为空时: 追加 "resources/<type>/<id>" - Shared=false => 不加前导 "/", 交由 BaseNamespace 叠加 (用户级/租户级记忆) - Shared=true => 加前导 "/", 作为全局/共享记忆

示例:

Scope{UserID:"alice", ProjectID:"demo", Shared:false}.Namespace()
  -> "projects/demo"
Scope{ProjectID:"demo", Shared:true}.Namespace()
  -> "/projects/demo"
Scope{ResourceType:"article", ResourceID:"abc", Shared:false}.Namespace()
  -> "resources/article/abc"
Scope{ProjectID:"demo", ResourceType:"article", ResourceID:"abc", Shared:true}.Namespace()
  -> "/projects/demo/resources/article/abc"

type SearchMatch

type SearchMatch struct {
	Path       string `json:"path"`
	LineNumber int    `json:"line_number"`
	Line       string `json:"line"`
	Match      string `json:"match"`
}

SearchMatch 搜索匹配结果

type SearchOptions

type SearchOptions struct {
	// Query 搜索关键字,默认作为大小写不敏感的字面量匹配
	Query string
	// Regex 是否将 Query 视为正则表达式
	Regex bool
	// Namespace 可选的命名空间前缀,用于多租户/多资源隔离
	// 例如: "users/alice", "projects/demo", "users/alice/projects/demo"
	// 为空字符串时在整个 MemoryPath 下搜索
	Namespace string
	// Glob 文件过滤模式,例如: "*.md"
	Glob string
	// MaxResults 返回的最大匹配数,<=0 时表示不限制
	MaxResults int
}

SearchOptions 搜索配置

type SemanticMemory

type SemanticMemory struct {
	// contains filtered or unexported fields
}

SemanticMemory 语义记忆组件, 用于对文本进行向量索引和检索。 如果 Store 或 Embedder 为空, 所有方法将成为 no-op。

func NewSemanticMemory

func NewSemanticMemory(cfg SemanticMemoryConfig) *SemanticMemory

NewSemanticMemory 创建语义记忆组件。

func (*SemanticMemory) Close

func (sm *SemanticMemory) Close() error

Close 关闭底层 VectorStore。

func (*SemanticMemory) Delete

func (sm *SemanticMemory) Delete(ctx context.Context, docID string) error

Delete 删除单个记忆(不考虑谱系)。

func (*SemanticMemory) DeleteMemoryWithLineage

func (sm *SemanticMemory) DeleteMemoryWithLineage(ctx context.Context, memoryID string, cascade bool) error

DeleteMemoryWithLineage 删除记忆及其派生记忆。

func (*SemanticMemory) Enabled

func (sm *SemanticMemory) Enabled() bool

Enabled 返回语义记忆是否启用。

func (*SemanticMemory) GetMemoryProvenance

func (sm *SemanticMemory) GetMemoryProvenance(ctx context.Context, query string, meta map[string]any) (*MemoryProvenance, error)

GetMemoryProvenance 获取记忆的溯源信息。 这需要先检索记忆,然后提取 Provenance。

func (*SemanticMemory) Index

func (sm *SemanticMemory) Index(ctx context.Context, docID string, text string, meta map[string]any) error

Index 将一段文本写入向量索引。 docID 应全局唯一, meta 中可包含 user_id/project_id/resource_id 等信息。 如果启用 Provenance, 将自动创建溯源信息。

func (*SemanticMemory) IndexWithProvenance

func (sm *SemanticMemory) IndexWithProvenance(ctx context.Context, docID string, text string, meta map[string]any, provenance *MemoryProvenance, derivedFromIDs []string) error

IndexWithProvenance 使用指定的 Provenance 索引文本。 derivedFromIDs 表示该记忆派生自哪些其他记忆。

func (*SemanticMemory) PruneMemories

func (sm *SemanticMemory) PruneMemories(ctx context.Context, namespace string) ([]string, error)

PruneMemories 剪枝(删除)低置信度记忆。 返回被删除的记忆ID列表。

func (*SemanticMemory) Search

func (sm *SemanticMemory) Search(ctx context.Context, query string, meta map[string]any, topK int) ([]vector.Hit, error)

Search 在指定命名空间内执行向量检索。 query 为用户自然语言查询, meta 用于构造 namespace/过滤。

func (*SemanticMemory) SearchAndFormat added in v0.31.0

func (sm *SemanticMemory) SearchAndFormat(ctx context.Context, query string, meta map[string]any, topK int) (string, error)

SearchAndFormat 执行向量检索并格式化为 Markdown,用于 RAG 场景。 返回的字符串可以直接注入到 Prompt 中作为上下文。

func (*SemanticMemory) SearchBySourceType

func (sm *SemanticMemory) SearchBySourceType(ctx context.Context, query string, meta map[string]any, topK int, sourceTypes []SourceType) ([]vector.Hit, error)

SearchBySourceType 按来源类型检索记忆。

func (*SemanticMemory) SearchWithConfidenceFilter

func (sm *SemanticMemory) SearchWithConfidenceFilter(ctx context.Context, query string, meta map[string]any, topK int, minConfidence float64) ([]vector.Hit, error)

SearchWithConfidenceFilter 执行检索并按置信度过滤。 minConfidence: 最低置信度阈值(0.0-1.0)

func (*SemanticMemory) UpdateMetadata

func (sm *SemanticMemory) UpdateMetadata(ctx context.Context, docID string, metadata map[string]any) error

UpdateMetadata 更新记忆的元数据。

type SemanticMemoryConfig

type SemanticMemoryConfig struct {
	Store          vector.VectorStore
	Embedder       vector.Embedder
	NamespaceScope string // "user" | "project" | "resource" | "global"
	TopK           int

	// EnableProvenance 是否启用记忆溯源追踪。
	EnableProvenance bool

	// ConfidenceCalculator 置信度计算器。
	// 如果为 nil, 使用默认配置。
	ConfidenceCalculator *ConfidenceCalculator

	// LineageManager 谱系管理器。
	// 如果为 nil, 不追踪记忆谱系。
	LineageManager *LineageManager

	// DefaultSourceType 默认的数据源类型。
	DefaultSourceType SourceType
}

SemanticMemoryConfig 语义记忆配置。 核心运行时仅依赖接口, 不关心具体 VectorStore/Embedder 实现。

type SessionCompressor

type SessionCompressor interface {
	// SummarizeSession 总结整个会话
	SummarizeSession(ctx context.Context, messages []agentext.Message) (string, error)

	// CompressMessages 压缩消息列表
	CompressMessages(ctx context.Context, messages []agentext.Message) ([]agentext.Message, error)

	// GetCompressionStats 获取压缩统计信息
	GetCompressionStats() CompressionStats
}

SessionCompressor 会话压缩器接口 提供多层次的会话内容压缩和总结功能

type SessionManagerConfig

type SessionManagerConfig struct {
	// 默认作用域
	DefaultScope MemoryScope

	// 是否允许跨会话共享
	EnableSharing bool

	// 是否允许全局记忆
	EnableGlobal bool

	// 记忆过期时间
	MemoryTTL time.Duration

	// 最大共享数量(单个记忆最多共享给多少会话)
	MaxSharedSessions int
}

SessionManagerConfig 会话管理器配置

func DefaultSessionManagerConfig

func DefaultSessionManagerConfig() SessionManagerConfig

DefaultSessionManagerConfig 返回默认配置

type SessionMemoryManager

type SessionMemoryManager struct {
	// contains filtered or unexported fields
}

SessionMemoryManager 会话记忆管理器 管理跨会话的记忆共享和访问控制

func NewSessionMemoryManager

func NewSessionMemoryManager(config SessionManagerConfig) *SessionMemoryManager

NewSessionMemoryManager 创建会话记忆管理器

func (*SessionMemoryManager) AddMemory

func (m *SessionMemoryManager) AddMemory(
	ctx context.Context,
	sessionID string,
	content string,
	metadata map[string]any,
	scope MemoryScope,
) (string, error)

AddMemory 添加记忆

func (*SessionMemoryManager) CleanupExpired

func (m *SessionMemoryManager) CleanupExpired(ctx context.Context) int

CleanupExpired 清理过期记忆

func (*SessionMemoryManager) DeleteMemory

func (m *SessionMemoryManager) DeleteMemory(
	ctx context.Context,
	memoryID string,
	sessionID string,
) error

DeleteMemory 删除记忆(仅所有者)

func (*SessionMemoryManager) GetMemory

func (m *SessionMemoryManager) GetMemory(
	ctx context.Context,
	memoryID string,
	sessionID string,
) (*SharedMemory, error)

GetMemory 获取记忆(带权限检查)

func (*SessionMemoryManager) GetStats

func (m *SessionMemoryManager) GetStats() SessionStats

GetStats 获取统计信息

func (*SessionMemoryManager) ListSessionMemories

func (m *SessionMemoryManager) ListSessionMemories(
	ctx context.Context,
	sessionID string,
	scope MemoryScope,
) ([]*SharedMemory, error)

ListSessionMemories 列出会话可访问的所有记忆

func (*SessionMemoryManager) RevokeAccess

func (m *SessionMemoryManager) RevokeAccess(
	ctx context.Context,
	memoryID string,
	fromSessionID string,
	toSessionID string,
) error

RevokeAccess 撤销访问权限

func (*SessionMemoryManager) ShareMemory

func (m *SessionMemoryManager) ShareMemory(
	ctx context.Context,
	memoryID string,
	fromSessionID string,
	toSessionID string,
	accessLevel AccessLevel,
) error

ShareMemory 共享记忆给其他会话

func (*SessionMemoryManager) UpdateMemory

func (m *SessionMemoryManager) UpdateMemory(
	ctx context.Context,
	memoryID string,
	sessionID string,
	content string,
	metadata map[string]any,
) error

UpdateMemory 更新记忆(带权限检查)

type SessionStats

type SessionStats struct {
	TotalMemories     int                 // 总记忆数
	TotalSessions     int                 // 总会话数
	GlobalMemories    int                 // 全局记忆数
	ScopeDistribution map[MemoryScope]int // 作用域分布
}

SessionStats 会话统计信息

type SessionSummary added in v0.13.0

type SessionSummary struct {
	// 基本信息
	SessionID string    `json:"session_id"`
	Summary   string    `json:"summary"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`

	// 详细信息
	Topics      []string       `json:"topics"`       // 讨论的主题
	KeyPoints   []string       `json:"key_points"`   // 关键要点
	Decisions   []string       `json:"decisions"`    // 做出的决策
	ActionItems []string       `json:"action_items"` // 行动项
	Metadata    map[string]any `json:"metadata"`

	// 统计信息
	MessageCount int `json:"message_count"` // 消息数量
	TokenCount   int `json:"token_count"`   // Token 数量
}

SessionSummary 会话摘要

type SessionSummaryConfig added in v0.13.0

type SessionSummaryConfig struct {
	// Enabled 是否启用会话摘要
	Enabled bool

	// AutoUpdate 是否自动更新摘要
	AutoUpdate bool

	// UpdateInterval 自动更新间隔(消息数量)
	UpdateInterval int

	// MaxSummaryLength 摘要最大长度(字符数)
	MaxSummaryLength int

	// IncludeTopics 是否提取主题
	IncludeTopics bool

	// IncludeKeyPoints 是否提取关键要点
	IncludeKeyPoints bool

	// IncludeDecisions 是否提取决策
	IncludeDecisions bool

	// IncludeActionItems 是否提取行动项
	IncludeActionItems bool

	// SummaryPrompt 自定义摘要提示词
	SummaryPrompt string
}

SessionSummaryConfig 会话摘要配置

func DefaultSessionSummaryConfig added in v0.13.0

func DefaultSessionSummaryConfig() SessionSummaryConfig

DefaultSessionSummaryConfig 返回默认配置

type SessionSummaryManager added in v0.13.0

type SessionSummaryManager struct {
	// contains filtered or unexported fields
}

SessionSummaryManager 会话摘要管理器

func NewSessionSummaryManager added in v0.13.0

func NewSessionSummaryManager(provider provider.Provider, config SessionSummaryConfig) *SessionSummaryManager

NewSessionSummaryManager 创建会话摘要管理器

func (*SessionSummaryManager) DeleteSummary added in v0.13.0

func (m *SessionSummaryManager) DeleteSummary(sessionID string) error

DeleteSummary 删除会话摘要

func (*SessionSummaryManager) GenerateSummary added in v0.13.0

func (m *SessionSummaryManager) GenerateSummary(
	ctx context.Context,
	sessionID string,
	messages []types.Message,
) (*SessionSummary, error)

GenerateSummary 生成会话摘要

func (*SessionSummaryManager) GetSummary added in v0.13.0

func (m *SessionSummaryManager) GetSummary(sessionID string) (*SessionSummary, bool)

GetSummary 获取会话摘要

func (*SessionSummaryManager) GetSummaryText added in v0.13.0

func (m *SessionSummaryManager) GetSummaryText(sessionID string) string

GetSummaryText 获取摘要文本(用于添加到上下文)

func (*SessionSummaryManager) ListSummaries added in v0.13.0

func (m *SessionSummaryManager) ListSummaries() []*SessionSummary

ListSummaries 列出所有会话摘要

func (*SessionSummaryManager) ShouldUpdate added in v0.13.0

func (m *SessionSummaryManager) ShouldUpdate(sessionID string, currentMessageCount int) bool

ShouldUpdate 判断是否应该更新摘要

func (*SessionSummaryManager) UpdateSummary added in v0.13.0

func (m *SessionSummaryManager) UpdateSummary(
	ctx context.Context,
	sessionID string,
	newMessages []types.Message,
) (*SessionSummary, error)

UpdateSummary 更新会话摘要

type SharedMemory

type SharedMemory struct {
	ID         string                 // 记忆 ID
	Content    string                 // 内容
	Metadata   map[string]any         // 元数据
	Scope      MemoryScope            // 作用域
	OwnerID    string                 // 所有者会话 ID
	SharedWith map[string]AccessLevel // 共享给哪些会话(会话ID -> 访问级别)
	CreatedAt  time.Time              // 创建时间
	UpdatedAt  time.Time              // 更新时间

	// 记忆溯源
	Provenance *MemoryProvenance
}

SharedMemory 共享记忆

type SourceType

type SourceType string

SourceType 定义记忆的来源类型。

const (
	// SourceBootstrapped 来自系统预加载数据(如CRM)。
	// 这是最高信任度的数据源,通常用于解决冷启动问题。
	SourceBootstrapped SourceType = "bootstrapped"

	// SourceUserInput 来自用户输入。
	// 细分为显式(用户明确指示记住)和隐式(从对话中推断)。
	SourceUserInput SourceType = "user_input"

	// SourceToolOutput 来自工具执行结果。
	// 这种记忆通常比较脆弱和易过时,更适合短期缓存。
	SourceToolOutput SourceType = "tool_output"

	// SourceAgent 来自其他代理的输出。
	SourceAgent SourceType = "agent"
)

type SummarizationStrategy

type SummarizationStrategy struct {
	// contains filtered or unexported fields
}

SummarizationStrategy 总结策略。 将多条相关记忆总结为更简洁的表述。

func NewSummarizationStrategy

func NewSummarizationStrategy(maxPerGroup int) *SummarizationStrategy

NewSummarizationStrategy 创建总结策略。

func (*SummarizationStrategy) Consolidate

func (s *SummarizationStrategy) Consolidate(ctx context.Context, memories []MemoryWithScore, llm LLMProvider) (*ConsolidatedMemory, error)

Consolidate 执行合并。

func (*SummarizationStrategy) Name

func (s *SummarizationStrategy) Name() string

Name 返回策略名称。

func (*SummarizationStrategy) ShouldConsolidate

func (s *SummarizationStrategy) ShouldConsolidate(ctx context.Context, memories []MemoryWithScore) (bool, ConsolidationReason)

ShouldConsolidate 判断是否应该合并。

type WorkingMemoryConfig

type WorkingMemoryConfig struct {
	Backend    backends.BackendProtocol // 存储后端
	BasePath   string                   // 存储根路径,默认 "/working_memory/"
	Scope      WorkingMemoryScope       // 作用域:thread 或 resource
	Schema     *JSONSchema              // 可选的 JSON Schema 验证
	Template   string                   // 可选的 Markdown 模板
	DefaultTTL time.Duration            // 可选的过期时间(0 表示不过期)
}

WorkingMemoryConfig Working Memory 管理器配置

type WorkingMemoryData

type WorkingMemoryData struct {
	Meta    WorkingMemoryMeta `json:"meta"`
	Content string            `json:"content"`
}

WorkingMemoryData Working Memory 数据结构

type WorkingMemoryManager

type WorkingMemoryManager struct {
	// contains filtered or unexported fields
}

WorkingMemoryManager Working Memory 管理器 特点: - 支持 thread/resource 作用域自动管理 - 可选的 JSON Schema 验证 - 可选的 Markdown 模板渲染 - 基于 BackendProtocol,保持松耦合

func NewWorkingMemoryManager

func NewWorkingMemoryManager(cfg *WorkingMemoryConfig) (*WorkingMemoryManager, error)

NewWorkingMemoryManager 创建 Working Memory 管理器

func (*WorkingMemoryManager) Delete

func (wm *WorkingMemoryManager) Delete(ctx context.Context, threadID, resourceID string) error

Delete 删除 Working Memory

func (*WorkingMemoryManager) FindAndReplace

func (wm *WorkingMemoryManager) FindAndReplace(ctx context.Context, threadID, resourceID, searchString, newContent string) error

FindAndReplace 在现有内容中查找并替换(实验性功能,对标 Mastra) searchString: 要查找的字符串 newContent: 替换后的新内容 如果 searchString 为空,则追加到末尾

func (*WorkingMemoryManager) Get

func (wm *WorkingMemoryManager) Get(ctx context.Context, threadID, resourceID string) (string, error)

Get 获取 Working Memory 内容 根据配置的 scope 自动选择读取路径: - thread scope: /working_memory/threads/<threadID>.json - resource scope: /working_memory/resources/<resourceID>.json

func (*WorkingMemoryManager) GetSchema

func (wm *WorkingMemoryManager) GetSchema() *JSONSchema

GetSchema 返回配置的 JSON Schema

func (*WorkingMemoryManager) GetScope

GetScope 返回当前配置的作用域

func (*WorkingMemoryManager) GetTemplate

func (wm *WorkingMemoryManager) GetTemplate() string

GetTemplate 返回配置的模板

func (*WorkingMemoryManager) Update

func (wm *WorkingMemoryManager) Update(ctx context.Context, threadID, resourceID, content string) error

Update 更新 Working Memory 内容 content: 新的内容(Markdown 或 JSON 字符串) 如果配置了 Schema,会先进行验证

type WorkingMemoryMeta

type WorkingMemoryMeta struct {
	ThreadID   string     `json:"thread_id"`
	ResourceID string     `json:"resource_id"`
	CreatedAt  time.Time  `json:"created_at"`
	UpdatedAt  time.Time  `json:"updated_at"`
	ExpiresAt  *time.Time `json:"expires_at,omitempty"`
}

WorkingMemoryMeta Working Memory 元数据

type WorkingMemoryScope

type WorkingMemoryScope string

WorkingMemoryScope 定义 Working Memory 的作用域

const (
	// ScopeThread Working Memory 以 thread 为作用域(每个会话独立)
	ScopeThread WorkingMemoryScope = "thread"
	// ScopeResource Working Memory 以 resource 为作用域(同一资源下的所有会话共享)
	ScopeResource WorkingMemoryScope = "resource"
)

Directories

Path Synopsis
Package auto 提供自动记忆捕获系统 自动从对话和事件中生成记忆,支持 tags 标签系统
Package auto 提供自动记忆捕获系统 自动从对话和事件中生成记忆,支持 tags 标签系统
Package dialog 提供对话偏好提取功能 从用户对话中自动识别偏好、约束、风格等信息
Package dialog 提供对话偏好提取功能 从用户对话中自动识别偏好、约束、风格等信息
Package project 提供项目级别的外部记忆系统 用于存储项目上下文、用户偏好、工作流状态等信息 典型实现:AGENTS.md 文件模式
Package project 提供项目级别的外部记忆系统 用于存储项目上下文、用户偏好、工作流状态等信息 典型实现:AGENTS.md 文件模式
Package rules 提供规则管理系统 支持 Global(全局)和 Project(项目)两个级别的规则
Package rules 提供规则管理系统 支持 Global(全局)和 Project(项目)两个级别的规则

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL