feat: 入口添加 --web 参数,二进制可直接启动 Web headless 服务

This commit is contained in:
root
2026-04-28 11:24:15 +08:00
parent 1a971fee73
commit c4f7b5a645

View File

@ -1,6 +1,9 @@
#!/usr/bin/env python3
import argparse
import sys
import os
import signal
import threading
from pathlib import Path
# 用户配置文件始终放在用户目录
@ -30,21 +33,54 @@ from ui import GraphMemoryApp
def main():
backend_server = BackendServer(
db_path=str(DB_PATH),
use_embedded_db=True,
config_file=str(CONFIG_PATH)
)
backend_server.start()
app = GraphMemoryApp(backend_server=backend_server, config_file=str(CONFIG_PATH))
try:
app.run()
except KeyboardInterrupt:
print("\n退出")
finally:
parser = argparse.ArgumentParser(description='TrulyMEM - True Human Memory')
parser.add_argument('--web', action='store_true', help='以 Web 服务模式启动headless不启动 TUI')
parser.add_argument('--port', type=int, default=4096, help='Web 服务端口(默认 4096')
args = parser.parse_args()
if args.web:
# Web headless 模式
from web_api import run_web_server, stop_web_server
backend_server = BackendServer(
db_path=str(DB_PATH),
use_embedded_db=True,
config_file=str(CONFIG_PATH)
)
backend_server.start()
print(f"TrulyMEM Web 服务启动在 http://0.0.0.0:{args.port}")
run_web_server(port=args.port, host='0.0.0.0')
# 阻塞主线程直到收到信号
shutdown_event = threading.Event()
def _handle_signal(signum, frame):
print("\n收到停止信号,正在关闭...")
shutdown_event.set()
signal.signal(signal.SIGINT, _handle_signal)
signal.signal(signal.SIGTERM, _handle_signal)
shutdown_event.wait()
stop_web_server()
backend_server.shutdown()
print("TrulyMEM Web 服务已停止")
else:
# TUI 模式(默认)
backend_server = BackendServer(
db_path=str(DB_PATH),
use_embedded_db=True,
config_file=str(CONFIG_PATH)
)
backend_server.start()
app = GraphMemoryApp(backend_server=backend_server, config_file=str(CONFIG_PATH))
try:
app.run()
except KeyboardInterrupt:
print("\n退出")
finally:
backend_server.shutdown()
if __name__ == "__main__":