""" 工作流注册表 - 主代理与 app 共用 主代理阶段四根据此配置路由到所有注册的子 agent; app 据此执行对应工作流。 添加新工作流时,在此配置 WORKFLOW_CONFIG 与 ROUTE_DESCRIPTIONS。 """ # ============================================================================ # =============== 工作流配置区域 - 添加新工作流时只需修改这里 =============== # ============================================================================ # 格式: # "route_flag": { # "module": "workflows.workflow_xxx", # "function": "run_xxx_workflow", # "is_async": True/False, # } # ============================================================================ WORKFLOW_CONFIG = { "fault_diagnosis": { "module": "workflows.workflow_fault_diagnosis", "function": "run_fault_diagnosis_workflow", "is_async": True, }, "qa": { "module": "workflows.workflow_qa", "function": "run_qa_workflow", "is_async": True, }, "故障排查与修理": { "module": "workflows.workflow_fault_diagnosis", "function": "run_fault_diagnosis_workflow", "is_async": True, }, "spare_parts_statistics": { "module": "workflows.workflow_spare_parts_statistics", "function": "run_spare_parts_statistics_workflow", "is_async": True, }, "rules": { "module": "workflows.workflow_qa", "function": "run_qa_workflow", "is_async": True, }, "other": { "module": "workflows.workflow_fault_diagnosis", "function": "run_fault_diagnosis_workflow", "is_async": True, # # "module": "workflows.workflow_other", # "function": "run_other_workflow", # "is_async": True, }, "report":{ # "module": "workflows.workflow_qa_report", # "function": "run_qa_report_agent", # "is_async": True, "module": "workflows.workflow_fault_diagnosis", "function": "run_fault_diagnosis_workflow", "is_async": True, }, "舰船百科":{ "module": "workflows.workflow_baike", "function": "run_baike_workflow", "is_async": True, }, "操作使用":{ "module": "workflows.workflow_operate", "function": "run_operate_workflow", "is_async": True, }, "统计":{ "module": "workflows.workflow_statistics", "function": "run_statistics_workflow", "is_async": True, } } # 路由标志 -> 任务分类描述(供主代理阶段四 LLM 使用) ROUTE_DESCRIPTIONS = { "fault_diagnosis": """ - 特征:用户描述**当前或近期发生的设备异常、报警、性能下降等具体故障现象**,需要分析原因或定位问题。 - 关键词:报警、异常、异响、冒烟、过热、无法启动、突然停机、振动大、压力低、温度高、故障代码、不工作 - 示例: • 主机滑油压力突然降到0.2MPa并报警 • 柴油机启动后冒黑烟且转速不稳 • 舵机发出异常噪音,疑似齿轮损坏 - 注意:若历史记录中包含“请补充”、“【需要更多信息】”,通常属于此类,因已聚焦具体故障场景。 当用户问题中只有舷号、设备或故障现象时属于此类,舷号一般为连续的阿拉伯数字如“101”,"111","122","163","16","17","554","602","545","985","31","3261","799","905","781"等,或者数字后加舰,比如“101舰","199舰","18舰"等。 """, "qa": """ - 特征:询问定义、原理、结构、功能、分类、标准配置、常见类型、安全规范等**一般性知识**;也包括对专业术语、现象、部件作用的解释。 **即使问题表述模糊、不完整、缺少上下文,只要涉及船舶、机械、电气、动力等技术内容,均优先归为此类。** - 关键词:什么是、如何工作、为什么、请问、介绍、解释、有哪些、常见、典型、一般、作用、组成、是不是、叫什么 - 示例: • 船舶主发动机有哪些常见故障类型? • 涡轮增压器的工作原理是什么? • 主机由哪些主要部件组成? • 什么是MAN B&W柴油机? - 注意: • **本类作为技术相关问题的默认兜底类别**——凡涉及设备、系统、部件、工况、参数等技术语境的问题,若无法明确归入 fault_diagnosis / repair / spare_parts_statistics / rules,则优先视为 qa。 """, "repair": """ - 特征:用户明确请求**维修方法、操作步骤、检修流程、更换方案或现场处理建议**,通常在已知故障或需预防性维护时提出。 - 关键词:怎么修、如何维修、维修步骤、检修方法、更换、拆卸、安装、处理、修复、维护、保养、调整 - 示例: • 主机喷油器漏油,怎么更换? • 给出主机缸套磨损的维修方案 • 如何拆卸增压器进行检修? """, "spare_parts_statistics": """ - 特征:用户需要对**备品备件的数量、使用记录、库存、消耗趋势、预测需求或成本分析**进行查询或统计。 - 关键词:备件、备品、库存、数量、统计、预测、分析、消耗、需求、清单、台账、寿命、更换周期、用了多少、还剩多少 - 示例: • 统计过去一年主机喷油嘴的使用数量 • 预测下季度所需空冷器备件数量 • 主机活塞环的平均更换周期是多少? - 注意:若仅问“某个部件是不是备件”或“这个备件叫什么名字”,属于知识问答(qa),而非本类。 """, "rules": """ - 特征:用户询问与船舶设备维修、检验、安全、环保、保密等相关的**国家法规、军用标准(如GJB)、行业规范、船级社要求或管理制度**。 - 关键词:法规、标准、规范、规定、合规、条例、依据、要求、准则、制度、认证、资质、船级社、CCS、IMO、SOLAS、MARPOL、资格 - 示例: • 船舶主机修理需遵循哪些GJB标准? • IMO对主机排放有哪些强制要求? • 舰船维修单位需要哪些资质? • 保密资格申请流程是什么? - 注意:若问题提到“标准里有没有…”但未指明具体法规/标准名称,且无“法规”“标准”等关键词,可先归为 qa;一旦明确提及“法规”“标准”“规范”“SOLAS”等,则归为 rules。 """, "other": """ - 特征:**完全不涉及新的技术问题、故障诊断、维修请求、备件统计、法规查询或报告生成**,而是针对**已有对话内容、方案、步骤或文本的反馈、修正、补充、顺序调整或格式优化**。典型场景包括: • 指出之前提供的操作步骤有误(如“异物清理步骤有误”) • 要求调整操作顺序(如“这一步应当先怎样,然后再怎么操作,最后……”) • 对生成内容提出修改意见(如“步骤有误/有补充”“请重写第三点”) • 请求优化语言、格式或结构(如“请用更简洁的方式表达”) • 闲聊、非技术性确认或与当前技术任务无关的交互 - 注意: • **只要用户意图是修正、补充或调整已有内容,而非提出新问题,即使涉及技术术语,也应归为 other**。 • 不要将此类反馈误判为 repair 或 qa——它们不是在问“该怎么修”或“原理是什么”,而是在说“你刚才说的不对/不全”。 • 此类通常出现在多轮对话中,是对前文输出的回应。 """, "report": """ - 特征:用户明确要求**生成、整理、导出或汇总**某种形式的文档、报表、清单或总结材料。通常涉及将分散的故障记录、维修历史、备件数据或问答内容整合成结构化文本(如日报、周报、故障分析报告、维修总结、备件消耗表等)。 - 关键词:生成报告、写总结、导出表格、整理清单、汇总数据、形成文档、日报、周报、月报、分析报告、维修记录单、台账报表 - 示例: • 请根据本周的故障记录生成一份主机系统运行分析报告 • 总结这次对话 • 导出过去一年的备件消耗统计报告 • 帮我写一份关于此次主机停机事故的详细处理总结 """ } VALID_ROUTE_FLAGS = tuple(WORKFLOW_CONFIG.keys())