Skip to content

fix(model-store): 接受 HF tree API 返回的裸 LFS oid,修复本地模型下载失败 - #1072

Merged
H-Chris233 merged 2 commits into
Open-Less:betafrom
Longado:fix/hf-lfs-oid
Sep 13, 2026
Merged

H-Chris233 merged 2 commits into
Open-Less:betafrom
Longado:fix/hf-lfs-oid

Conversation

@Longado

@Longado Longado commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

摘要

2.0 beta 下载本地模型(如 Qwen3-ASR 0.6B)时直接失败,界面报 unsupported Hugging Face LFS oid。原因是 parse_lfs_sha256 只接受 sha256:<hex> 形式,而 huggingface.co 与 hf-mirror.com 的 /api/models/{repo}/tree/main 接口返回的 lfs.oid 是不带前缀的 64 位十六进制。该解析在 #1019 引入;原有单测的 fixture 用的是带前缀的写法,所以没有暴露问题。

修复 / 新增 / 改进

  • parse_lfs_sha256sha256: 前缀改为可选,仍校验 64 位十六进制并转小写。
  • 新增单测 hf_tree_accepts_bare_lfs_oid_from_live_api,fixture 取自 2026-09-13 两个接口对 Qwen/Qwen3-ASR-0.6B 的真实返回。原有带前缀的单测保留不动。

兼容

  • 不包含:下载、校验流程的其它改动。
  • 对现有用户 / 本地环境 / 构建流程的影响:只放宽 oid 格式,下载后的 sha256 校验不变。

测试计划

  • 先提交失败的单测(8cefc18):修复前报 unsupported Hugging Face LFS oid,与界面报错一致。
  • 命令:cargo test -p openless-core
  • 结果:全部通过(lib 797 过,1 个原本就 ignore;集成测试全过)
  • 实机:macOS 26 / Apple M5,本分支 tauri dev,默认 huggingface 源:
    • 修复前:点下载即报 unsupported Hugging Face LFS oid
    • 修复后:Qwen3-ASR 0.6B 下载完成(7 个文件,.openless-model-ready 已写),model.safetensors 的 sha256 与 HF 公布的 79d6cbd4…3ea 一致
    • 随后「Load & Test」走 MLX Metal 后端:加载 2.0s,内置音频识别为 "Hello. This is a test of the Vox Troll speech-to-text system."(期望 "Voxtrail"),进程未退出——本地 Qwen3-ASR 的 MLX 引擎在 Apple M5 上崩溃(进程直接退出) #1006 在 M5 上也一并确认
  • 说明:cargo fmt -p openless-core --checkapi.rs 上有 diff,beta 上本来就有,本 PR 未改动该文件。

huggingface.co 与 hf-mirror.com 的 /api/models/{repo}/tree 接口里 lfs.oid
是不带 sha256: 前缀的 64 位十六进制,现有解析只认前缀形式,导致本地模型
下载直接报 unsupported Hugging Face LFS oid。
2.0 起 parse_lfs_sha256 只接受 sha256: 前缀,但 huggingface.co 与
hf-mirror.com 的 tree 接口返回的是裸 64 位十六进制,导致下载 Qwen3-ASR
等本地模型时直接报 unsupported Hugging Face LFS oid。改为前缀可选,
仍校验 64 位十六进制。
@H-Chris233
H-Chris233 merged commit 4d011df into Open-Less:beta Sep 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants