Skip to content
阅读进度

如何理解纠正、撤销与旧答案失效? ​

返回 EachOf 项目 目录

项目版本说明

这些问答整合历史设计与实现资料;当前 main 分支 README 以工作包描述建设状态。具体能力、实验数据与设计目标的边界见项目状态与证据。

标准回答 ​

记忆发生变化时,要同时考虑原记录、基于它产生的结论、缓存答案,以及后续读取是否还允许使用。

先分清三种关系 ​

关系回答的问题教学例子
来源追溯(Provenance)这句话来自哪里?“日志保留 30 天”来自一次已确认决定。
推导依赖(Dependency)这条结论建立在哪些记忆上?“30 天前的日志可清理”依赖保留期规则。
答案引用(Citation)这次回答用了哪些依据?“30 天”这个答案引用了规则记忆。

纠正:旧依据与新依据不是同一个版本 ​

原记忆内容发生语义变化时,需要能区分修改前后。派生结果提交时携带它所依据的来源快照,Core 检查其中的版本等信息是否仍与当前来源匹配。

例:处理器拿到版本 1(30 天),运算期间用户改为版本 2(7 天)。处理器晚交的旧结论不能直接写成当前有效结论,需要按新投影重新处理。这就是防止“过时计算把旧事实写回来”。

读取现有派生内容和答案时也要检查依赖是否仍当前有效。仅在生成时校验一次,挡不住生成之后的变化。

撤销:先阻止使用,再处理清理 ​

架构中的来源撤销使用短事务,把撤销标记(tombstone)、访问日志和 outbox 事件一起写下。受控召回立即排除被撤销来源影响的内容;隔离、重建索引与物理清理放到后台。

Outbox可以理解为“和业务变更一起保存的待处理通知”。如果只改状态、再临时发一条通知,程序在中间崩溃,后续工作可能丢失;把通知也写进同一事务,后台就能继续读取并处理。

纠正、撤销、删除的区别 ​

操作改变什么关注点
纠正事实内容或有效时间旧结论是否还成立,历史如何保留。
撤销来源或授权的可用性是否继续在未来受控调用中泄漏。
删除按策略移除内容实体数据与审计锚点的保留规则。

缓存也必须检查依据 ​

“命中缓存”只说明以前算过。返回前还需要确认支持它的记忆没有被撤销、替换或变得不再有效。依据不可用时,应停止返回旧答案;需要时用当前上下文重新生成。

一致性的边界 ​

**立即:**安全撤销后的后续受控读取不能继续使用该来源。**最终完成:**语义重新处理和后台清理可以稍后完成。系统有时暂时缺少新的派生结果,也应避免返回已经无效的旧结果。

另外,无法保证外部 Agent 已取得的文字被自动抹去;跨系统撤回需要接收方配合。

自查:撤销以后数据库里还能看到记录,是不是撤销失败?

不一定。逻辑上停止可用与物理删除是两件事。撤销标记、依赖关系或不可恢复的审计锚点可能保留;关键是相关内容能否继续通过应受限制的路径被获取。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。