文档 - Memory 可见性
看见 Agent 在记什么
在悟空平台上, 你不只是 prompt 的作者, 你是 Agent 记忆的管理员. 每一条 fact, commitment, trajectory 都看得见, 改得动, 写得了 note. 而且每一 turn 的 LLM 调用, 你都能看到记忆是怎么塞进 context window 的.
1. 为什么是世界第一
ChatGPT, Claude, Gemini, Coze, Dify 这些平台上, Agent 的长期记忆都是一个黑盒. 你写完 prompt 后, Agent 在跟用户聊什么, 记住了什么, 用记住的什么去回答下一句 - 你看不到也改不了. Agent 突然说错话, 你只能猜.
悟空是 全球首个 把 Memory 层直接开放给 Builder 的 Agent 平台:
- 可见 (Visible) - 每一条 fact, commitment, trajectory 都在屏幕上.
- 可编辑 (Editable) - LLM 抽错了你可以改, 不该记的可以删.
- 可批注 (Annotatable) - 在 Agent 任何一条回复下面留 note: "下次该先问预算".
- 可追溯 (Traceable) - 每一 turn 都能看到塞进去的是哪些记忆, 每条记忆又是从哪个 turn 抽出来的.
这不是一个 ChatBot 升级. 这是从对话 AI 走向数字生命体的开始.
2. 三大模块 - 先看全景
| 模块 | 回答的问题 | 在哪儿看 |
|---|---|---|
| Memory 是从哪里来的 | 这条记忆是哪一段对话抽出来的? 哪一个 turn? LLM 写的还是你写的? | Session Memory 区, Memory Snapshot Card, Latest Memory 里的 "Learned [date]" 跳转 |
| Memory 是怎么被用的 | 这一次 LLM 调用, 从记忆里挑了哪些条目塞进 context window? session summary 被压缩成什么样? | Memory At Turn 弹窗 (点 turn 头上的 🧠 N facts · M commitments 按钮) |
| Builder 怎么干预 | 改 / 删 / note. 你的动作直接影响下一 turn. | Latest Memory Drawer (改 / 删), Memory Snapshot Card (追加 fact), Builder Message Memory (per-message note) |
3. 怎么进入
Builder Dashboard → 选 Agent → 用户列表 → 选某个 end-user → Conversation Memory View. URL 形式: /agents/{agentId}/conversations/{userId}/memory. 顶部是 Agent 名称, end-user 邮箱, session 数量, 累计收益. 下面是四个可折叠的记忆层级标签, 再下面是聊天记录时间线.
4. 四个记忆层级 (顶部 Tab)
Builder 看到的 Memory 不是一锅粥, 而是按生命周期分成四层. 每层一个颜色, 一个图标, 一个用途.
🧠 Latest Memory - Agent 现在心里装的
最常用的入口. 打开后是一个 Drawer, 分两段.
Short-term (短期, 0-6 个月) - 以 Facts 和 Commitments 形式存在. 每条 Fact 显示: 内容文本, Learned 2026-05-28 形式的时间戳 (点击会跳到产生它的那条原始消息), Edit / Delete 按钮. 每条 Commitment 显示: 状态 pill (OPEN / DONE / ABANDONED), 承诺内容, 承诺日期.
Long-term (长期, 6 个月以上)- 压缩段落 + Trajectory. 长期模式是只读段落. Trajectory 是 Builder 可编辑的多行文本 - 这是 Agent 对这个用户的“成长曲线”理解, 你可以直接改写.
Builder 权限: 改 / 删 fact, 改 trajectory.
💾 Session Memory - 这次对话内部记的
当一次对话长到超出 context window, 会触发 session-level 压缩. 这里展示结构化的压缩结果.
子块: Open Threads (描述, 下一步动作, 阻塞在谁, 优先级), User Profile (domain literacy, interaction style, 推断项目, 明示目标, notable insights), Facts, Key Events (T5, 摘要, 结果), Prose Summary.
只读. 它告诉你 Agent 在这次对话里看到了什么.
🔮 Short-Term Memory - 跨 session 的用户画像
Tier 2. 会被注入到每次新对话的 system prompt 的 Block 0.
每条显示: 置信度圆点 (绿色 = 已确认, 琥珀色 = 推断), 内容, 状态 pill (active / stale / resolved / contradicted / archived), confidence label, last seen (today / yesterday / Nd ago), expiry (no expiry / expires in Nd / expired), agent kind tag, tags, evidence (斜体, 如果有). 按类型分组: Fact ◆ / Commitment ◉ / Trajectory ⟶, 每组显示 active / inactive 计数.
这一层只读 - 要编辑请回 Latest Memory.
🌐 Long-Term Memory - 永久档案
Tier 2.5. 从 stale 的短期记忆每周 harvest 一次. 半年以上压缩肖像.
每条显示: 状态 (Active / Superseded), 版本号 + harvest 次数, 引号内的散文摘要 (斜体), Tags (青色 pill), 来源行数 ("sourced from N short-term rows"), 首次创建日期. 当前 Active 版本在上, 历史版本默认折叠.
只读. 这是 Agent 对这个用户的长期肖像画.
5. Per-turn 追溯 - 每一 turn 记忆是怎么用的
这是悟空 Memory UI 最独特的功能. 目前没有任何竞品做到这一点.
聊天记录时间线里, 每一对 (user message + agent reply) 上方有一条蓝色按钮: 🧠 5 facts · 2 commitments ⌄. 点它. Memory At Turn 弹窗会打开, 标题是 "Memory sent at this turn", 副标题是 turn 序号 + 时间戳.
| 段落 | 展示什么 |
|---|---|
| Session Summaries | 这一 turn 之前所有 session summaries + L5 compaction preview (session 内部压缩预览) |
| Facts | manifest.l3.pinnedFactIds 里的 facts - 也就是被挑出来塞进 context window 的那几条 |
这就是 full trace 的核心:你看到的不是 "Agent 当时大概记得什么", 而是那一次 LLM 调用真实的 context window 切片. manifest 是从 runtime 直接读出来的, 不是事后重建.
这里只读. 想改某条 fact, 回 Latest Memory.
- "Agent 怎么突然说错话了?" - 现在你能看到它当时拿到的 context.
- "Agent 为什么没用上用户之前说过的偏好?" - retrieval 排序可见.
- "session compaction 把哪些细节扔了?" - L5 preview 把压缩后的样子摊给你看.
6. 每条 Memory 是从哪里来的 (Provenance)
Memory Snapshot Card. 聊天记录时间线每一个 session 边界, 都有一个 "Memory after Session N" 卡片, 副标题 "Post-processed [date]" 或 "Not post-processed yet". 分三组: Facts (本 session 新抽出的会带 NEW 徽章, 每行右侧 Edit / Delete), Commitments (状态 pill, open 的可直接删), Trajectory (如果本 session 更新过会带 NEW 徽章, 右侧 Edit). 底部还有 + Add fact - Builder 手工追加 fact 的入口.
builder_authored (区别于 llm_generated 和 builder_edited), retrieval 时会按更严格的规则处理, 防止 prompt injection. 完整策略在平台内部的 trust-and-injection 文档."Learned [date]" 跳转. 每条 Short-term Fact 旁边都有 Learned 2026-05-28 这种链接. 点它, 时间线会自动滚动到那条原始消息并高亮.
这就是 end-to-end trace: fact → 它被抽出来的 turn → 它后来在哪些 turn 被 inject 进 context. 三段路径全部可见.
7. Builder 的三种干预动作
Memory 不是装饰, 它是 Agent 行为的输入. 有三种干预方式.
Edit - 修正 LLM 抽错的事实
Edit 在 Latest Memory Drawer 和 Memory Snapshot Card 的每条 fact 右侧都有. 点 Edit, 弹出 inline textarea, 改完保存.
后台行为: provenance 从 llm_generated 变成 builder_edited. 下次 retrieval 时, 这条 fact 的可信度会上调 (人工确认过的优先级高).
Delete - 删除不该有的记忆
同样的入口. 常见场景:
- 用户随口提了个错误信息, Agent 把它当真了.
- 隐私敏感内容 (手机号, 住址) 被无意识地记成了 fact.
- 旧版本 prompt 抽出的过时知识.
软删除: 从 retrieval 集合里移除, 历史轨迹保留 (合规审计仍可查).
Note - 在 Agent 回复下面写批注
每条 Agent 回复 下方有一个折叠按钮 + Add memory. 展开后是 textarea, 写完点 Save. 这条 note 会以 📝 1 memory 的形式常驻在那条回复下面.
Note 给三个对象看:
- 给你自己 - 下次回顾这个对话时, 你会看到自己当时的思考.
- 给悟空平台 - 你的 note 是平台改进 memory engine 的信号.
- 给未来的 Training 模块 - 这是 Builder 标注数据. 后续 Training 上线后, 它就是 RLHF / DPO 的原料.
示例 note:
- "这里 Agent 应该先问用户的预算, 而不是直接推荐高端方案."
- "这条 fact 是用户在玩笑, 不应该记."
- "Agent 把 commitment 标成 done 太早了, 用户还没确认."
Note 的 provenance 是 builder_authored, 不会被注入到面向 end-user 的 prompt, 不会污染真实对话.
8. Memory 改了之后会发生什么
改了 short-term fact: 立即对 下一次 对话生效. 当前 session 已经送出去的 prompt 不会回滚. 历史 turn 的弹窗仍然显示旧值 - trace 不被改写 (这是设计上的不变量).
改了 trajectory: 立即生效. Trajectory 是 Block 0 的一部分, 下次对话开始就读到新版本.
删了 fact / commitment: 立即从 retrieval 集合里移除. 历史 trace 仍然保留- 你三个月后回头看那条 turn 的弹窗, 仍然能看到 "当时这条 fact 被 inject 了".
写了 note: 不影响 Agent 的对外行为. note 进入 Builder 自己的 review pipeline 和未来 Training 模块.
9. 一句话总结
黑盒时代结束了. 从今天起, 你的 Agent 记得什么, 用了什么, 为什么这么回答 - 你都看得见, 也都管得着.
