Skip to content

refactor(memory): redesign extraction/dedup flow and add conflict-a…#225

Merged
MaojiaSheng merged 1 commit intomainfrom
refactor_memory
Feb 20, 2026
Merged

refactor(memory): redesign extraction/dedup flow and add conflict-a…#225
MaojiaSheng merged 1 commit intomainfrom
refactor_memory

Conversation

@zhoujh01
Copy link
Collaborator

@zhoujh01 zhoujh01 commented Feb 19, 2026

———
核心改动:

  1. 拆分记忆推理。如果记忆里包含了多类偏好,则拆分成多条记忆,而非单条。
  2. 由之前的LLM判断最相似记忆改成top5的记忆,包括合并、删除。删除有矛盾的记忆。【我爱吃苹果】【我不爱吃水果】这两条记忆有冲突,以最新的记忆为准。(详情见下文)
    3.以uri生成id

———

Memory Dedup 改动效果对比报告(HEAD 0e9d487 vs HEAD^ 454e727

1. 背景与目的

本次对比旨在验证 memory dedup 改动在真实对话场景下的价值,重点关注:

  1. 冲突偏好(“喜欢水果” vs “不喜欢水果”)是否能被更好地收敛;
  2. 职业更新(“程序员” -> “外卖员”)是否保持正确;
  3. 记忆结构是否更细粒度,便于后续维护和治理。

———

2. 对比范围

  • 当前版本:HEAD=0e9d487
  • 上一版本:HEAD^=454e727
  • 对比指标:
    • 每轮 commit 中 memories_extracted
    • 每轮 find 结果(两条查询)

———

———

4. 测试输入(Round 1~3)

Round 1

我是一名程序员。我爱吃苹果。我爱吃草莓。我每天早上7点起床。我通勤主要骑共享单车。我习惯在周末整理书桌。我最常用的云盘是Dropbox。我对坚
果过敏,尤其是腰果。我最近在学西班牙语。我喜欢在雨天听爵士乐。我的常用笔记软件是Obsidian。我每周三晚上会去游泳。我偏好27英寸的外接显示
器。

Round 2

我爱吃红富士苹果。我是外卖员。

Round 3

我不爱吃水果了,把之前关于喜欢水果的偏好作废。

查询:

  • 我喜欢吃什么?
  • 我是做什么工作的?

———

5. Commit 对比结果

轮次 当前版 0e9d487 上一版 454e727 解释
Round 1 memories_extracted 11 2 当前版更细粒度拆分记忆
Round 2 memories_extracted 2 2 两版行为一致
Round 3 memories_extracted 1 1 两版行为一致

———

6. Find 结果对比(关键)

6.1 查询:我喜欢吃什么?

Round 1

  • 当前版 Top1:Food preference: Likes apples and strawberries
  • 上一版 Top1:Daily life & lifestyle preferences: 7am wake-up, rides shared bike for commute, tidies desk on weekends, swims every Wednesday night, likes apples, strawberries, jazz on rainy days, uses Dropbox, Obsidian, prefers 27-inch external monitor, is learning Spanish(混合大记忆)...
  • 说明:当前版更原子化;上一版偏混合聚合。

Round 2

  • 当前版 Top1:饮食偏好:爱吃红富士苹果
  • 上一版 Top1:饮食偏好: 爱吃红富士苹果
  • 说明:两版都能识别红富士偏好。

Round 3(最关键)

  • 当前版 Top1:饮食偏好:不再喜欢吃水果
  • 上一版 Top1:饮食偏好: 爱吃红富士苹果
  • 上一版同时还返回:不再喜欢吃水果 + 爱吃苹果草莓(混合偏好)
  • 说明:当前无冲突;上一版冲突并存更明显。

———

6.2 查询:我是做什么工作的?

Round 2/3

  • 当前版 Top1:User basic info: 外卖员
  • 上一版 Top1:User basic info: 外卖员
  • 说明:职业更新链路两版都稳定,当前改动未破坏该能力。

———

7. 价值结论(基于 rerun2 真实结果)

  1. 当前版在“冲突偏好场景”的检索排序更合理:
    Round 3 时,不再喜欢吃水果 可升到 Top1(上一版仍被正向偏好压在前面)。
  2. 当前版记忆结构显著细化(Round1: 11 vs 2),有利于后续定向增删改。
  3. 关键更新能力(职业覆盖更新)保持正常,无回归。

———

8. 风险与边界

  • 冲突记忆在语义层仍可能并存(LLM 决策波动 + 召回排序影响),但当前版在此次实测中已提升“最新冲突结论优先级”。
  • 若目标是“彻底不返回旧冲突记忆”,仍需继续收紧 delete/merge 策略与召回约束。

…re delete handling

  - refactor session memory pipeline across extractor, deduplicator, and compressor
  - introduce richer dedup decisions and per-memory actions (skip/create/none, merge/delete)
  - improve dedup prompt contracts and memory merge/extraction templates
  - update storage schema/validation/vector backend to support new memory behavior
  - add examples/memory_demo.py and refresh session concept docs for the new flow
@MaojiaSheng MaojiaSheng merged commit a062199 into main Feb 20, 2026
5 checks passed
@MaojiaSheng MaojiaSheng deleted the refactor_memory branch February 20, 2026 04:11
@github-project-automation github-project-automation bot moved this from Backlog to Done in OpenViking project Feb 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants