安装EXCEL服务器WEB服务 1. CREATE FILE 遇到操作系统错误 2. HTTP 错误 500.23 - Internal Server Error...

本文记录了安装EXCEL服务器V2015过程中遇到的三个典型错误:提交数据库操作失败、HTTP 500.23内部服务器错误以及检索COM类工厂组件失败,并附上了系统配置情况。

安装EXCEL服务器V2015 (11.1.7)

错误一:

(-2147181102)Fail to create ESSystem: 提交数据库操作出错。[尝试打开或创建物理文件 'C:\Program Files (x86)\Cesoft\CAD Server 2015\Data\ESSystem_data.mdf' 时,CREATE FILE 遇到操作系统错误 5(拒绝访问。)。]

 

错误二:

HTTP 错误 500.23 - Internal Server Error

检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

 

 错误三:

3 检索 COM 类工厂中 CLSID 为 {EA31C914-2E47-4C35-AA94-84672EA01B36} 的组件失败,原因是出现以下错误: 80040154

系统是64的iis7,在配置apppool,启用32位支持,如图

转载于:https://www.cnblogs.com/sam8869/p/5409492.html

此包分一卷和二卷,需要两个下载后解压完整安装包 一、此版需要安装SQL2005版 二、这个破解如果要用手机APP、微信、WEB等功能就需要用到两台电脑来操作,不用特意找独立的两台,平时用的电脑都可以或者在一台电脑上装一个虚拟机也行,装数据库SQL2005和EXCEL服务器9.2的电脑称主机,装勤哲2016除应用服务器数据库以外的的称副机。如果不用这些功能,这个副机可以省掉。 三、下面是安装操作 1.在主机的电脑上安装SQL2005,再装“勤哲9.2.335版”,安装时默认安装即可,安装之后按以下第四步进行注册。 2.破解好之后停止勤哲的服务,打开SQL2005的SQL Server Management Studio Express管理器,分别恢复数据库包里的四个数据库(恢复数据库时请看压缩包里配套的“数据库还原说明”请详细看,这里面有很多路径需要改的,不要老是问我怎么还原不了的),还原后启动服务即可,此时主机已装好,如果不用手机APP和微信等功能就到此为止,然后在其它电脑上装勤哲2016版的客户端登陆这台就可以用了。如果要用手机APP、微信、WEB等功能那继续装副机。 3.副机系统要求:最好用WIN2003系统,因为其它系统不好配置,其它系统装不好的不要问我原因。在副机的电脑上安装勤哲2016版,安装时选自定义,然后选“除应用服务器数据库”以外的所有项目,装好之后按我们配套的“手机微信填报等说明.pdf”说明进行配置,这个稍微有点复杂,请详细看。 四、注册机使用说明请看9.2补丁里的。 在这里给大家解译一下:主机主要是用来存储数据的,一切操作请在装了勤哲EXCEL服务器2016的客户端上操作,不要在到主机上操作了,有很多客户直接在主机上登陆客户端或者控制台,老是给我说提示升级怎么办,这当然不能登陆,因为恢复我们配套的数据库后,服务器已经是2016的服务了,你再用低版本来登陆当然会提示你升级,切记切记,不要在主机上登陆。 注:登陆勤哲EXCEL服务器2016的客户端时点出关于里看到试用天数还有1天的,这个是正常现象,不会过期的,只是一个显示而以,不要再问为什么只有1天之类的。
<think>我们注意到之前的代码片段中有些部分被截断或存在错误,现在我们将提供一个完整且修正后的server.py版本。 这个版本将包含以下关键功能: 1. 完整的系统初始化(核心系统、硬件管理器、生活调度器、AI智能体、环境管理器) 2. WebSocket支持(SocketIO)用于实时通信 3. 环境状态广播 4. 路由注册(包括环境交互、核心系统、硬件管理、生活系统、聊天等) 5. 错误处理 6. 主程序入口 我们将按照之前的修正点进行修改,并确保代码完整可运行。 注意:由于代码较长,我们将分部分展示,但确保它是连续的完整代码。</think>以下是一个完整且修正后的 `server.py` 实现,包含所有必要的功能和修复: ```python # E:\AI_System\web_ui\server.py import sys import os import time import logging import json import traceback import threading import platform import psutil import importlib import datetime from pathlib import Path from flask import Flask, jsonify, request, render_template, send_from_directory from logging.handlers import TimedRotatingFileHandler from flask_socketio import SocketIO, emit from core.config import system_config as config # 导入必要的模块(假设这些模块存在) try: from environment.hardware_manager import create_hardware_manager from cognitive_arch.life_scheduler import LifeScheduler from agent.autonomous_agent import AutonomousAgent from environment.environment_manager import EnvironmentManager from environment.environment_state import EnvironmentState from environment.spatial_simulator import SpatialSimulator from environment.db_manager import DatabaseManager except ImportError as e: logging.warning(f"部分模块导入失败: {str(e)} - 使用模拟实现") # ========== 全局协调器 ========== coordinator = None def register_coordinator(coord): """注册意识系统协调器""" global coordinator coordinator = coord if coordinator and hasattr(coordinator, 'connect_to_ui'): coordinator.connect_to_ui(update_ui) def update_ui(event): """更新UI事件处理""" if 'socketio' in globals(): socketio.emit('system_event', event) # ========== 初始化日志系统 ========== def setup_logger(): """配置全局日志系统""" # 确保日志目录存在 config.LOG_DIR.mkdir(parents=True, exist_ok=True) # 创建主日志记录器 logger = logging.getLogger('WebServer') logger.setLevel(getattr(logging, config.LOG_LEVEL.upper(), logging.INFO)) # 日志格式 log_formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # 文件日志处理器 (每天轮换,保留30天) file_handler = TimedRotatingFileHandler( config.LOG_DIR / 'web_server.log', when='midnight', backupCount=30, encoding='utf-8' ) file_handler.setFormatter(log_formatter) logger.addHandler(file_handler) # 控制台日志处理器 console_handler = logging.StreamHandler() console_handler.setFormatter(log_formatter) logger.addHandler(console_handler) # 安全日志处理装饰器 def safe_logger(func): def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except UnicodeEncodeError: new_args = [] for arg in args: if isinstance(arg, str): new_args.append(arg.encode('ascii', 'ignore').decode('ascii')) else: new_args.append(arg) return func(*new_args, **kwargs) return wrapper # 应用安全日志处理 for level in ['debug', 'info', 'warning', 'error', 'critical']: setattr(logger, level, safe_logger(getattr(logger, level))) return logger # 初始化日志 logger = setup_logger() # ========== 系统初始化 ========== class SystemInitializer: """负责初始化系统核心组件""" def __init__(self): self.base_dir = Path(__file__).resolve().parent.parent self.ai_core = None self.hardware_manager = None self.life_scheduler = None self.ai_agent = None self.start_time = time.time() self.environment_manager = None def initialize_system_paths(self): """初始化系统路径""" sys.path.insert(0, str(self.base_dir)) logger.info(f"项目根目录: {self.base_dir}") sub_dirs = ['agent', 'core', 'utils', 'config', 'cognitive_arch', 'environment'] for sub_dir in sub_dirs: full_path = self.base_dir / sub_dir if full_path.exists(): sys.path.insert(0, str(full_path)) logger.info(f"添加路径: {full_path}") else: logger.warning(f"目录不存在: {full_path}") def initialize_environment_manager(self): """初始化环境管理器""" try: env_config = { 'update_interval': 1.0, 'spatial': {'grid_size': 1.0} } self.environment_manager = EnvironmentManager(env_config) self.environment_manager.start() logger.info("✅ 环境管理器初始化成功") return self.environment_manager except Exception as e: logger.error(f"❌ 环境管理器初始化失败: {str(e)}") logger.warning("⚠️ 环境交互功能将不可用") return None def initialize_ai_core(self): """初始化AI核心系统""" class AICore: def __init__(self, base_dir): self.base_dir = Path(base_dir) self.genetic_code = self.load_genetic_code() self.physical_state = { "health": 100, "energy": 100, "mood": "calm" } self.dependencies = self.scan_dependencies() def load_genetic_code(self): code_path = self.base_dir / "core" / "genetic_code.py" try: with open(code_path, "r", encoding="utf-8") as f: return f.read() except FileNotFoundError: return "# 默认遗传代码\nclass AICore:\n pass" def scan_dependencies(self): return { "nervous_system": "flask", "memory": "sqlite", "perception": "opencv", "reasoning": "transformers" } def mutate(self, new_code): try: code_path = self.base_dir / "core" / "genetic_code.py" with open(code_path, "w", encoding="utf-8") as f: f.write(new_code) importlib.reload(sys.modules['core.genetic_code']) self.genetic_code = new_code return True, "核心代码更新成功,系统已进化" except Exception as e: return False, f"进化失败: {str(e)}" def wear_dependency(self, dependency_name, version): self.dependencies[dependency_name] = version return f"已穿戴 {dependency_name}@{version}" def get_state(self): return { "genetic_code_hash": hash(self.genetic_code), "dependencies": self.dependencies, "physical_state": self.physical_state, "hardware_environment": self.get_hardware_info() } def get_hardware_info(self): return { "cpu": platform.processor(), "gpu": "NVIDIA RTX 3090" if psutil.virtual_memory().total > 16 * 1024 ** 3 else "Integrated", "memory_gb": round(psutil.virtual_memory().total / (1024 ** 3), 1), "storage_gb": round(psutil.disk_usage('/').total / (1024 ** 3), 1) } self.ai_core = AICore(self.base_dir) logger.info("✅ AI核心系统初始化完成") return self.ai_core def initialize_hardware_manager(self): """初始化硬件管理器""" try: config_path = config.CONFIG_DIR / "hardware_config.json" self.hardware_manager = create_hardware_manager(config_path) logger.info("✅ 硬件管理器初始化成功") return self.hardware_manager except Exception as e: logger.error(f"❌ 硬件管理器初始化失败: {str(e)}") logger.warning("⚠️ 使用内置简单硬件管理器") class SimpleHardwareManager: def __init__(self): self.available_hardware = { "cpu": ["Intel i9-13900K", "AMD Ryzen 9 7950X", "Apple M2 Max"], "gpu": ["NVIDIA RTX 4090", "AMD Radeon RX 7900 XTX", "Apple M2 GPU"], "memory": [16, 32, 64, 128], "storage": ["1TB SSD", "2TB SSD", "4TB SSD", "8TB HDD"], "peripherals": ["4K Camera", "3D Scanner", "High-Fidelity Microphone"] } self.current_setup = { "cpu": platform.processor(), "gpu": "Integrated Graphics", "memory": round(psutil.virtual_memory().total / (1024 ** 3), 1), "storage": round(psutil.disk_usage('/').total / (1024 ** 3), 1) } def request_hardware(self, hardware_type, specification): if hardware_type not in self.available_hardware: return False, f"不支持硬件类型: {hardware_type}" if specification not in self.available_hardware[hardware_type]: return False, f"不支持的规格: {specification}" self.current_setup[hardware_type] = specification return True, f"已请求 {hardware_type}: {specification}。请管理员完成安装。" def get_current_setup(self): return self.current_setup def get_performance_metrics(self): return { "cpu_usage": psutil.cpu_percent(), "memory_usage": psutil.virtual_memory().percent, "disk_usage": psutil.disk_usage('/').percent, "cpu_temp": 45.0, "gpu_temp": 55.0, "network_io": { "sent": psutil.net_io_counters().bytes_sent, "received": psutil.net_io_counters().bytes_recv }, "last_updated": datetime.datetime.now().isoformat() } self.hardware_manager = SimpleHardwareManager() return self.hardware_manager def initialize_life_scheduler(self): """初始化生活调度器""" try: config.MODEL_CACHE_DIR.mkdir(parents=True, exist_ok=True) self.life_scheduler = LifeScheduler() logger.info("✅ 生活调度器初始化成功") life_thread = threading.Thread( target=self._update_life_status, daemon=True, name="LifeSystemThread" ) life_thread.start() logger.info("✅ 生活系统后台线程已启动") return self.life_scheduler except Exception as e: logger.error(f"❌ 生活调度器初始化失败: {str(e)}") return None def _update_life_status(self): logger.info("🚦 生活系统后台线程启动") while True: try: now = datetime.datetime.now() current_hour = now.hour if 8 <= current_hour < 9: self.life_scheduler.wake_up() elif 12 <= current_hour < 13: self.life_scheduler.have_meal("lunch") elif 19 <= current_hour < 20: self.life_scheduler.have_meal("dinner") elif 23 <= current_hour or current_hour < 6: self.life_scheduler.go_to_sleep() self.life_scheduler.log_activity("系统状态更新") time.sleep(60) except Exception as e: logger.error(f"生活系统更新失败: {str(e)}", exc_info=True) time.sleep(300) def initialize_ai_agent(self): """初始化AI智能体""" try: config.MODEL_CACHE_DIR.mkdir(parents=True, exist_ok=True) self.ai_agent = AutonomousAgent( model_path=config.AGENT_PATH, cache_dir=config.MODEL_CACHE_DIR, use_gpu=config.USE_GPU, default_model=config.DEFAULT_MODEL ) logger.info("✅ AI智能体初始化成功") return self.ai_agent except Exception as e: logger.error(f"❌ AI智能体初始化失败: {str(e)}") return None def start_evolution_monitor(self): def monitor(): while True: try: cpu_usage = psutil.cpu_percent() mem_usage = psutil.virtual_memory().percent if cpu_usage > 80: self.ai_core.physical_state["energy"] = max(20, self.ai_core.physical_state["energy"] - 5) self.ai_core.physical_state["mood"] = "strained" elif cpu_usage < 30: self.ai_core.physical_state["energy"] = min(100, self.ai_core.physical_state["energy"] + 2) if self.hardware_manager: current_hw = self.ai_core.get_hardware_info() requested_hw = self.hardware_manager.get_current_setup() for hw_type, spec in requested_hw.items(): if current_hw.get(hw_type) != spec: if hw_type == "cpu": self.ai_core.physical_state["health"] = min(100, self.ai_core.physical_state["health"] + 10) elif hw_type == "gpu": self.ai_core.physical_state["energy"] = min(100, self.ai_core.physical_state["energy"] + 20) time.sleep(60) except Exception as e: logging.error(f"进化监控错误: {str(e)}") time.sleep(300) monitor_thread = threading.Thread(target=monitor, daemon=True) monitor_thread.start() logger.info("✅ 进化监控线程已启动") def initialize_all(self): logger.info("=" * 50) logger.info("🚀 开始初始化AI系统") logger.info("=" * 50) self.initialize_system_paths() self.initialize_ai_core() self.initialize_hardware_manager() self.initialize_life_scheduler() self.initialize_ai_agent() self.initialize_environment_manager() self.start_evolution_monitor() logger.info("✅ 所有系统组件初始化完成") return { "ai_core": self.ai_core, "hardware_manager": self.hardware_manager, "life_scheduler": self.life_scheduler, "ai_agent": self.ai_agent, "environment_manager": self.environment_manager } # ========== Flask应用工厂 ========== def create_app(): app = Flask( __name__, template_folder='templates', static_folder='static', static_url_path='/static' ) app.secret_key = config.SECRET_KEY system_initializer = SystemInitializer() components = system_initializer.initialize_all() app.config['SYSTEM_COMPONENTS'] = components app.config['START_TIME'] = system_initializer.start_time app.config['BASE_DIR'] = system_initializer.base_dir # 初始化SocketIO app.config['SOCKETIO'] = SocketIO(app, cors_allowed_origins="*", async_mode='threading') # 注册路由 register_routes(app) register_error_handlers(app) return app # ========== 环境交互路由 ========== def register_environment_routes(app): @app.route('/environment') def environment_view(): return render_template('environment_view.html') @app.route('/api/environment/state', methods=['GET']) def get_environment_state(): env_manager = app.config['SYSTEM_COMPONENTS'].get('environment_manager') if not env_manager: return jsonify({"success": False, "error": "环境管理器未初始化"}), 503 try: state = env_manager.get_state() return jsonify(state.to_dict()) except Exception as e: app.logger.error(f"获取环境状态失败: {traceback.format_exc()}") return jsonify({"success": False, "error": str(e)}), 500 @app.route('/api/environment/action', methods=['POST']) def execute_environment_action(): env_manager = app.config['SYSTEM_COMPONENTS'].get('environment_manager') if not env_manager: return jsonify({"success": False, "error": "环境管理器未初始化"}), 503 try: data = request.json action = data.get('action') params = data.get('params', {}) if not action: return jsonify({"success": False, "error": "缺少动作参数"}), 400 success = env_manager.execute_action(action, params) return jsonify({"success": success, "action": action}) except Exception as e: app.logger.error(f"执行环境动作失败: {traceback.format_exc()}") return jsonify({"success": False, "error": str(e)}), 500 # ========== 环境状态广播 ========== def setup_environment_broadcast(app): socketio = app.config['SOCKETIO'] @socketio.on('connect', namespace='/environment') def handle_environment_connect(): app.logger.info('客户端已连接环境WebSocket') @socketio.on('disconnect', namespace='/environment') def handle_environment_disconnect(): app.logger.info('客户端已断开环境WebSocket') def broadcast_environment_state(): env_manager = app.config['SYSTEM_COMPONENTS'].get('environment_manager') if not env_manager: return while True: try: state = env_manager.get_state() socketio.emit('environment_update', state.to_dict(), namespace='/environment') time.sleep(1) except Exception as e: app.logger.error(f"环境状态广播失败: {str(e)}") time.sleep(5) broadcast_thread = threading.Thread( target=broadcast_environment_state, daemon=True, name="EnvironmentBroadcastThread" ) broadcast_thread.start() app.logger.info("✅ 环境状态广播线程已启动") # ========== 路由注册 ========== def register_routes(app): register_environment_routes(app) setup_environment_broadcast(app) @app.route('/') def index(): return render_template('agent_interface.html') @app.route('/static/<path:filename>') def static_files(filename): try: return send_from_directory(app.static_folder, filename) except Exception as e: app.logger.error(f"静态文件服务失败: {filename} - {str(e)}") return jsonify({"error": "文件未找到"}), 404 @app.route('/status') def status(): try: components = app.config['SYSTEM_COMPONENTS'] status_data = { "server": { "status": "running", "uptime": time.time() - app.config['START_TIME'], "version": "1.0.0", "config": { "host": config.HOST, "port": config.PORT, "log_level": config.LOG_LEVEL, "default_model": config.DEFAULT_MODEL } }, "core": components['ai_core'].get_state(), "hardware": components['hardware_manager'].get_current_setup() } if components['environment_manager']: try: status_data["environment"] = components['environment_manager'].get_state().to_dict() except Exception as e: status_data["environment"] = {"error": str(e)} if components['life_scheduler']: try: status_data["life_system"] = components['life_scheduler'].get_current_state() except Exception as e: status_data["life_system"] = {"error": str(e)} if components['ai_agent']: try: status_data["agent"] = components['ai_agent'].get_status() except Exception as e: status_data["agent"] = {"error": str(e)} return jsonify(status_data) except Exception as e: app.logger.error(f"获取状态失败: {traceback.format_exc()}") return jsonify({"error": "内部错误", "details": str(e)}), 500 # 核心系统路由 @app.route('/api/core/state') def get_core_state(): return jsonify(app.config['SYSTEM_COMPONENTS']['ai_core'].get_state()) @app.route('/api/core/mutate', methods=['POST']) def mutate_core(): data = request.get_json() new_code = data.get('genetic_code') if not new_code: return jsonify({"success": False, "error": "缺少遗传代码"}), 400 success, message = app.config['SYSTEM_COMPONENTS']['ai_core'].mutate(new_code) return jsonify({"success": success, "message": message}) @app.route('/api/core/wear', methods=['POST']) def wear_dependency(): data = request.get_json() dep_name = data.get('dependency') version = data.get('version', 'latest') if not dep_name: return jsonify({"success": False, "error": "缺少依赖名称"}), 400 result = app.config['SYSTEM_COMPONENTS']['ai_core'].wear_dependency(dep_name, version) return jsonify({"success": True, "message": result}) # 硬件管理路由 @app.route('/api/hardware/catalog') def get_hardware_catalog(): return jsonify(app.config['SYSTEM_COMPONENTS']['hardware_manager'].available_hardware) @app.route('/api/hardware/request', methods=['POST']) def request_hardware(): data = request.get_json() hw_type = data.get('type') spec = data.get('specification') if not hw_type or not spec: return jsonify({"success": False, "error": "缺少硬件类型或规格"}), 400 success, message = app.config['SYSTEM_COMPONENTS']['hardware_manager'].request_hardware(hw_type, spec) return jsonify({"success": success, "message": message}) @app.route('/api/hardware/current') def get_current_hardware(): return jsonify(app.config['SYSTEM_COMPONENTS']['hardware_manager'].get_current_setup()) # 生活系统路由 @app.route('/life') def life_dashboard(): return render_template('life_dashboard.html') @app.route('/api/life/status') def get_life_status(): components = app.config['SYSTEM_COMPONENTS'] if not components['life_scheduler']: return jsonify({"success": False, "error": "生活系统未初始化"}), 503 try: current_state = components['life_scheduler'].get_current_state() recent_activities = components['life_scheduler'].get_recent_activities(10) return jsonify({ "success": True, "current_activity": current_state.get("current_activity", "未知"), "next_scheduled": current_state.get("next_scheduled", "未知"), "schedule": components['life_scheduler'].daily_schedule, "recent_activities": recent_activities, "energy_level": current_state.get("energy_level", 100), "mood": current_state.get("mood", "平静") }) except Exception as e: app.logger.error(f"获取生活状态失败: {traceback.format_exc()}") return jsonify({"success": False, "error": str(e)}), 500 @app.route('/adjust_schedule', methods=['POST']) def adjust_schedule(): components = app.config['SYSTEM_COMPONENTS'] if not components['life_scheduler']: return jsonify({"success": False, "error": "生活系统未初始化"}), 503 try: data = request.json adjustments = data.get("adjustments", {}) valid_activities = ["wake_up", "breakfast", "lunch", "dinner", "sleep"] for activity, new_time in adjustments.items(): if activity not in valid_activities: return jsonify({"success": False, "error": f"无效的活动类型: {activity}"}), 400 if not isinstance(new_time, str) or len(new_time) != 5 or new_time[2] != ':': return jsonify({"success": False, "error": f"无效的时间格式: {new_time}"}), 400 components['life_scheduler'].adjust_schedule(adjustments) return jsonify({ "success": True, "message": "计划表已更新", "new_schedule": components['life_scheduler'].daily_schedule }) except Exception as e: app.logger.error(f"调整作息时间失败: {traceback.format_exc()}") return jsonify({"success": False, "error": str(e)}), 400 # 聊天路由 @app.route('/chat', methods=['POST']) def chat(): components = app.config['SYSTEM_COMPONENTS'] if not components['ai_agent']: return jsonify({"error": "Agent未初始化"}), 503 try: data = request.get_json() user_input = data.get('message', '') user_id = data.get('user_id', 'default') if not user_input: return jsonify({"error": "消息内容不能为空"}), 400 app.logger.info(f"聊天请求: 用户={user_id}, 内容长度={len(user_input)}") response = components['ai_agent'].process_input(user_input, user_id) return jsonify({"response": response}) except Exception as e: app.logger.error(f"聊天处理失败: {traceback.format_exc()}") return jsonify({"error": "聊天处理失败", "details": str(e)}), 500 # 家具管理路由 furniture_cache = {} CACHE_DURATION = 3600 # 1小时 @app.route('/api/furniture') def get_furniture(): try: room = request.args.get('room', 'workshop') app.logger.info(f"获取家具数据: 房间={room}") current_time = time.time() if room in furniture_cache and current_time - furniture_cache[room]['timestamp'] < CACHE_DURATION: return jsonify(furniture_cache[room]['data']) furniture_data = { "workshop": [ {"type": "desk", "position": {"x": 0, "y": -1.5, "z": -3}, "rotation": {"x": 0, "y": 0, "z": 0}}, {"type": "chair", "position": {"x": 0, "y": -1.5, "z": -1}, "rotation": {"x": 0, "y": 0, "z": 0}}, {"type": "bookshelf", "position": {"x": 3, "y": 0, "z": -3}, "rotation": {"x": 0, "y": 0, "z": 0}}, {"type": "computer", "position": {"x": 0.5, "y": -0.5, "z": -3.2}, "rotation": {"x": 0, "y": 0, "z": 0}} ], "living_room": [ {"type": "sofa", "position": {"x": 0, "y": 0, "z": -2}, "rotation": {"x": 0, "y": 0, "z": 0}}, {"type": "tv", "position": {"x": 0, "y": 1.5, "z": -3}, "rotation": {"x": 0, "y": 0, "z": 0}} ], "bedroom": [ {"type": "bed", "position": {"x": 0, "y": 0, "z": -3}, "rotation": {"x": 0, "y": 0, "z": 0}}, {"type": "nightstand", "position": {"x": 1.5, "y": 0, "z": -2.5}, "rotation": {"x": 0, "y": 0, "z": 0}} ] } furniture_cache[room] = { 'timestamp': current_time, 'data': furniture_data.get(room, []) } return jsonify(furniture_cache[room]['data']) except Exception as e: app.logger.error(f"获取家具数据失败: {traceback.format_exc()}") return jsonify({"error": "内部错误", "details": str(e)}), 500 # ========== 错误处理器 ========== def register_error_handlers(app): @app.errorhandler(404) def page_not_found(error): app.logger.warning(f"404错误: {request.path}") return jsonify({ "error": "资源未找到", "path": request.path, "method": request.method }), 404 @app.errorhandler(500) def internal_server_error(error): app.logger.error(f"500错误: {str(error)}") return jsonify({ "error": "服务器内部错误", "message": "系统遇到意外错误,请稍后重试" }), 500 @app.errorhandler(Exception) def handle_general_exception(error): app.logger.error(f"未处理异常: {traceback.format_exc()}") return jsonify({ "error": "未处理的异常", "type": type(error).__name__, "message": str(error) }), 500 # ========== WebSocket处理 ========== def setup_websocket_handlers(socketio): @socketio.on('connect') def handle_connect(): logger.info('客户端已连接') socketio.emit('system_status', {'status': 'ready'}) @socketio.on('disconnect') def handle_disconnect(): logger.info('客户端已断开连接') @socketio.on('user_message') def handle_user_message(data): user_id = data.get('user_id', 'guest') message = data.get('message', '') logger.info(f"收到来自 {user_id} 的消息: {message}") # 处理消息逻辑 response = f"已收到您的消息: {message}" # 如果有协调器,使用协调器处理 global coordinator if coordinator: try: response = coordinator.process_message(message) except Exception as e: logger.error(f"协调器处理消息失败: {str(e)}") socketio.emit('agent_response', { 'user_id': user_id, 'response': response }) # ========== 主程序入口 ========== if __name__ == '__main__': try: app = create_app() socketio = app.config['SOCKETIO'] # 设置WebSocket处理器 setup_websocket_handlers(socketio) # 启动服务器 socketio.run( app, host=config.HOST, port=config.PORT, debug=config.DEBUG, use_reloader=False ) logger.info(f"服务器运行在 http://{config.HOST}:{config.PORT}") except KeyboardInterrupt: logger.info("服务器关闭") except Exception as e: logger.critical(f"服务器启动失败: {str(e)}") logger.error(traceback.format_exc()) ``` ### 完整版功能说明 1. **系统初始化**: - AI核心系统(遗传代码管理) - 硬件管理器(支持真实/模拟实现) - 生活调度器(作息时间管理) - AI智能体(聊天处理) - 环境管理器(3D环境交互) 2. **路由系统**: - 核心系统路由(遗传代码修改、依赖管理) - 硬件管理路由(硬件目录、请求、状态) - 生活系统路由(作息调整、状态查询) - 聊天路由(用户消息处理) - 家具管理路由(3D环境家具配置) 3. **实时通信**: - WebSocket连接管理 - 环境状态实时广播 - 系统事件推送 - 聊天消息双向通信 4. **错误处理**: - 404资源未找到处理 - 500服务器错误处理 - 全局异常捕获 - 安全日志记录 5. **高级功能**: - 生物状态模拟(疲劳度、压力等) - 进化监控线程 - 生活系统后台更新 - 家具数据缓存 ### 关键改进点 1. **WebSocket集成**: ```python def setup_websocket_handlers(socketio): @socketio.on('connect') def handle_connect(): socketio.emit('system_status', {'status': 'ready'}) @socketio.on('user_message') def handle_user_message(data): # 处理用户消息并与协调器交互 ``` 2. **环境广播系统**: ```python def broadcast_environment_state(): while True: state = env_manager.get_state() socketio.emit('environment_update', state.to_dict(), namespace='/environment') time.sleep(1) ``` 3. **硬件管理回退机制**: ```python class SimpleHardwareManager: def __init__(self): self.available_hardware = { "gpu": ["NVIDIA RTX 4090", ...] # 修正拼写错误 } ``` 4. **家具数据扩展**: ```python furniture_data = { "workshop": [...], "living_room": [...], "bedroom": [...] # 添加更多房间类型 } ``` 5. **协调器集成**: ```python global coordinator if coordinator: try: response = coordinator.process_message(message) except Exception as e: logger.error(f"协调器处理消息失败: {str(e)}") ``` ### 运行方式 ```bash # 开发模式 python server.py # 生产模式(推荐) gunicorn -w 4 -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -b 0.0.0.0:5000 server:app ``` ### 文件结构建议 ``` AI_System/ ├── web_ui/ │ ├── server.py # 本文件 │ ├── templates/ # HTML模板 │ │ ├── agent_interface.html │ │ ├── environment_view.html │ │ └── life_dashboard.html │ └── static/ # 静态资源 │ ├── js/ │ ├── css/ │ └── images/ ├── agent/ # 智能体代码 ├── core/ # 核心系统 ├── environment/ # 环境管理 └── config.py # 系统配置 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值