智能体记忆(用户智能体)
不写入记忆:代码路径、知识文档里已有的事实、通用产品说明、整段对话流水。
来源 docs/core-mechanisms/智能体记忆.md
表述:本文用用户能懂的说法说明「助手跨会话记得什么、记在哪、怎么用」;
memory/entries/、MEMORY.md等为实现路径,见docs/产品规格.md§3.5。
记忆分几层
| 层级 | 用户说法 | 存什么 | 典型生命周期 |
|---|---|---|---|
| 用户画像 | 关于我是谁 | 稳定身份、称呼、长期背景 | 手动维护 + 可选自动更新 |
| 长期记忆 | 跨会话要记住的事 | 偏好、决策、项目节点、查资料入口 | 长期,可在智能体「记忆」页编辑删除 |
| 日笔记 | 最近聊过的上下文 | 当日任务进展、临时观察 | 默认加载今日+昨日,过期自然淡化 |
不写入记忆:代码路径、知识文档里已有的事实、通用产品说明、整段对话流水。
长期记忆四类
| 类型 | 用户侧名称 | 示例 |
|---|---|---|
user | 关于我 | 「我是十年 Go 后端,前端新手」 |
feedback | 偏好与纠正 | 「以后回答用 bullet,不要长段落」 |
project | 项目进展 | 「Q2 上线截止 2026-06-30」 |
reference | 去哪查 | 「接口规范看团队 wiki /api 章节」 |
feedback 类正文须含 Why: 与 How to apply:,便于后续会话正确应用。
如何写入 / 更新 / 删除
| 方式 | 谁触发 | 默认落点 |
|---|---|---|
| 消息上点 「记住」 | 用户 | 长期记忆(表单可改选日笔记) |
| 对话里说「记住/别忘了」 | 用户 + 智能体 | 智能体调用 memory_write,按内容选长期或日笔记 |
| 对话里说「记错了 / 忘掉 / 删除那条」 | 用户 + 智能体 | memory_write(带 path 更新)或 memory_delete |
| 对话后自动提炼 | 系统(默认开启) | 仅长期记忆;过滤临时流水 |
| 上下文压缩前归档 | 系统 | 日笔记 + 可选提炼为长期 |
工具:memory_search / memory_get / memory_write(可更新)/ memory_delete。意图由对话模型判断,非关键词硬路由。
写入成功后,对应消息会显示 「已记住」 角标,避免重复写入。会话菜单可开启 「自动提炼通知」(默认关闭;开启后每轮提炼完成会提示,并同步等待提炼结果)。
长期 vs 日笔记 判定规则
写入长期记忆当内容满足任一:
- 用户明确要求跨会话保留
- 稳定事实、偏好、已确认决策
- 有截止日期的项目节点
- 可复用的「去哪查」指针
写入日笔记当内容满足任一:
- 仅对今天/本次会话有用(「今天正在…」「这轮先…」)
- 临时任务进展,几天后可能过时
- 上下文压缩前的对话片段归档
如何使用
- 每轮对话:系统注入长期记忆索引、与问题相关的条目节选、今/昨日笔记节选。
- 相关条目默认 关键词匹配;长期记忆 ≥30 条 或 ≥20 条且关键词未命中 时,可改用 LLM 按 name/description 选择 top-5。 - 上一轮已展开 的正文条目本轮不再重复注入(索引仍可见)。 - 若会话近期已调用某工具,reference 类且描述该工具「用法」的条目会跳过;含 警告/注意/Why: 的仍保留。
- 智能体主动检索:需要核实细节时调用
memory_search/memory_get。 - 智能体维护纠正:用户指出错误/过时,或注入材料提示「保存于 N 天前请核实」且已确认不准 →
memory_write(带path更新)或memory_delete;同名唯一条可直接更新。 - 用户管理:Web 智能体详情 →「记忆」查看、编辑、删除条目;「用户画像」单独维护。
- 闲时自动整理(智能体记忆维护):进程内定时任务清理 完全重复 / 同名旧条 / 过期日笔记,条目较多时可用 LLM 审核近重复与过期项目节点;不写入知识叠加层,也 不走记忆锻造采纳流。
闲时整理(与记忆锻造并列)
| | 智能体记忆维护 | 记忆锻造(MemoryForge) | |--|-------------------|---------------------------| | 服务对象 | 单个智能体的个人记忆 | 帮助/工作区知识叠加层与技能 | | 写哪里 | memory/entries/、旧 memory/YYYY-MM-DD.md | _forged/、技能、索引 | | 触发 | agent_memory_maintain 定时(须 schedule.enabled) | 管理端扫描 / 可选自动扫描 | | 门控 | 保守自动删除(有上限与审计日志) | 扫描可自动,采纳默认人工 |
配置(mindlink.json / 环境变量):agent_memory_maintain.enabled、daily_local_hour(默认 2,按 RuntimeTimezone 本地夜里窗口约 2 小时内每日一次)、daily_note_retain_days、use_llm 等。
| 落盘 | 内容 |
|---|---|
{runtime_dir}/.memory_maintain_status.json | 最近一次全局状态 |
{runtime_dir}/.memory_maintain_history.jsonl | 全局执行历史 |
{runtime_dir}/{智能体ID}/memory/.maintain/log.jsonl | 该智能体变更历史 |
可见性分工:
| 角色 | 看什么 | 手触发 |
|---|---|---|
| 用户 | 本助手「自动整理记录」 | 「整理我的记忆」 |
| 管理员 | 全站执行历史与明细 | 「立刻整理一次」 |
管理端:/agent-memory-maintain(GET/POST /admin/agent-memory-maintain/*)。 用户端:GET/POST /user-agents/{id}/memory/maintain/*。
帮助文档:help/product-features/agent-memory.md、help/admin-ops/agent-memory-maintain.md。
与「记忆锻造」的区别
- 智能体记忆:只属于该用户与该智能体实例,跨会话个性化;每轮可能自动注入。
- 智能体备忘:用户主动存放的记录(文字/文件/图片),按标签与日期检索;不会自动注入,仅用户明确要查/存时才访问。见 智能体备忘.md。
- 记忆锻造(MemoryForge):平台对话归档 → 管理员采纳 → 写入帮助/工作区知识叠加层,服务全员,不是个人记忆。
- 智能体记忆维护:闲时/手动清理个人记忆;不写入
_forged/,不走锻造采纳流。
相关实现
- 规则常量与工具:
backend/internal/agentmemory/rules.go、agenttool/memory.go - 写入/更新/删除:
backend/internal/agentmemory/write.go - 闲时整理与历史:
backend/internal/agentmemory/maintain*.go - 对话记住:
POST /api/v1/user-agents/{id}/memory/remember