有这样的应用。OneOneTalk 把记忆主权拆成八个具体动作——查看、搜索、纠正、冻结、限定作用域、设置期限、遗忘、导出——落在每一条记忆记录上。遗忘不是把条目从界面藏起来:服务端真的删掉那一行,撤销用的副本留在你的浏览器里。这一页把机制写到可以逐条核对的程度,也写清楚哪些已经能用、哪些还在建设中。
这个问题之所以值得问,是因为「删除」在很多产品里是个界面词,不是工程词。条目从列表里消失了,但它可能仍然留在向量索引、对话摘要、缓存与训练数据集里,继续影响模型下一句怎么说你。
行业里常见的三种做法是:把删除做成隐藏(列表不再展示,底层记录照旧参与检索);把删除做成打标记(写一个 deleted 位,检索时过滤,副本一份不少);或者删得掉主记录、删不掉从它派生出去的摘要与索引。这三种都能通过「我点了删除,它消失了」的肉眼验收,但都没有兑现你以为你得到的那件事。我们不点名任何公司——这更多是工程惯性的结果,而不是谁的恶意。
国家标准对这个词其实给过定义。《信息安全技术 个人信息安全规范》(GB/T 35273,现行版本自 2020 年 10 月 1 日起实施)把「删除」定义为:在实现日常业务功能所涉及的系统中去除个人信息的行为,使其保持不可被检索、访问的状态。注意落点是「不可被检索、访问」——不是「不再展示」。
这一页描述的不是我们的善意,而是把已经写在法条里的权利落成可以点击的入口。
这一页不是法律意见。产品在中国区公开上线前的合规确认由法务、安全与算法治理负责人签字,这是我们自己写进发布门槛的流程要求。
要让上面这些动作有意义,记忆首先不能是一段聊天记录,得是一条有结构的记录。数字分身的每条长期记忆是一条独立对象,当前线上的记录结构有 12 个字段。
八个动作就作用在这些字段上,每一个都有确定的系统含义:
| 动作 | 系统里实际发生了什么 | 现状 |
|---|---|---|
| 查看 / 搜索 | 按真值分类筛选整本账本;每条都能看到来源、时间、置信度、作用域与最后使用日期 | Web 版可用 |
| 纠正 | 写入新内容,来源改标为「你纠正」,真值升为已确认事实,接口返回被替换掉的旧内容 | Web 版可用 |
| 冻结 / 解冻 | 停用但不删除:召回与星图跳过这条,随时可解冻 | Web 版可用 |
| 遗忘 | 把该行从你的记忆表里删掉;被删内容返回到你的浏览器,用来撑「撤销」,服务端不为撤销另存副本 | Web 版可用 |
| 回看历史 | 以任意一天的视角重放账本:当天成立的记忆是哪些、被取代的旧断言长什么样 | Web 版可用 |
| 导出 | 打包记忆、编年、对话与作品,结构化格式,附内容校验值 | Web 版可用 |
| 导出(完整形态) | 六类分项打包(另含关系与回执链)、可读版与结构化版同时要、下载窗口与完成回执 | 服务端已实现,Web 版入口建设中 |
| 限定作用域 / 设置期限 | 逐条收窄可用范围、设定保留期限,到期自动失效 | 字段已在记录结构里,逐条设置的入口建设中 |
还有一条隔离规则值得写明:记忆按登录用户隔离,用户身份只能从登录态解出,永远不能来自请求参数。所以一个人的记忆,另一个人既读不到也改不到。请求一条不属于你的记忆时,返回的是同一句「记忆不存在或不属于你」——不区分这两种情况,是为了不泄露某条记录是否存在。
删掉主记录只是第一步。一条记忆一旦被使用过,就会在别处留下派生物,删除必须追着这些派生物走。
顺带说清另一件容易被混淆的事:冻结、遗忘、注销是三个不同的动作。冻结停用不删;遗忘删掉这一条;注销是整个账号。产品里不会用一个模糊的「清除数据」把它们混在一起,因为它们的后果完全不同。
删除权的另一半是带走的权利。如果只能删不能带走,用户面对的仍然是一个单向的门。
「能不能删」的前一个问题是「谁看得见」。对话原文与个人敏感信息在后台是一类特殊资源,工程上叫破窗玻璃(break-glass):平时封着,砸开必须留痕。
在运营与管理系统里,任何角色都不默认持有这类资源的读取权限——租户管理员不行,平台员工也不行。日常运营用的是脱敏层:只有元数据与标签,没有原文,绝大多数运营需求到这一层就结束。真正需要读原文的场景(例如处理你本人发起的申诉)必须走特批:写明理由与用途类别、授权有时限、每一次实际读取落一条回执,而且这些回执对你本人可见。
关键在这道闸门的位置——它在权限系统里排在角色判定之前。不是「管理员权限大所以要小心」,而是无论角色怎么配,都碰不到这类资源,除非走完留痕流程。同样的回执机制贯穿委托行动的每一步执行,完整承诺见诚实与隐私。
| 行业常见做法 | OneOneTalk | |
|---|---|---|
| 记忆的形态 | 一份你看不见、也改不了的个性化画像 | 一本可逐条打开的账本,每条带来源、时间、置信度、作用域与真值状态 |
| 「删除」的含义 | 界面上不再显示,或写一个删除标记后照旧留存 | 把该行从记忆表里删掉;产品规则要求删除追到索引、摘要、缓存、训练队列与可控备份并可追踪完成 |
| 撤销怎么实现 | 服务端软删除保留副本,等待撤销窗口过期 | 被删内容返回到你的浏览器撑住撤销,服务端不为此另存副本 |
| 改错一条信息 | 直接覆盖,旧值消失,无从核对 | 新说法取代旧断言,旧的关有效期并存留库,可切到任意日期回看 |
| 已分享出去的内容 | 删除只作用于账号内,站外链接继续可访问 | 引用被删记忆的只读快照级联撤销、即时生效,且不泄露它是否存在过 |
| 数据权利要不要钱 | 导出与高级隐私控制常见于付费档位 | 查看、纠正、删除、遗忘、导出永久免费,退订后仍然保留 |
能,而且不是隐藏。在记忆账本里对一条记忆点「遗忘」,服务端执行的是把那一行从你的记忆表里删掉,接口把被删内容原样返回给你的浏览器,用来撑住界面上的「撤销」按钮——也就是说,撤销所需要的那份副本留在你自己的设备上,服务端不为此另存一份。冻结是另一回事:冻结的记忆停用但不删,召回与星图会跳过它,随时可以解冻。
会跟着撤销。产品规则要求:源对象被删除、所引记忆被遗忘或被收窄作用域时,级联撤销对应的只读分享快照,撤销即时生效;撤销后的链接与本来就不存在的链接返回同一个结果,不泄露它是否存在过。这条规则的出发点是「所有索引与副本」不留豁免——如果删除只停在数据库里,分享链接就成了漏出去的那一份。
默认不能。对话原文与个人敏感信息是一类特殊资源,任何角色都不默认持有读取权限,租户管理员不行,平台员工也不行。确需读取要走特批:写明理由与用途类别、授权有时限、每次实际读取落一条回执,且回执对你本人可见。这道闸门在权限系统里排在角色判定之前,因此无法通过配置角色绕过去。日常运营用的是脱敏层,只有元数据与标签,没有原文。
能。记忆的查看、纠正、删除、遗忘、导出与回执链查看被列为退订后永久保留的能力,付费买到的是新增算力与容量,不是记忆的赎金。存储容量确实会随订阅状态变化,但超出容量的部分转为只读归档,不是删除,并且在压缩前会提前多次告知并给出一键导出入口。导出本身永不消耗 One。
已经能用的是:查看、按真值分类筛选、纠正、冻结与解冻、遗忘、按任意日期回看历史版本,以及分项打包的数据导出——登录用户的这些操作真的落到服务端属于他自己的那份记录上。还在建设中的是:逐条设置作用域与保留期限目前没有对应的服务端入口;删除覆盖向量索引、摘要、缓存与训练队列这条完整链路,要随这些子系统上线同时兑现,现阶段的记忆账本是一张按用户隔离的表,遗忘就是删掉那一行。我们把这两类分开写,是因为把设计目标说成已交付能力,本身就是一种不诚实。