GitHub CLI(gh)是 GitHub 官方出品的命令行工具,让你不用打开浏览器就能完成绝大多数 GitHub 操作——创建仓库、提交 PR、管理 Issue、查看 CI 运行结果等,全部在终端搞定。它的核心价值在于:用 gh auth login 一次浏览器授权替代了以前繁琐的 SSH 密钥配置,同时把 GitHub 的工作流无缝嵌入到你的终端开发流程中。对于需要向开源项目提交代码、管理多个仓库、或者在服务器上自动化 GitHub 操作的开发者来说,gh 是一个值得上手的效率工具。
gh 指令:
bash展开代码gh auth status # 查看当前登录状态
gh repo list --limit 20 # 列出自己的仓库
gh pr create \
--repo modelscope/ms-swift \ # 目标上游仓库
--head xxddccaa:feat/xxx \ # 来源:fork用户:分支名
--base main \ # 目标分支
--title 'PR标题' \
--body '正文内容' # 创建 PR
下面是我整理的 gh 常用场景速查:
Ubuntu / Debian
bash展开代码sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \
| sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] \
https://cli.github.com/packages stable main" \
| sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt update && sudo apt install gh
CentOS / RHEL / Fedora
bash展开代码sudo dnf install 'dnf-command(config-manager)'
sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh
macOS
bash展开代码brew install gh
验证安装
bash展开代码gh --version
方式一:浏览器授权(推荐,最简单)
bash展开代码gh auth login
按提示选择:
GitHub.com(公有云)或 GitHub Enterprise(私有部署)HTTPSYes浏览器会打开 GitHub 授权页,点击授权后自动完成,终端会显示 Logged in。
方式二:用 Token 登录(服务器无浏览器场景)
先去 GitHub 网页手动生成 Token:
Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token
勾选权限:repo、workflow、read:org(按需)
然后在终端:
bash展开代码gh auth login
# 选择 HTTPS,最后选 "Paste an authentication token"
# 粘贴刚才生成的 token
或者直接用环境变量(CI 场景常用):
bash展开代码export GH_TOKEN=your_token_here
gh auth status # 验证是否生效
验证登录状态
bash展开代码gh auth status
输出示例:
展开代码github.com ✓ Logged in to github.com as xxddccaa ✓ Git operations for github.com configured to use https protocol. ✓ Token: *******************
本文说明在 LLaMA-Factory 中,使用 qwen3_omni_nothink 模板训练 Qwen3-Omni-30B-A3B-Instruct 时,视频与音频如何被编码成 token,以及如何从日志中的 grid_thw、时长等反推和验算 token 数量。
基于 Qwen3-Omni-30B-A3B-Instruct 模型,ms-swift 4.1.0.dev0 训练框架分析。
Qwen3-Omni 处理视频+音频输入时,token 序列的整体结构为:
展开代码<|im_start|>user <|vision_start|><|audio_start|> [视频token与音频token交叉排列] <|audio_end|><|vision_end|> 用户的文本 prompt... <|im_end|> <|im_start|>assistant 模型回复... <|im_end|>
本文以一个真实的视频剪辑教学样本为例,深入拆解 Qwen3-Omni 模型在 ms-swift 训练和 vLLM 推理中,视频帧采样、图像 resize、视频 token、音频 token 的完整计算过程,并对比两者的差异。
本文基于 OpenCode 源码分析,带你深入理解这个 AI 编程助手从接收用户输入到返回结果的完整链路。
OpenCode 采用客户端-服务端分离架构,即使在 CLI 模式下也是如此。TUI(终端 UI)运行在主线程,Server 运行在 Worker 线程,二者通过 HTTP + SSE 通信:
针对 Qwen3-Omni-30B-A3B-Instruct 模型,60K tokens 长上下文 Megatron SFT 训练场景。 基于 ms-swift 源码分析,所有参数引用均标注源码位置。
针对于我修改后的代码,可以这么统计每个样本的实际 token 长度:
bash展开代码IMAGE_MAX_TOKEN_NUM=5000 USE_AUDIO_IN_VIDEO=true VIDEO_MAX_PIXELS=307200 \
python scripts/count_token_lengths.py \
--model /mnt/cpfs/model/Qwen3-Omni-30B-A3B-Instruct \
--dataset /mnt/cpfs/datasets/ShortsTemplateEdits/anno_jianying_mp4_seed18_train.jsonl \
--num_samples 200 \
--dataset_num_proc 16
... --num_samples 500
... --num_samples 0
... --output_csv /tmp/lengths.csv