- 移除传统关键词匹配方式,改用embedding计算智能兴趣匹配度 - 添加异步方法支持机器人兴趣管理器的智能匹配计算 - 增加详细的日志记录和错误处理机制 - 添加数据库关键词提取和降级处理逻辑 - 集成智能兴趣系统初始化到人设构建流程 - 防止回复自身消息的死循环保护机制 BREAKING CHANGE: 兴趣匹配评分机制完全重构,从基于关键词的硬编码匹配改为基于embedding的智能匹配,需要重新初始化兴趣系统
5.8 KiB
5.8 KiB
从消息接收到执行Action的完整流程图
整体流程概览
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. 消息接收与预处理阶段
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. 消息解析阶段
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. 会话管理阶段
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. 智能规划决策阶段(三层架构)
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. 动作执行阶段
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[动作执行完成]
完整端到端流程
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
关键组件交互关系
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
异常处理流程
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的完整流程,包括各个阶段的处理逻辑、组件交互关系以及异常处理机制。整个系统采用了模块化设计,具有清晰的职责分离和良好的可扩展性。