# -*- coding: utf-8 -*- """ AI 客服系统 - 天网协作版启动器 支持 HTTP API 接收天网任务 """ import sys import os import signal import logging from pathlib import Path # 确保项目根目录在 sys.path 首位 _root = Path(__file__).resolve().parent if str(_root) not in sys.path: sys.path.insert(0, str(_root)) # 配置日志 logging.basicConfig( level=logging.INFO, format='[%(asctime)s] %(levelname)s: %(message)s' ) logger = logging.getLogger(__name__) def main(): logger.info("=" * 60) logger.info("AI 客服系统 - 天网协作版") logger.info("=" * 60) # 1. 启动 HTTP API 服务器 logger.info("正在启动 HTTP API 服务器...") from api.http_server import start_http_server http_thread = start_http_server(host='0.0.0.0', port=5678) logger.info("HTTP API 服务器已启动:http://0.0.0.0:5678") logger.info("") logger.info("天网任务接口:") logger.info(" POST /api/task/receive - 接收任务") logger.info(" POST /api/task/cancel - 取消任务") logger.info(" GET /api/task/status/:id - 查询任务状态") logger.info(" GET /api/task/list - 任务列表") logger.info(" GET /api/health - 健康检查") logger.info("=" * 60) # 2. 启动 WebSocket 客服客户端 logger.info("正在连接轻简 API...") from core.websocket_client import QingjianAPIClient import argparse parser = argparse.ArgumentParser(description='AI 客服系统 - 天网协作版') parser.add_argument('--no-agent', action='store_true', help='不启用 AI Agent') args = parser.parse_args() enable_agent = not args.no_agent client = QingjianAPIClient(enable_agent=enable_agent) logger.info(f"AI Agent: {'已启用' if enable_agent else '未启用'}") logger.info("=" * 60) logger.info("系统已就绪,等待消息和任务...") logger.info("") # 注册信号处理 def signal_handler(signum, frame): logger.info("收到退出信号,正在停止...") if hasattr(client, 'task_scheduler'): import asyncio asyncio.run(client.task_scheduler.stop()) sys.exit(0) signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) # 启动客户端 import asyncio try: asyncio.run(client.connect()) except KeyboardInterrupt: logger.info("已停止") except Exception as e: logger.error(f"运行异常:{e}") sys.exit(1) if __name__ == "__main__": main()