feat(api+app): 对话阶段化、回忆录流水线与客户端会话体验

- DB: segments 用户输入文本(Alembic 0002)
- Chat: 阶段检测/阶段提示/回复限制,编排与访谈/画像 prompts 调整
- Memoir: 忠实度检查 agent,叙事与分类等链路更新
- Core: agent 日志、Alembic 启动、LangChain/日志/配置等
- Story: time_hints;Memory 检索与相关测试
- Expo: 助手头像、会话页与消息拆分、实时会话与文案/i18n
- Docs/scripts/tests: 迁移脚本、LLM JSON/记忆检索文档、新增单测
This commit is contained in:
Kevin
2026-03-26 12:13:36 +08:00
parent 49b089354c
commit a3f61fcc0f
94 changed files with 3332 additions and 672 deletions

View File

@@ -29,7 +29,7 @@ class TencentASRProvider:
self._client = asr_client.AsrClient(cred, "", client_profile)
return self._client
except Exception as e:
logger.error("Tencent ASR client init failed: %s", e)
logger.error("Tencent ASR client init failed: {}", e)
return None
def ensure_ready(self) -> bool:
@@ -53,5 +53,5 @@ class TencentASRProvider:
resp = client.SentenceRecognition(req)
return (resp.Result or "").strip()
except Exception as e:
logger.error("Tencent ASR transcribe failed: %s", e)
logger.error("Tencent ASR transcribe failed: {}", e)
return ""

View File

@@ -63,7 +63,7 @@ class WhisperASRProvider:
)
return True
except Exception as e:
logger.error("Failed to load Whisper model: %s", e)
logger.error("Failed to load Whisper model: {}", e)
return False
def ensure_ready(self) -> bool:
@@ -89,7 +89,7 @@ class WhisperASRProvider:
)
return "".join(seg.text for seg in segments).strip()
except Exception as e:
logger.error("Whisper transcribe failed: %s", e)
logger.error("Whisper transcribe failed: {}", e)
return ""
finally:
if tmp_path and os.path.exists(tmp_path):