SuperAPI AI 工具集

vhs

编程与开发

查看项目

更新于 10-23 16:19

技能介绍

VHS 是一个终端录制工具,通过声明式的 .tape 文件控制录制过程,无需屏幕录制即可生成 GIF、MP4 或 WebM 格式的终端演示。录制结果具有确定性和可重现性,适合将录制文件纳入 Git 仓库,并在需要时重新生成。

安装

macOS/Linux 可使用 brew install vhs,Windows 可使用 scoop install vhs。视频编码依赖 ffmpeg,如未安装需执行 brew install ffmpeg 或 scoop install ffmpeg。

快速开始

  • vhs new demo.tape:生成示例 tape 文件
  • vhs demo.tape:渲染并生成输出文件
  • vhs validate demo.tape:仅解析检查,不渲染
  • vhs record > demo.tape:捕获实时按键输入到 tape 文件,之后可编辑
  • vhs publish demo.gif:托管到 vhs.charm.sh 并返回分享链接

Tape 文件语法

Tape 文件从上到下读取。所有 Output 和 Set 行必须放在任何 Type/Enter/Sleep 命令之前,因为设置作用于整个录制,不会追溯生效。

输出格式

Output demo.gif(GIF,适合 README 内联自动播放)、Output demo.mp4、Output demo.webm。多行 Output 可同时生成多种格式。

常用设置

可设置 Shell、FontSize、FontFamily、Width、Height、Padding、Margin、MarginFill、TypingSpeed、Theme、Framerate、PlaybackSpeed、LoopOffset、CursorBlink、WindowBar、WindowBarSize、BorderRadius 等。vhs themes 可列出所有主题。

命令

  • Type "echo hello":输入字符,Type@100ms 可自定义每键速度
  • Enter 或 Enter 3:按回车(可重复次数)
  • Sleep 2s / Sleep 500ms:等待;命令后必须加 Sleep
  • 特殊键:Backspace、Tab、Ctrl+C、Ctrl+L、方向键、Escape、Space、PageUp/PageDown,均支持可选重复次数
  • Hide / Show:隐藏/显示命令执行过程
  • Require git:若工具不在 PATH 中则中止录制

Windows 注意事项

Windows 上默认 bash 会解析为 WSL bash,无法访问 Windows 安装的工具,需设置 Set Shell "cmd" 以使用完整 Windows PATH。macOS/Linux 无需此设置。

推荐默认配置

适合 README 演示的起始配置(macOS/Linux;Windows 需加 Set Shell "cmd"):

Output demo.gif
Set FontSize 14
Set Width 1100
Set Height 600
Set Theme "Dracula"
Set TypingSpeed 30ms
Set Padding 15
Set CursorBlink false
Set WindowBar "Colorful"
Set BorderRadius 8

常见模式

  • 简单命令展示:Type + Enter + Sleep
  • 复杂命令:将带引号、管道或多行参数的命令放入包装脚本,再 Type "bash script.sh"
  • 隐藏准备步骤,只展示关键部分
  • 前后对比:依次执行 cat、修改、再 cat
  • 实时录制后清理:vhs record > my-session.tape 捕获按键,再编辑时序并重新渲染

录制 TUI 应用

普通 VHS 无法驱动需要真实 PTY 的应用(颜色/布局会异常)或启动较慢的应用。可使用 holdpty 持有 PTY,VHS 附加到其上:

holdpty launch --bg --name demo -- my-tui-app
sleep 5
vhs record-demo.tape
holdpty stop demo

在 tape 中通过 Type "holdpty attach demo" 附加。适用于 htop、k9s、lazygit 等 TUI、慢启动服务器/代理、实时 bug 复现及 AI 代理彩色 TUI 录制。Windows 上启动 node CLI 需使用 node.exe <path/to/cli.js>。

常见错误与修正

  • 输出截断/命令“无反应”:每个 Enter 后加 Sleep
  • Set/Output 放在 Type 之后:将所有设置移到顶部
  • Type 中的引号/管道异常:改用包装脚本
  • Windows CLI “找不到”:设置 Set Shell "cmd"
  • GIF 文件过大:降低宽高/帧率、提高 PlaybackSpeed、精简 Sleep,或输出 MP4/WebM
  • 光标闪烁增加噪点/帧数:设置 Set CursorBlink false

适用场景与限制

VHS 适合创建 README 演示 GIF、CLI 演示录屏、展示命令输出、文档化终端操作等。限制包括:需要 ffmpeg 编码;复杂 shell 命令需包装脚本;TUI 应用需配合 holdpty;Windows 需特殊 Shell 设置;GIF 文件可能较大,可通过参数优化或改用视频格式。