M8.记录聚焦对象并尝试填槽(dialogue_engine.py)DialogueEngine._handle_object_message
T9.收集messages并写回slot_updates
T4.内层循环起点推进到下一个Action(advance_until_action)
K7.读取用户本发送的原始消息(作为提问本体)(pending_turn.input_message)
直接返回action_listen
生成填槽指令task
校验无效
C6.包装为机器人消息并返回message.py
resume_flow
通过
是
R6.调用LLM将基础话术改为自然回复ai_clients.py
T8.执行Action(runner.py)ActionRunner.run
K8.组装提示词并生成回复(knowledgeResponder.respond)
K9.封装为消息列表list(botmessage)
读取系统流Step
C3.将历史轮次拼成对话记录文本,并把用户消息渲染成文本(history_builder.py)
K5.统一格式,封装知识片段列表(knowledgeChunk)
两个都没有
M10.保存用户最新状态(dialogue_service.py)DialogueService.process_message
endf返回回复给用户
有直接返回
M2.加载用户历史状态(dialogue_sevice.py)调用DialogueServer.process_message
R5.加强澄清提示词模板并组装调用链模板:jinja2加载:prompt_loader.py
M3.无历史状态则新建用户对话状态(dialogue_engine.py)调用DialogueEngine.process
active_system_flow(优先判断)
active_task
否
Chitchat闲聊
Collect
Action
respond内部
查当前消息原话确认问题本体
K2.意图标签转化为数据源清单(无网络调用纯查表)
K3.数据源注册中心查找对应实例(knowledgeProviderRegistry.get)
R2.读取当前聚焦对象responder.py
Knowledge知识问答
T5.判断当前上下文优先级(state.current_task())
Task任务
T6.判断类型current_step
若有活动任务则中断当前业务任务并挂起(state.interrupt_active_task)
套用jinja2模板注入硬约束LLM只做阅读理解以杜绝幻觉knowledge respond.jinja2+LLM 调用
是否有失败提示
若有活动任务则中断当前业务(domain/state.py)
将当前上下文的step_id更新为next step
M5.判断消息类型(domain.message.py)MessageType
启动system-collect-information系统任务
内层循环返回 ActionCall 交外层执行
M7.校验意图与分发(models.py)TurnPlanValidator.validate
K4.多路检索(逐provider串行调用,统一的外部IO)(knowledgeProvider.retrieve)
OBJECT对象
TEXT文本
M6.意图规划(planner.py)TurnPlanner.predict
R1.澄清回复器开始执行(responder.py)
尝试自动填槽state.focused_object
M9.提交本轮记录(dialogue_engine.py)DialogueEngine.process->commmit_pending_turn
slot是否有值
T2.判断Command类型
R7.包装为机器人消息并返回
直接推进到next_step
更新并返回ActionCall
知识处理轨道
M1,接受请求与格式转换(routers.py)调用_build_message
无进行下一步
获取需要开始的flow,若有正在执行的用户任务则挂起并执行中断任务,反之直接执行开始任务SystemContext
R3.构建对话历史并渲染用户信息history_builder.py
T1.处理命令阶段(processor.py)CommandProcessor.run根据Command修改DialogueState
C4.加载闲聊回复提示词模板并组装调用链模板:jinja2加载:prompt_loader.py
start用户发送消息
获取当前flow上下文,执行取消系统任务的任务(yaml启动system_task_canceled系统任务)
是,终止外部循环返回message
start_flow
M4.创建/开始本轮记录(dialogue_engine.py)DialogueEngine._begin_turn
闲聊处理轨道
C1.闲聊处理器开始执行(handler.py)
end
任务处理轨道
cancle_flow
校验数据
K1.意图识别与解析KnowledgeHandler.handle
获取需要恢复的任务信息,检测是否有正在执行的用户任务,有则挂起并执行中断任务,无则直接进行恢复任务(yaml启动system_task_resumed系统任务)
C2.从待处理轮次中读取当前客户消息/从当前会话中读取历史轮次(handler.py)
不通过
C5.调用大模型生成闲聊回复(ai_clients.py)
查知识内容准备回答的内容避免LLM自由发挥
set_slots
T3.推进流阶段(外层循环开始)(executor.py)FlowExecutor.run_task
Start
M11.构建响应并返回(routers.py)_build_response
查对话历史理解语境
读取业务流Step
结束当前流清理SystemContext或者Task
K6.截取最近多轮对话历史(用于确定,理解语境)state.get_current_session().turns
获取槽位信息后进行填槽操作self.active_task.slots.update(slots)
清理slot中当前槽位信息
T7是否为action_listen
澄清轨道
R4.根据失败原因生成本轮基础澄清话术responder.py