Files
Mofox-Core/消息处理流程.md
Windpicker-owo dcdef633e0 feat(affinity-flow): 重构兴趣度评分系统为智能embedding匹配
- 移除传统关键词匹配方式,改用embedding计算智能兴趣匹配度
- 添加异步方法支持机器人兴趣管理器的智能匹配计算
- 增加详细的日志记录和错误处理机制
- 添加数据库关键词提取和降级处理逻辑
- 集成智能兴趣系统初始化到人设构建流程
- 防止回复自身消息的死循环保护机制

BREAKING CHANGE: 兴趣匹配评分机制完全重构,从基于关键词的硬编码匹配改为基于embedding的智能匹配,需要重新初始化兴趣系统
2025-11-19 23:06:40 +08:00

235 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 从消息接收到执行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的完整流程包括各个阶段的处理逻辑、组件交互关系以及异常处理机制。整个系统采用了模块化设计具有清晰的职责分离和良好的可扩展性。