From abf8497c2e22fdd08cceed63437567aa7d13abd1 Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 10 Apr 2026 16:44:26 +0800 Subject: [PATCH] =?UTF-8?q?fix/=20=E4=BF=AE=E5=A4=8Dworkflow=E5=AF=B9env?= =?UTF-8?q?=E5=8D=A0=E4=BD=8D=E7=AC=A6=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker-build-deploy.yml | 7 +++--- api/.env.example | 30 ++++++++++++++++------- api/.env.production | 12 ++++----- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/.github/workflows/docker-build-deploy.yml b/.github/workflows/docker-build-deploy.yml index 8023d10..b11ae6b 100644 --- a/.github/workflows/docker-build-deploy.yml +++ b/.github/workflows/docker-build-deploy.yml @@ -253,15 +253,16 @@ jobs: echo "::error::缺少 $ENV_SRC,无法部署。" exit 1 fi - if grep -Eq '=(your_|replace_with_|\\.{3}$)' "$ENV_SRC"; then + # 仅检查「有效配置行」:跳过整行注释,避免 # KEY=your_* 示例误伤部署 + if grep -Ev '^[[:space:]]*#' "$ENV_SRC" | grep -Eq '=(your_|replace_with_|\\.{3})$'; then echo "::error::$ENV_SRC 仍包含占位符值,请先完善环境文件。" exit 1 fi - if grep -Eq '^DATABASE_URL=.*@localhost:' "$ENV_SRC" || grep -Eq '^REDIS_URL=redis://localhost' "$ENV_SRC"; then + if grep -Ev '^[[:space:]]*#' "$ENV_SRC" | grep -Eq '^DATABASE_URL=.*@localhost:' || grep -Ev '^[[:space:]]*#' "$ENV_SRC" | grep -Eq '^REDIS_URL=redis://localhost'; then echo "::error::$ENV_SRC 包含 localhost 数据库或 Redis 地址,容器内将无法连接。" exit 1 fi - if grep -Eq '^DATABASE_URL=.*@postgresql:' "$ENV_SRC"; then + if grep -Ev '^[[:space:]]*#' "$ENV_SRC" | grep -Eq '^DATABASE_URL=.*@postgresql:'; then echo "::error::$ENV_SRC 仍引用过期主机名 postgresql;当前 compose 服务名应为 postgres。" exit 1 fi diff --git a/api/.env.example b/api/.env.example index c263217..9cca3f7 100644 --- a/api/.env.example +++ b/api/.env.example @@ -1,6 +1,7 @@ # ============================================================================= # Life Echo API — 模板(example) # +# 目录结构与 api/.env.development 对齐,便于对照;占位键见各段注释。 # 本地:复制为 .env.development(勿提交密钥),再运行 api/development.sh 会在首次自动生成 .env(从 # .env.development 复制);Settings 只读 .env(见 app/core/config.py)。 # 服务端:仓库维护 .env.staging / .env.production;workflow 按目标环境上传并复制为运行时 .env,compose 的 env_file 统一指向 .env。 @@ -60,9 +61,14 @@ EMBEDDING_MODEL=embedding-3 # CHAT_STAGE_DETECTION_MAX_TOKENS=128 # 访谈性格(InterviewAgent):default | warm_listener | curious_guide # CHAT_INTERVIEW_PERSONA=default -# 访谈/开场采样温度(略高于 LLM_TEMPERATURE 时口语更活;默认 0.90) +# 访谈回复长度档位(brief/standard/expanded)联动:极短输入 / 默认 / 长段+新细节(若与当前代码不一致以 config 为准) +# 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 +# 访谈/开场采样温度(略高于 LLM_TEMPERATURE 时口语更活) # CHAT_INTERVIEW_TEMPERATURE=0.93 -# 访谈主回复:统一 max_tokens / 单段字数(代码截断),不再分 brief/expanded 档 +# 访谈主回复:统一 max_tokens / 单段字数(代码截断) # CHAT_INTERVIEW_MAX_TOKENS=380 # CHAT_INTERVIEW_MAX_CHARS_PER_SEGMENT=260 # CHAT_INTERVIEW_MAX_SEGMENTS=2 @@ -123,6 +129,13 @@ REDIS_SESSION_TTL=86400 # Celery:ingest 后 Memory LLM 富化任务投递队列(须被 worker 消费;见 README) # CELERY_MEMORY_ENRICHMENT_QUEUE=memory_idle +# ============================================================================= +# Internal evaluation API(internal_main / internal-eval.sh;与主 API 进程隔离) +# ============================================================================= +# 本地:`openssl rand -hex 32`;不用 internal eval 时可留空 +INTERNAL_EVAL_API_KEY= +# INTERNAL_EVAL_ENABLE_DOCS=1 + # ============================================================================= # Memory compaction(近重复 memory chunk 软排除;Celery + Redis 防抖) # 模板统一默认开启;须同时运行 celery worker 与 celery-beat(docker-compose 已含 beat,负责 memory_compaction_sweep)。 @@ -144,8 +157,7 @@ MEMORY_COMPACTION_ENABLED=true # ============================================================================= # STORY_IMAGE_ENQUEUE_DEDUP_TTL=300 # RECOMPOSE_CHAPTER_DELAY_SECONDS=8 -# 与 Phase2 / 章节物化共用;应 ≥ 最长单次叙事+物化耗时 -# CHAPTER_PIPELINE_LOCK_TTL_SECONDS=360 +# CHAPTER_PIPELINE_LOCK_TTL_SECONDS=120 # STORY_APPEND_MAX_CANONICAL_CHARS=12000 # STORY_APPEND_MAX_VERSIONS=20 # EVIDENCE_TOP_K_DEFAULT=10 @@ -218,7 +230,7 @@ TENCENT_SECRET_KEY=your_tencent_asr_secret_key ENABLE_TTS=true TTS_PROVIDER=tencent # 仅 TTS_PROVIDER=openai 时需要 -# OPENAI_API_KEY=your_openai_api_key +# OPENAI_API_KEY= # 音色 ID 见 https://cloud.tencent.com/document/product/1073/92668 TTS_VOICE_TYPE=502001 TTS_CODEC=mp3 @@ -240,11 +252,11 @@ WECHAT_PAY_NOTIFY_URL=https://your-domain.com/api/payment/notify/wechat # WECHAT_PAY_PLATFORM_PUBLIC_KEY_ID=your_wechat_platform_public_key_id # ============================================================================= -# Alipay +# Alipay(未接入时可为空字符串) # ============================================================================= -ALIPAY_APP_ID=your_alipay_app_id -ALIPAY_PRIVATE_KEY=your_alipay_private_key -ALIPAY_PUBLIC_KEY=your_alipay_public_key +ALIPAY_APP_ID= +ALIPAY_PRIVATE_KEY= +ALIPAY_PUBLIC_KEY= ALIPAY_NOTIFY_URL=https://your-domain.com/api/payment/notify/alipay # ============================================================================= diff --git a/api/.env.production b/api/.env.production index e67c503..5d7a0a9 100644 --- a/api/.env.production +++ b/api/.env.production @@ -191,8 +191,8 @@ TENCENT_SECRET_KEY=xiFbjlZ9XheS2NWYLvHRPAh2A5nGYcR2 # ENABLE_TTS:仅控制是否合成并下发 TTS_AUDIO;不影响用户语音转写(ASR) ENABLE_TTS=true TTS_PROVIDER=tencent -# 仅 TTS_PROVIDER=openai 时需要 -# OPENAI_API_KEY=your_openai_api_key +# 仅 TTS_PROVIDER=openai 时需要(填控制台密钥;勿在注释行写 =your_* 以免旧版 CI 误匹配) +# OPENAI_API_KEY= # 音色 ID 见 https://cloud.tencent.com/document/product/1073/92668 TTS_VOICE_TYPE=502001 TTS_CODEC=mp3 @@ -214,11 +214,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(未接入时保持空字符串,与 Settings 默认一致) # ============================================================================= -# ALIPAY_APP_ID=your_alipay_app_id -# ALIPAY_PRIVATE_KEY=your_alipay_private_key -# ALIPAY_PUBLIC_KEY=your_alipay_public_key +ALIPAY_APP_ID= +ALIPAY_PRIVATE_KEY= +ALIPAY_PUBLIC_KEY= ALIPAY_NOTIFY_URL=https://lifecho.worldsplats.com/api/payment/notify/alipay # =============================================================================