> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # WorkingMemory `WorkingMemory` 是一種**輸入處理器**,會將工作記憶體資料注入為系統訊息。它會從儲存空間擷取持久保存的資訊,再將其格式化為 LLM 的指示,讓 Agent 能跨對話維持使用者相關情境。 ## 使用範例 ```typescript import { WorkingMemory } from '@mastra/core/processors' const processor = new WorkingMemory({ storage: memoryStorage, scope: 'resource', template: { format: 'markdown', content: `# User Profile - **Name**: - **Preferences**: - **Goals**: `, }, }) ``` ## 建構函式參數 **options** (`Options`): 工作記憶體處理器的設定選項 **options.storage** (`MemoryStorage`): 用來擷取工作記憶體資料的儲存執行個體 **options.template** (`WorkingMemoryTemplate`): 定義工作記憶體格式與結構的範本 **options.template.format** (`'markdown' | 'json'`): 工作記憶體內容的格式 **options.template.content** (`string`): 定義工作記憶體資料結構的範本內容 **options.scope** (`'thread' | 'resource'`): 工作記憶體的範圍。'thread' 限定為目前對話串;'resource' 會在該資源的所有對話串間共用 **options.useVNext** (`boolean`): 使用改良指引的下一代指示格式 **options.readOnly** (`boolean`): 設為 true 時,工作記憶體會作為唯讀情境提供。資料會注入對話,但不會包含 updateWorkingMemory Tool 或更新指示。適合只應參照工作記憶體、不應加以修改的 Agent。 **options.templateProvider** (`{ getWorkingMemoryTemplate(args: { memoryConfig?: MemoryConfig }): Promise }`): 用於在執行階段解析範本的動態範本 Provider **options.logger** (`IMastraLogger`): 選用的結構化記錄器執行個體 ## 回傳值 **id** (`string`): 設為 'working-memory' 的處理器識別碼 **name** (`string`): 設為 'WorkingMemory' 的處理器顯示名稱 **defaultWorkingMemoryTemplate** (`string`): 未提供自訂範本時使用的預設 markdown 範本 **processInput** (`(args: { messages: MastraDBMessage[]; messageList: MessageList; abort: (reason?: string) => never; requestContext?: RequestContext }) => Promise`): 擷取工作記憶體,並將它作為系統訊息加入訊息清單 ## 延伸使用範例 ```typescript import { Agent } from '@mastra/core/agent' import { WorkingMemory, MessageHistory } from '@mastra/core/processors' import { PostgresStorage } from '@mastra/pg' const storage = new PostgresStorage({ connectionString: process.env.DATABASE_URL, }) export const agent = new Agent({ id: 'personalized-agent', name: 'personalized-agent', instructions: 'You are a helpful assistant that remembers user preferences', model: 'openai/gpt-5.6-sol', inputProcessors: [ new WorkingMemory({ storage, scope: 'resource', template: { format: 'markdown', content: `# User Information - **Name**: - **Location**: - **Preferences**: - **Communication Style**: - **Current Projects**: `, }, }), new MessageHistory({ storage, lastMessages: 50 }), ], outputProcessors: [new MessageHistory({ storage })], }) ``` ## JSON 格式範例 ```typescript import { WorkingMemory } from '@mastra/core/processors' const processor = new WorkingMemory({ storage: memoryStorage, scope: 'resource', template: { format: 'json', content: JSON.stringify({ user: { name: { type: 'string' }, preferences: { type: 'object' }, goals: { type: 'array' }, }, }), }, }) ``` ## 行為 ### 輸入處理 1. 從請求情境擷取 `threadId` 和 `resourceId` 2. 依範圍從下列其中一處擷取工作記憶體: - 對話串中繼資料(`scope: 'thread'`) - 資源記錄(`scope: 'resource'`) 3. 解析範本(來源可以是 Provider、選項或預設值) 4. 依模式產生系統指示: - **一般模式**:包含儲存/更新資訊的指引、範本結構與目前資料 - **唯讀模式**(`readOnly: true`):只包含目前資料作為情境,不包含更新指示 5. 將指示作為帶有 `source: 'memory'` 標記的系統訊息加入 ### 更新工作記憶體 工作記憶體是透過 Memory 類別提供的 `updateWorkingMemory` Tool 更新,而非透過此處理器。此處理器只負責將目前的工作記憶體狀態注入對話。 ### 預設範本 若未提供範本,處理器會使用預設 markdown 範本,包含下列欄位: - 名字、姓氏 - 地點、職業 - 興趣、目標 - 事件、事實、專案 ## 相關資源 - [防護欄](https://mastra.zisheng.pro/zh-TW/docs/agents/guardrails)