Files
face_agent/profile_store.py
2026-03-04 15:35:57 +08:00

40 lines
1.4 KiB
Python

import json
import sqlite3
from pathlib import Path
from config import USER_DB_PATH
def load_user_profile(user_name: str, db_path: str | Path = USER_DB_PATH) -> str:
"""在 Python 层直接读档案,注入到消息上下文,模型无需主动调用 get_user_profile。"""
try:
with sqlite3.connect(db_path) as conn:
conn.row_factory = sqlite3.Row
user = conn.execute(
"SELECT * FROM users WHERE name = ?", (user_name,)
).fetchone()
if not user:
return f"用户 {user_name} 尚无历史记录,这是第一次见面。"
prefs = conn.execute(
"SELECT category, content FROM preferences WHERE user_name = ?",
(user_name,)
).fetchall()
conn.execute(
"UPDATE users SET last_seen = datetime('now') WHERE name = ?",
(user_name,)
)
return json.dumps(
{
"基本信息": {
"姓名": user["name"],
"年龄": user["age"],
"上次见面": user["last_seen"],
},
"偏好习惯": {p["category"]: p["content"] for p in prefs},
},
ensure_ascii=False,
)
except Exception as e:
return f"档案读取失败({e}),当作第一次见面。"