memory

package
v0.0.0-...-3f9b805 Latest Latest
Warning

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

Go to latest
Published: Feb 13, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package memory 提供 Hexagon 框架的高级记忆系统

在 ai-core 的基础 Memory 接口上,扩展多种记忆实现:

  • WindowMemory: 滑动窗口记忆,只保留最近 N 轮对话
  • SummaryMemory: 摘要记忆,定期将旧记忆压缩为摘要
  • VectorMemory: 向量记忆,支持语义搜索
  • EntityMemory: 实体记忆,提取和记录实体信息

使用示例:

mem := NewWindowMemory(10) // 保留最近 10 条
mem := NewSummaryMemory(llmProvider, "model", 20) // 超过 20 条时摘要
mem := NewVectorMemory(embedder, vectorStore, 100)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Entity

type Entity struct {
	// Name 实体名称
	Name string `json:"name"`

	// Type 实体类型(person/place/org/other)
	Type string `json:"type"`

	// Description 实体描述
	Description string `json:"description"`

	// Mentions 提及次数
	Mentions int `json:"mentions"`

	// LastMentioned 最后提及时间
	LastMentioned time.Time `json:"last_mentioned"`

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

Entity 实体信息

type EntityMemory

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

EntityMemory 实体记忆 自动提取对话中提到的实体(人名、地名、组织等)并记忆

func NewEntityMemory

func NewEntityMemory(capacity int) *EntityMemory

NewEntityMemory 创建实体记忆

func (*EntityMemory) AllEntities

func (m *EntityMemory) AllEntities() map[string]*Entity

AllEntities 返回所有实体

func (*EntityMemory) Clear

func (m *EntityMemory) Clear(_ context.Context) error

func (*EntityMemory) Delete

func (m *EntityMemory) Delete(_ context.Context, id string) error

func (*EntityMemory) Get

func (m *EntityMemory) Get(_ context.Context, id string) (*coremem.Entry, error)

func (*EntityMemory) GetEntity

func (m *EntityMemory) GetEntity(name string) *Entity

GetEntity 获取实体信息

func (*EntityMemory) Save

func (m *EntityMemory) Save(_ context.Context, entry coremem.Entry) error

func (*EntityMemory) SaveBatch

func (m *EntityMemory) SaveBatch(ctx context.Context, entries []coremem.Entry) error

func (*EntityMemory) Search

func (m *EntityMemory) Search(_ context.Context, query coremem.SearchQuery) ([]coremem.Entry, error)

func (*EntityMemory) Stats

func (m *EntityMemory) Stats() coremem.MemoryStats

type SummaryMemory

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

SummaryMemory 摘要记忆 当记忆条目超过阈值时,使用 LLM 将旧记忆压缩为摘要

func NewSummaryMemory

func NewSummaryMemory(provider llm.Provider, model string, maxEntries int) *SummaryMemory

NewSummaryMemory 创建摘要记忆 maxEntries: 超过此数量时触发摘要压缩

func (*SummaryMemory) Clear

func (m *SummaryMemory) Clear(_ context.Context) error

func (*SummaryMemory) Delete

func (m *SummaryMemory) Delete(_ context.Context, id string) error

func (*SummaryMemory) Get

func (*SummaryMemory) Save

func (m *SummaryMemory) Save(ctx context.Context, entry coremem.Entry) error

func (*SummaryMemory) SaveBatch

func (m *SummaryMemory) SaveBatch(ctx context.Context, entries []coremem.Entry) error

func (*SummaryMemory) Search

Search 搜索时会将摘要作为第一条结果返回

func (*SummaryMemory) Stats

func (m *SummaryMemory) Stats() coremem.MemoryStats

func (*SummaryMemory) Summary

func (m *SummaryMemory) Summary() string

Summary 返回当前摘要内容

type WindowMemory

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

WindowMemory 滑动窗口记忆 只保留最近 N 条对话记录,超出时自动移除最旧的

func NewWindowMemory

func NewWindowMemory(windowSize int) *WindowMemory

NewWindowMemory 创建滑动窗口记忆 windowSize: 窗口大小(保留的最大条目数)

func (*WindowMemory) Clear

func (m *WindowMemory) Clear(_ context.Context) error

func (*WindowMemory) Delete

func (m *WindowMemory) Delete(_ context.Context, id string) error

func (*WindowMemory) Get

func (m *WindowMemory) Get(_ context.Context, id string) (*coremem.Entry, error)

func (*WindowMemory) Save

func (m *WindowMemory) Save(_ context.Context, entry coremem.Entry) error

func (*WindowMemory) SaveBatch

func (m *WindowMemory) SaveBatch(ctx context.Context, entries []coremem.Entry) error

func (*WindowMemory) Search

func (m *WindowMemory) Search(_ context.Context, query coremem.SearchQuery) ([]coremem.Entry, error)

func (*WindowMemory) Stats

func (m *WindowMemory) Stats() coremem.MemoryStats

Directories

Path Synopsis
Package store 提供跨会话持久记忆存储
Package store 提供跨会话持久记忆存储

Jump to

Keyboard shortcuts

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