본문으로 건너뛰기

Memory 클래스

그만큼Memory클래스는 Mastra의 대화 기록 및 스레드 기반 메시지 저장을 관리하기 위한 안정적인 시스템을 제공합니다. 이는 대화의 지속적인 저장, 의미론적 검색 기능 및 효율적인 메시지 검색을 가능하게 합니다. 대화 기록을 위한 저장소 공급자를 구성해야 하며, 의미적 회상을 활성화하는 경우 벡터 저장소와 임베더도 제공해야 합니다.

사용예
사용예에 대한 직접 링크

src/mastra/agents/test-agent.ts
import { Memory } from '@mastra/memory'
import { Agent } from '@mastra/core/agent'

export const agent = new Agent({
id: 'test-agent',
name: 'test-agent',
instructions: 'You are an agent with memory.',
model: 'openai/gpt-5.6-sol',
memory: new Memory({
options: {
workingMemory: {
enabled: true,
},
},
}),
})
노트

Agent에서 workingMemory를 활성화하려면 기본 Mastra 인스턴스에 스토리지 Provider가 구성되어 있어야 합니다. 자세한 내용은 Mastra 클래스를 참조하세요.

생성자 매개변수
생성자 매개변수에 대한 직접 링크

storage?:

MastraCompositeStore
Memory 데이터를 영구 저장하기 위한 스토리지 구현입니다. 제공하지 않으면 기본값은 new DefaultStorage({ config: { url: "file:memory.db" } })입니다.

vector?:

MastraVector | false
의미 체계 검색 기능을 위한 벡터 저장소입니다. 벡터 작업을 비활성화하려면 false로 설정합니다.

embedder?:

EmbeddingModel<string> | EmbeddingModelV2<string>
벡터 임베딩을 위한 임베더 인스턴스입니다. 의미 체계 회상을 활성화할 때 필요합니다.

options?:

MemoryConfig
Memory 구성 옵션입니다.

lastMessages?:

number | false
컨텍스트에 포함할 가장 최근 메시지 수입니다. 메시지 기록 기능 전체를 비활성화하려면 false로 설정합니다(메시지가 컨텍스트에 로드되거나 저장되지 않음). 제한 없이 모든 메시지를 조회하려면 Number.MAX_SAFE_INTEGER를 사용합니다. 새 메시지를 저장하지 않고 메시지만 로드하려면 readOnly 옵션을 사용합니다.

readOnly?:

boolean
When true, prevents memory from saving new messages and provides working memory as read-only context (without the updateWorkingMemory tool). Useful for read-only operations like previews, internal routing agents, or sub agents that should reference but not modify memory.

semanticRecall?:

boolean | { topK: number; messageRange: number | { before: number; after: number }; scope?: 'thread' | 'resource' }
메시지 기록에서 의미 체계 검색을 활성화합니다. 불리언 또는 구성 옵션이 포함된 객체일 수 있습니다. 활성화하려면 벡터 저장소와 임베더를 모두 구성해야 합니다. topK의 기본값은 4이고, messageRange의 기본값은 {before: 1, after: 1}입니다.

workingMemory?:

WorkingMemory
작업 Memory 기능의 구성입니다. { enabled: boolean; template?: string; schema?: ZodObject<any> | JSONSchema7; scope?: 'thread' | 'resource' }이거나, 비활성화하려면 { enabled: boolean }일 수 있습니다.

observationalMemory?:

boolean | ObservationalMemoryOptions
긴 컨텍스트의 Agent형 Memory를 위한 Observational Memory를 활성화합니다. 기본값을 사용하려면 true로 설정하고, 토큰 예산, Model 및 범위를 사용자 정의하려면 구성 객체를 전달합니다. 구성에 관한 자세한 내용은 Observational Memory 레퍼런스를 참조하세요.

generateTitle?:

boolean | { model: DynamicArgument<MastraLanguageModel>; instructions?: DynamicArgument<string> }
대화 기록을 바탕으로 스레드 제목을 자동 생성할지 제어합니다. 불리언 또는 사용자 정의 Model과 지침이 포함된 객체일 수 있습니다.

보고
보고에 대한 직접 링크

memory:

Memory
지정된 구성으로 생성된 새 Memory 인스턴스입니다.

확장된 사용 예
확장된 사용 예에 대한 직접 링크

src/mastra/agents/test-agent.ts
import { Memory } from '@mastra/memory'
import { Agent } from '@mastra/core/agent'
import { LibSQLStore, LibSQLVector } from '@mastra/libsql'

export const agent = new Agent({
name: 'test-agent',
instructions: 'You are an agent with memory.',
model: 'openai/gpt-5.6-sol',
memory: new Memory({
storage: new LibSQLStore({
id: 'test-agent-storage',
url: 'file:./working-memory.db',
}),
vector: new LibSQLVector({
id: 'test-agent-vector',
url: 'file:./vector-memory.db',
}),
options: {
lastMessages: 10,
semanticRecall: {
topK: 3,
messageRange: 2,
scope: 'resource',
},
workingMemory: {
enabled: true,
},
generateTitle: true,
},
}),
})

인덱스 구성이 포함된 PostgreSQL
인덱스 구성이 포함된 PostgreSQL에 대한 직접 링크

src/mastra/agents/pg-agent.ts
import { Memory } from '@mastra/memory'
import { Agent } from '@mastra/core/agent'
import { ModelRouterEmbeddingModel } from '@mastra/core/llm'
import { PgStore, PgVector } from '@mastra/pg'

export const agent = new Agent({
name: 'pg-agent',
instructions: 'You are an agent with optimized PostgreSQL memory.',
model: 'openai/gpt-5.6-sol',
memory: new Memory({
storage: new PgStore({
id: 'pg-agent-storage',
connectionString: process.env.DATABASE_URL,
}),
vector: new PgVector({
id: 'pg-agent-vector',
connectionString: process.env.DATABASE_URL,
}),
embedder: new ModelRouterEmbeddingModel('openai/text-embedding-3-small'),
options: {
lastMessages: 20,
semanticRecall: {
topK: 5,
messageRange: 3,
scope: 'resource',
indexConfig: {
type: 'hnsw', // Use HNSW for better performance
metric: 'dotproduct', // Optimal for OpenAI embeddings
m: 16, // Number of bi-directional links
efConstruction: 64, // Construction-time candidate list size
},
},
workingMemory: {
enabled: true,
},
},
}),
})