如何用 Supermemory forget-matching 批量遗忘记忆并用 dryRun 先预览
如何用 Supermemory forget-matching 批量遗忘记忆并用 dryRun 先预览【免费下载链接】supermemoryMemory and context engine app that is extremely fast, scalable, and can be run fully locally. The Memory API for the AI era.项目地址: https://gitcode.com/GitHub_Trending/su/supermemory当某个容器containerTag即 Supermemory 中的空间里有一批记忆整体作废——比如项目取消、某段历史信息不再需要被检索到——逐条调用单条 Forget 不现实。Supermemory v4 API 提供了POST /v4/memories/forget-matching端点传一段自然语言query服务会在该容器内做语义检索由 LLM 判断哪些记忆确实与目标相关并一并软删除也可以传显式的ids列表精确遗忘那几条记忆不做任何检索。由于这是批量、破坏性操作官方文档明确建议先用dryRun: true预览会被遗忘的记忆确认后再以dryRun: false正式执行。本文按这条「先预览、后执行」的路径走一遍。适用边界v4 的 memory 端点操作的是提取后的记忆extracted memories不是原始文档。文档级的 list/get/update/delete 见 Document Operations。目前 SDK 尚未支持这些 v4 端点按文档说明现在应使用 fetch 或 cURL。所有请求需要 Bearer 方式的 API key 鉴权API key 在 Supermemory Developer Platform 创建流程见 API keys auth。执行前的两个认知点这是软删除不是物理删除。被遗忘的记忆从搜索结果中排除但仍保留在数据库中isForgottentrue。语义匹配可能选得比你预期多。query模式下的匹配是语义的写得太宽的 query 可能选中超出意图的记忆。文档建议用threshold和maxForget两个参数来限制影响范围并且永远先dryRun。第一步dryRun 预览候选记忆用 cURL 发起预览请求。$SUPERMEMORY_API_KEY是文档示例中使用的环境变量存放你的 API keyuser_123换成你要操作的容器的 containerTagcurl -X POST https://api.supermemory.ai/v4/memories/forget-matching \ -H Authorization: Bearer $SUPERMEMORY_API_KEY \ -H Content-Type: application/json \ -d { query: forget everything about Project Titan, containerTag: user_123, dryRun: true }query既可以是自然语言指令如forget everything about Project Titan也可以是裸主题如Project Titan。dryRun: true时接口只返回将会被遗忘的记忆不产生任何变更不传该参数时默认为false。各参数的作用与取值限制摘自 Memory Operations参数类型必填说明querystring二者选一*要遗忘的内容——自然语言指令或裸主题idsstring[]二者选一*要遗忘的精确记忆 id不做语义检索containerTagstring是限定操作范围的空间标签dryRunboolean否为true时只返回会被遗忘的记忆不改动数据。默认falsethresholdnumber否候选记忆的相似度下限0–1仅query模式。数值越低选得越宽。默认0.5maxForgetnumber否query 模式的安全上限——单次调用最多遗忘的条数1–500。默认100。id 模式下被忽略reasonstring否记录到每条被遗忘记忆上的forgetReason*query与ids提供其一。预览响应的关键字段是candidates{ id, memory, score }数组和count选中的记忆数dryRun状态下forgetBatchId为null。这一步的产物是candidates里的 id 列表——下一步就是用它。如果候选过多收紧范围的方式是调高threshold文档说明 lower casts a wider net即默认 0.5 以下选得更宽maxForget只限制单次执行能遗忘的上限不会减少预览展示的内容。第二步用预览中的 ids 正式执行直接带着原query执行时服务端会重新跑一遍语义匹配如果期间容器有变化执行结果可能与预览发生漂移。文档给出的做法是把 dryRun 预览拿到的ids 原样作为ids传回——遗忘就精确绑定在你审查过的那一组记忆上。curl -X POST https://api.supermemory.ai/v4/memories/forget-matching \ -H Authorization: Bearer $SUPERMEMORY_API_KEY \ -H Content-Type: application/json \ -d { ids: [abc123, def456, ghi789], containerTag: user_123, dryRun: false, reason: project cancelled }上面ids里的abc123、def456、ghi789是文档示例值实际使用时替换为第一步预览返回的候选 id。id 模式会对你传入的 id 做精确遗忘只受 500 条数组上限约束id 会对照containerTag校验未知或不属于该容器的 id 会被忽略。reason会作为forgetReason记录在每条被遗忘的记忆上建议写明原因以便追溯。如果想在正式执行前先确认一组 id 都有效还可以用ids配合dryRun: true接口会返回校验通过的集合作为candidates不做删除。代码化场景下两步可以写成 fetch 链路id 由预览结果直接映射API_KEY替换为你的 key// 1) Preview const preview await fetch(https://api.supermemory.ai/v4/memories/forget-matching, { method: POST, headers: { Authorization: Bearer ${API_KEY}, Content-Type: application/json }, body: JSON.stringify({ query: forget everything about Project Titan, containerTag: user_123, dryRun: true }) }).then((r) r.json()); // preview.candidates → [{ id, memory, score }, ...] // 2) Apply — pass the ids from the preview to forget exactly that set const result await fetch(https://api.supermemory.ai/v4/memories/forget-matching, { method: POST, headers: { Authorization: Bearer ${API_KEY}, Content-Type: application/json }, body: JSON.stringify({ ids: preview.candidates.map((c) c.id), containerTag: user_123, dryRun: false, reason: project cancelled }) }).then((r) r.json()); // result.forgotten → [{ id, memory, score }, ...] // result.forgetBatchId → tagged on every forgotten memory for traceability解读执行响应下面是文档给出的示例响应数值与批次号均为文档示例不是固定预期{ dryRun: false, count: 3, forgetBatchId: VcuQoGRz4hA4ak5Xu6DRUN, summary: Forgot 3 memories about \Project Titan\., forgotten: [ { id: mem_1, memory: Project Titan ships in Q3, score: 0.82 } ] }字段类型说明dryRunboolean本次是预览还是真实遗忘countnumberdryRun 时是选中的记忆数执行时是已遗忘的记忆数forgetBatchIdstring | null标记在本次调用中每条被遗忘记忆上的批次 IDdryRun 时为nullsummarystring操作的一行摘要candidatesarraydryRun 时返回将会被遗忘的记忆{ id, memory, score }forgottenarray执行时返回已经被遗忘的记忆{ id, memory, score }核对要点forgotten数组的 id 应与你预览时审查过的集合一致count应等于其长度。验证结果除了响应本身文档提供了另一条验证路径——搜索侧的行为默认情况下Search 接口排除已被遗忘或已过forgetAfter有效期的记忆。对同一主题重新搜索刚才遗忘的记忆不应再出现见 Search。如果需要在事后复查被遗忘的集合在搜索时传include: { forgottenMemories: true }这些记忆会被一并返回。每条被遗忘的记忆都带有本次的forgetBatchId和reason写入的forgetReason可用于追溯某次批量操作到底动了哪些记忆。限制与边界匹配身份由服务端保障文档说明 LLM 只引用检索返回记忆的不可透传句柄因此它不可能遗忘检索结果之外的记忆整个操作都被限定在你传入的containerTag内。id 模式下maxForget不生效遗忘的正是你传入的 id 集合上限是 500 条的数组容量。query 与 ids 不能混用一次调用只提供其一。软删除意味着数据仍在库里。如果只想遗忘单条记忆用DELETE /v4/memories按id或精确content定位同样记录forgetReason两者都在 Memory Operations 中有完整参数表。下一步预览确认无误并完成批量遗忘后可以继续参考 Memory Review审批或拒绝低置信度记忆、Document Operations文档级管理和 Search查询你的记忆。【免费下载链接】supermemoryMemory and context engine app that is extremely fast, scalable, and can be run fully locally. The Memory API for the AI era.项目地址: https://gitcode.com/GitHub_Trending/su/supermemory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考