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Нажать EnterEnter
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"Оболочка для использования (bash, zsh, fish, sh)
FontSize14Размер шрифта в пикселях
Width800Ширина терминала в пикселях
Height600Высота терминала в пикселях
Padding0Отступ вокруг терминала
Theme"default"Color theme (see theme gallery)
TypingSpeed50msЗадержка между нажатиями клавиш
Framerate50Кадров в секунду для GIF
PlaybackSpeed1Множитель скорости воспроизведения
CursorBlinktrueПоказывать мигающий курсор
LetterSpacing0Дополнительный межбуквенный интервал
LineHeight1.0Множитель межстрочного интервала

Темы

VHS поставляется с 44 встроенными темами. Популярные варианты для документации разработчиков:

ТемаСтиль
Catppuccin MochaТёплый тёмный (пастельные акценты)
DraculaТёмно-фиолетовый
Tokyo NightТёмный с синим оттенком
NordАрктический синий
One DarkТёмный в стиле Atom
Solarized DarkКлассический тёмный с тёплыми тонами
MonokaiВ стиле Sublime Text

Просматривайте все темы с живыми предпросмотрами: Галерея тем.

5. Записать GIF

vhs demo.tape

VHS открывает безголовый браузер, воспроизводит tape и сохраняет GIF. Типичная запись занимает 10-30 секунд.

Предпросмотр перед загрузкой:

# macOS
open demo.gif

# Linux
xdg-open demo.gif

6. Оптимизировать размер файла

AgentGIF принимает GIF до 10 МБ, но файлы меньшего размера загружаются быстрее. Советы по уменьшению размера GIF:

ТехникаЭффект
Уменьшить размеры (Width 800)Значительный — уменьшение ширины вдвое сокращает размер файла в 4 раза
Снизить частоту кадров (Framerate 30)Умеренный — уменьшает количество кадров на 40%
Более короткая записьЗначительный — стремитесь к 5-15 секундам
Используйте PlaybackSpeed 1.5Умеренный — меньше общее количество кадров
Отключить мигание курсора (CursorBlink false)Небольшой — меньше уникальных кадров
Сплошной фон (избегайте прозрачности)Небольшой — лучшее сжатие GIF

Для наилучшего баланса качества и размера рекомендуемые настройки выше создают GIF около 100-300 КБ для 10-секундной записи.

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-файла активирует уровень для ИИ-агентов:

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

8. Продвинутые функции tape

Hide/Show для настройки

Используйте 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.