feat: initial release - Hunzi agent framework v0.1.0

This commit is contained in:
2026-07-15 16:36:53 +08:00
parent 502160b427
commit c626a3389d
+68
View File
@@ -0,0 +1,68 @@
"""Hunzi 主应用入口"""
from contextlib import asynccontextmanager
import logging
from pathlib import Path
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from fastapi.middleware.cors import CORSMiddleware
from .config import load_config, set_config
from .database import init_db, get_session
from .models import Base
from .api import router as api_router
@asynccontextmanager
async def lifespan(app: FastAPI):
# Startup
config = load_config()
set_config(config)
# Setup logging
logging.basicConfig(
level=config.log_level,
format=config.log_format,
)
logging.info("Hunzi 启动中...")
# Init database
init_db()
logging.info("Hunzi 启动完成")
yield
# Shutdown
logging.info("Hunzi 关闭中...")
app = FastAPI(
title="Hunzi 智能体框架",
version="0.1.0",
lifespan=lifespan,
)
# CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
# API routes
app.include_router(api_router, prefix="/api")
# Static files
web_dir = Path(__file__).parent.parent / "web"
if web_dir.exists():
app.mount("/static", StaticFiles(directory=str(web_dir)), name="static")
@app.get("/")
async def serve_frontend():
index_path = web_dir / "index.html"
if index_path.exists():
return FileResponse(str(index_path))
return {"message": "Hunzi 智能体框架", "status": "running", "docs": "/docs"}