feat(memoir): 回忆录分段两阶段管线(Phase1 分类 / Phase2 叙事)与配置、测试
This commit is contained in:
@@ -5,10 +5,24 @@
|
||||
# 若仓库可被非授权人员访问,请不要在此文件中保留真实密钥。
|
||||
# =============================================================================
|
||||
|
||||
# =============================================================================
|
||||
# Docker Compose(宿主机独立 Caddy 反代到本 API)
|
||||
# =============================================================================
|
||||
# 映射到宿主机的端口,默认 8000;与同机其它项目冲突时改为未占用端口,并在独立 Caddy 的 Caddyfile 中 reverse_proxy 到 127.0.0.1:该端口。
|
||||
# LIFE_ECHO_API_HOST_PORT=8000
|
||||
# 若 Caddy 跑在独立容器且非 host 网络,不要用 127.0.0.1,应把 Caddy 加入与本 compose 相同的 Docker 网络,并对 http://life-echo-api-prod:8000 做 reverse_proxy。
|
||||
|
||||
# =============================================================================
|
||||
# Logging(loguru sink 最低级别:TRACE / DEBUG / INFO / WARNING / ERROR / CRITICAL)
|
||||
# =============================================================================
|
||||
LOG_LEVEL=INFO
|
||||
# Agent 单行 INFO 摘要(耗时、路由、段落规模);与 LOG_LEVEL 独立,便于生产短暂排查
|
||||
# LOG_AGENT_VERBOSE=0
|
||||
# DEBUG 下 prompt/响应预览最大字符数
|
||||
# AGENT_LOG_MAX_CHARS=4096
|
||||
# 第三方 stdlib logging(空=自动:LOG_LEVEL 为 DEBUG/TRACE 时 Celery→INFO、httpx/httpcore→WARNING,减少刷屏)
|
||||
# CELERY_LOG_LEVEL=
|
||||
# HTTPX_LOG_LEVEL=
|
||||
|
||||
# =============================================================================
|
||||
# LLM / DeepSeek
|
||||
@@ -42,6 +56,10 @@ EMBEDDING_MODEL=embedding-3
|
||||
# CHAT_MEMORY_TOP_K=8
|
||||
# CHAT_MEMORY_EVIDENCE_MAX_CHARS=4096
|
||||
|
||||
# Memoir:批处理/抽取更新 slot 时是否允许改写 MemoirState.current_stage(默认 false,访谈 switch_stage 仍可推进)
|
||||
# True 时仅当 proposed 与 existing 在同一 chat_bucket 才对齐 current_stage
|
||||
# MEMOIR_EXTRACTION_UPDATES_CURRENT_STAGE=false
|
||||
|
||||
# Memoir:叙事前口述归一(segment 原文仍落库;仅 story 流水线派生输入)
|
||||
MEMOIR_ORAL_NORMALIZE_ENABLED=true
|
||||
# off | rules | llm(llm 为先规则再 LLM 纠错,失败回退规则结果)
|
||||
@@ -49,6 +67,13 @@ 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
|
||||
# =============================================================================
|
||||
@@ -57,6 +82,11 @@ MEMOIR_ORAL_NORMALIZE_LLM_MAX_INPUT_CHARS=8000
|
||||
# Docker / 服务端(主机名一般为 compose 服务名 postgres):
|
||||
# DATABASE_URL=postgresql://postgres:postgres@postgres:5432/life_echo
|
||||
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/life_echo
|
||||
# 启动时 Alembic(main.py);生产可设 ALEMBIC_STARTUP_FAIL_FAST=true,迁移失败则拒绝启动
|
||||
# ALEMBIC_RUN_ON_STARTUP=true
|
||||
# ALEMBIC_STARTUP_FAIL_FAST=false
|
||||
# ALEMBIC_STARTUP_MAX_RETRIES=3
|
||||
# ALEMBIC_STARTUP_RETRY_BASE_SECONDS=1.0
|
||||
|
||||
# =============================================================================
|
||||
# Redis
|
||||
@@ -82,6 +112,18 @@ REDIS_SESSION_TTL=86400
|
||||
# MEMORY_COMPACTION_TEXT_JACCARD_MIN=0.55
|
||||
# MEMORY_COMPACTION_METADATA_EVENT_YEAR_WINDOW=1
|
||||
|
||||
# =============================================================================
|
||||
# Story 流水线(post-commit、章节物化、append 上限、evidence 检索)
|
||||
# =============================================================================
|
||||
# STORY_IMAGE_ENQUEUE_DEDUP_TTL=300
|
||||
# RECOMPOSE_CHAPTER_DELAY_SECONDS=8
|
||||
# CHAPTER_PIPELINE_LOCK_TTL_SECONDS=120
|
||||
# STORY_APPEND_MAX_CANONICAL_CHARS=12000
|
||||
# STORY_APPEND_MAX_VERSIONS=20
|
||||
# EVIDENCE_TOP_K_DEFAULT=10
|
||||
# EVIDENCE_TOP_K_LARGE_BATCH=5
|
||||
# EVIDENCE_LARGE_BATCH_THRESHOLD=3
|
||||
|
||||
# =============================================================================
|
||||
# Auth
|
||||
# =============================================================================
|
||||
@@ -135,7 +177,8 @@ TENCENT_SECRET_KEY=xiFbjlZ9XheS2NWYLvHRPAh2A5nGYcR2
|
||||
# ENABLE_TTS:仅控制是否合成并下发 TTS_AUDIO;不影响用户语音转写(ASR)
|
||||
ENABLE_TTS=true
|
||||
TTS_PROVIDER=tencent
|
||||
# 仅 TTS_PROVIDER=openai 时在控制台创建密钥后配置 OPENAI_API_KEY
|
||||
# 仅 TTS_PROVIDER=openai 时需要
|
||||
# OPENAI_API_KEY=your_openai_api_key
|
||||
# 音色 ID 见 https://cloud.tencent.com/document/product/1073/92668
|
||||
TTS_VOICE_TYPE=502001
|
||||
TTS_CODEC=mp3
|
||||
@@ -157,8 +200,11 @@ WECHAT_PAY_NOTIFY_URL=https://lifecho.worldsplats.com/api/payment/notify/wechat
|
||||
# WECHAT_PAY_PLATFORM_PUBLIC_KEY_ID=PUB_KEY_ID_0116629790992026020700181671002400
|
||||
|
||||
# =============================================================================
|
||||
# Alipay(启用时在此填写 ALIPAY_APP_ID / ALIPAY_PRIVATE_KEY / ALIPAY_PUBLIC_KEY)
|
||||
# Alipay
|
||||
# =============================================================================
|
||||
# ALIPAY_APP_ID=your_alipay_app_id
|
||||
# ALIPAY_PRIVATE_KEY=your_alipay_private_key
|
||||
# ALIPAY_PUBLIC_KEY=your_alipay_public_key
|
||||
ALIPAY_NOTIFY_URL=https://lifecho.worldsplats.com/api/payment/notify/alipay
|
||||
|
||||
# =============================================================================
|
||||
@@ -180,8 +226,12 @@ STORY_IMAGE_MIN_BODY_CHARS=800
|
||||
# 叙事模型输出相对口述过短则回退为口述原文
|
||||
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=
|
||||
# MEMOIR_IMAGE_DOWNLOAD_HOSTS=liblib.cloud,liblibai.cloud
|
||||
|
||||
# =============================================================================
|
||||
# Liblib image provider
|
||||
|
||||
Reference in New Issue
Block a user