memory

package
v0.3.5 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package memory 提供 Agent 记忆管理功能

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	MaxRecentRounds   int // 保留最近几轮讨论,默认 3
	MaxKeyFacts       int // 最大关键事实数,默认 20
	MaxSummaryLength  int // 摘要最大字数,默认 300
	CompressThreshold int // 触发压缩的轮次数,默认 5
}

Config 记忆管理配置

func DefaultConfig

func DefaultConfig() Config

DefaultConfig 默认配置

type DiscussionInput

type DiscussionInput struct {
	AgentName string
	Role      string
	Content   string
}

DiscussionInput 讨论输入(用于关键点提取)

type EntryType

type EntryType string

EntryType 记忆条目类型

const (
	EntryTypeFact     EntryType = "fact"     // 事实
	EntryTypeOpinion  EntryType = "opinion"  // 观点
	EntryTypeDecision EntryType = "decision" // 决策
)

type FileStorage

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

FileStorage 文件存储(按股票隔离)

func NewFileStorage

func NewFileStorage(dataDir string) *FileStorage

NewFileStorage 创建文件存储

func (*FileStorage) Delete

func (s *FileStorage) Delete(stockCode string) error

Delete 删除股票记忆

func (*FileStorage) Invalidate

func (s *FileStorage) Invalidate(stockCode string)

Invalidate 清除缓存

func (*FileStorage) List

func (s *FileStorage) List() ([]string, error)

List 列出所有股票记忆

func (*FileStorage) Load

func (s *FileStorage) Load(stockCode string) (*StockMemory, error)

Load 加载股票记忆

func (*FileStorage) Save

func (s *FileStorage) Save(mem *StockMemory) error

Save 保存股票记忆

type GseTokenizer

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

GseTokenizer 基于 GSE 的分词器(纯 Go 实现,无 CGO 依赖)

func NewJiebaTokenizer

func NewJiebaTokenizer() *GseTokenizer

NewJiebaTokenizer 创建分词器(保持函数名兼容)

func (*GseTokenizer) Cut

func (t *GseTokenizer) Cut(text string) []string

Cut 分词

func (*GseTokenizer) Extract

func (t *GseTokenizer) Extract(text string, topK int) []string

Extract 提取关键词(使用 TF-IDF)

func (*GseTokenizer) Free

func (t *GseTokenizer) Free()

Free 释放资源(GSE 不需要手动释放,保持接口兼容)

type LLMSummarizer

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

LLMSummarizer 基于 LLM 的摘要生成器

func NewLLMSummarizer

func NewLLMSummarizer(llm model.LLM, tokenizer Tokenizer) *LLMSummarizer

NewLLMSummarizer 创建 LLM 摘要生成器

func (*LLMSummarizer) ExtractFacts

func (s *LLMSummarizer) ExtractFacts(ctx context.Context, content, agentName string) ([]MemoryEntry, error)

ExtractFacts 从讨论内容中提取关键事实

func (*LLMSummarizer) ExtractKeyPoints

func (s *LLMSummarizer) ExtractKeyPoints(ctx context.Context, discussions []DiscussionInput) ([]string, error)

ExtractKeyPoints 从讨论中智能提取关键点

func (*LLMSummarizer) SummarizeRounds

func (s *LLMSummarizer) SummarizeRounds(ctx context.Context, rounds []RoundMemory) (string, error)

SummarizeRounds 压缩多轮讨论为摘要

type Manager

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

Manager 记忆管理器

func NewManager

func NewManager(dataDir string) *Manager

NewManager 创建记忆管理器(无 LLM,摘要功能禁用)

func NewManagerWithConfig

func NewManagerWithConfig(dataDir string, config Config) *Manager

NewManagerWithConfig 使用自定义配置创建记忆管理器

func (*Manager) AddFacts

func (m *Manager) AddFacts(mem *StockMemory, facts []MemoryEntry)

AddFacts 添加关键事实

func (*Manager) AddRound

func (m *Manager) AddRound(ctx context.Context, mem *StockMemory, query, consensus string, keyPoints []string) error

AddRound 添加新一轮讨论并触发压缩检查

func (*Manager) BuildContext

func (m *Manager) BuildContext(mem *StockMemory, currentQuery string) string

BuildContext 构建上下文(核心方法)

func (*Manager) Close

func (m *Manager) Close()

Close 释放资源

func (*Manager) DeleteMemory

func (m *Manager) DeleteMemory(stockCode string) error

DeleteMemory 删除指定股票的记忆

func (*Manager) ExtractAndAddFacts

func (m *Manager) ExtractAndAddFacts(ctx context.Context, mem *StockMemory, content, source string) error

ExtractAndAddFacts 从内容中提取并添加事实

func (*Manager) ExtractKeyPoints

func (m *Manager) ExtractKeyPoints(ctx context.Context, discussions []DiscussionInput) ([]string, error)

ExtractKeyPoints 智能提取讨论关键点

func (*Manager) GetOrCreate

func (m *Manager) GetOrCreate(stockCode, stockName string) (*StockMemory, error)

GetOrCreate 获取或创建股票记忆

func (*Manager) Save

func (m *Manager) Save(mem *StockMemory) error

Save 保存记忆(同步)

func (*Manager) SaveAsync

func (m *Manager) SaveAsync(mem *StockMemory)

SaveAsync 异步保存记忆(不阻塞)

func (*Manager) SetLLM

func (m *Manager) SetLLM(llm model.LLM)

SetLLM 设置 LLM(启用摘要功能)

type MemoryEntry

type MemoryEntry struct {
	ID        string    `json:"id"`
	Type      EntryType `json:"type"`
	Content   string    `json:"content"`
	Source    string    `json:"source"`   // 来源 Agent
	Keywords  []string  `json:"keywords"` // 关键词(用于文本匹配)
	Timestamp int64     `json:"timestamp"`
	Weight    float64   `json:"weight"` // 重要性权重 0-1
}

MemoryEntry 记忆条目

type Relevance

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

Relevance 相关性计算器

func NewRelevance

func NewRelevance(tokenizer Tokenizer) *Relevance

NewRelevance 创建相关性计算器

func (*Relevance) FindRelevant

func (r *Relevance) FindRelevant(facts []MemoryEntry, query string, limit int) []MemoryEntry

FindRelevant 查找相关的记忆条目

type RoundMemory

type RoundMemory struct {
	Round     int      `json:"round"`
	Query     string   `json:"query"`      // 用户问题
	Consensus string   `json:"consensus"`  // 本轮结论
	KeyPoints []string `json:"key_points"` // 要点
	Timestamp int64    `json:"timestamp"`
}

RoundMemory 单轮讨论记忆

type ScoredEntry

type ScoredEntry struct {
	Entry MemoryEntry
	Score float64
}

ScoredEntry 带分数的记忆条目

type StockMemory

type StockMemory struct {
	StockCode    string        `json:"stock_code"`
	StockName    string        `json:"stock_name"`
	Summary      string        `json:"summary"`       // 历史摘要
	KeyFacts     []MemoryEntry `json:"key_facts"`     // 关键事实
	RecentRounds []RoundMemory `json:"recent_rounds"` // 最近几轮讨论
	TotalRounds  int           `json:"total_rounds"`  // 总讨论轮次
	CreatedAt    int64         `json:"created_at"`
	UpdatedAt    int64         `json:"updated_at"`
}

StockMemory 单只股票的会话记忆(按股票隔离)

func NewStockMemory

func NewStockMemory(stockCode, stockName string) *StockMemory

NewStockMemory 创建新的股票记忆

type Storage

type Storage interface {
	Load(stockCode string) (*StockMemory, error)
	Save(mem *StockMemory) error
	Delete(stockCode string) error
	List() ([]string, error)
}

Storage 存储接口

type Summarizer

type Summarizer interface {
	SummarizeRounds(ctx context.Context, rounds []RoundMemory) (string, error)
	ExtractFacts(ctx context.Context, content, agentName string) ([]MemoryEntry, error)
	ExtractKeyPoints(ctx context.Context, discussions []DiscussionInput) ([]string, error)
}

Summarizer 摘要生成器接口

type Tokenizer

type Tokenizer interface {
	Extract(text string, topK int) []string
	Cut(text string) []string
}

Tokenizer 分词器接口

Jump to

Keyboard shortcuts

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