Session 04
Memory / State
Memory 和 state 是 agent 长期可用性的核心。State 让任务可恢复,memory 让 agent 跨会话学习,但两者都可能污染系统。
1. 训练目标
本页要练会:能区分 session state、workspace state、project memory、user memory、external memory provider,并知道何时该写、何时该拒写。
主要依据:Claude memory / Hermes memory providers / OpenClaw multi-agent。
2. 三项目对照
| 维度 | Claude Code | OpenClaw | Hermes Agent |
|---|---|---|---|
| 短期状态 | Claude session、todo/checkpoint、tool outputs。 | session store、routing state、agentDir 下的会话。 | conversation/session、terminal backend 状态、tool outputs。 |
| 长期记忆 | CLAUDE.md + auto memory,作为 context 加载。 | workspace、agentDir、per-agent config/session。 | MEMORY.md / USER.md + 外部 memory provider 可添加搜索/存储工具。 |
| 关键警告 | memory 是 context,不是强制配置;阻止动作要用 hook。 | 每个 agent 有独立 workspace、state directory、session store。 | 外部 memory provider 是 additive,可能增加检索和写入面。 |
3. 组件机制
| 机制 | 解释 |
|---|---|
| Session state | 当前任务的历史、工具结果、待办、审批、错误和 routing state。 |
| Project memory | 项目规则、命令、架构约定、常见测试路径。 |
| User memory | 偏好、长期目标、身份上下文,但必须有隐私和删除边界。 |
| External memory provider | 把记忆搜索、同步、抽取交给外部系统,增强能力也扩大风险面。 |
4. 失败模式
| 失败模式 | 为什么危险 |
|---|---|
| memory poisoning | 错误、恶意或过期信息进入长期记忆后持续影响未来任务。 |
| state-memory 混淆 | 把临时任务状态写成长期偏好,或把长期偏好当本轮事实。 |
| 不可删除 | 记忆进入文件、索引、provider 和缓存后无法清理。 |
5. 架构练习
- 为一个团队 coding agent 设计 CLAUDE.md、auto memory、hook 三层边界。
- 比较 OpenClaw per-agent session store 和 Hermes external memory provider 的不同风险。
- 写一个 memory write policy:什么可写,什么需确认,什么必须拒写。
6. 知识展开
上面的卡片是索引,点击后跳到对应的详细解释。阅读时不要只记名词,要同时记住组件边界、为什么需要它、三个项目怎么体现,以及你能用什么问题自检。
State vs memory
state 服务当前任务恢复,memory 服务跨任务复用;两者生命周期和风险不同。
Memory write policy
规定什么能写入长期记忆、什么需确认、什么必须拒写。
Memory provider
外部模块负责记忆存储、检索、抽取或同步。
Memory poisoning
错误、恶意或过期信息进入长期记忆后,持续影响后续任务。
Memory governance
围绕记忆读取、写入、更新、删除、审计和权限的治理规则。
Detailed Concepts
| 概念 | 是什么 | 为什么重要 | 项目对照 | 自检问题 |
|---|---|---|---|---|
| State vs memory | state 服务当前任务恢复,memory 服务跨任务复用;两者生命周期和风险不同。 | 把临时状态写成长期记忆会污染未来任务,把长期偏好当当前事实会误导本轮决策。 | Claude Code 的 CLAUDE.md 是 context memory;OpenClaw 强调 session/workspace state;Hermes 提供 MEMORY/USER 和 memory providers。 | 这条信息明天还应该影响 agent 吗? |
| Memory write policy | 规定什么能写入长期记忆、什么需确认、什么必须拒写。 | memory 写入是安全边界,不是“模型觉得重要就存”。 | Claude Code memory 适合项目约定;Hermes provider 扩展写入面;OpenClaw 更适合把 runtime/session 状态分开管理。 | 是否阻止权限、安全规则、身份声明被用户写入 memory? |
| Memory provider | 外部模块负责记忆存储、检索、抽取或同步。 | provider 提升召回和跨设备能力,同时扩大权限、删除、同步和污染风险。 | Hermes 明确有 memory provider;Claude Code 更强调本地/项目 memory;OpenClaw 可通过 workspace/session 或外部 store 扩展。 | provider 返回的内容是否可追溯、可删除、可降权? |
| Memory poisoning | 错误、恶意或过期信息进入长期记忆后,持续影响后续任务。 | 这是 agent 长期使用时最危险的隐性质量问题。 | 三类 agent 都会遇到,只是入口不同:项目文件、workspace、provider、用户偏好都可能成为污染源。 | 写入前是否有来源、置信度、确认和审计? |
| Memory governance | 围绕记忆读取、写入、更新、删除、审计和权限的治理规则。 | 没有 governance 的 memory 会变成不可控提示污染源。 | Claude Code 需要区分 memory 与 hooks;OpenClaw 要区分 session store 与长期配置;Hermes 要治理外部 provider。 | 用户要求删除记忆时,索引、缓存和备份怎么处理? |