外观
“同步更新 + 异步清理”撤销记忆,怎样避免空窗期仍召回旧结论?
项目版本说明
这些问答整合历史设计与实现资料;当前 main 分支 README 以工作包描述建设状态。具体能力、实验数据与设计目标的边界见项目状态与证据。
标准回答
同步阶段必须先改变权威有效性,让读取方能立即判断旧依据不能再作为当前结论使用;物理清理和下游整理可以异步完成。若查询只依赖尚未更新的派生标记,就可能在清理前漏出旧结论,因此必须讲清实际读路径如何识别依赖已失效。
- 区分请求受理、权威状态生效和后台清理完毕,说明何时允许对外返回“撤销成功”。
- 读取当前视图时核对依赖的来源版本与有效性;缓存不能只因 TTL 未到就继续返回。历史视图保留旧结论也仍需授权。
- 旧任务即使计算成功,提交时也要检查依据是否已变更。需要说明事务或版本条件如何避免校验后、落库前发生竞争。
通俗例子
来源 S 被撤销,推导 C 的清理任务还没运行。此时如果只查 C 自己的 active 标记,可能返回错误结果;读路径必须能发现 C 所依赖的 S 已失效。
深入解释
**先定义撤销完成的含义:**区分请求受理、权威状态生效和后台清理完毕,说明何时允许对外返回“撤销成功”。
**读与缓存都要重新验证:**读取当前视图时核对依赖的来源版本与有效性;缓存不能只因 TTL 未到就继续返回。历史视图保留旧结论也仍需授权。
**并发写入同样受约束:**旧任务即使计算成功,提交时也要检查依据是否已变更。需要说明事务或版本条件如何避免校验后、落库前发生竞争。
追问与回答
正在返回的查询怎么办?
必须定义并发请求的可见性边界:它读到了哪个状态快照,哪些请求保证使用撤销后状态,不能含糊承诺绝对瞬时。
异步任务丢了是否永久残留?
需要持久化任务、重试或补偿扫描等保证;按真实实现说明恢复和监控方式。
易混淆点
最终会删除数据,不等于撤销生效后不会再读到旧依据。
进一步举证
- 补齐读路径校验、缓存失效和提交竞争的实际实现。
- 准备“撤销后清理暂停”“旧任务迟到”“历史查看”三类测试。
内容来源
- Android · AI Agent 知识手册 · 原条目
resume-R24