From facts to meaning, in context.
Part of Nemori-AI, exploring memory as the foundation of agent cognition.
在传统 Memory Injection 模式下,工具只把“原始事实”交给模型:
- 用户是四川人
- 用户上周胃疼
然而,事实本身并不包含答案。
同一个事实,在不同场景中会指向不同的含义:
- “四川人” → 在饮食问题里可能意味着偏好重辣; 在文化活动里,可能意味着节日习俗、地域方言; 在会议安排时,则可能不代表任何信息
- “胃疼” → 在饮食场景中意味着需要清淡; 在日程安排里,则可能意味着避免早起或高强度活动。
ReasonOverMemory 的目标,就是把这种“事实在语境中的意义”提前推理出来:
- 不仅记住事实,还要在当前语境下解释它们;
- 输出的不是片段,而是行动就绪的指导;
- 让 Agent 拿到的是“事实在此刻意味着什么”,而不是一堆死信息。
哲学上的差别在于:
- Memory Injection:事实是死的,语境推理是隐性的。
- ReasonOverMemory:事实在场景中被点亮,含义被外显为可执行的指导。
flowchart TD
A[User Request<br/>教我如何做辛拉面] --> B[Agent]
B --> C[[ToolCall: SearchMemory<br/>inputs: query, context]]
subgraph Tool: Memory Store
C --> D[(Retrieve facts)]
D --> E{{ToolResponse:<br/>用户是四川人<br/>上周胃疼}}
end
E --> F[[LLM Reasoning inside Agent<br/>组合记忆 + 语境推理]]
F --> G[Agent Output<br/>先确认身体情况,再给做法]
classDef tool fill:#f7f7f7,stroke:#bbb,stroke-width:1px,color:#333
class C,D,E tool
flowchart TD
A[User Request<br/>教我如何做辛拉面] --> B[Agent]
B --> C[[ToolCall: ReasonOverMemory<br/>inputs: conversation_context, user_request]]
subgraph Tool: ReasonOverMemory
note1[Memory is internal/implicit]:::note
C --> D[(Access internal user memory)]
D --> E[[Reasoning over memory<br/>归纳 + 约束 + 优先级]]
E --> F{{ToolResponse:<br/>偏好重辣,但上周胃疼<br/>应先确认恢复再定做法}}
end
F --> G[Agent Output<br/>先确认身体情况,再给做法(重辣/温和两版)]
classDef tool fill:#f7f7f7,stroke:#bbb,stroke-width:1px,color:#333
classDef note fill:#fff5e6,stroke:#f0c36d,color:#7a5b00,stroke-dasharray:3 3
class C,D,E,F tool
class note1 note
记忆(用户画像、长期事实等)不作为参数传入,而是系统内部隐式注入。 外部调用只需要两类输入:
- conversation_context:总结过的对话上下文
- user_request:当前用户请求
ReasonOverMemory({
conversation_context: string,
user_request: string
}) => {
reasoning: string, // 面向 Agent 的思考文字
guidance: {
ask_user_first?: boolean,
cautions?: string[],
personalization?: string[],
next_steps?: string[]
},
trace?: {
memory_keys?: string[],
confidence?: number
}
}
{
"conversation_context": "用户前几轮对话未涉及饮食",
"user_request": "教我如何做辛拉面"
}
(系统内部注入记忆:四川人,偏好重辣;上周胃疼)
{
"reasoning": "用户平常偏好重辣,但上周胃疼。应先确认身体恢复,再决定做法。",
"guidance": {
"ask_user_first": true,
"cautions": ["避免空腹重辣", "减少辣油"],
"personalization": ["提供重辣/温和两版"],
"next_steps": ["询问用户恢复情况"]
},
"trace": {
"memory_keys": ["profile.region=四川", "health.last_week=胃不适"],
"confidence": 0.78
}
}
辛拉面的辣度可以调整。
不过您上周提过胃部不太舒服,现在恢复得怎么样?
如果好了,我给您重辣版;如果还在恢复中,我提供温和版做法。
- Memory Injection:提供的是静态事实,推理隐含在模型内部
- ReasonOverMemory:提供的是在场景中被解释过的含义,推理结果外显
这带来几个直接价值:
- 更短链路:减少误差叠加
- 可审计性:推理链路清晰可见
- 可复用性:不同任务可以共享“推理后的指导信息”
- 可对齐性:合规与策略可以在工具层直接控制