Hugging Face CLI 与 Codex Agent 使用备忘
本地管理 Hugging Face Hub 上的模型、数据集和 Space 时,hf CLI 比在 Python 代码里临时写下载、上传逻辑更直接,包括两类用法:
- 手动在终端里使用
hf-cli进行认证、下载、上传等操作 - 给 Codex 安装 Hugging Face CLI Skill,让 Agent 能按当前机器上的
hf版本调用命令
1. 安装
1.1 独立安装
Hugging Face 官方现在提供独立安装脚本,安装后会得到 hf 命令。
Windows PowerShell:
|
|
Linux/macOS:
|
|
或者直接在 Python 环境中使用,无需安装:
|
|
临时执行一次命令时,可以用 uvx,不用把工具长期安装到当前环境:
|
|
2. 认证
下载公开模型通常不需要登录。访问 gated model、私有仓库、上传文件时,需要登录 Hugging Face 账号。
|
|
在 CI 或服务器上使用时,也可以把 token 放到环境变量里,再让 hf 读取:
|
|
--add-to-git-credential 会把 token 写入 Git credential store,后续用 git lfs 访问 Hugging Face 仓库会更顺手。共享机器上需要注意凭据清理。
3. 下载模型和数据集
3.1 下载完整仓库
|
|
hf download 默认使用 Hugging Face Hub 缓存。指定 --local-dir 后,文件会落到当前项目目录,适合部署脚本或离线机器复用。
3.2 只下载部分文件
|
|
只需要检查模型结构时,先拉 config.json、tokenizer.json、generation_config.json 就够了;真正部署再拉权重文件。
3.3 下载数据集或 Space
模型仓库可以省略 --repo-type,数据集和 Space 需要显式指定:
|
|
4. 上传和仓库管理
4.1 创建仓库
|
|
--exist-ok 适合写进脚本,仓库已存在时不会直接失败。
4.2 上传文件
|
|
大目录、大量文件或经常断点续传的场景,使用 upload-large-folder:
|
|
4.3 上传无法直连
国内网络环境下,下载可以通过镜像站解决,但上传需要写入 Hugging Face Hub 官方仓库。代理能解决连通性问题,但大模型上传会消耗大量代理流量,所以更推荐的做法是:
- 小文件用代理验证账号、仓库权限和命令参数
- 大文件放到海外服务器、GitHub Actions、Colab 或其它能稳定访问 Hugging Face 的环境上传
不要把 HF_ENDPOINT 指到只支持下载的镜像站后再上传,这类镜像通常不负责写入官方 Hub。
先用小文件验证认证和网络,再上传大文件:
Windows PowerShell:
|
|
Linux/macOS:
|
|
网络不稳定时,大目录不要反复用普通 hf upload 从头提交,直接使用可恢复的大目录上传,并适当降低并发。这个方案适合远端机器,不建议在本地长期挂代理跑大文件上传:
|
|
推荐的远端上传流程是:
|
|
这样仍然会消耗本地到远端机器的上传带宽,但不会消耗代理订阅流量;真正到 Hugging Face 的大流量发生在远端机器和 Hugging Face 之间。
5. Codex + Skill 模式
Hugging Face 提供了面向 Agent 的 hf skills 命令。它会根据本机当前安装的 hf CLI 版本生成 Skill,让 Codex 这类 Agent 知道应该如何调用 hf。
5.1 全局安装
|
|
全局安装适合日常开发机,后续在不同项目里打开 Codex 都能使用。
5.2 项目内安装
|
|
项目内安装适合团队仓库或可复现实验环境。Skill 跟着项目走,别人 clone 仓库后能看到相同的 Agent 使用说明。
5.3 更新 Skill
hf CLI 升级后,重新生成 Skill,避免 Agent 继续使用旧命令说明。
|
|
5.4 在 Codex 中使用
安装完成后,进入需要操作的目录启动 Codex:
|
|
可以直接给 Codex 下达和 Hugging Face 相关的任务,例如:
|
|
或:
|
|
Agent 执行上传、删除、创建仓库这类会改远端状态的操作前,需要先确认目标仓库名、repo-type 和 token 权限。
6. 常见命令
| 命令 | 说明 |
|---|---|
hf auth login |
登录 Hugging Face 账号 |
hf auth whoami |
查看当前登录身份 |
hf download <repo_id> |
下载模型仓库 |
hf download <repo_id> --repo-type dataset |
下载数据集仓库 |
hf upload <repo_id> <local_path> <path_in_repo> |
上传文件或目录 |
hf upload-large-folder <repo_id> <folder_path> |
上传大目录 |
HTTPS_PROXY=http://127.0.0.1:7890 hf upload ... |
通过代理上传 |
hf repos create <repo_id> |
创建仓库 |
hf cache ls |
查看本地 Hub 缓存 |
hf cache prune |
清理未引用的缓存 |
hf skills add --global |
给 Codex 等 Agent 安装全局 Skill |
hf skills upgrade --global |
升级全局 Skill |
7. 其它补充
- 国内网络环境下,直连 Hugging Face 可能较慢。只做模型下载时,可以继续使用已有的
hf-mirror或hfd.sh方案。 hf upload会真实提交到远端仓库。脚本里先用小文件测试,再上传大模型权重。- gated model 需要先在网页端申请访问权限,即使本地已经
hf auth login,没有权限也会下载失败。 - 私有仓库和组织仓库上传失败时,优先检查 token 的
write权限、组织权限、repo-type是否写对。