记忆系统状态机实战:backend 选择、fallback、自愈与 scope guard
这一章是实现手册,补齐 记忆系统 中“怎么写代码”的部分。
对应源码入口(可选)
src/memory/backend-config.tssrc/memory/search-manager.tssrc/memory/qmd-manager.tssrc/agents/tools/memory-tool.tssrc/gateway/server-startup-memory.ts
状态机拆解(建议按这三层写)
- 配置解析层:把配置解析成运行时结构(backend/citations/limits/scope)。
- manager 获取层:尝试 primary(qmd),失败回落 fallback(builtin)。
- 工具层:
memory_search/memory_get暴露给智能体;失败要“安全降级”,不能打崩主对话。
最关键的自愈点:失败后驱逐缓存条目
如果 primary manager 初始化失败或 search 出错,应该:
- 标记 primaryFailed
- 关闭 primary
- 驱逐缓存条目(下次允许重新创建 primary)
否则系统会“永久复用一个已坏的实例”,线上很难自愈。
scope guard:权限边界不是后端故障
scope 不允许时返回空结果(或 disabled),不要抛错误把主链路打崩。
失败场景与排障入口
验收清单
- primary 失败会自动切 fallback,且主对话可继续完成。
- 驱逐缓存后,下次请求会重试创建 primary。
- scope 不匹配时返回空结果,不报错。
- 工具层在 manager 不可用时返回 disabled,而不是 throw。