mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-22 06:28:11 +02:00
Dépôts Hugging Face verrouillés : dit lesquels, et pourquoi le 401
Un dépôt « gated » (orcarouter/Qwen3.8-27B-Uncensored-GGUF, vécu) laisse lire son arborescence sans rien : Loki listait donc ses seize quantifications avec leur verdict mémoire, puis échouait sur « HTTP 401 depuis la source » au premier octet. Le message ne disait ni que le dépôt était verrouillé, ni qu'il fallait accepter ses conditions, ni où poser un jeton. - Le refus est maintenant traduit à partir de X-Error-Code (GatedRepo, RepoNotFound, EntryNotFound…) et nomme le dépôt, l'action à faire et l'état du jeton : absent (il en faut un) ou présent mais sans accès. 404, 416, 429 et les pannes de la source y gagnent aussi une phrase utile. - Le verrou se voit AVANT de choisir une quantification : la recherche demande `expand[]=gated` et la fiche du dépôt est lue à l'ouverture, d'où une pastille « accès restreint » dans la liste et un avertissement en toutes lettres au-dessus des fichiers. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hz1QWmvZqW3t53YC5SJBKC
This commit is contained in:
9 files changed
+362
-6
No files matched your search
@@ -26,7 +26,7 @@ func handleHFSearch(w http.ResponseWriter, r *http.Request) {
|
||||
sendJSON(w, 502, map[string]any{"ok": false, "error": err.Error()})
|
||||
return
|
||||
}
|
||||
sendJSON(w, 200, map[string]any{"ok": true, "hardware": detectHardware(), "repos": repos})
|
||||
sendJSON(w, 200, map[string]any{"ok": true, "hardware": detectHardware(), "repos": repos, "hf_token": hfTokenSet()})
|
||||
}
|
||||
|
||||
// handleHFFiles liste les .gguf d'un dépôt, chaque modèle portant son verdict
|
||||
@@ -67,10 +67,16 @@ func handleHFFiles(w http.ResponseWriter, r *http.Request) {
|
||||
// mmproj dans CE dépôt, pas un tag Hugging Face — lequel manque sur des
|
||||
// dépôts qui en publient pourtant un.
|
||||
// Un projecteur ne reçoit pas de verdict : il ne se charge jamais seul.
|
||||
// `gated` et `hf_token` servent le même but que `vision` : dire AVANT le
|
||||
// téléchargement ce qui va se passer. Un dépôt verrouillé se lit sans jeton
|
||||
// mais ne se télécharge pas — l'avertir ici évite de choisir un quant, de
|
||||
// lancer 15 Go et de récolter un 401.
|
||||
sendJSON(w, 200, map[string]any{
|
||||
"ok": true, "hardware": hw, "ctx": ctxTokens,
|
||||
"repo": list.Repo, "models": list.Models,
|
||||
"projectors": list.Projectors, "drafts": list.Drafts,
|
||||
"vision": len(list.Projectors) > 0,
|
||||
"vision": len(list.Projectors) > 0,
|
||||
"gated": list.Gated,
|
||||
"hf_token": hfTokenSet(),
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user