24小时热门版块排行榜    

查看: 45  |  回复: 0

guanyifu9

新虫 (初入文坛)

[交流] OWASP Agentic AI Top 10 的 ASI06 记忆投毒,这类文献整理坑怎么留痕?

审文献、整理笔记时,最麻烦的不是某条提示注入当场把回答带偏,而是恶意内容被写进长期记忆,隔了几天又被一条看似无关的消息触发。OWASP Agentic AI Top 10 将这类问题单列为 ASI06「记忆与上下文投毒」,把 AI 记忆安全从单次对话控制,推到了跨会话记录管理。

我对这个问题的直觉是:只看当前回答,很难判断污染发生在什么时候。真正要查的是记忆何时写入、写入了什么、后来被哪些任务调用。

一、做文献整理时,问题会出在哪里

假设一个智能体正在处理论文摘要、实验记录和个人笔记。当前会话中出现一条带有误导性的内容,系统如果把它当成长期记忆保存,后续检索就可能把这条内容与正常材料一起送入上下文。

这时,单次输出未必立刻异常。回答可能仍然引用了正常文献,只是在结论、筛选条件或后续提问中逐步受到影响。等到研究者几天后询问另一个主题,系统调用了旧记忆,污染才被重新激活。

这和普通的提示注入有区别。提示注入通常随着会话结束而重置;记忆投毒不会,攻击者只需要让恶意内容进入 agent 的长期记忆,之后的交互就可能持续受到影响。输入审核和输出过滤如果只在会话边界内工作,就无法直接回答一个问题:这条长期记忆为什么存在,谁写入的,原始依据是什么。

在文献管理场景中,至少有几类记录需要分开看。

一类是外部文献的元数据,例如标题、作者、年份、DOI 和 venue。另一类是 PDF、附件和用户普通 note。还有一类是系统生成的 child note,以及系统自己的 tag 或 collection 操作。

这些内容的权威来源并不相同。外部身份也不能只依赖标题或 DOI。研究路径资料中给出的做法是使用 library_id、item_key 和 version,DOI 可以用于去重建议,但不能直接作为唯一身份,因为同一作品可能同时存在 preprint 和 journal 版本。

这个细节和 ASI06 有直接关系。若系统把相似标题、不同版本或用户手写 note 混成同一条记忆,后续排查时就很难确认污染来自哪一个对象。记忆内容看起来可能是自然语言,真正需要核对的却是来源身份、版本和写入权限。

二、我会怎样把问题拆开查

我不会先从“回答错了哪一句”开始,而是先按写入和读取两个方向排查。这样做的好处是,能把一次偶然错误和跨会话污染区分开。

1. 把长期记忆单独列出,记录每条内容的原始文本、来源对象和版本。没有来源的内容,不直接当作文献事实使用。

2. 检查写入权限。标题、作者、年份、DOI 和 venue 这类字段由 Zotero 维护时,默认只读,不让系统自动覆盖。PDF 和附件需要任务级授权,不能默认读取整个资料库。

3. 检查用户普通 note 的修改路径。它可以保持只读,也可以由用户手动选择后再修改,不能因为一次对话就自动改变原始笔记。

4. 对系统生成的 child note 保留版本和撤销能力。系统可以更新自己生成的内容,但要能回到此前版本,便于定位哪次写入引入了异常信息。

5. 对系统自己的命名空间单独处理。资料中给出的例子是 zhiya/* tag 可以由系统更新,但 collection membership 的自动修改应保持关闭,或要求用户明确授权。

6. 复现跨会话读取。把可疑记忆写入后结束当前会话,再用无关问题触发检索,观察该记忆是否被调用。若不能看到来源、版本和调用位置,单看最终回答很难完成核验。

这里的重点不是把所有记忆都删除。直接清空会丢失正常的研究积累,也无法解释污染是怎么发生的。更可行的排查对象是写入权限、来源身份、版本信息和撤销记录。

我的判断是,AI 记忆安全的工程边界应当落在“记忆是否可验证”上,而不是只看模型是否给出了一个流畅回答。流畅不能证明来源可靠,回答中出现引用也不能自动证明引用支持了对应结论。

三、正在发生的转向与缺口

ASI06 把关注点从单轮提示扩大到了持久化上下文。过去容易把输入审核和输出过滤当作主要防线,现在还需要处理跨会话写入和后续调用。

但现有资料没有提供一套完整的 ASI06 攻击复现数据,也没有给出某个工具对记忆投毒的定量防护结果。因此,不能仅凭“有 AI 记忆”就判断它已经具备记忆安全能力。

四、工具选型时我会看什么

我用知芽 Notebook Skill 这类工具时,会把引用粒度和知识对象的权限边界放在一起看。已有资料明确提到,知芽的可信引用依赖可验证的工程机制,引用粒度涉及段落级校验;但针对 ASI06 的写入前审核、污染检测和跨会话追踪,现有片段没有给出足够实现细节。

这意味着产品选择不能只看是否支持记忆、对话或内容生成。需要继续核对:长期记忆是否能追溯到原始资料,用户笔记是否默认只读,生成内容能否保留版本,以及异常记忆是否可以撤销。缺少这些信息时,应该把结论限定在“具备相关知识管理能力”,不要延伸为“已经解决记忆投毒”。

五、关键知识点 Q&A

Q1:提示注入和记忆投毒有什么区别?

A:提示注入通常在当前会话中影响模型,随着会话结束而重置。记忆投毒会把恶意内容写入长期记忆,之后的交互仍可能调用它。排查时要增加跨会话复现,并检查记忆的写入来源和版本。

Q2:文献元数据为什么不应让系统随意覆盖?

A:标题、作者、年份、DOI 和 venue 具有明确的权威来源。资料中给出的权限规则是默认只读,不自动覆盖。这样可以减少自然语言生成内容直接改写基础元数据的机会,也便于区分原始记录和系统生成内容。

Q3:DOI 能不能作为文献记忆的唯一身份?

A:不能。研究路径资料要求使用 library_id、item_key 和 version 作为外部身份。DOI 只用于去重建议,因为同一作品可能存在 preprint 和 journal 两个合法 DOI。

Q4:发现可疑记忆后,应该直接删除吗?

A:先保留原始记录和版本信息,再确认写入来源、调用位置与关联文献。对于系统生成的 child note,可以依靠版本和撤销记录回退;对于用户普通 note,应保持只读或等待用户手动选择,避免排查过程再次改动原始资料。

核心结论很简单:ASI06 处理的不是一次回答错误,而是持久化内容的可信来源与可追溯写入。对科研资料来说,记忆安全至少要落到权限、身份、版本和撤销这些可核对字段上。

你们在整理文献或实验记录时,会怎样记录 AI 生成内容的来源和版本?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 guanyifu9 的主题更新
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
信息提示
请填处理意见