How to Record a Terminal GIF

Step-by-step guide to recording terminal sessions as GIF animations using VHS, asciinema, and AgentGIF CLI.

1. 前提条件

录制终端 GIF 需要以下工具:

VHS 的工作原理是读取描述按键、命令和时序的 .tape 文件——然后在虚拟终端中回放这些操作并将输出捕获为 GIF。

2. 安装 VHS

平台安装命令
macOSbrew install vhs
Ubuntu/Debiansudo mkdir -p /etc/apt/keyrings && curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg && echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list && sudo apt update && sudo apt install vhs
Arch Linuxyay -S vhs
Gogo install github.com/charmbracelet/vhs@latest

验证安装:

vhs --version

3. 创建 Tape 文件

Tape 文件是一个纯文本脚本,告诉 VHS 输入什么、何时等待以及使用什么设置。创建一个名为 demo.tape 的文件:

Output demo.gif
Set Shell "bash"
Set FontSize 16
Set Width 1000
Set Height 580
Set Theme "Catppuccin Mocha"

Type "echo 'Hello, world!'"
Enter
Sleep 2s

Type "ls -la"
Enter
Sleep 3s

核心命令

命令描述示例
Output设置输出文件路径Output "demo.gif"
Type输入文本(模拟按键)Type "git status"
Enter按 Enter 键Enter
Sleep等待一段时间Sleep 2s
Ctrl+C发送键盘快捷键Ctrl+C
Hide停止录制(用于设置)Hide
Show恢复录制Show

4. 配置设置

Set 命令放在 tape 文件顶部,位于所有 Type 命令之前。

AgentGIF 推荐设置

Set Shell "zsh"
Set FontSize 15
Set Width 1000
Set Height 580
Set Padding 20
Set Theme "Catppuccin Mocha"
Set TypingSpeed 50ms
Set CursorBlink false

所有可用设置

设置项默认值描述
Shell"bash"使用的 Shell(bash、zsh、fish、sh)
FontSize14字体大小(像素)
Width800终端宽度(像素)
Height600终端高度(像素)
Padding0终端周围内边距
Theme"default"Color theme (see theme gallery)
TypingSpeed50ms按键间延迟
Framerate50GIF 每秒帧数
PlaybackSpeed1播放速度倍率
CursorBlinktrue显示闪烁光标
LetterSpacing0额外字间距
LineHeight1.0行高倍率

主题

VHS 内置 44 个主题。开发文档的热门选择:

主题样式
Catppuccin Mocha暖色深色(柔和色调点缀)
Dracula深紫色
Tokyo Night蓝调深色
Nord极地蓝
One DarkAtom 风格深色
Solarized Dark经典暖色调深色
MonokaiSublime Text 风格

浏览所有主题的实时预览:主题画廊

5. 录制 GIF

vhs demo.tape

VHS 打开无头浏览器,回放 tape,并保存 GIF。通常录制需要 10-30 秒。

上传前预览:

# macOS
open demo.gif

# Linux
xdg-open demo.gif

6. 优化文件大小

AgentGIF 接受最大 10 MB 的 GIF,但较小的文件加载更快。减小 GIF 大小的技巧:

技术影响
减小尺寸(Width 800显著——宽度减半,文件大小减为四分之一
降低帧率(Framerate 30中等——减少 40% 的帧数
缩短录制时长显著——目标 5-15 秒
使用 PlaybackSpeed 1.5中等——减少总帧数
禁用光标闪烁(CursorBlink false较小——减少唯一帧数
纯色背景(避免透明)较小——更好的 GIF 压缩

为达到质量和大小的最佳平衡,上述推荐设置可为 10 秒录制生成约 100-300 KB 的 GIF。

7. 上传到 AgentGIF

通过 CLI 上传(最快):

agentgif upload demo.gif \
  --title "Git Interactive Rebase" \
  --command "git rebase -i HEAD~3" \
  --tags git,rebase \
  --open

Or upload via the web interface — drag and drop the GIF file.

附带 cast 文件可启用 AI 代理层:

agentgif upload demo.gif --cast demo.cast --title "My Demo"

8. 高级 Tape 功能

隐藏/显示(用于设置)

使用 Hide/Show 运行设置命令而不录制它们:

Hide
Type "cd /tmp/demo-project"
Enter
Type "mkdir -p src"
Enter
Show

# Now recording starts
Type "ls -la"
Enter
Sleep 2s

多种输出格式

VHS 可以同时输出多种格式:

Output demo.gif
Output demo.mp4
Output demo.webm

环境变量

Set Shell "bash"
Type "export PS1='$ '"
Enter
Hide
Sleep 500ms
Show

键盘快捷键

Ctrl+C     # Cancel current command
Ctrl+L     # Clear screen
Ctrl+D     # EOF / exit
Tab        # Tab completion
Up         # Previous command
Escape     # Escape key

9. 替代录制工具

工具输出优点缺点
VHSGIF, MP4, WebM脚本化、可复现、主题需要配置
asciinema.cast实时录制,文件小无 GIF 输出(需要转换)
TerminalizerGIF实时录制,YAML 配置文件较大
PeekGIF, WebMGUI 屏幕录制工具非终端专用

我们推荐使用 VHS 进行脚本化演示(可复现、可版本控制),使用 asciinema + VHS 转换进行实时录制。

See also: asciinema vs AgentGIF comparison.