Documentation
¶
Overview ¶
Package memory provides a simple SQLite-based memory system for AI Agent.
Quick Start:
db, err := memory.InitDB(memory.DefaultConfig())
if err != nil {
log.Fatal(err)
}
defer memory.Close(db)
if err := memory.Migrate(db); err != nil {
log.Fatal(err)
}
// Use the database
item := memory.MemoryItem{
ID: memory.GenerateID(),
Content: "Hello, World!",
// ... other fields
}
db.Create(&item)
Features:
- Multi-namespace storage (transient, profile, action, knowledge)
- Full-text search with FTS5
- TTL/expiration management (fixed, sliding, manual)
- Optimistic locking for concurrent updates
- Idempotent writes with dedupe_key
- LLM-based automatic memory extraction
Index ¶
- Constants
- Variables
- type Config
- type DecisionEngine
- type DecisionRequest
- type DecisionResult
- type DecisionType
- type ErrorCode
- type ExecutionResult
- type ExtractPolicy
- type ExtractRequest
- type ExtractResult
- type ExtractedMemory
- type ExtractionPrompt
- type Extractor
- type ForgetRequest
- type IsolationMeta
- type ItemStatus
- type ListRequest
- type MemoryDecision
- type MemoryError
- type MemoryHit
- type MemoryItem
- type MemoryService
- type NamespacePolicy
- type NamespaceType
- type PolicyManager
- type RecallRequest
- type RememberRequest
- type ServiceConfig
- type SimilarMemory
- type SourceType
- type TTLPolicy
- type UpdateRequest
Constants ¶
View Source
const ( // Namespace types (simplified 4 categories) NamespaceTransient = model.NamespaceTypeTransient // Short-term context NamespaceProfile = model.NamespaceTypeProfile // User preferences NamespaceAction = model.NamespaceTypeAction // Tasks/todos NamespaceKnowledge = model.NamespaceTypeKnowledge // Facts/skills // Item statuses StatusActive = model.ItemStatusActive StatusExpired = model.ItemStatusExpired StatusArchived = model.ItemStatusArchived StatusDeleted = model.ItemStatusDeleted // Source types SourceUser = model.SourceTypeUser SourceAgent = model.SourceTypeAgent SourceImport = model.SourceTypeImport SourceSystem = model.SourceTypeSystem // TTL policies TTLFixed = model.TTLPolicyFixed TTLSliding = model.TTLPolicySliding TTLManual = model.TTLPolicyManual // Decision types DecisionAdd = service.DecisionAdd DecisionUpdate = service.DecisionUpdate DecisionDelete = service.DecisionDelete DecisionIgnore = service.DecisionIgnore DecisionMerge = service.DecisionMerge )
Enum constants
View Source
const ( CodeNotFound = service.CodeNotFound CodeConflict = service.CodeConflict CodeDuplicate = service.CodeDuplicate CodeValidation = service.CodeValidation CodeLLM = service.CodeLLM CodeInternal = service.CodeInternal )
Variables ¶
View Source
var ( // Configuration DefaultConfig = store.DefaultConfig // Initialization (set Config.AutoMigrate=true to run migration automatically) InitDB = store.InitDB Close = store.Close )
Database functions
View Source
var ( ErrNotFound = service.ErrNotFound ErrConflict = service.ErrConflict ErrDuplicate = service.ErrDuplicate ErrValidation = service.ErrValidation ErrLLM = service.ErrLLM // 结构化错误构造与解析 ErrorNew = service.ErrorNew ErrorWrap = service.ErrorWrap ErrorAs = service.ErrorAs )
View Source
var ( // Create new service/extractor instances NewMemoryService = service.NewMemoryService NewPolicyManager = service.NewPolicyManager NewExtractor = service.NewExtractor NewDecisionEngine = service.NewDecisionEngine // QuickExtract is a convenience function for code-only extraction. // Pass LLM config directly without DB setup. QuickExtract = service.QuickExtract // ApplyExtractPolicy filters extracted rows without persisting (for hosts/tests). ApplyExtractPolicy = service.ApplyExtractPolicy // DefaultTransientEphemeralSubstrings are substring cues for noisy transient memories. DefaultTransientEphemeralSubstrings = service.DefaultTransientEphemeralSubstrings )
Service functions
View Source
var ( SetLogger = service.SetLogger GetLogger = service.GetLogger // Context-based isolation helpers WithIsolation = service.WithIsolation IsolationFromContext = service.IsolationFromContext )
Logging allows users to configure their own slog handler. Example:
handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelDebug})
memory.SetLogger(slog.New(handler))
View Source
var BuiltinExtractionPrompt = service.BuiltinExtractionPrompt
BuiltinExtractionPrompt 为内建记忆提取模板(与 service 包一致)。
View Source
var ( // From model package GenerateID = model.GenerateID )
Utility functions
Functions ¶
This section is empty.
Types ¶
type ExtractionPrompt ¶
type ExtractionPrompt = model.ExtractionPrompt
LLM / extraction (DB 模型,常用者保留在根包)
type MemoryError ¶
type MemoryError = service.MemoryError
Error types(实现位于 service 包,根包重导出以单 import 使用)
Directories
¶
| Path | Synopsis |
|---|---|
|
examples
|
|
|
01_basic
command
Example: 基础使用示例 展示memory系统的核心功能:记住、回忆、更新、遗忘
|
Example: 基础使用示例 展示memory系统的核心功能:记住、回忆、更新、遗忘 |
|
02_dedupe
command
Example: 重复检测示例 展示如何使用dedupe_key防止重复存储
|
Example: 重复检测示例 展示如何使用dedupe_key防止重复存储 |
|
03_ttl
command
Example: TTL(生存时间)示例 展示如何使用TTL自动过期记忆
|
Example: TTL(生存时间)示例 展示如何使用TTL自动过期记忆 |
|
04_callback
command
Example: 生命周期回调示例 展示如何使用OnCreated, OnUpdated, OnDeleted等回调
|
Example: 生命周期回调示例 展示如何使用OnCreated, OnUpdated, OnDeleted等回调 |
|
05_extract
command
Example: LLM记忆提取示例 展示如何使用Extractor从对话中提取记忆
|
Example: LLM记忆提取示例 展示如何使用Extractor从对话中提取记忆 |
|
06_policy
command
Example: Namespace策略管理示例 展示如何使用PolicyManager管理不同namespace的策略
|
Example: Namespace策略管理示例 展示如何使用PolicyManager管理不同namespace的策略 |
|
08_extract_demo
command
Example: 基于 LLM 的完整记忆提取演示(多轮对话、落库、打印记录)
|
Example: 基于 LLM 的完整记忆提取演示(多轮对话、落库、打印记录) |
|
Package model defines GORM models for the memory system.
|
Package model defines GORM models for the memory system. |
|
Package service provides memory decision engine for intelligent memory management.
|
Package service provides memory decision engine for intelligent memory management. |
|
Package store provides database initialization and migration utilities.
|
Package store provides database initialization and migration utilities. |
Click to show internal directories.
Click to hide internal directories.