跳到主要內容

視覺與圖像粘貼

Hermes Agent 支持 多模態視覺 — 你可以直接將剪貼板中的圖像粘貼到 CLI 中,並讓 Agent 對其進行分析、描述或處理。圖像以 base64 編碼的內容塊形式發送給模型,因此任何具備視覺能力的模型都可以處理它們。

工作原理

  1. 將圖像複製到剪貼板(截圖、瀏覽器圖片等)
  2. 使用以下方法之一附加圖像
  3. 輸入你的問題並按 Enter 鍵
  4. 圖像會以 [📎 圖像 #1] 的徽章形式顯示在輸入框上方
  5. 提交時,圖像作為視覺內容塊發送給模型

你可以在發送前附加多個圖像 —— 每個圖像都會獲得自己的徽章。按 Ctrl+C 可清除所有附加的圖像。

圖像會被保存到 ~/.hermes/images/ 目錄下,以時間戳命名的 PNG 文件格式保存。

粘貼方法

如何附加圖像取決於你的終端環境。並非所有方法在所有地方都有效 —— 以下是完整說明:

/paste 命令

最可靠的方法,適用於所有環境。

/paste

輸入 /paste 並按 Enter。Hermes 會檢查你的剪貼板中是否有圖像並自動附加。此方法在所有環境中都有效,因為它顯式調用了剪貼板後端 —— 無需擔心終端快捷鍵攔截。

Ctrl+V / Cmd+V(帶括號的粘貼)

當你粘貼剪貼板中的文本時,如果其中還包含圖像,Hermes 會自動檢測圖像。此方法在以下情況下有效:

  • 剪貼板中同時包含 文本和圖像(某些應用程序在複製時會同時放入文本和圖像)
  • 你的終端支持帶括號的粘貼(大多數現代終端都支持)
注意

如果你的剪貼板中僅包含圖像(沒有文本),在大多數終端中 Ctrl+V 不會生效。終端只能粘貼文本 —— 目前沒有標準機制可以粘貼二進制圖像數據。請使用 /pasteAlt+V

Alt+V

Alt 鍵組合通常能繞過大多數終端模擬器(它們以 ESC + 鍵的形式發送,而非被攔截)。按 Alt+V 可檢查剪貼板中是否有圖像。

警告

在 VSCode 內置終端中無法使用。 VSCode 會攔截許多 Alt+鍵組合用於其自身 UI。請改用 /paste

Ctrl+V(原始模式 — 僅限 Linux)

在 Linux 桌面終端(GNOME Terminal、Konsole、Alacritty 等)中,Ctrl+V 並非粘貼快捷鍵 —— 實際是 Ctrl+Shift+V。因此 Ctrl+V 會嚮應用程序發送原始字節,Hermes 會捕獲該字節以檢查剪貼板。此方法僅適用於支持 X11 或 Wayland 剪貼板訪問的 Linux 桌面終端。

平臺兼容性

環境/pasteCtrl+V(文本+圖像)Alt+V說明
macOS Terminal / iTerm2最佳體驗 —— osascript 始終可用
Linux X11 桌面需要 xclipapt install xclip
Linux Wayland 桌面需要 wl-pasteapt install wl-clipboard
WSL2(Windows Terminal)✅¹使用 powershell.exe —— 無需額外安裝
VSCode 終端(本地)✅¹VSCode 攔截 Alt+鍵
VSCode 終端(SSH)❌²❌²遠程剪貼板不可訪問
SSH 終端(任意)❌²❌²❌²遠程剪貼板不可訪問

¹ 僅當剪貼板中同時包含文本和圖像時有效(僅圖像剪貼板 = 無操作) ² 詳見下方 SSH 與遠程會話

平臺特定設置

macOS

無需設置。 Hermes 使用 macOS 內置的 osascript 讀取剪貼板。為獲得更快性能,可選擇性安裝 pngpaste

brew install pngpaste

Linux(X11)

安裝 xclip

# Ubuntu/Debian
sudo apt install xclip

# Fedora
sudo dnf install xclip

# Arch
sudo pacman -S xclip

Linux(Wayland)

現代 Linux 桌面系統(Ubuntu 22.04+、Fedora 34+)通常默認使用 Wayland。安裝 wl-clipboard

# Ubuntu/Debian
sudo apt install wl-clipboard

# Fedora
sudo dnf install wl-clipboard

# Arch
sudo pacman -S wl-clipboard
如何檢查你是否在 Wayland 環境下
echo $XDG_SESSION_TYPE
# "wayland" = Wayland,"x11" = X11,"tty" = 無顯示服務器

WSL2

無需額外設置。 Hermes 會自動檢測 WSL2(通過 /proc/version),並使用 powershell.exe 通過 .NET 的 System.Windows.Forms.Clipboard 訪問 Windows 剪貼板。這是 WSL2 的 Windows 互操作功能內置的 —— powershell.exe 默認可用。

剪貼板數據通過 stdout 以 base64 編碼的 PNG 格式傳輸,因此無需文件路徑轉換或臨時文件。

WSLg 說明

如果你正在運行 WSLg(WSL2 帶 GUI 支持),Hermes 會優先嚐試 PowerShell 路徑,然後回退到 wl-paste。WSLg 的剪貼板橋僅支持 BMP 格式的圖像 —— Hermes 會自動使用 Pillow(如果已安裝)或 ImageMagick 的 convert 命令將 BMP 轉換為 PNG。

驗證 WSL2 剪貼板訪問

# 1.檢查WSL檢測
grep -i microsoft /proc/version

# 2.檢查PowerShell是否可訪問
which powershell.exe

# 3. 複製圖像,然後檢查
powershell.exe -NoProfile -Command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Clipboard]::ContainsImage()"
# 應該打印“0”

SSH 與遠程會話

SSH 連接中無法使用剪貼板粘貼功能。 當你通過 SSH 登錄遠程機器時,Hermes CLI 在遠程主機上運行。所有剪貼板工具(xclipwl-pastepowershell.exeosascript)讀取的是它們所在機器的剪貼板 —— 即遠程服務器,而非你的本地機器。你的本地剪貼板無法從遠程端訪問。

SSH 的替代方案

  1. 上傳圖像文件 — 將圖像文件本地保存,通過 scp、VSCode 文件資源管理器(拖放)或任何文件傳輸方式上傳至遠程服務器。然後通過路徑引用該圖像。(未來版本計劃支持 /attach <filepath> 命令。)

  2. 使用 URL — 如果圖像在線可訪問,只需將 URL 粘貼到消息中。Agent 可直接使用 vision_analyze 查看任意圖像 URL。

  3. X11 轉發 — 使用 ssh -X 連接以轉發 X11。這使得遠程機器上的 xclip 能夠訪問本地 X11 剪貼板。需要本地運行 X 服務器(macOS 上為 XQuartz,Linux X11 桌面環境內置)。對於大圖像,速度較慢。

  4. 使用消息平臺 — 通過 Telegram、Discord、Slack 或 WhatsApp 向 Hermes 發送圖像。這些平臺原生支持圖像上傳,不受剪貼板/終端限制的影響。

為什麼終端無法粘貼圖像

這是常見的困惑來源,以下是技術解釋:

終端是基於文本的接口。當你按下 Ctrl+V(或 Cmd+V)時,終端模擬器會:

  1. 從剪貼板讀取文本內容
  2. 將其包裹在 帶括號的粘貼 轉義序列中
  3. 通過終端的文本流發送給應用程序

如果剪貼板中僅包含圖像(無文本),終端將無內容可發送。目前沒有標準的終端轉義序列用於二進制圖像數據。因此終端什麼也不做。

這就是為什麼 Hermes 使用獨立的剪貼板檢查機制——它不通過終端粘貼事件接收圖像數據,而是通過子進程直接調用操作系統級別的工具(osascriptpowershell.exexclipwl-paste)來獨立讀取剪貼板。

支持的模型

圖像粘貼功能適用於任何具備視覺能力的模型。圖像將以 OpenAI 視覺內容格式的 base64 編碼數據 URL 形式發送:

{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,..."
}
}

大多數現代模型均支持此格式,包括 GPT-4 Vision、Claude(具備視覺功能)、Gemini,以及通過 OpenRouter 提供的開源多模態模型。