Hanafubuki

记忆

控制跨会话记忆的读取、生成、贡献和重置。

记忆是从会话中整理出的项目知识,用于后续相关任务。它与会话历史不同:历史是原始消息和工具记录,记忆是派生上下文,也不会授予任何文件或工具权限。

全局设置

进入“设置 → 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 禁用或永久删除该会话。

记忆不是秘密存储

不要依靠“排除外部内容”或重置来保护凭据。敏感内容一开始就不应进入提示、附件和项目文档;需要分享诊断或会话记录时仍要人工检查并脱敏。

本页目录