Files
ailine/tools/start.py
root c9bf21be0e
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Has been cancelled
fix: 修复 RAG 无限循环问题和导入错误
主要修复:
1. 修复 RAG 推理无限循环问题(大小写不匹配 + 缺少已检索结果检查)
2. 修复 intent_classifier.py 的绝对导入错误
3. 删除旧的 start.sh 脚本,添加新的启动脚本
4. 优化路由逻辑和状态管理
2026-05-04 18:59:15 +08:00

126 lines
3.5 KiB
Python
Executable File

#!/usr/bin/env python3
"""
AI Agent 启动与管理脚本 - Python版
用法: python tools/testrun.py [check|backend|frontend|both]
"""
import sys
import os
import time
import signal
import subprocess
from pathlib import Path
from dotenv import load_dotenv
# 路径设置
project_root = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(project_root))
sys.path.insert(0, str(project_root / "backend"))
load_dotenv(project_root / ".env")
# 全局变量
processes = []
def start_backend():
"""启动后端服务"""
print("\n🚀 启动后端服务 (端口 8079)...")
env = os.environ.copy()
env["PYTHONPATH"] = str(project_root / "backend")
env["BACKEND_PORT"] = "8079"
proc = subprocess.Popen(
[sys.executable, "-m", "app.backend"],
cwd=str(project_root),
env=env
)
processes.append(proc)
print(f"✓ 后端服务已启动 (PID: {proc.pid})")
time.sleep(2)
return proc
def start_frontend():
"""启动前端服务"""
print("\n🎨 启动前端界面 (端口 10501)...")
env = os.environ.copy()
env["PYTHONPATH"] = str(project_root / "frontend/src")
env["API_URL"] = "http://127.0.0.1:8079/chat"
frontend_main = str(project_root / "frontend" / "src" / "frontend_main.py")
proc = subprocess.Popen(
[
sys.executable, "-m", "streamlit", "run", frontend_main,
"--server.port", "10501", "--server.address", "0.0.0.0"
],
cwd=str(project_root),
env=env
)
processes.append(proc)
print(f"✓ 前端服务已启动 (PID: {proc.pid})")
print("✓ 访问地址:")
print(" 本地开发: http://127.0.0.1:10501")
return proc
def cleanup(signum, frame):
"""清理函数 - 停止所有进程"""
print("\n🛑 正在停止服务...")
for i, proc in enumerate(processes):
if proc.poll() is None: # 进程还在运行
proc.terminate()
proc.wait(timeout=5)
print(f"✓ 服务 {i+1} 已停止")
sys.exit(0)
def print_help():
"""显示帮助信息"""
print("========================================")
print(" AI Agent - 个人生活助手")
print("========================================")
print("\n用法: python tools/testrun.py [command]")
print("\n命令:")
print(" backend 仅启动后端服务")
print(" frontend 仅启动前端服务")
print(" both 启动前后端服务(默认)")
print(" help 显示此帮助信息")
print("\n示例:")
print(" python tools/testrun.py both # 启动本地开发环境")
def main():
"""主函数"""
print("========================================")
print(" AI Agent - 个人生活助手")
print("========================================")
# 捕获信号
signal.signal(signal.SIGINT, cleanup)
signal.signal(signal.SIGTERM, cleanup)
cmd = sys.argv[1] if len(sys.argv) > 1 else "both"
if cmd == "backend":
start_backend()
print("\n后端服务正在运行,按 Ctrl+C 停止")
processes[0].wait()
elif cmd == "frontend":
start_frontend()
print("\n前端服务正在运行,按 Ctrl+C 停止")
processes[0].wait()
elif cmd == "both":
start_backend()
time.sleep(3)
start_frontend()
print("\n所有服务正在运行,按 Ctrl+C 停止")
for proc in processes:
proc.wait()
else:
print_help()
if __name__ == "__main__":
main()