From 4906b4dc2a32fe80da2766e2dba8e370658608ba Mon Sep 17 00:00:00 2001 From: AskaEth Date: Wed, 10 Jun 2026 21:18:59 +0800 Subject: [PATCH] Fix short-term issues: refactor main.py, test paths, sysmon optional psutil --- main.py | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/main.py b/main.py index d60d0a2..b382480 100644 --- a/main.py +++ b/main.py @@ -5,10 +5,10 @@ import logging import asyncio import sys import signal +import argparse from services.project_engine import ProjectEngine from services.pyenv_manager import PyEnvManager from services.proxy_service import ProxyService -from services.web_panel.routes import projects import os from pathlib import Path @@ -34,13 +34,14 @@ from service_manager import ServiceManager logger = logging.getLogger(__name__) -class CatFramework: +class SenSuFramework: """框架主类""" - def __init__(self): + def __init__(self, headless=False): self.service_manager = ServiceManager() self.is_running = False - logger.debug("🐱 DreamSu 框架初始化开始") + self.headless = headless + logger.debug("🐱 SenSu 框架初始化开始") async def initialize(self): """初始化框架""" @@ -84,14 +85,18 @@ class CatFramework: self.service_manager.register_service("shutdown", shutdown_service) # 8. TUI服务 - try: - tui_service = TuiService(base_config, log_service, command_service) - await tui_service.start() - self.service_manager.register_service("tui", tui_service) - logger.info("TUI服务启动成功") - except Exception as e: - logger.warning(f"TUI服务启动失败,使用命令行模式: {str(e)}") + if self.headless: + logger.info("Headless mode, skip TUI") self.service_manager.register_service("tui", self._create_fallback_tui()) + else: + try: + tui_service = TuiService(base_config, log_service, command_service) + await tui_service.start() + self.service_manager.register_service("tui", tui_service) + logger.info("TUI服务启动成功") + except Exception as e: + logger.warning(f"TUI服务启动失败: {e}") + self.service_manager.register_service("tui", self._create_fallback_tui()) # 9. 权限服务 logger.info("> 初始化 权限服务 中...") @@ -184,10 +189,13 @@ class CatFramework: shutdown_service.register_shutdown_handler(self._framework_shutdown_handler) # 11.7 项目引擎 + 反向代理 try: + logger.info("> 初始化 项目引擎 中...") project_engine = ProjectEngine(self.service_manager) await project_engine.start() self.service_manager.register_service("project_engine", project_engine) - self.service_manager.register_service("pyenv", PyEnvManager("data/projects")) + pe_mgr = PyEnvManager("data/projects") + self.service_manager.register_service("pyenv", pe_mgr) + logger.info("> 初始化 反向代理 中...") proxy_service = ProxyService(self.service_manager) await proxy_service.start() @@ -198,7 +206,7 @@ class CatFramework: except Exception as e: logger.warning(f"引擎/代理初始化跳过: {e}") - logger.info("🎉 DreamSu 初始化完成!") + logger.info("🎉 SenSu 初始化完成!") self.is_running = True # 显示欢迎日志 @@ -214,7 +222,7 @@ class CatFramework: # 显示欢迎消息 tui_service = self.service_manager.get_service("tui") if hasattr(tui_service, 'show_message'): - tui_service.show_message("🐱 DreamSu 框架 已就绪!\n", "info") + tui_service.show_message("🐱 SenSu 框架 已就绪!\n", "info") tui_service.show_message("====================================\n", "info") tui_service.show_message("🐱 SenSu 已就绪!", "info") tui_service.show_message(f"当前 SenSu 版本号 {version}", "info") @@ -324,7 +332,8 @@ class CatFramework: logger.info("进入框架主循环") # 特殊终端,添加命令行输入处理 - if not hasattr(self.service_manager.get_service("tui"), 'tui_app'): + tui = self.service_manager.get_service("tui") + if self.headless or not hasattr(tui, 'tui_app'): await self._run_cli_mode() else: # 原有的TUI模式 @@ -395,9 +404,9 @@ class CatFramework: logger.error(f"关闭框架时出错: {str(e)}", exc_info=True) await self._safe_shutdown() -async def main(): +async def main(headless=False): """主函数""" - framework = CatFramework() + framework = SenSuFramework(headless=headless) try: # 初始化框架 @@ -430,7 +439,10 @@ if __name__ == "__main__": print("\n🐱 主程序启动...") # 运行主程序 - asyncio.run(main()) + parser = argparse.ArgumentParser(description="SenSu") + parser.add_argument("--headless", action="store_true") + args = parser.parse_args() + asyncio.run(main(headless=args.headless)) except KeyboardInterrupt: print("\n🐱 接收到键盘中断,关闭...")