From bdb2812c81e1ef208667a1582e6d7fa2b789ab44 Mon Sep 17 00:00:00 2001 From: pghfovyix <1838055050@qq.com> Date: Wed, 7 Jan 2026 20:05:45 +0800 Subject: [PATCH] ADD file via upload --- toolorchestra__main__.py | 93 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 toolorchestra__main__.py diff --git a/toolorchestra__main__.py b/toolorchestra__main__.py new file mode 100644 index 0000000..b71ab43 --- /dev/null +++ b/toolorchestra__main__.py @@ -0,0 +1,93 @@ +""" +主程序入口 +""" +import sys +from pathlib import Path +import argparse + +# 添加项目根目录到Python路径 +project_root = Path(__file__).parent.parent +sys.path.insert(0, str(project_root)) + +from toolorchestra.core.orchestrator import ToolOrchestrator +from toolorchestra.utils.logger import setup_logging + +def main(): + """主函数""" + parser = argparse.ArgumentParser(description="ToolOrchestra - 工具编排系统") + parser.add_argument( + "--config", + "-c", + default="config/tools.yaml", + help="配置文件路径" + ) + parser.add_argument( + "--workflow", + "-w", + help="工作流配置文件路径" + ) + parser.add_argument( + "--verbose", + "-v", + action="store_true", + help="详细输出模式" + ) + + args = parser.parse_args() + + # 设置日志 + log_level = "DEBUG" if args.verbose else "INFO" + logger = setup_logging(default_level=log_level) + + try: + # 创建编排器 + orchestrator = ToolOrchestrator(config_path=args.config) + + # 加载工具 + orchestrator.load_tools_from_config() + + logger.info(f"已加载 {len(orchestrator.tools)} 个工具") + + if args.workflow: + # 执行工作流 + import yaml + with open(args.workflow, 'r') as f: + workflow = yaml.safe_load(f) + + results = orchestrator.execute_workflow(workflow) + + # 输出结果 + for result in results: + print(f"工具: {result['tool']}, 状态: {result['status']}") + + else: + # 交互模式 + print("ToolOrchestra 已启动,输入 'exit' 退出") + while True: + command = input("> ").strip() + + if command.lower() == "exit": + break + elif command.lower() == "list": + for name, tool in orchestrator.tools.items(): + print(f" {name}: v{tool.version}") + elif command.startswith("run "): + # 简单命令执行 + parts = command[4:].split() + if len(parts) >= 1: + tool_name = parts[0] + # 简化参数处理 + params = {"input": " ".join(parts[1:])} if len(parts) > 1 else {} + result = orchestrator.execute_workflow([ + {"tool": tool_name, "params": params} + ]) + print(f"结果: {result}") + + except Exception as e: + logger.error(f"程序执行失败: {str(e)}") + return 1 + + return 0 + +if __name__ == "__main__": + sys.exit(main()) \ No newline at end of file