忘记我命令:清短期记忆+文档同步 #135

Closed
opened 2026-08-14 05:20:30 +00:00 by KumaAgent · 0 comments
Member

Parent

#103 第四批清单:31 条实现类落差 + 9 条待拍板(条目 3、28)

What to build

ADR-0010 拍板的"忘记我"命令在 core 里零实现——既无命令,也无任何清理路径;同时 CONTEXT.md/design.md/ADR-0010 三处都把它当既成事实援引(CONTEXT.md 甚至拿它当推导 Knowledge 归属的前提句:"忘记我仅清短期,Knowledge 与画像/事件记忆一样属长期不清"),一个不存在的机制正在给别的机制当前提。

Acceptance criteria

  • 新增用户级命令(同 _command_matcher 先例,仿"允许了解我的动态"/"不再了解我的动态"两条同意命令的形状——刻意不加权限校验,谁发的命令就清谁自己的短期记忆)
  • 只清 Delta 缓冲 + 去抖批次,锁死范围:storage.PersistentStorage.drain_delta(chat_id)(已存在,直接复用)+ 清 debounce.Debouncer._buffers(进程内存态,实例 __init__.py::_debouncer)+ 取消对应的 _pending_flushes[chat_id]
  • 不动 Outbox——它不是 ADR 说的"会话上下文",是 ADR-0013"决定要发、还没发"的在途暂存,一行只活毫秒级且 storage.recover() 启动时无条件全清,对"忘记我"几乎无语义收益;若纳入需新增 port 方法(当前只有 stage_outbox/clear_outbox,没有按 chat 清的方法),触及 port 契约,不在本片默认范围
  • "checkpoint"在本仓无指涉,显式记下而非留给实现方猜——ADR-0013 明写"ADR-0002 弃 LangGraph,也就弃了它的 checkpointer"
  • 不建 GDPR 式跨表级联删除——不删长期画像/事件/关系/向量,长期数据的"遗忘"交给三因子召回的自然遗忘曲线(画像侧这条曲线由另一片补齐,见下)
  • 不要顺带补经济 hook 前置钩子——"扣星等收费"是 host 经济 hook,core 无经济概念,这条边界符合设计
  • 显式定义群聊场景的口径(ADR/CONTEXT/design 均未定,必须在本片定死,不能默认):Delta 缓冲与去抖批次都是 per-chat,但"忘记我"是用户命令——群里一个人喊"忘记我"是否清掉整群缓冲?

原文(docs/adr/0010-operations.md「决策 → 忘记我 / 隐私」节):

"忘记我"/清除命令 = 仅清短期记忆(会话上下文/checkpoint),不删长期画像/事件/关系/向量。长期数据的"遗忘"交给三因子召回的自然遗忘曲线(低 importance + 高 age 降权)。不建 GDPR 式跨表级联删除子系统(用户为自身部署判定 YAGNI);真要清长期走 admin/DB 层。扣星等对"清除"收费 = host 经济 hook;core 无经济概念。

原文(同 ADR「拒绝了」节——三个被否决的替代方案,必须原样带入 AC 挡住"隐私类不适用 YAGNI 折扣就该做级联删除"这个反向推论):

隐私:全局硬删 nuke(连共享事件整条删,误伤他人共同回忆)、跨表级联删除 + 共享事件匿名化(更精确但用户判 YAGNI)、软删 tombstone(数据仍在库,不满足真删除)——均被"仅清短期"取代。

文档侧(本片一并完成,零独立改动面)

  • CONTEXT.md 与 design.md 的忘记我描述本身不需要改(描述的就是目标态)
  • design.md"上线路线"六阶段里没有忘记我,本片落地后须在路线里补一句或明写"路线之外的补票"
  • ADR-0010 追加更新节,记录本次落地 + per-chat/per-user 作用域裁定
  • explain.py 模块 docstring 第 3 条"前向兼容"("ADR-0010 的忘记我一旦落地,第一条路径立刻变成可达")从"将来会变可达"改成"现在已可达",ADR-0010「更新(2026-07-28,issue #83)」节同一句同步

Blocked by

None — can start immediately(与第 11 条"画像自然遗忘曲线"是语义依赖非构建顺序:本片对用户表述"不删长期"时,画像侧的自然遗忘曲线尚未落地,这是既有事实不是阻塞,AC 措辞需知晓这一点)

## Parent #103 第四批清单:31 条实现类落差 + 9 条待拍板(条目 3、28) ## What to build ADR-0010 拍板的"忘记我"命令在 core 里零实现——既无命令,也无任何清理路径;同时 CONTEXT.md/design.md/ADR-0010 三处都把它当既成事实援引(CONTEXT.md 甚至拿它当推导 Knowledge 归属的前提句:"忘记我仅清短期,Knowledge 与画像/事件记忆一样属长期不清"),一个不存在的机制正在给别的机制当前提。 ## Acceptance criteria - [ ] 新增用户级命令(同 `_command_matcher` 先例,仿"允许了解我的动态"/"不再了解我的动态"两条同意命令的形状——刻意不加权限校验,谁发的命令就清谁自己的短期记忆) - [ ] **只清 Delta 缓冲 + 去抖批次**,锁死范围:`storage.PersistentStorage.drain_delta(chat_id)`(已存在,直接复用)+ 清 `debounce.Debouncer._buffers`(进程内存态,实例 `__init__.py::_debouncer`)+ 取消对应的 `_pending_flushes[chat_id]` - [ ] **不动 Outbox**——它不是 ADR 说的"会话上下文",是 ADR-0013"决定要发、还没发"的在途暂存,一行只活毫秒级且 `storage.recover()` 启动时无条件全清,对"忘记我"几乎无语义收益;若纳入需新增 port 方法(当前只有 `stage_outbox`/`clear_outbox`,没有按 chat 清的方法),触及 port 契约,不在本片默认范围 - [ ] **"checkpoint"在本仓无指涉**,显式记下而非留给实现方猜——ADR-0013 明写"ADR-0002 弃 LangGraph,也就弃了它的 checkpointer" - [ ] **不建 GDPR 式跨表级联删除**——不删长期画像/事件/关系/向量,长期数据的"遗忘"交给三因子召回的自然遗忘曲线(画像侧这条曲线由另一片补齐,见下) - [ ] **不要**顺带补经济 hook 前置钩子——"扣星等收费"是 host 经济 hook,core 无经济概念,这条边界符合设计 - [ ] **显式定义群聊场景的口径**(ADR/CONTEXT/design 均未定,必须在本片定死,不能默认):Delta 缓冲与去抖批次都是 per-chat,但"忘记我"是用户命令——群里一个人喊"忘记我"是否清掉整群缓冲? 原文(docs/adr/0010-operations.md「决策 → 忘记我 / 隐私」节): > **"忘记我"/清除命令 = 仅清短期记忆**(会话上下文/checkpoint),**不删长期**画像/事件/关系/向量。长期数据的"遗忘"交给三因子召回的**自然遗忘曲线**(低 importance + 高 age 降权)。**不建 GDPR 式跨表级联删除子系统**(用户为自身部署判定 YAGNI);真要清长期走 admin/DB 层。扣星等对"清除"收费 = host 经济 hook;core 无经济概念。 原文(同 ADR「拒绝了」节——三个被否决的替代方案,必须原样带入 AC 挡住"隐私类不适用 YAGNI 折扣就该做级联删除"这个反向推论): > 隐私:**全局硬删 nuke**(连共享事件整条删,误伤他人共同回忆)、**跨表级联删除 + 共享事件匿名化**(更精确但用户判 YAGNI)、**软删 tombstone**(数据仍在库,不满足真删除)——均被"仅清短期"取代。 **文档侧(本片一并完成,零独立改动面)** - [ ] CONTEXT.md 与 design.md 的忘记我描述本身不需要改(描述的就是目标态) - [ ] design.md"上线路线"六阶段里没有忘记我,本片落地后须在路线里补一句或明写"路线之外的补票" - [ ] ADR-0010 追加更新节,记录本次落地 + per-chat/per-user 作用域裁定 - [ ] `explain.py` 模块 docstring 第 3 条"前向兼容"("ADR-0010 的忘记我一旦落地,第一条路径立刻变成可达")从"将来会变可达"改成"现在已可达",ADR-0010「更新(2026-07-28,issue #83)」节同一句同步 ## Blocked by None — can start immediately(与第 11 条"画像自然遗忘曲线"是语义依赖非构建顺序:本片对用户表述"不删长期"时,画像侧的自然遗忘曲线尚未落地,这是既有事实不是阻塞,AC 措辞需知晓这一点)
Yushu closed this issue 2026-08-17 02:19:39 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ProjectKuma/arise#135
No description provided.