feat: select the VNCCS PoseStudio LoRA with VNCCS_LORA (#12)

Routes ③ and ④ use VNCCS_QI2_PoseStudioV1.1.safetensors as a fixed name.
To use V2, users had to edit two scripts, and git pull then conflicts.

- run_pose_transfer.py and run_vnccs_ui.py read VNCCS_LORA.
- doctor.py checks the same file name.
- The default stays V1.1. Route ③'s --lora flag still takes precedence.
- Document the variable in install/setup.md and CHANGELOG.md.
This commit is contained in:
Jambo Hsu authored and GitHub committed 2026-10-27 00:41:00 +08:00
1 parent 5fa2aa12eb
commit 8e4adf0017
5 files changed
+16 -4

No files matched your search

+8
View File
@@ -4,6 +4,14 @@ Notable changes to this package. Format follows [Keep a Changelog](https://keepa
versions are git tags. The package ships as a skill, not a library, so versions mark
documented, reproducible states of the scripts + docs rather than an API contract.
## [Unreleased]
### Added
- `VNCCS_LORA` environment variable: choose the VNCCS PoseStudio LoRA file for routes ③ and ④
(`run_pose_transfer.py`, `run_vnccs_ui.py`) and for the `doctor.py` LoRA check. The default is
still `VNCCS_QI2_PoseStudioV1.1.safetensors`. Route ③'s `--lora` flag still takes precedence.
## [1.1.0] — 2026-10-20
Since 1.0.0: a new browser-free route, a self-check script, macOS and Windows support, and a
+3 -1
View File
@@ -173,7 +173,9 @@ python3 scripts/run_vnccs_ui.py --pose "squatting leaning back" \
环境变量(脚本内置默认值,按需覆盖):
`COMFYUI_URL`、`COMFYUI_INPUT`、`COMFYUI_OUTPUT`、`POSELAB`(本包根)、
`QWEN_POSE_WORKFLOWS`(Qwen 工作流目录)、`VNCCS_WF_FILE`(VNCCS 工作流文件)、
`VNCCS_POSELIB`(VNCCS 节点自带 PoseLibrary 目录)、`VNCCS_UI_OUT`(输出目录)。
`VNCCS_POSELIB`(VNCCS 节点自带 PoseLibrary 目录)、`VNCCS_UI_OUT`(输出目录)、
`VNCCS_LORA`(路线③④用的 VNCCS PoseStudio LoRA 文件名,默认 `VNCCS_QI2_PoseStudioV1.1.safetensors`;
换 V2 时设成 `VNCCS_QI2_PoseStudioV2.safetensors`,路线③的 `--lora` 优先于它)。
其中 `COMFYUI_INPUT` / `COMFYUI_OUTPUT` / `VNCCS_POSELIB` 默认从 `$COMFY` 推导;
未设 `$COMFY` 时用 `~/ComfyUI`。
+1 -1
View File
@@ -44,7 +44,7 @@ KNOWN_LORAS = [
"thesealpacas-nsfw-v2.safetensors",
"nsfw-posture-v3.safetensors",
"qwen21-nsfw-image-edit.safetensors",
"VNCCS_QI2_PoseStudioV1.1.safetensors",
os.environ.get("VNCCS_LORA", "VNCCS_QI2_PoseStudioV1.1.safetensors"),
]
PACKAGE_FILES = [
"workflows/qwen21_t2i.json",
+3 -1
View File
@@ -20,6 +20,7 @@ from __future__ import annotations
import argparse
import json
import os
import sys
from pathlib import Path
@@ -28,7 +29,8 @@ from qwen_pose_test import run, upload_image, MediaLockError # noqa: E402
DEFAULT_PROMPT = ("replace the pose of <image 2> with the pose of <image 1>. "
"keep the character of <image 2>")
DEFAULT_LORA = "VNCCS_QI2_PoseStudioV1.1.safetensors"
# VNCCS_LORA swaps the PoseStudio LoRA file (e.g. V2) without editing the script; --lora still wins
DEFAULT_LORA = os.environ.get("VNCCS_LORA", "VNCCS_QI2_PoseStudioV1.1.safetensors")
def _parse() -> argparse.Namespace:
+1 -1
View File
@@ -48,7 +48,7 @@ VNCCS_LIB = Path(os.environ.get("VNCCS_POSELIB", str(_COMFY / "custom_nodes" / "
COMFY_INPUT = Path(os.environ.get("COMFYUI_INPUT", str(_COMFY / "input")))
COMFY_OUTPUT = Path(os.environ.get("COMFYUI_OUTPUT", str(_COMFY / "output")))
OUT = Path(os.environ.get("VNCCS_UI_OUT", str(_PKG_DIR / "outputs" / "vnccs_ui")))
VNCCS_LORA = "VNCCS_QI2_PoseStudioV1.1.safetensors"
VNCCS_LORA = os.environ.get("VNCCS_LORA", "VNCCS_QI2_PoseStudioV1.1.safetensors")
URL = os.environ.get("COMFYUI_URL", "http://127.0.0.1:8188")
# aliases used by the phase4b runs, kept so old commands still work