loadMemory 检索工具。
接入方式
在Agent.builder() 中配置 longTermMemory(...) 后,Runner 会读取这个 memory service 作为长期记忆后端。只要没有手动声明同名工具,VeADK Java 会自动注入官方 loadMemory 工具,让模型在回答前按需检索历史记忆。
如果希望会话结束后自动写入长期记忆,再打开 autoSaveSession(true)。VeADK Java 会追加保存会话的回调,把新产生的用户消息写入 memory service。
Mem0 记忆
Mem0MemoryService 适合把长期记忆托管到 Mem0。它会从会话事件中抽取用户消息写入 Mem0,并在 loadMemory 被调用时按 userId 和查询文本检索相关记忆。
Mem0 支持两种凭证方式。直接使用 Mem0 API Key 时:
DATABASE_MEM0_BASE_URL 未配置时默认使用 https://api.mem0.ai。DATABASE_MEM0_REGION 未配置时默认使用 cn-beijing。
Viking Memory
VikingMemoryService 适合使用火山引擎 Viking Memory 作为长期记忆后端。它同样实现了 ADK Java 的 BaseMemoryService,可以直接传给 Agent.builder().longTermMemory(...)。
异步与同步写入
Mem0 默认使用ASYNC 写入模式:保存调用返回表示 Mem0 已接收请求,但新记忆不一定马上能被下一次搜索命中。对大多数聊天场景,这种模式延迟更低。
当同一流程的下一步必须立即依赖刚写入的记忆时,使用同步模式:
自动保存策略
默认策略会避免每个事件都触发保存。首次有可保存内容时会写入;之后只有当新增事件数或距离上次保存的时间达到阈值时才继续保存。默认阈值为10 条新事件和 60 秒,也可以通过环境变量调整:
autoSaveMemoryPolicy(...):
应该保存什么
适合写入长期记忆的内容:- 用户明确表达、未来会复用的偏好,例如语言、格式、通知习惯。
- 经过确认的长期事实,例如项目角色、常用系统、稳定业务约束。
- 可以跨会话复用的任务结论,例如某个集成的默认配置或排查结论。
- 密码、Token、SSH Key、API Key 或其他凭证。
- 未脱敏的个人敏感信息、合规受限数据或客户原文。
- 临时推理过程、工具原始输出、一次性草稿或未经确认的猜测。
- 完整聊天记录。长期记忆应保存可复用事实,而不是把所有会话当作备份。
注意事项
如果模型没有检索到预期记忆,优先检查longTermMemory(...) 是否已配置、用户 ID 是否一致、会话是否已保存,以及当前使用的写入模式是否允许下一轮立即搜索到新内容。对于 Viking Memory,还需要确认集合已经存在或当前凭证具备集合管理权限。