MuseAiImportParseService 从单点注入 NewApiMuseAiImportLlmParser 改为按
muse.ai.import.provider(缺省 dify)从 List<MuseAiImportLlmParser> 选择;来源标识
由选中 parser 的 summary.parser 自报(dify_import_llm / new_api_import_llm)。
新增 DifyMuseAiImportLlmParser:走 Dify「muse-全书解析」chat app(passthrough M3、
克隆自写作 app)的 /chat-messages blocking 调用,把镜像 New-API 的 system+user 解析
prompt 合并成一条 query 发出,从 answer 消费章节 JSON。语义逐条对齐 New-API 版:
401/403 fail-closed 不重试、408/429/5xx 退避重试、输入上限 180k、空/超 300 章节、
脱敏 summary、直连绕代理、key 不落库不打印。截断检测差异:Dify chat 无 finish_reason,
改为对 answer 做 JSON 完整性校验(解析失败→AI_IMPORT_LLM_TRUNCATED 不可重试)。
MuseAiProperties.Dify 补 maxAttempts/retryBackoffSeconds;新增 ImportParse.provider。
规格允许 app/workflow;创始人定 chat app 顶替空 workflow 壳 fed4d25c。p1r 配置
MUSE_AI_DIFY_PARSER_APP_ID/API_KEY 指向新 chat app 17438ceb。
验证(独立重跑核验,不采信子代理自报):
- ai 模块单测 20/0/0/0(DifyImportLlmParser 7、ImportParseService provider 选择 11、
NewApi 2)+ content ImportParseService IT 16/0/0/0,MVN_EXIT=0 BUILD SUCCESS
- Dify 解析 app 直连 /v1/chat-messages 冒烟真出严格章节 JSON {"chapters":[...]}
- 代码 review:确认真 chat 契约(/chat-messages、读 answer、无 workflow 残留)
未做:完整上传链 live 全书解析(import→对象存储→storageRef→parse job→LLM)属 S9
黄金旅程/import-wizard.spec.ts 范畴——inline contentText 走同步 splitter 绕 LLM,
LLM 路径需对象存储上传流,非本次 parser 改动引入。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
56 lines
2.7 KiB
Bash
56 lines
2.7 KiB
Bash
# P1R 外部真实验收依赖。
|
||
# 该文件按用户授权明文提交,仅用于内网 New-API / RAGFlow / Dify 外部验收。
|
||
# 使用方式:set -a && . muse-cloud/scripts/dev/p1r-external-acceptance.env && set +a
|
||
|
||
# New-API 系统管理令牌,用于需要管理接口或渠道配置核查的场景。
|
||
NEW_API_SYSTEM_MANAGEMENT_TOKEN=AyNL/Spm0yVXcZY27JxYMRFRudutew==
|
||
|
||
# New-API OpenAI-compatible 大模型调用入口。
|
||
MUSE_AI_NEW_API_ENABLED=true
|
||
MUSE_AI_NEW_API_BASE_URL=http://100.64.0.8:3000
|
||
MUSE_AI_NEW_API_TOKEN=sk-DyVqO3lDmEvQZ3PqGpbNaaaHZHhbh0xaHRIiynhYSmVlLHl2
|
||
MUSE_AI_NEW_API_DEFAULT_MODEL_KEY=MiniMax-M2.5
|
||
|
||
# P1R smoke 推荐超时。MiniMax-M2.5 已在 2026-06-02 跑出 6.6s 左右成功响应。
|
||
MUSE_AI_NEW_API_CONNECT_TIMEOUT_SECONDS=5
|
||
MUSE_AI_NEW_API_FIRST_BYTE_TIMEOUT_SECONDS=15
|
||
MUSE_AI_NEW_API_NON_STREAM_READ_TIMEOUT_SECONDS=60
|
||
MUSE_AI_NEW_API_STREAM_IDLE_TIMEOUT_SECONDS=30
|
||
MUSE_AI_NEW_API_TOTAL_TIMEOUT_SECONDS=180
|
||
MUSE_AI_NEW_API_MAX_ATTEMPTS=3
|
||
MUSE_AI_NEW_API_RETRY_BACKOFF_SECONDS=1,2,4
|
||
MUSE_AI_NEW_API_PROPAGATE_MUSE_CONTEXT=true
|
||
|
||
# RAGFlow Knowledge runtime 验收入口。
|
||
MUSE_KNOWLEDGE_RAGFLOW_BASE_URL=http://100.64.0.8
|
||
MUSE_KNOWLEDGE_RAGFLOW_API_KEY=ragflow-icnZ7zUcIz3oGCrpyFB2aosK-WTbvTQRaNUBPu6RtX4
|
||
MUSE_KNOWLEDGE_RAGFLOW_TIMEOUT_SECONDS=30
|
||
MUSE_KNOWLEDGE_RAGFLOW_RETRY_BUDGET=0
|
||
MUSE_KNOWLEDGE_RAGFLOW_GRAPHRAG_ATTRIBUTION_READY=false
|
||
|
||
# --- DIFY_S1_BEGIN ---
|
||
# Dify 1.15.0 外部验收入口。
|
||
# S1 起 Dify 是 2.0.0 单人版唯一新增外部服务;app key 与 dataset key 不可混用。
|
||
MUSE_AI_DIFY_ENABLED=true
|
||
MUSE_AI_DIFY_BASE_URL=http://100.64.0.8:18080/v1
|
||
MUSE_AI_DIFY_CONSOLE_BASE_URLS=http://100.64.0.8:18080
|
||
MUSE_AI_DIFY_WRITING_APP_ID=75f105e8-dbca-4aa6-a296-2113a65ad005
|
||
MUSE_AI_DIFY_WRITING_API_KEY=app-Un5DDoOiK7eQc617ahdn7ku2
|
||
MUSE_AI_DIFY_WRITING_CREDENTIAL_REF=dify-writing-s1
|
||
# S8: 解析器用 chat app(passthrough M3,克隆自写作 app;规格允许 app/workflow 二选一,创始人定 chat app),弃用空 workflow 壳 fed4d25c。
|
||
MUSE_AI_DIFY_PARSER_APP_ID=17438ceb-6e47-4c2b-adeb-eda21d6e6a88
|
||
MUSE_AI_DIFY_PARSER_API_KEY=app-9mLRF1ZhFLX1I81pouHpvBi8
|
||
MUSE_AI_DIFY_PARSER_CREDENTIAL_REF=dify-parser-s1
|
||
MUSE_AI_DIFY_CONNECT_TIMEOUT_SECONDS=5
|
||
MUSE_AI_DIFY_FIRST_BYTE_TIMEOUT_SECONDS=15
|
||
# S7d 生成主链切 Dify:短读超时对齐 180s 总预算(实际请求超时取 min(短读,总预算),90 会截短长篇生成)。
|
||
MUSE_AI_DIFY_NON_STREAM_READ_TIMEOUT_SECONDS=180
|
||
MUSE_AI_DIFY_STREAM_IDLE_TIMEOUT_SECONDS=30
|
||
MUSE_AI_DIFY_TOTAL_TIMEOUT_SECONDS=180
|
||
MUSE_KNOWLEDGE_DIFY_BASE_URL=http://100.64.0.8:18080/v1
|
||
MUSE_KNOWLEDGE_DIFY_DATASET_API_KEY=dataset-Nyf7yWhF2CMFsD5TAqD39WHP
|
||
MUSE_KNOWLEDGE_DIFY_TIMEOUT_SECONDS=60
|
||
MUSE_KNOWLEDGE_DIFY_RETRY_BUDGET=0
|
||
MUSE_P1R_DIFY_INDEX_WAIT_SECONDS=180
|
||
# --- DIFY_S1_END ---
|