# -*- coding: utf-8 -*- """ 项目入口 - 启动 WebSocket 客服客户端 用法: python run.py # 单进程模式(默认) python run.py --no-agent # 仅基础回复,不启用 AI python run.py --multi # 多进程模式 python run.py --multi -w 4 # 多进程模式,指定 4 个进程 """ import sys import os import argparse from pathlib import Path # 确保项目根目录在 sys.path 首位 _root = Path(__file__).resolve().parent if str(_root) not in sys.path: sys.path.insert(0, str(_root)) def run_single_process(enable_agent: bool): """单进程模式""" from core.websocket_client import QingjianAPIClient import asyncio print("=" * 60) print("AI 客服系统 - 单进程模式") print("=" * 60) print(f"AI Agent: {'已启用' if enable_agent else '未启用'}") print("=" * 60) client = QingjianAPIClient(enable_agent=enable_agent) try: asyncio.run(client.run()) except KeyboardInterrupt: print("\n已停止") def run_multi_process(num_workers: int, enable_agent: bool): """多进程模式""" from scripts.multi_process_launcher import Coordinator print("=" * 60) print("AI 客服系统 - 多进程异步并行模式") print("=" * 60) print(f"工作进程数:{num_workers}") print(f"AI Agent: {'已启用' if enable_agent else '未启用'}") print("=" * 60) coordinator = Coordinator(num_workers=num_workers) try: coordinator.start() except KeyboardInterrupt: print("\n已停止") coordinator.stop() def main(): parser = argparse.ArgumentParser(description='AI 客服系统启动器') parser.add_argument( '--no-agent', action='store_true', help='不启用 AI Agent,仅基础回复' ) parser.add_argument( '--multi', action='store_true', help='多进程模式' ) parser.add_argument( '-w', '--workers', type=int, default=None, help='工作进程数(默认:CPU 核心数,仅多进程模式有效)' ) args = parser.parse_args() enable_agent = not args.no_agent if args.multi: # 多进程模式 run_multi_process( num_workers=args.workers, enable_agent=enable_agent ) else: # 单进程模式(默认) run_single_process(enable_agent=enable_agent) if __name__ == "__main__": main()