这个项目现在需要区分 4 类依赖,不要再把它们都塞进一个 requirements 里:
requirements-base.txt通用 Python 运行时依赖。requirements-paper.txt论文 / PDF / 科研绘图相关额外 Python 包。requirements-cu12.txtNVIDIA Linux + CUDA 12 的额外 GPU 运行时包。requirements-system-ubuntu.txtUbuntu/Debian 系统工具包名,不是 Python 包。
几个关键事实:
ffmpeglibreoffice/sofficeinkscapepoppler-utilswkhtmltopdftectonic
这些都不是 pip 包。
当前 deploy/start.sh / deploy/start_nv.sh / deploy/start_muxi.sh 只负责:
- 读取 profile
- 选择 Python
- 校验部分 Python 运行时
- 启动模型服务 / 后端 / 前端
它们不会自动安装系统包,也不会自动安装 npm / conda / pip 依赖。
现在推荐先做这个选择:
- 粗粒度模式:
fastapi_app/.env.simple.example+frontend-workflow/.env.simple.example - 细粒度模式:
fastapi_app/.env.example+frontend-workflow/.env.example
建议:
- 大多数部署直接先用粗粒度模式
- 只有需要逐个 workflow 控模型/provider 时,再切细粒度模式
这个项目现在只保留三类配置文件,各管各的,不要重复写同一套 URL / key。
用途:后端业务配置。
这里放:
BACKEND_API_KEYDF_API_URL/DF_API_KEYLLM_VERIFY_TIMEOUT_SECONDSLLM_VERIFY_MAX_TOKENSPAPER2DRAWIO_OCR_*PAPER2DRAWIO_SEGMENT_HINT_*PAPER2PPT_SEGMENT_HINT_*PAPER2VIDEO_*PAPER2FIGURE_TO_PPT_FORCE_AI_EDITMINERU_API_*SUPABASE_*- workflow 默认模型参数
- 后端回退用的
SAM3_SERVER_URLS
不要放:
- 前后端主进程启动用的 Python 路径
- GPU 布局
- 端口分配策略
- 机器部署参数
补充:
PAPER2VIDEO_CURSOR_LOCAL_PYTHON/PAPER2VIDEO_LOCAL_TTS_PYTHON/PAPER2VIDEO_TALKING_LOCAL_PYTHON这类“某个 workflow 的可选隔离子环境解释器”放在这里。APP_PYTHON/PAPER2ANY_PYTHON这类“整套服务如何启动”的解释器路径放在deploy/profiles/*.env。
用途:前端默认展示配置。
这里放:
VITE_API_KEYVITE_API_BASE_URLVITE_DEFAULT_LLM_API_URLVITE_LLM_API_URLSVITE_DEFAULT_LLM_MODELVITE_LLM_VERIFY_TIMEOUT_MSVITE_PAPER2DRAWIO_MODEL- 其他
VITE_*默认模型项
说明:
VITE_API_KEY必须和fastapi_app/.env里的BACKEND_API_KEY一致。VITE_API_BASE_URL在本地vite代理模式下可以留空。
用途:机器部署参数。
这里放:
- Python 路径
- 前后端监听端口
- GPU 类型 / GPU 列表
- SAM3 实例数
- 本地模型路径
- 是否启用本地 OCR / 本地 MinerU
不要放:
DF_API_URLDF_API_KEYVITE_DEFAULT_LLM_API_URLVITE_DEFAULT_LLM_MODELSUPABASE_*- 其他业务 URL / key
用途:运行时自动生成。
这里会写:
SAM3_SERVER_URLSSAM3_HOMESAM3_CHECKPOINT_PATHSAM3_BPE_PATH
这个文件不要手改。
APP_HOST后端监听地址。0.0.0.0表示外部机器也能访问。APP_PORT后端端口,当前是8000。APP_WORKERSuvicornworker 数量。APP_PYTHON启动后端时优先使用的 Python 解释器。APP_FALLBACK_PYTHONAPP_PYTHON不可用时的回退解释器。
FRONTEND_HOST前端 dev server 监听地址。FRONTEND_PORT前端端口,当前是3000。
PAPER2ANY_PYTHON启动模型服务时使用的 Python。MODEL_SERVER_ENV_FILE模型服务启动后写回运行时环境变量的文件,默认是logs/model_servers.env。
SAM3_ENABLED是否启动本地 SAM3。SAM3_GPU_MODEGPU 选择模式,manual表示使用SAM3_GPUS。GPU_QUERY_TOOL查 GPU 的工具。Muxi 机器用mx-smi,NVIDIA 机器通常用nvidia-smi。SAM3_GPUS实例分布。比如0,0,1,1,1,1,1,1表示 8 个实例,前 2 个绑 0 卡,后 6 个绑 1 卡。SAM3_INSTANCES_PER_GPU自动模式下每张卡起几个实例。SAM3_MAX_INSTANCES最大实例数。SAM3_START_PORTSAM3 起始端口,后续实例按顺序递增。SAM3_HOSTSAM3 监听地址。SAM3_STARTUP_STRATEGYsequential表示逐个健康检查后再起下一个,比较稳。SAM3_STARTUP_STAGGER_SEC启动实例之间的间隔秒数。SAM3_INSTANCE_HEALTH_TIMEOUT单实例健康检查超时时间。
OCR_ENABLED是否启动本地 OCR 服务。当前项目在 muxi 上一般设为0,走远端 API。MINERU_LOCAL_ENABLED是否启动本地 MinerU。当前一般设为0,走远端 API。DRIPPER_AUTOSTOP是否自动停止 dripper 相关本地服务。
- 准备后端配置。
cp fastapi_app/.env.example fastapi_app/.env- 准备前端配置。
cp frontend-workflow/.env.example frontend-workflow/.env- 准备机器部署配置。
cp deploy/profiles/muxi.env.example deploy/profiles/muxi.env- 只在
fastapi_app/.env填后端业务 key。
例如:
DF_API_URLDF_API_KEYLLM_VERIFY_TIMEOUT_SECONDSLLM_VERIFY_MAX_TOKENSPAPER2DRAWIO_OCR_API_KEYPAPER2DRAWIO_SEGMENT_HINT_*PAPER2PPT_SEGMENT_HINT_*PAPER2VIDEO_CURSOR_*PAPER2VIDEO_ENABLE_LOCAL_TTSPAPER2VIDEO_SUBTITLE_FONT_PATHPAPER2VIDEO_VIDEO_RENDER_THREADSPAPER2VIDEO_TALKING_*PAPER2FIGURE_TO_PPT_FORCE_AI_EDITMINERU_API_KEYSUPABASE_*
补充说明:
- muxi 当前部署的默认视频链路是:
CosyVoice API + LivePortrait API。 - 所以
PAPER2VIDEO_ENABLE_LOCAL_TTS=false即可,F5-TTS/WhisperX不是默认部署必需依赖。 - 若要启用本地 UI-TARS cursor,不建议把
ui-tars装进后端 base 环境;推荐单独建环境,并在fastapi_app/.env里设置:PAPER2VIDEO_CURSOR_LOCAL_ENABLED=autoPAPER2VIDEO_CURSOR_LOCAL_MODEL_PATH=/your/UI-TARS-1.5-7BPAPER2VIDEO_CURSOR_LOCAL_PYTHON=/your/conda/env/bin/python- 按需再配
PAPER2VIDEO_CURSOR_LOCAL_EXTRA_PYTHONPATH
- 这套 UI-TARS 是按次拉起的子进程 worker,不常驻内存。
- 只在
frontend-workflow/.env填前端默认值。
例如:
VITE_API_KEYVITE_DEFAULT_LLM_API_URLVITE_DEFAULT_LLM_MODELVITE_LLM_VERIFY_TIMEOUT_MSVITE_PAPER2DRAWIO_MODEL
- 只在
deploy/profiles/muxi.env填机器参数。
例如:
APP_PYTHONPAPER2ANY_PYTHONFRONTEND_PORTSAM3_GPUSSAM3_MAX_INSTANCES
- 启动。
bash deploy/start_muxi.shcp deploy/profiles/nv.env.example deploy/profiles/nv.env
bash deploy/start_nv.shbash deploy/start_muxi.sh它会依次执行:
script/prepare_local_models.shscript/start_model_servers.shdeploy/start.shdeploy/start_frontend.sh
bash deploy/stop_stack.shset -a
source deploy/profiles/nv.env
set +a
bash deploy/start.shbash deploy/start_frontend.shfastapi_app/.env
frontend-workflow/.env
deploy/profiles/muxi.env
只记一句话:
- 业务 key 写
fastapi_app/.env - 前端默认值写
frontend-workflow/.env - 机器参数写
deploy/profiles/*.env
不要把同一套 URL / key 在三处重复写。