parent
9e9a594e93
commit
bdb2812c81
@ -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())
|
||||
Loading…
Reference in new issue