shaomang/mtnode-aio/sensenova-local-install
Claude Code and agent skill by shaomang/mtnode-aio
- community
Checking that the SKILL.md file is still in the repository.
在用户指定目录安装 SenseNova-U1.5-8B-MoT 本地文生图后端:探测 NVIDIA 驱动/显存/内存/磁盘/Python(显存 <20GB 或内存 <32GB 直接拒绝并给 vram_mode 建议与替代方案)、优先用 uv 从 npmmirror 拉 Python 3.11 建隔离 venv、按驱动装 cu128/cu126 的 CUDA 版 torch 2.8.0(SJTU→阿里云→官方三级回退)、从 GitHub tag 归档装 sensenova_u1 推理包(--no-deps,国内 gh 代理回退)、用 ModelScope 下载 SenseNova/SenseNova-U1.5-8B-MoT 权重(32.66GB / 8 片,失败回退 hf-mirror)、拉起 8774 端口标准库 HTTP 服务做 mock 冒烟与连续两次真实出图(只发一发测不出「第一张成功、之后每次 500」的坑)。含按错误码分派的自我修复指引与实测显存/耗时基准。
Install
npx vskill@latest install shaomang/mtnode-aio/sensenova-local-installSKILL.md
SenseNova 本地图像生成 — 安装 / 修复
当用户或 MTNode 插件要求在某目录安装 / 自我修复 SenseNova(SenseNova-U1.5-8B-MoT 本地文生图) 后端时使用本 skill。
上游参考:OpenSenseNova/SenseNova-U1(安装文档 docs/installation_CN.md)、 权重 ModelScope SenseNova/SenseNova-U1.5-8B-MoT · HuggingFace sensenova/SenseNova-U1.5-8B-MoT。 官方文档与示例脚本以 Linux 为准,本 skill 是本机(Windows)移植口径,两者冲突时以本 skill 为准(见「Windows 与官方 Linux 的差异」)。
对接面核对基准:tag `comfyui-v0.3.0` 的 examples/t2i/inference.py(t2i_generate 的入参、SUPPORTED_RESOLUTIONS 11 个训练桶、_denorm 反归一化)、examples/editing/inference.py(参考图 / 图像编辑:it2i_generate(tokenizer, prompt, images, image_size=…, cfg_scale=…, img_cfg_scale=…, …),images 是 PIL 列表)与 apps/comfyui/local_pipeline.py(进度钩子)。升级 `-Ref` 到新 tag 前必须重核这几处,接口一变本包的 app/engine.py 就要跟着改。
插件调用时:
- 当前工作区就是 `INSTALL_DIR`,可直接读写并执行命令
- `SCAFFOLD_REF`(或 `.scaffold-ref`)仅作参考:内置
sensenova-pack/脚手架是示例实现,不是已完成的安装。请按下方目标自行准备目录;可按需从参考路径复制或改写,也可等价实现 - 不要假设插件已替你复制好脚手架
- 若任务附带 CONSOLE_LOG(插件 console 最近日志),以「最近失败焦点」为准定位根因并修复,不要盲目重下 32.66GB 权重
目标
在 INSTALL_DIR 完成可运行的 SenseNova 后端,使:
INSTALL_DIR\.venv\Scripts\python.exe存在;-c "from app import server"、-c "import sensenova_u1"、-c "import torch"三条都成功- venv 内 只装 CUDA 版 torch(禁
--system-site-packages),torch.cuda.is_available()为真且版本串带+cu1xx(不带+cu就是 CPU 版,判失败) transformers >= 4.57.1:低于此版本AutoConfig认不出model_type: "neo_chat",加载必失败INSTALL_DIR\models\SenseNova__SenseNova-U1.5-8B-MoT\权重就绪:config.json+model.safetensors.index.json+ 8 片model-*-of-00008.safetensors,分片合计 ≥30GB(应约 32.66GB)INSTALL_DIR\models\.ok、INSTALL_DIR\.attn-backend(flash或sdpa)、INSTALL_DIR\.install-ok、INSTALL_DIR\.sensenova-agent-result存在- 冒烟通过后不要保留常驻服务:启停由插件负责(冒烟用的一次性启停必须结束就关)
输入参数
| 参数 | 含义 | |
|---|---|---|
INSTALL_DIR | 安装目录(当前工作区)。app/、scripts/、requirements.txt、manifest.json、start_backend.cmd 放这里 | |
SCAFFOLD_REF | 内置脚手架参考路径(sensenova-pack/)。可复制 app/scripts/requirements/manifest,也可等价实现 | |
CONSOLE_LOG | 插件 console 最近日志(修复模式下优先据此定位根因) |
固定口径(不要改):模型 SenseNova/SenseNova-U1.5-8B-MoT(ModelScope id,HF id 为小写 sensenova/...)、推理包 sensenova_u1(GitHub tag comfyui-v0.3.0)、服务端口 8774、默认 vram_mode=fast、默认 dtype=bfloat16、默认 attn_backend=sdpa。
脚本参数(scripts\install.ps1,幂等可重跑):
| 参数 | 用途 | |
|---|---|---|
-InstallDir | 安装目录(默认脚本上一级) | |
-Python | 显式指定 python.exe(离线 / 特殊环境) | |
-TorchIndex | 显式覆盖 torch 的 --index-url(跳过自动镜像选择;公司内网镜像用它) | |
-TorchWheel | 本地 torch-2.8.0*.whl 完全离线安装(同目录需有 torchvision whl) | |
-Ref | sensenova_u1 的 GitHub tag(默认 comfyui-v0.3.0) | |
-SrcTarball | 已下好的 SenseNova-U1 归档 .tar.gz 或已解压目录(离线续装) | |
-ModelDir | 已有权重目录:建目录联接接进 models\,不复制 32.66GB | |
-SkipModels / -SkipDeps / -SkipPkg / -SkipTorch / -SkipSmoke | 只修某一段时跳过其它段(权重就绪的修复一律配 `-SkipModels`) | |
-ModelScopeRepo / -HfRepo | 仓库 id 变更时用 | |
-Cpu | 装 CPU 版 torch,仅供联调(真实出图慢到不可用) | |
-Force | 强行跳过显存 / 内存门槛(明知不够仍要装;结论里必须注明) |
目录约定(以 SCAFFOLD_REF 为参考)
INSTALL_DIR/app/— 只用标准库的 HTTP 服务(python -m app <port>;server.py/engine.py/__init__.py/__main__.py)INSTALL_DIR/.venv/— 隔离虚拟环境(Python 3.11)INSTALL_DIR/models/SenseNova__SenseNova-U1.5-8B-MoT/— 权重(+ 同级.ok标记)INSTALL_DIR/outputs/— 默认产物目录(勿删;节点给了outputDir时写别处)INSTALL_DIR/src/—sensenova_u1源码解包目录(安装期产物,可留存)INSTALL_DIR/scripts/—install.ps1(幂等);根目录start_backend.cmd(手动起服用)INSTALL_DIR/.attn-backend— 单行注意力档位(flash/sdpa),由安装期探针写出INSTALL_DIR/.install-ok、INSTALL_DIR\.sensenova-agent-result— 成功 / 结论标记(见「marker 约定」)
硬件与系统探测(第一步,必做,不合格直接拒绝)
判定(硬门槛,不要硬装):
| 情况 | 处理 | |
|---|---|---|
nvidia-smi 不存在 / 读不到驱动 / 非 NVIDIA(AMD/Intel 核显/Apple) | 拒绝:ok=false + reason=no_cuda,不建 .install-ok,给替代方案 | |
| 显存 < 20GB | 拒绝:ok=false + reason=vram_too_low(记录实测 memory.total)。官方最省的 vram_mode=low 也是为 24GB 级卡准备的;但注意实测 `low` 档峰值只有约 3GiB(见下表),小卡用户如果有 32GB+ 内存,可用 -Force + vramMode=low 一试,结论里注明「非官方档、风险自担」 | |
| 显存 20–24GB | 可装(警告为官方推荐档位下限):先试 `fast`,OOM 再降 balanced → low。实测 4090(24GB)fast 峰值仅约 16GiB,fast 并不需要 24GB 才跑得动 | |
| 显存 ≥ 24GB(4090 / 3090 / A5000 档) | 官方目标档:默认 fast;OOM 自动降 balanced → low | |
| 显存 ≥ 48GB 或多卡 | 可用 vramMode=full(不卸载,最快) | |
| 物理内存 < 32GB | 拒绝:reason=ram_too_low。分层卸载把 32.66GB 权重放进主内存,内存不够装得上跑不动;建议 ≥40GB | |
| 驱动主版本 < 570 | 不拒绝:脚本自动降档装 cu126(cu128 需要 570+)。降档后仍 cuda.is_available()=False → reason=torch_no_cuda,提示升级驱动 | |
| 磁盘剩余 < 50GB | 警告后可继续(结论里注明):权重 32.66GB + venv 约 12GB + 产物,建议预留 ≥60GB | |
| 找不到 Python 3.10–3.13 | 见「Python 选择」:先试 uv;都没有 → reason=python_not_found 给指引(控制台原话:Neither uv nor a local Python 3.10-3.13 is available. ...) |
拒绝时必须一并给出的替代方案:
- 改用 MTNode 的云端文生图节点 `proc_image`(不占本机显存、无安装成本),要本地化再谈;
- 换 / 升级到 24GB 级以上的 NVIDIA 卡(4090 / 3090 / A5000 / A6000),或 48GB 卡上走
vram_mode=full; - 内存不足 → 加内存到 ≥40GB(权重 bf16 无法在内存里再压);
- 只有 CPU:官方链路在 CPU 上慢到不可用(且部分算子不可用),不提供 CPU 兜底,
-Cpu只能验流程不能出图。
拒绝不是失败报告:要写清实测gpu=/vram=/ram=/driver=/ 磁盘剩余,与上面 1–4 条,让用户能自己选下一手。
为什么必须分层卸载(别在文档里自创说法)
| 事实 | 数字 | 后果 | |
|---|---|---|---|
| 权重体积 | 32.66GB(8 片 safetensors,bf16) | > 24GB 显存 → vram_mode=full 在 4090 上必 OOM | |
官方 vram_mode | full(不卸载) / fast(异步预取 + 预算内常驻 generation 层) / balanced(异步预取) / low(同步逐层) | 24G 卡走 `fast`(本包默认),OOM 自动降一档并写进响应 warnings | |
| 卸载去处 | pinned 主内存 | 所以内存门槛 32GB、建议 40GB | |
| 最小训练桶 | 2048×2048 ≈ 4M 像素 | 降分辨率省不了显存;要省只能降 numSteps 或降 vramMode | |
| 注意力 | 官方支持 flash-attn,不提供 Windows 轮子 | 默认 sdpa;装 flash-attn 不是修复项 |
实测基准(RTX 4090 24GB · 驱动 610.88 · 63.8GB 内存 · bf16 · sdpa · E: NVMe)
首图含权重加载(懒加载),冷启动第一发比后续慢;同进程后续请求不必再加载。下表 elapsedSec 是 /generate 全程:
| 分辨率桶 | numSteps | vramMode | 耗时 | peakVramGiB | |
|---|---|---|---|---|---|
| 2048×2048(1:1 最小桶) | 4 | fast | 62.9s(冷,含 28s 加载)/ 23.8s(热) | 15.86 | |
| 2048×2048 | 12 + think | fast | 383.7s | 15.97 | |
| 2720×1536(16:9) | 4 | fast | 24.3s(热) | 15.85 | |
| 3456×1152(3:1) | 4 | fast | 24.0s(热) | 15.76 | |
| 2048×2048 | 4 | low | 57.2s(热) | 2.95 |
读法:fast 的显存是预算封顶的(约 16GiB,换更大的桶也只涨一点),所以 24GB 卡上 fast 就是默认档;low 把显存压到 3GiB 但慢约 2.4×。权重加载 28–32s(NVMe、8 片);low/balanced 因逐层同步会更慢。冷启动第一发明显更慢(第一次进 offload 上下文、pinned cache 与 cudnn 预热):12 步那次前一两步就吃掉几分钟,/progress 会一段时间停在 sample 15% 不动 —— 那是正常的,看 step/totalSteps 而不是只看 percent。
Python 选择(优先 uv 托管 3.11,全程不翻墙)
上游 requires-python >=3.10,<3.14,官方参考环境是 3.11。依次:
- 显式
-Python <路径> - `uv python find 3.11` → 没有就 `uv python install 3.11`(约 30–60 秒)。必须先设镜像,否则卡在 GitHub release:
``powershell $env:UV_PYTHON_INSTALL_MIRROR = "https://registry.npmmirror.com/-/binary/python-build-standalone" ``
- 本机
py -3.11→-3.12→-3.13→-3.10(py -<ver> -c "import sys;print(sys.executable)"取真实路径) - PATH 里的
python(必须核对版本在 3.10–3.13) - 都没有 →
reason=python_not_found,指引:装 uv(pip install uv)或 python.org / Microsoft Store 装 3.11,或用-Python指路后重跑
命中后 venv 一律用它的 -m venv 创建(缺 pip 用 ensurepip 兜底,再退 uv venv --seed .venv)。
国内镜像(必须)与回退顺序
中国大陆网络下必须走镜像:HuggingFace 无法直连、download.pytorch.org与 GitHub 极易超时。
| 内容 | 顺序 | |
|---|---|---|
| pip | 清华 https://pypi.tuna.tsinghua.edu.cn/simple(带 --trusted-host pypi.tuna.tsinghua.edu.cn)→ 失败回退阿里云 https://mirrors.aliyun.com/pypi/simple/ → USTC https://mirrors.ustc.edu.cn/pypi/simple/ → 官方 https://pypi.org/simple(官方只做最后一级兜底)。用 `PIP_*` 环境变量覆盖本机全局配置(PIP_INDEX_URL / PIP_EXTRA_INDEX_URL / PIP_TRUSTED_HOST,外加 PIP_NO_CACHE_DIR=0 保留 torch 3.5GB 轮子缓存),别用 pip --isolated —— 实测 --isolated 只忽略用户级 config,机器上 C:\ProgramData\pip\pip.ini 被 NVIDIA PyIndex 塞的 extra-index-url = https://pypi.ngc.nvidia.com(国内 DNS 直接失败)照样生效,每个包白等 5 次重试;而且 --isolated 会连 PIP_* 环境变量一起忽略,反而把 ngc 放回来。绝不改用户机器上的 pip.ini / npmrc | |
| torch / torchvision(不写进 `requirements.txt`) | ① SJTU https://mirror.sjtu.edu.cn/pytorch-wheels/<cuXXX>(--index-url,传递依赖走清华 extra)→ ② 阿里云 https://mirrors.aliyun.com/pytorch-wheels/<cuXXX>(平铺轮子,用 --find-links)→ ③ 官方 https://download.pytorch.org/whl/<cuXXX>;-TorchIndex 可整体覆盖、-TorchWheel 可完全离线 | |
| cu 档位 | 驱动主版本 ≥570 → cu128;<570 → cu126。每档装完必须验证 torch.cuda.is_available() 为 True 且版本带 +cu | |
| `sensenova_u1` 推理包(PyPI 上 404,不存在) | GitHub tag 归档 tarball https://github.com/OpenSenseNova/SenseNova-U1/archive/refs/tags/<Ref>.tar.gz,直连失败逐个试国内代理:https://ghfast.top/… → https://gh-proxy.com/… → https://ghproxy.net/…;都失败 → 让用户手动下载后用 -SrcTarball <路径> | |
| 模型权重 | 优先 ModelScope(魔搭):modelscope.snapshot_download("SenseNova/SenseNova-U1.5-8B-MoT", local_dir=…, ignore_patterns=["assets/*","docs/*","*.mp4","*.webm","*.gif"])(国内直连)→ 失败回退 HF_ENDPOINT=https://hf-mirror.com + HF_HUB_DISABLE_XET=1 + huggingface_hub.snapshot_download("sensenova/SenseNova-U1.5-8B-MoT") | |
| uv 的 Python | UV_PYTHON_INSTALL_MIRROR → npmmirror(见上节) |
- 权重下载可续传:已存在且非空的分片自动跳过;中断就重跑脚本。
- ModelScope 与 HF 的 id 大小写不同(
SenseNova/…vssensenova/…),结论文本里写清最终实际用到的源与 id。 - Windows PowerShell 5.1 下载前必须开 TLS1.2:
[Net.ServicePointManager]::SecurityProtocol = … -bor [Net.SecurityProtocolType]::Tls12,否则 pip 装得上、tarball 下不动。 - 全程 UTF-8:
PYTHONIOENCODING=utf-8+install.ps1/start_backend.cmd里的chcp 65001(GBK 控制台打进度会崩);脚本自身是纯 ASCII 英文,中文只来自 Python 后端与原生工具(见「脚本语言与编码」)。
脚本语言与编码(必须:零中文 + 钉死 UTF-8)
宿主用powershell.exe(Windows PowerShell 5.1)跑scripts\*.ps1。而 UTF-8 无 BOM 的 `.ps1` 在中文 Windows 上会被按 GBK(cp936) 解码 —— 中文变成乱码字节,还会吞掉紧跟的}/'/",脚本直接语法崩(本轮改前实测:breeze 10 处、sensenova 113 处、yue 42 处、tts 15 处、llama 3 处、h3 download_models 6 处 + repair_torch_kitchen 1 处语法错),控制台同时一片乱码。
scripts\*.ps1/scripts\*.cmd与安装期辅助*.py(如download_weights.py/probe_attention.py)一律纯 ASCII 英文:注释、消息、异常文本全英文;不许有中文、全角标点、——、制表线─、emoji。.ps1开头(param 块之后)必须钉死编码三行,.cmd在setlocal后加两行:
``powershell try { [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false) } catch { } $OutputEncoding = New-Object System.Text.UTF8Encoding($false) $env:PYTHONIOENCODING = 'utf-8' ``
``bat chcp 65001 >nul set "PYTHONIOENCODING=utf-8" ``
这样脚本自身与 pip / git / python 的输出都按 UTF-8 出去,宿主(用 UTF-8 解码 stdout,并按 [sensenova-install] progress: 抓进度)看到的就是正常文本。
- 这条纪律已是硬守卫:
AGENTS.md的「协作约定」钉了它,test/smoke-install-scripts.js会自动扫描全部*-pack的.ps1/.cmd/.bat、*-pack/scripts/**/*.py、共享真源pack-steps/与pack-python/、以及项目scripts/下的.ps1/.cmd/.bat—— 任一字节 > 0x7F(中文、全角标点、emoji、→、制表线)或带 BOM 即硬失败。改脚本后必须跑node test/smoke-install-scripts.js(同时还钉 GBK(cp936) 与 UTF-8 双解码解析零错、进度前缀与reason=等 ASCII 契约仍在);后端运行时 Python(*-pack/app/**、*-pack/shims/**)豁免,仍是中文。 - Python 后端(
app/*.py的启动横幅与日志)本轮不做零中文,仍是中文,靠上面的 UTF-8 钉死正确显示。
安装步骤(按序;括号内是脚本打印的 progress: 值)
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/sensenova-local-install/SKILL.md
Popularity
- Repository stars
- 55
- Repository forks
- 11
- 7-day trend score
- 5
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/shaomang/mtnode-aio/sensenova-local-install)