随着对话不断写入,长期记忆会出现重复、表述不一致、可合并或已过时的情况。记忆整理(Dream)在后台异步对已入库的长期记忆和原始消息二次提炼、归并、去重,产出可应用的整理动作,让记忆库长期保持精炼一致。支持先生成提案再人工确认,以及达阈值自动应用两种模式。
工作原理
记忆整理(Dream)以记忆库中的数据为输入,由服务在后台分析并产出整理动作。按整理对象不同,任务分为三种类型。其中 memory 类型任务的动作会回写记忆库;skill / profile 类型任务的动作仅作为独立事件产出,不写入记忆库,由调用方按需消费。
taskType | 整理对象 | 产出动作类型 |
| 长期记忆:改写、合并、去重、删除过时项。动作应用后直接更新记忆库。 |
|
| 从历史交互中提取可复用的技能。动作以事件形式产出,不写入记忆库。 |
|
| 沉淀结构化用户画像。动作以事件形式产出,不写入记忆库。 |
|
根据业务对整理结果的信任度,可选择两种应用模式。
applyMode | 行为 |
| 整理只生成 |
| 达到置信度阈值( |
applyMode 仅支持 taskType=memory。传 skill / profile 时会返回 403 错误(applyMode is not supported for taskType=skill|profile)。skill / profile 任务的动作(EMIT_SKILL / EMIT_PROFILE)作为事件产出,不写入记忆库,由调用方自行消费处理,无 apply 流程。
快速开始
在 proposal 模式下,一次完整流程从创建整理任务到应用动作依次调用以下 4 个接口。整理任务的状态流转为:queued → running → planning →(可选 applying)→ completed,其他终态包括 completed_with_failures、failed、cancelled。
步骤 1:创建整理任务
POST /CreateMemoryDreamTask
{
"memoryStoreName": "agent_memory",
"scopes": [ { "appId": "app-001", "tenantId": "user-001" } ],
"taskType": "memory",
"applyMode": "proposal"
}响应:
{
"memoryStoreName": "agent_memory",
"dreamId": "2a528008111f5dc3500c73fd965089f7",
"status": "queued",
"createdAt": "2026-06-17T07:21:25.329Z"
}步骤 2:轮询任务状态
POST /GetMemoryDreamTask
{ "memoryStoreName": "agent_memory", "dreamId": "2a528008111f5dc3500c73fd965089f7" }任务刚创建时整理任务索引可能仍在建立,此时 GetMemoryDreamTask 可能短暂返回 409(错误信息 dream task index is still building, please retry shortly),稍后重试即可。
响应(completed):
{
"dreamId": "2a528008111f5dc3500c73fd965089f7",
"taskType": "memory",
"applyMode": "proposal",
"status": "completed",
"actions": { "total": 2, "proposed": 2, "applied": 0, "skipped": 0, "failed": 0 },
"input": { "sessionCount": 1, "messageCount": 1, "memoryCount": 2, "incremental": false },
"finishedAt": "2026-06-17T07:21:32.276Z"
}步骤 3:查看动作提案
POST /ListMemoryDreamActions
{ "memoryStoreName": "agent_memory", "dreamId": "2a528008111f5dc3500c73fd965089f7", "limit": 20 }响应:
{
"dreamId": "2a528008111f5dc3500c73fd965089f7",
"actions": [
{
"actionId": "968768529cdfde8d56686a71e1c28227",
"action": "UPDATE",
"status": "proposed",
"targetMemoryId": "d16fd038835d89ae8586f7814e5256c1",
"newMemory": { "text": "User prefers concise responses.", "unitType": "atomic_fact" },
"reason": "改写为更准确的 atomic_fact 表述。",
"confidence": 0.95
}
]
}动作主要字段如下:
字段 | 说明 |
| 动作 ID,应用时使用。 |
| 动作类型: |
| 动作状态: |
| 动作作用的 Scope 与目标记忆 ID( |
| 新记忆内容( |
| 模型给出的动作理由。 |
| 置信度, |
步骤 4:应用动作
POST /ApplyMemoryDreamActions
{
"memoryStoreName": "agent_memory",
"dreamId": "2a528008111f5dc3500c73fd965089f7",
"actionIds": ["968768529cdfde8d56686a71e1c28227", "a0f4715245920ea7b6a34c1828c6f1ae"]
}响应:
{
"dreamId": "2a528008111f5dc3500c73fd965089f7",
"applied": 2,
"failed": 0,
"results": [
{ "actionId": "968768529cdfde8d56686a71e1c28227", "status": "applied", "memoryId": "bd14a67ed215c114896325d912c8fa71" }
]
}关键参数
下表列出创建整理任务时的关键参数。各参数的取值范围详见 限制与注意事项。
参数 | 说明 |
| 待整理的 Scope 列表,必填,最多 20 个。 |
| 应用动作时的动作 ID 列表, |
| 自动应用阈值。键为 |
| 整理结果归属: |
|
|
| 限定整理的消息时间范围。 |
| 单次整理最多处理的 Session 数上限。 |
| 单次整理最多处理的 Message 数上限。 |
| 单次整理最多处理的 Memory 数上限。 |
| Scope 展开后的最大数量上限。 |
| 自定义整理指令,最长 4000 字符。 |
使用建议
在线链路不要阻塞等待整理结果。整理任务为后台异步执行,通过轮询
GetMemoryDreamTask获取进度。生产环境优先使用
proposal模式,人工或程序确认后再apply;对结果信任度足够时,可对add/update/merge设置合理的confidenceThresholds阈值,并启用safe_auto模式。定时整理使用
incremental=true,避免每次全量重新处理。