记忆
控制跨会话记忆的读取、生成、贡献和重置。
记忆是从会话中整理出的项目知识,用于后续相关任务。它与会话历史不同:历史是原始消息和工具记录,记忆是派生上下文,也不会授予任何文件或工具权限。
全局设置
进入“设置 → Agent → 行为与记忆”,先启用记忆总开关,再配置:
| 选项 | 作用 |
|---|---|
| 使用记忆 | 在模型请求中加入检索到的相关知识 |
| 生成记忆 | 允许后台从符合条件的会话整理新记忆 |
| 排除外部内容 | 防止含 Web 或 MCP 外部内容的会话进入生成来源 |
记忆默认可以保持关闭。开启前先确认项目内容适合长期保留,不要把 Token、私钥、个人数据或短期敏感信息写入希望被记住的消息。
当前会话的贡献状态
执行 /memory 可以查看当前会话是否允许贡献记忆,并在允许时切换状态。
| 状态 | 含义 |
|---|---|
| 已启用 | 会话满足其他条件时可以作为记忆来源 |
| 已禁用 | 保留会话历史,但不从它生成记忆 |
| 已污染 | 会话已接收 Web 或 MCP 工具内容,永久排除出记忆来源 |
“已污染”由后端根据成功返回的外部工具结果判定,不是普通开关,不能重新启用。它只阻止该会话贡献记忆,不会删除会话,也不表示外部内容一定有害。
会话创建或分叉时,会记录当时是否允许生成记忆。之后可以使用 /memory 管理当前会话,但全局关闭记忆时不会进行读取或生成。
使用与生成的区别
- “使用记忆”控制当前模型能否读取已有记忆。
- “生成记忆”控制符合条件的会话能否成为新记忆来源。
- 关闭当前会话贡献不会删除已经生成的旧记忆。
- 压缩会话不会把动态检索到的记忆写入可见消息历史。
Agent 会在每个模型采样步骤重新取得记忆,因此新生成或重置的结果从后续步骤开始生效。
Agent 能对记忆做什么
检索分为两部分:每个采样步骤都会带上一份精简摘要作为索引,其余内容按需通过记忆自己的工具读取。
| 工具 | 作用 |
|---|---|
list_agent_memories | 列出可读的记忆资源及其 id |
search_agent_memories | 按关键词检索,返回 id 和行号 |
read_agent_memory | 读取某个资源的指定行范围 |
append_agent_memory_note | 记录一条记住、忘记或更新的指令 |
记忆只能通过这些工具访问,它不在任何文件或命令工具可以打开的路径上,因此 Agent 无法直接读取或修改记忆文件。
读取以已发布的内容为准。即使还有新的会话等待整理,已有记忆仍然可读,所以让 Agent 记住新内容不会让你原本的记忆消失。新内容会先排队:Agent 记录一条笔记,由后续的整理流程合并。
只有在你明确要求记住、忘记或更新时,Agent 才会写入笔记,它不会自行判断某段对话值得保留。
当回答实质依赖记忆时,Agent 会引用它读取的资源。应用会核对这些引用与记忆实际记录的来源是否一致,并在该轮提交后从可见回答中移除引用块。
归档、删除和分叉
| 会话操作 | 对记忆来源的影响 |
|---|---|
| 归档/恢复 | 保留来源关系,只改变会话列表中的可见状态 |
| 永久删除 | 撤销该会话作为后续记忆来源的资格 |
| 分叉 | 子会话只贡献分叉后由自己产生的内容,父会话仍独立处理 |
重置记忆
设置页面会显示当前记忆条目数和来源数。重置需要再次确认,执行后会清除派生记忆并开始新的记忆代次。
重置不会删除 Agent 会话及其原始历史。以后如果继续启用生成,符合条件的会话仍可能产生新的记忆;如果希望某个会话不再贡献,应先通过 /memory 禁用或永久删除该会话。
记忆不是秘密存储
不要依靠“排除外部内容”或重置来保护凭据。敏感内容一开始就不应进入提示、附件和项目文档;需要分享诊断或会话记录时仍要人工检查并脱敏。