作用域
user_id、agent_id 与 run_id 如何划分记忆,以及工作区隔离如何位于它们之下。
一个助手服务许多终端用户,拥有自己的角色,并运行许多会话。如果所有记忆进入同一个池,召回会把一个用户的事实带给另一个用户,或把旧会话状态带进新任务。作用域说明记忆属于谁。
写入时附加作用域,搜索时使用相同作用域。三种作用域相互独立,可以组合。
user_id:终端用户事实
用于用户的所在地、偏好、账户信息或做出的决策。这是最常见的作用域。
await client.add(messages, { user_id: "u_8417" });agent_id:助手自身事实
用于助手角色、操作规则或应跨所有用户保留的知识,例如“回答保持简洁”或“价格始终使用 EUR”。
run_id:单次会话
用于只在一次对话或任务运行中有效、不应进入下一次运行的临时目标、草稿状态或进行中工作流。运行结束后停止读取该 run_id 即可。
组合作用域
典型读取同时传入 user_id 与 agent_id,需要时再加入 run_id。只传与查询相关的范围;范围越窄,召回越准确。
底层工作区隔离
作用域只在项目内部组织记忆,并不是安全边界。每条记忆还会自动带项目 ID,每次读取都由数据层注入该过滤器。同一个 user_id 出现在两个项目中也不会碰撞。参阅工作区隔离与写入记忆。