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

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

5.8 KiB
Raw Blame History

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