上下文的顺序(会话维度)
·
一、MessageWindowChatMemory 上下文逻辑
运行
MessageWindowChatMemory windowChatMemory = MessageWindowChatMemory.builder()
.chatMemoryRepository(redisChatMemoryRepository)
.maxMessages(10) // 核心:只保留最近10条会话消息
.build();
这个上下文的顺序(会话维度)
- 存储顺序:新消息追加到末尾,超过 10 条时删除最旧的第一条;
- 使用顺序:调用 LLM 时,会把这 10 条消息(按「旧→新」)作为上下文传给 LLM;
- 角色顺序:在这 10 条消息里,是「sys(系统提示)→ usr(用户提问)→ assistant(助手回复)」循环,sys 通常是第一条(固定),后面是 usr/assistant 交替。
二、 sys→usr→Advisor→MCP 调用链路逻辑顺序
这是功能执行的层级顺序,完整流程如下(一步都不跳):
预览

sys(系统提示)
usr(用户输入)
ChatMemory(上下文拼接)
Advisor(核心智能体:RetrievalAugmentationAdvisor)
Advisor内部:调用DocumentRetriever(词库检索)
ToolCalling(LLM决策:要调用哪个Skill)
MCP(标准化协议)
Skills(具体业务能力执行)
返回结果给Advisor
Advisor整合结果→回复用户
ChatMemory记录新消息
flowchart TD
A[sys(系统提示)] --> B[usr(用户输入)]
B --> C[ChatMemory(上下文拼接)]
C --> D[Advisor(核心智能体:RetrievalAugmentationAdvisor)]
D --> E[Advisor内部:调用DocumentRetriever(词库检索)]
E --> F[ToolCalling(LLM决策:要调用哪个Skill)]
F --> G[MCP(标准化协议)]
G --> H[Skills(具体业务能力执行)]
H --> I[返回结果给Advisor]
I --> J[Advisor整合结果→回复用户]
J --> K[ChatMemory记录新消息]
用大白话拆解顺序(核心)
- 第一步:sys(系统提示)先定规则(比如「你是电商客服,用检索结果回答」);
- 第二步:usr(用户)发问题(比如「我的订单在哪」);
- 第三步:ChatMemory 把「sys + 历史 10 条消息 + 当前 usr 提问」拼好;
- 第四步:Advisor(你的 RetrievalAugmentationAdvisor)拿到拼接后的上下文,先调用 DocumentRetriever 从词库检索相关内容;
- 第五步:Advisor 里的 LLM 做 ToolCalling,决定要调用哪个 Skill(比如「查询订单 Skill」);
- 第六步:通过 MCP 协议,标准化调用这个 Skill;
- 第七步:Skill 执行具体操作(比如查订单数据库),返回结果;
- 第八步:Advisor 整合「检索结果 + Skill 返回结果」,生成最终回复给用户,同时把这条回复存到 ChatMemory。
总结
- 上下文顺序:
MessageWindowChatMemory是「旧→新」保留最近 10 条,角色上 sys 最优先,usr/assistant 交替; - 调用链路顺序:
sys → usr → ChatMemory → Advisor(含词库检索) → ToolCalling → MCP → Skills,是严格的从上到下执行; - 「sys→usr→Advisor→MCP」基本正确,「ChatMemory」和「ToolCalling」两个关键中间步骤。
更多推荐


所有评论(0)