用途
forget 用于从 agentmemory 中删除用户选定的持久记忆。当用户表达“忘掉这个”“删除记忆”等意图时使用。
该操作是破坏性的且不可逆,因此必须先展示将要删除的内容并获得用户明确确认,才能执行删除。
主要能力
- 通过 memory_smart_search 按用户文本搜索记忆,targetLayer 设为 memory,limit 为 20,可指定项目/智能体范围。
- 展示匹配到的 memory id、标题和范围,对敏感值进行脱敏。
- 在获得明确同意后,通过 memory_governance_delete 按逗号分隔的 memoryIds 删除,并可附带 reason(默认为插件技能请求)。
- 检查响应中的 deleted、notFound 和 failed 字段,分别报告实际删除和未解决的 id。
使用方式
快速开始示例:
搜索:
memory_smart_search { "query": "old api key in config", "targetLayer": "memory", "limit": 20 }
展示匹配项,获得“是”后删除:
memory_governance_delete { "memoryIds": "abc12345,def67890", "reason": "user privacy request" }
预期输出:
Found 2 matching memories. Confirmed. Deleted 2 memories.
工作流程:
- 使用 memory_smart_search,以用户文本作为 query,targetLayer 为 "memory",limit 为 20,并带上请求的项目/智能体范围。这些是选定的相关性匹配,并非完整清单。
- 展示匹配结果:memory id、标题和范围。对秘密值进行脱敏。请求明确确认。不要在沉默或含糊的“随便”下继续。
- 确认后,调用 memory_governance_delete,memoryIds 为逗号分隔字符串,reason 可选(默认为插件技能请求)。
- 检查响应中的 deleted、notFound 和 failed。分别报告实际删除和未解决的 id。重试失败请求前先重新检查所选 id;中断的响应可能隐藏已完成的写入。
适用场景
- 用户主动要求删除某些持久记忆。
- 涉及用户隐私请求的记忆清理。
限制
- 此操作不支持删除观察记录或整个会话。在继续前需说明这一限制;绝不能将选定记忆的删除标注为完整会话清除。不要传入 observation ID 或 sessionId。
- 课程(lessons)是分开的:使用 memory_lesson_delete 及其 lessonId 删除;memory_governance_delete 不会触碰课程。
- 必须按 memory id 删除,绝不能使用裸 session。
反模式
错误:搜索返回匹配后,立即调用 memory_governance_delete,而不展示匹配或等待确认。
正确:列出匹配项,询问“删除这 2 条吗?(是/否)”,仅在明确回答“是”后删除。
检查清单
- 在任何删除前已向用户展示匹配项。
- 已收到明确的“是”,而非假设。
- memoryIds 使用搜索得到的真实 id,而非裸 sessionId。
- 最终消息说明实际删除的数量。
另见
- remember:写入侧;forget 是其撤销操作。
- recall:在删除前查找确切的 memory id。
故障排查
如果 memory_smart_search 或 memory_governance_delete 不可用,请参阅 TROUBLESHOOTING.md。