feat(api): 访谈人格/回复长度策略、口述归一、背景语气与输入净稿全链路
Chat 访谈 - 新增 persona 系统(default / warm_listener / curious_guide)与 background_voice 语气层 - 回复长度由 compute_reply_plan 统一决策(brief / standard / expanded),融合信息密度启发式 - 输入净稿(input_normalize):编排层可选 rules/llm 归一用户口语后再喂模型与记忆检索 - 记忆证据注入:按用户话检索 memory evidence 并注入 prompt Memoir 回忆录 - 口述归一(oral_normalize):segment 原文保留,story 管线取派生净稿作叙事输入 - segment 入队批次门闸:累计字数 + 最长等待秒数,减少零碎提交 - fidelity_check / prompts / narrative_agent 微调 - Alembic 0005:清理跨章节 story 外键 Infra - Dockerfile 加入 ffmpeg - pyproject.toml 新增依赖并同步 uv.lock - .env.example / .env.production 补全新配置项 Tests - 新增 test_background_voice、test_chat_input_normalize、test_experience_regressions - 扩展 test_interview_prompts、test_interview_reply_length、test_story_route_oral_invariant Made-with: Cursor
This commit is contained in:
@@ -46,6 +46,31 @@ EMBEDDING_MODEL=embedding-3
|
||||
# Chat 访谈:每轮根据用户内容判定主人生阶段(关则仅用关键词,省一次 LLM)
|
||||
# CHAT_STAGE_DETECTION_ENABLED=true
|
||||
# CHAT_STAGE_DETECTION_MAX_TOKENS=128
|
||||
# 访谈性格(InterviewAgent):default | warm_listener | curious_guide
|
||||
# CHAT_INTERVIEW_PERSONA=default
|
||||
# 访谈回复长度档位(brief/standard/expanded)联动:极短输入 / 默认 / 长段+新细节
|
||||
# CHAT_INTERVIEW_BRIEF_MAX_TOKENS=240
|
||||
# CHAT_INTERVIEW_BRIEF_MAX_CHARS_PER_SEGMENT=180
|
||||
# CHAT_INTERVIEW_EXPANDED_MAX_TOKENS=400
|
||||
# CHAT_INTERVIEW_EXPANDED_MAX_CHARS_PER_SEGMENT=300
|
||||
# 访谈:是否按本轮用户话检索记忆并注入提示词(关则不调 retrieve)
|
||||
# CHAT_MEMORY_RETRIEVAL_ENABLED=true
|
||||
# CHAT_MEMORY_TOP_K=8
|
||||
# CHAT_MEMORY_EVIDENCE_MAX_CHARS=4096
|
||||
|
||||
# Memoir:叙事前口述归一(segment 原文仍落库;仅 story 流水线派生输入)
|
||||
# MEMOIR_ORAL_NORMALIZE_ENABLED=true
|
||||
# off | rules | llm(llm 为先规则再 LLM 纠错,失败回退规则结果)
|
||||
# MEMOIR_ORAL_NORMALIZE_MODE=llm
|
||||
# MEMOIR_ORAL_NORMALIZE_LLM_MAX_TOKENS=512
|
||||
# MEMOIR_ORAL_NORMALIZE_LLM_MAX_INPUT_CHARS=8000
|
||||
|
||||
# Chat:模型消费净稿(segment 原文仍落库;访谈编排层归一后注入 Agent / 记忆检索)
|
||||
# CHAT_INPUT_NORMALIZE_ENABLED=true
|
||||
# off | rules | llm(llm 为先规则再 LLM;失败回退规则;编排层已带 LLM 时不重复在 Agent 调)
|
||||
# CHAT_INPUT_NORMALIZE_MODE=rules
|
||||
# CHAT_INPUT_NORMALIZE_LLM_MAX_TOKENS=512
|
||||
# CHAT_INPUT_NORMALIZE_LLM_MAX_INPUT_CHARS=8000
|
||||
|
||||
# =============================================================================
|
||||
# Database
|
||||
@@ -199,6 +224,10 @@ STORY_IMAGE_MIN_BODY_CHARS=400
|
||||
# 叙事模型输出相对口述过短则回退为口述原文
|
||||
MEMOIR_NARRATIVE_FALLBACK_BODY_RATIO=0.5
|
||||
MEMOIR_NARRATIVE_FALLBACK_MIN_CHARS=20
|
||||
# 回忆录 segment 入队:累计 strip 后字数未达此值则暂缓提交 Celery(0=关闭字数门闸,仅静默防抖后提交)
|
||||
# MEMOIR_SEGMENT_BATCH_MIN_CHARS=50
|
||||
# 本批首条入队起最长等待(秒),超时仍提交;测试可调低,生产可调高
|
||||
# MEMOIR_SEGMENT_BATCH_MAX_WAIT_SECONDS=60
|
||||
# 可选,Liblib 返回图片域名不在默认白名单时(逗号分隔)
|
||||
# MEMOIR_IMAGE_DOWNLOAD_HOSTS=liblib.cloud,liblibai.cloud
|
||||
|
||||
|
||||
Reference in New Issue
Block a user