ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Portable-AI-USB 源码解析1:install-core.ps1 如何实现 AI 模型下载校验与 Ollama 一键导入(完整指南)

2026/10/7 8:41:16 拓冰建站 浏览量
Portable-AI-USB 源码解析1:install-core.ps1 如何实现 AI 模型下载校验与 Ollama 一键导入(完整指南) Portable-AI-USB 源码解析1install-core.ps1 如何实现 AI 模型下载校验与 Ollama 一键导入完整指南【免费下载链接】Portable-AI-USBA 100% offline, fully portable, zero-trace AI (Ollama Llama 3 AnythingLLM) that runs natively from a USB drive on Windows and Mac.项目地址: https://gitcode.com/gh_mirrors/po/Portable-AI-USBPortable-AI-USB 是一个100% 离线、完全可移植的 USB 便携 AI 工具箱Ollama Llama 3 AnythingLLM插上 U 盘即可在 Windows 和 Mac 上运行本地大模型。本文深入解析核心安装脚本 install-core.ps1带你弄懂它如何完成AI 模型下载校验与Ollama 模型导入两大关键动作。 先搞懂install-core.ps1 在项目中的位置整个项目由十几个脚本组成各司其职文件职责install.bat用户双击的入口只是转发调用 PowerShell 脚本install-core.ps1⭐ 核心安装逻辑选模型、下载、校验、导入 Ollamastart-windows.bat运行期启动器负责拉起 Ollama 引擎和聊天界面linux/install-core.shLinux/Mac 版本的核心安装逻辑与 ps1 版思路一致README.md官方使用文档install.bat 中只有一句关键调用powershell -ExecutionPolicy Bypass -File %~dp0install-core.ps1也就是说用户双击后发生的一切都浓缩在 install-core.ps1 这一个文件里。️ 全流程总览6 步完成U 盘变 AI脚本用Write-Host [1/6] ...的提示把流程切成了 6 步源码中每一步都有清晰的注释分隔块步骤内容源码位置1/6交互式模型选择菜单install-core.ps1#L129-L2792/6在 U 盘创建目录结构install-core.ps1#L325-L3343/6下载模型 大小校验install-core.ps1#L336-L3984/6生成 Modelfile 配置文件install-core.ps1#L400-L4315/6下载并解压 Ollama 引擎install-core.ps1#L433-L4606/6下载 AnythingLLM 聊天界面install-core.ps1#L462-L511最后还有一个独立的导入阶段和 AnythingLLM 自动配置阶段。接下来我们聚焦用户最关心的两件事模型是怎么下载和校验的、模型又是怎么导入 Ollama 的。 模型目录一份内置的模型货架脚本开头定义了一个$ModelCatalog哈希表数组install-core.ps1#L14-L87相当于内置模型货架收录了 6 个预置模型全部采用 Q4_K_M 量化格式#模型大小标签特点1NemoMix Unleashed 12B~7.0 GB 推荐质量最高的无审查模型2Dolphin 2.9 Llama 3 8B~4.9 GB经典全能选手3Mistral 7B Instruct v0.3~4.1 GB推理与编程强4Qwen 2.5 7B Instruct~4.7 GB多语言支持佳5Llama 3.2 3B Instruct~2.0 GB轻量老电脑友好6Phi-3.5 Mini 3.8B~2.2 GB轻量 推理每个模型条目里有 8 个字段其中 3 个字段是后续下载校验的关键File模型权重文件名.gguf 格式MinBytes⚠️ 最小有效字节数例如 12B 模型要求6000000000约 6GBLocal导入 Ollama 时使用的本地模型名如nemomix-local 设计亮点Size字段只是给人看的展示值字符串 7.0而真正的校验用MinBytes精确到字节两者分离展示与逻辑互不干扰。除了预置模型菜单还支持输入C添加自定义 HuggingFace GGUF 链接install-core.ps1#L212-L266自定义模型的MinBytes统一设为 100MB并会自动给本地名加-local后缀防止命名冲突。 下载与校验如何判断模型下载成功了这是本文的核心。大文件下载最怕两件事中断后重复下载和下载了一半当成完整文件。脚本用一个极简函数把两者都解决了——Test-DownloadedFileinstall-core.ps1#L106-L111function Test-DownloadedFile { param([string]$Path, [long]$MinSize) if (-Not (Test-Path $Path)) { return $false } $fileSize (Get-Item $Path).Length return $fileSize -gt $MinSize }逻辑一句话文件存在且实际字节数 最小阈值就视为已下载成功。注意它用的是-gt大于而非精确相等因为 GGUF 文件可能带额外元数据大于下限比等于某个值更健壮。围绕这个函数下载主循环install-core.ps1#L345-L398构成了完整的四重保险① 断点跳过幂等设计每个模型下载前先调用Test-DownloadedFile若校验通过直接continue打印 Already downloaded! Skipping...。这保证了 README.md 中提到的随时重跑 install.bat 补装更多模型的玩法——重跑绝不会浪费流量。② 失败重试真正下载使用系统自带的 curl最多尝试 2 次install-core.ps1#L371-L387curl.exe -L --ssl-no-revoke --progress-bar $m.URL -o $dest-L跟随重定向HuggingFace 链接会跳转--ssl-no-revoke规避部分企业网络环境下证书吊销检查导致的失败每次尝试后都立即用Test-DownloadedFile复检通过就跳出重试循环③ 小文件预警如果文件存在但体积不够脚本会计算实际 GB 数并红字提示 File seems too small ... May be incomplete避免半成品模型被导入。④ 失败降级为手动指引两次都失败后脚本不会崩掉而是把失败模型记入$downloadErrors数组并打印出模型链接和应放置的models\目录引导用户手动下载后重跑脚本——此时第 ① 步的断点跳过就会接住它。还有一个贴心的细节install-core.ps1#L359-L367如果你之前装过旧版 Dolphin Q5_K_M脚本会识别出来并直接复用避免同一模型重复下载约 2GB 的 Q4 版本。 Modelfile给每个模型发一张身份证模型下好后脚本进入第 4 步为每个模型生成一个 Modelfileinstall-core.ps1#L406-L431FROM ./NemoMix-Unleashed-12B-Q4_K_M.gguf PARAMETER temperature 0.7 PARAMETER top_p 0.9 SYSTEM You are an uncensored and unbiased AI assistant. ...这里藏着 Ollama 导入的关键FROM指令直接指向本地 .gguf 文件而不是从模型仓库拉取。这样导入时 Ollama 只会在本地做量化打包不产生任何网络请求。同时脚本还做了两件记账工作生成一份指向首个模型的旧版ModelfileL418-L426兼容早期单模型版本的旧逻辑把所有已装模型写入installed-models.txtL429-L430格式为本地名|模型名|标签。运行时的 start-windows.bat 会读取这个文件的第一行作为默认模型——安装脚本和启动脚本之间就靠它交接。⚙️ 导入 Ollama临时起服务器装完就关导入阶段install-core.ps1#L516-L576是整个脚本最精巧的部分它回答了一个问题如何在不常驻 Ollama 服务的前提下把 GGUF 导入模型库第 1 步把模型库搬家到 U 盘$env:OLLAMA_MODELS $USB_Drive\ollama\dataOLLAMA_MODELS是 Ollama 官方支持的环境变量用来指定模型存储目录。这一行让所有导入的模型二进制全部落在 U 盘的ollama\data下——实现零痕迹的关键之一宿主机硬盘上不会残留任何模型文件。第 2 步去重检查只导入缺的脚本先用ollama.exe list抓取当前模型列表L528-L531再逐一比对L533-L546GGUF 文件不存在 → 红字跳过说明下载失败了列表里已有该本地名用[regex]::Escape做正则转义后匹配避免模型名中的特殊字符干扰→ 跳过其余的加入$modelsToImport待导入队列同样体现了幂等思想重复执行脚本只会补齐缺口不会重复导入。第 3 步临时启动 → 导入 → 强制关闭$ServerProcess Start-Process -FilePath $USB_Drive\ollama\ollama.exe -ArgumentList serve -WindowStyle Hidden -PassThru Start-Sleep -Seconds 5 # ... 逐个执行 ollama create ... Stop-Process -Id $ServerProcess.Id -Force -ErrorAction SilentlyContinue流程拆解后台静默启动ollama serve-WindowStyle Hidden让黑窗口一闪而过-PassThru拿进程句柄Start-Sleep 5给服务 5 秒启动时间——简单粗暴但有效对每个待导入模型执行ollama create 本地名 -f Modelfile-本地名L558Ollama 会读取 Modelfile把 .gguf 打包成正式模型无论成功失败finally块都用Stop-Process -Force把临时服务杀掉安装完不留后台进程。导入失败的模型会追加到$downloadErrors最终在结尾汇总报告中统一呈现。 收尾自动配置 AnythingLLM 指向 U 盘模型导入完成后脚本还自动写好 AnythingLLM 的环境配置install-core.ps1#L581-L616核心内容LLM_PROVIDERollama OLLAMA_BASE_PATHhttp://127.0.0.1:11434 OLLAMA_MODEL_PREFnemomix-local OLLAMA_MODEL_TOKEN_LIMIT4096 VECTOR_DBlancedb配置写入 U 盘的anythingllm_data\storage\.env。这里有个温和的覆盖策略文件不存在 → 直接创建文件已存在且已配置外部 Ollama → 原样保留不动用户的自定义设置文件存在但用的是 AnythingLLM 内置 Ollama → 覆盖为外部配置并提示 reconfigured。这个策略与 start-windows.bat 中的NEEDS_FIX检测逻辑互相呼应安装期配置一次运行期只做修复、不做破坏。 设计亮点小结亮点实现手段源码位置校验简单可靠字节数 阈值即有效无需哈希L106-L111重跑零浪费下载前/导入前双重去重检查L353-L357、L533-L546抗弱网curl 2 次重试 手动下载降级指引L371-L397零痕迹OLLAMA_MODELS指向 U 盘临时服务用完即杀L523-L524、L567-L571失败可恢复所有错误汇入$downloadErrors结尾统一报告L618-L637脚本间协作installed-models.txt作为安装/启动的交接文件L429-L430整个 install-core.ps1 不到 700 行却把幂等、断点恢复、端口重定向、零痕迹这些工程要点全部落实了——这也是 Portable AI USB 能做到插上就能用、拔走不留痕的底层原因。 延伸阅读官方使用文档README.mdWindows 入口脚本install.bat运行期启动器查看 OLLAMA_MODELS 的正式用法start-windows.batLinux/Mac 对照实现同样的目录 校验 导入逻辑用 Bash 重写linux/install-core.sh项目许可证LICENSE 下一篇将解析启动脚本 start-windows.bat 如何用 Electron 参数劫持把 AnythingLLM 也变成完全便携的。【免费下载链接】Portable-AI-USBA 100% offline, fully portable, zero-trace AI (Ollama Llama 3 AnythingLLM) that runs natively from a USB drive on Windows and Mac.项目地址: https://gitcode.com/gh_mirrors/po/Portable-AI-USB创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考