基线:姓名档案修复、疑问句防误写、搜索与传输测试
这是进入 Pipecat Flows 改造前的回滚点。 提交时已核对本地与线上代码 md5 一致(engine.py 7e97bad8、 bot_server.py 1cf543ae),所以这个提交就是当前线上状态。 内容(此前一直在线上运行但未提交的改动): - 姓名档案:用户自报"我叫林"同步写 confirmed 姓名,重连后恢复 - 疑问句防误写:"谁吗"之类的疑问句不再被覆盖成姓名 - 新增 test_profile_memory.py(姓名档案专项回归) - 新增 test_profile_live.py(需要真实 LLM 的现场测试) - 搜索、身份、记忆测试的相应补充 背景:下一步要按 P1-Pipecat Flows Agent化与记忆改造交接.md 渐进引入 Pipecat Flows,交接文档明确要求先保护基线、不得 reset/checkout/覆盖现有改动。此提交即该基线。
This commit is contained in:
@@ -105,6 +105,14 @@ class MemoryStore(ABC):
|
||||
trust_level: str = "normal") -> None:
|
||||
"""建档。已存在则不动。身份认证与信任等级分开(方案 §6)。"""
|
||||
|
||||
@abstractmethod
|
||||
async def set_user_display_name(self, user_id: str, display_name: str) -> None:
|
||||
"""更新用户自报的称呼。它用于个性化,不提高身份信任等级。"""
|
||||
|
||||
@abstractmethod
|
||||
async def get_user_display_name(self, user_id: str) -> str:
|
||||
"""读取用户称呼;未设置或用户不存在时返回空字符串。"""
|
||||
|
||||
@abstractmethod
|
||||
async def start_session(self, session_id: str, user_id: str) -> None: ...
|
||||
|
||||
|
||||
@@ -176,6 +176,25 @@ class SQLiteMemoryStore(MemoryStore):
|
||||
c.commit()
|
||||
await self._run(op)
|
||||
|
||||
async def set_user_display_name(self, user_id: str, display_name: str) -> None:
|
||||
display_name = " ".join((display_name or "").split()).strip()
|
||||
if not user_id or not display_name:
|
||||
raise ValueError("user_id 和 display_name 不能为空")
|
||||
|
||||
def op(c: sqlite3.Connection):
|
||||
_ensure_user_row(c, user_id)
|
||||
c.execute("UPDATE users SET display_name=? WHERE user_id=?",
|
||||
(display_name, user_id))
|
||||
c.commit()
|
||||
await self._run(op)
|
||||
|
||||
async def get_user_display_name(self, user_id: str) -> str:
|
||||
def op(c: sqlite3.Connection):
|
||||
row = c.execute("SELECT display_name FROM users WHERE user_id=?",
|
||||
(user_id,)).fetchone()
|
||||
return str(row["display_name"] or "") if row else ""
|
||||
return await self._run(op)
|
||||
|
||||
async def start_session(self, session_id: str, user_id: str) -> None:
|
||||
def op(c: sqlite3.Connection):
|
||||
c.execute("INSERT INTO users(user_id, created_at) VALUES(?,?) "
|
||||
|
||||
Reference in New Issue
Block a user