- 移除传统关键词匹配方式,改用embedding计算智能兴趣匹配度 - 添加异步方法支持机器人兴趣管理器的智能匹配计算 - 增加详细的日志记录和错误处理机制 - 添加数据库关键词提取和降级处理逻辑 - 集成智能兴趣系统初始化到人设构建流程 - 防止回复自身消息的死循环保护机制 BREAKING CHANGE: 兴趣匹配评分机制完全重构,从基于关键词的硬编码匹配改为基于embedding的智能匹配,需要重新初始化兴趣系统
235 lines
5.8 KiB
Markdown
235 lines
5.8 KiB
Markdown
# 从消息接收到执行Action的完整流程图
|
||
|
||
## 整体流程概览
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[原始消息数据] --> B[消息接收层<br>src/chat/message_receive/bot.py]
|
||
B --> C[消息解析<br>src/chat/message_receive/message.py]
|
||
C --> D[会话管理<br>src/chat/message_receive/chat_stream.py]
|
||
D --> E[亲和力流分发<br>src/chat/affinity_flow/afc_manager.py]
|
||
E --> F[聊天处理器<br>src/chat/affinity_flow/chatter.py]
|
||
F --> G[智能规划决策<br>三层架构]
|
||
G --> H[动作执行管理<br>src/chat/planner_actions/action_manager.py]
|
||
H --> I[最终执行<br>src/chat/planner_actions/plan_executor.py]
|
||
I --> J[Action执行结果]
|
||
```
|
||
|
||
## 详细分阶段流程图
|
||
|
||
### 1. 消息接收与预处理阶段
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[原始消息数据] --> B[message_process入口]
|
||
B --> C{消息切片重组}
|
||
C -- 完整消息 --> D[平台类型判断]
|
||
C -- 切片消息 --> E[等待更多切片]
|
||
|
||
D --> F{S4U平台?}
|
||
F -- 是 --> G[S4U特殊处理]
|
||
F -- 否 --> H[创建MessageRecv对象]
|
||
|
||
H --> I[过滤检查<br>违禁词/正则]
|
||
I --> J[命令处理系统]
|
||
|
||
J --> K{PlusCommand?}
|
||
K -- 是 --> L[执行PlusCommand]
|
||
K -- 否 --> M[执行BaseCommand]
|
||
|
||
L --> N[事件触发]
|
||
M --> N
|
||
|
||
N --> O[模板处理]
|
||
O --> P[预处理完成]
|
||
```
|
||
|
||
### 2. 消息解析阶段
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[预处理完成消息] --> B[MessageRecv.process]
|
||
B --> C{消息类型判断}
|
||
|
||
C -- 文本 --> D[直接提取文本]
|
||
C -- 图片 --> E[图片识别处理]
|
||
C -- 表情 --> F[表情包描述]
|
||
C -- 语音 --> G[语音转文本]
|
||
C -- 视频 --> H[视频内容分析]
|
||
C -- AT消息 --> I[提取用户信息]
|
||
C -- 其他 --> J[通用处理]
|
||
|
||
D --> K[生成纯文本]
|
||
E --> K
|
||
F --> K
|
||
G --> K
|
||
H --> K
|
||
I --> K
|
||
J --> K
|
||
|
||
K --> L[消息解析完成]
|
||
```
|
||
|
||
### 3. 会话管理阶段
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[解析后消息] --> B[ChatManager.register_message]
|
||
B --> C[生成stream_id<br>platform+user+group]
|
||
|
||
C --> D{会话是否存在?}
|
||
D -- 内存中存在 --> E[获取现有会话]
|
||
D -- 内存中不存在 --> F[数据库查询]
|
||
|
||
F --> G{数据库存在?}
|
||
G -- 是 --> H[从数据库加载]
|
||
G -- 否 --> I[创建新会话]
|
||
|
||
H --> J[更新会话信息]
|
||
I --> J
|
||
|
||
J --> K[设置消息上下文]
|
||
K --> L[会话管理完成]
|
||
```
|
||
|
||
### 4. 智能规划决策阶段(三层架构)
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[会话管理完成] --> B[规划器入口 ActionPlanner]
|
||
|
||
B --> C[PlanGenerator生成初始Plan]
|
||
C --> D[兴趣度评分系统]
|
||
|
||
D --> E[提取未读消息]
|
||
E --> F[计算多维评分]
|
||
F --> G[兴趣匹配度]
|
||
F --> H[用户关系分]
|
||
F --> I[提及度评分]
|
||
|
||
G --> J[加权总分计算]
|
||
H --> J
|
||
I --> J
|
||
|
||
J --> K{是否回复?}
|
||
K -- 是 --> L[保留reply动作]
|
||
K -- 否 --> M[移除reply动作]
|
||
|
||
L --> N[PlanFilter筛选]
|
||
M --> N
|
||
|
||
N --> O[LLM决策最终动作]
|
||
O --> P[规划决策完成]
|
||
```
|
||
|
||
### 5. 动作执行阶段
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[规划决策完成] --> B[ActionManager执行]
|
||
|
||
B --> C{动作类型判断}
|
||
C -- no_action --> D[记录不动作]
|
||
C -- no_reply --> E[记录不回复]
|
||
C -- reply --> F[生成回复内容]
|
||
C -- 其他动作 --> G[执行具体动作]
|
||
|
||
D --> H[执行完成]
|
||
E --> H
|
||
F --> I[发送回复消息]
|
||
G --> J[动作处理器执行]
|
||
|
||
I --> H
|
||
J --> H
|
||
|
||
H --> K[PlanExecutor最终执行]
|
||
K --> L[用户关系追踪]
|
||
L --> M[执行统计记录]
|
||
M --> N[动作执行完成]
|
||
```
|
||
|
||
## 完整端到端流程
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
A[消息接收] --> B[消息解析]
|
||
B --> C[会话管理]
|
||
C --> D[消息分发]
|
||
D --> E[聊天处理]
|
||
E --> F[兴趣度评分]
|
||
F --> G[规划生成]
|
||
G --> H[LLM筛选]
|
||
H --> I[动作管理]
|
||
I --> J[最终执行]
|
||
J --> K[结果返回]
|
||
|
||
subgraph 智能决策层
|
||
F
|
||
G
|
||
H
|
||
end
|
||
|
||
subgraph 执行层
|
||
I
|
||
J
|
||
K
|
||
end
|
||
|
||
style 智能决策层 fill:#e1f5fe
|
||
style 执行层 fill:#f3e5f5
|
||
```
|
||
|
||
## 关键组件交互关系
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
Bot[Bot.message_process] --> Message[MessageRecv]
|
||
Message --> ChatManager[ChatManager]
|
||
ChatManager --> AFCManager[AFCManager]
|
||
AFCManager --> Chatter[AffinityFlowChatter]
|
||
|
||
Chatter --> Planner[ActionPlanner]
|
||
Planner --> Generator[PlanGenerator]
|
||
Planner --> Scorer[InterestScoringSystem]
|
||
Planner --> Filter[PlanFilter]
|
||
|
||
Filter --> ActionManager[ActionManager]
|
||
ActionManager --> Executor[PlanExecutor]
|
||
|
||
Executor --> Result[执行结果]
|
||
|
||
%% 数据流
|
||
Message -.-> |消息数据| Chatter
|
||
Scorer -.-> |兴趣评分| Filter
|
||
Generator -.-> |初始Plan| Filter
|
||
Filter -.-> |最终Plan| Executor
|
||
```
|
||
|
||
## 异常处理流程
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[开始处理] --> B[正常流程]
|
||
B --> C[处理完成]
|
||
|
||
B --> D{发生异常?}
|
||
D -- 是 --> E[异常捕获]
|
||
D -- 否 --> C
|
||
|
||
E --> F[日志记录错误]
|
||
F --> G[错误类型判断]
|
||
|
||
G -- 消息解析失败 --> H[返回解析错误]
|
||
G -- 会话不存在 --> I[创建新会话重试]
|
||
G -- LLM决策失败 --> J[使用默认动作]
|
||
G -- 动作执行失败 --> K[动作回退机制]
|
||
G -- 其他错误 --> L[返回通用错误]
|
||
|
||
H --> M[异常处理完成]
|
||
I --> B
|
||
J --> M
|
||
K --> M
|
||
L --> M
|
||
```
|
||
|
||
这个流程图详细展示了从消息接收到执行action的完整流程,包括各个阶段的处理逻辑、组件交互关系以及异常处理机制。整个系统采用了模块化设计,具有清晰的职责分离和良好的可扩展性。 |