# Cascade Forget (级联遗忘)

*沿血缘删除派生物，按保留类处理历史，并如实报告做不到的部分。*

> **Cascade Forget（级联遗忘）** 是沿血缘的删除：当一个来源被删除，或有人要求被遗忘时，NAS 找出由它派生的一切，包括摘要、嵌入、引用它的笔记、缓存和共享链接，删除它们，或在不含该来源的情况下重新派生，并出具**报告**：做了什么，哪些做不到。

**AN-09** · 符合性等级: L3 Guard · 概念簇: 知识

## 要解决的问题

删除一个文件，并不会删除它的嵌入、摘要，或记忆里据此推出的事实；快照与备份还在；版本历史里内容依然存在。

“可恢复”与“可遗忘”是同一条轴的两端，多数系统没有把这个选择交给人。如果在写入之后才想起要忘，通常已经太晚。

## 工作方式

- **血缘。** 每个派生物记录自己的输入；反向索引回答“X 的所有依赖物”；笔记的 `sources` 字段也是血缘。
- **保留类，在写入时决定**（因为历史无法事后改写）：`scratch`（短 TTL，不进备份，运行结束即可清理）、`normal`（版本化，可恢复）、`sensitive`（独立密钥域，可以通过销毁密钥来粉碎）。
- **恢复与遗忘的张力。** 软删除窗口内可恢复；窗口过后才硬删除；遗忘请求可以跳过窗口。
- **流程。** 请求（由人或运营者发起；智能体只能提出请求，不能执行），血缘遍历，删除派生物并对混合来源的事实重新派生，对 `normal` 类重写受影响路径的历史并清理快照，对 `sensitive` 类销毁密钥，最后出具报告。
- **报告：** 删除的文件数、被移除的派生物、历史是否重写、被销毁的密钥、尚未过期的快照，以及**明确列出覆盖不到的范围**：NAS 之外的副本、模型提供商的日志、模型权重。
- 总是经过 [Human Gate](https://agentnas.com/zh-cn/concepts/human-gate/)（或策略预授权）；**法律保留**会阻止遗忘并被记录。

## 从小处开始

- 先做保留类和软删除，并为每个派生物记录它的输入。
- 先做到“删除源文件时，列出并删除它的全部派生物”。
- 加密粉碎留给 `sensitive` 类，不必一开始就全量做。

## 接口草图

仅作示意。字段名在规范 v0.3 之前可能调整。

*forget-report.json*

```json
{
  "forget_id": "fgt_3b7c",
  "selector": { "paths": ["/shared/crm/acme/**"], "subject": "customer/acme" },
  "retention_class": "sensitive",
  "report": {
    "files_removed": 142,
    "derived_removed": { "embeddings": 3621, "summaries": 210, "notes_rewritten": 6 },
    "history": "rewritten (3 commits)",
    "keys_destroyed": ["key_acme"],
    "snapshots_pending": ["nightly-2026-11-10 (expires 2026-11-17)"],
    "not_covered": ["copies outside the NAS", "model provider logs", "model weights"]
  },
  "state": "pending_expiry"
}
```

## 规范的要求

- 遗忘**必须**沿血缘从来源传播到每一个派生物。
- 保留类**必须**在写入时指定（默认 `normal`）。
- 遗忘报告**必须**列出覆盖不到的范围：NAS 之外的副本、提供商日志、模型权重。
- 法律保留**必须**阻止遗忘，并且**必须**被记录。
- 智能体**可以**请求遗忘，但**不得**执行。
- 报告**不得**声称模型已经“遗忘”了什么。

## 借鉴与区别

下面这些都是现成的。**真正新的部分：** 把**保留类**当作存储的显式属性，并承认“能恢复”与“能遗忘”是同一条轴上的取舍。

- [OpenLineage](https://openlineage.io)
- [GDPR Article 17](https://gdpr-info.eu/art-17-gdpr/)
- [Long-term memory security survey (forget and rollback)](https://arxiv.org/abs/2604.16548)

## 坦诚的局限

- 备份、NAS 之外的副本、模型提供商的日志都不在范围内。
- 对由多个来源混合推断出的事实，“受影响范围”很难界定。
- 重写历史的代价很高，也有风险。

## 开放问题

- 混合来源事实的受影响范围怎么界定？
- 法律保留与遗忘请求冲突时，流程应当怎样走？

## 常见问题

### 它能让模型忘记吗？

不能，也不会这么声称。它能做的是删除 NAS 里的文件、派生物，以及（在 `sensitive` 类下）历史与密钥；模型提供商的日志与模型权重不在范围内，报告里会明确列出来。

### 为什么要在写入时选保留类？

因为历史难以事后改写：已经进了备份和历史的内容，只能重写或等过期。写入时决定它是 `scratch`、`normal` 还是 `sensitive`，是之后能删得干净的前提。

### 智能体可以自己要求遗忘吗？

可以提出请求，不能执行。遗忘不可逆，必须经过人或预授权的策略，而且法律保留会阻止它。

## 相关概念

- [Agent Memory (智能体记忆)](https://agentnas.com/zh-cn/concepts/agent-memory/): 笔记是你能读能改的真相，索引只是可以丢弃的缓存。
- [Flight Recorder (飞行记录仪)](https://agentnas.com/zh-cn/concepts/flight-recorder/): 以运行为单位、哈希链接的记录，包括这次运行读过什么。
- [Agent Branch (智能体分支)](https://agentnas.com/zh-cn/concepts/agent-branch/): 每次运行在写时复制的分支里工作，经审阅的合并才进入主线。

---

规范网址: https://agentnas.com/zh-cn/concepts/cascade-forget/
更新于: 2026-11-11 · 规范草案 v0.2 · CC BY 4.0
