視覺與圖像粘貼
Hermes Agent 支持 多模態視覺 — 你可以直接將剪貼板中的圖像粘貼到 CLI 中,並讓 Agent 對其進行分析、描述或處理。圖像以 base64 編碼的內容塊形式發送給模型,因此任何具備視覺能力的模型都可以處理它們。
工作原理
- 將圖像複製到剪貼板(截圖、瀏覽器圖片等)
- 使用以下方法之一附加圖像
- 輸入你的問題並按 Enter 鍵
- 圖像會以
[📎 圖像 #1]的徽章形式顯示在輸入框上方 - 提交時,圖像作為視覺內容塊發送給模型
你可以在發送前附加多個圖像 —— 每個圖像都會獲得自己的徽章。按 Ctrl+C 可清除所有附加的圖像。
圖像會被保存到 ~/.hermes/images/ 目錄下,以時間戳命名的 PNG 文件格式保存。
粘貼方法
如何附加圖像取決於你的終端環境。並非所有方法在所有地方都有效 —— 以下是完整說明:
/paste 命令
最可靠的方法,適用於所有環境。
/paste
輸入 /paste 並按 Enter。Hermes 會檢查你的剪貼板中是否有圖像並自動附加。此方法在所有環境中都有效,因為它顯式調用了剪貼板後端 —— 無需擔心終端快捷鍵攔截。
Ctrl+V / Cmd+V(帶括號的粘貼)
當你粘貼剪貼板中的文本時,如果其中還包含圖像,Hermes 會自動檢測圖像。此方法在以下情況下有效:
- 剪貼板中同時包含 文本和圖像(某些應用程序在複製時會同時放入文本和圖像)
- 你的終端支持帶括號的粘貼(大多數現代終端都支持)
如果你的剪貼板中僅包含圖像(沒有文本),在大多數終端中 Ctrl+V 不會生效。終端只能粘貼文本 —— 目前沒有標準機制可以粘貼二進制圖像數據。請使用 /paste 或 Alt+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 桌面終端。
平臺兼容性
| 環境 | /paste | Ctrl+V(文本+圖像) | Alt+V | 說明 |
|---|---|---|---|---|
| macOS Terminal / iTerm2 | ✅ | ✅ | ✅ | 最佳體驗 —— osascript 始終可用 |
| Linux X11 桌面 | ✅ | ✅ | ✅ | 需要 xclip(apt install xclip) |
| Linux Wayland 桌面 | ✅ | ✅ | ✅ | 需要 wl-paste(apt 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
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(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 在遠程主機上運行。所有剪貼板工具(xclip、wl-paste、powershell.exe、osascript)讀取的是它們所在機器的剪貼板 —— 即遠程服務器,而非你的本地機器。你的本地剪貼板無法從遠程端訪問。
SSH 的替代方案
-
上傳圖像文件 — 將圖像文件本地保存,通過
scp、VSCode 文件資源管理器(拖放)或任何文件傳輸方式上傳至遠程服務器。然後通過路徑引用該圖像。(未來版本計劃支持/attach <filepath>命令。) -
使用 URL — 如果圖像在線可訪問,只需將 URL 粘貼到消息中。Agent 可直接使用
vision_analyze查看任意圖像 URL。 -
X11 轉發 — 使用
ssh -X連接以轉發 X11。這使得遠程機器上的xclip能夠訪問本地 X11 剪貼板。需要本地運行 X 服務器(macOS 上為 XQuartz,Linux X11 桌面環境內置)。對於大圖像,速度較慢。 -
使用消息平臺 — 通過 Telegram、Discord、Slack 或 WhatsApp 向 Hermes 發送圖像。這些平臺原生支持圖像上傳,不受剪貼板/終端限制的影響。
為什麼終端無法粘貼圖像
這是常見的困惑來源,以下是技術解釋:
終端是基於文本的接口。當你按下 Ctrl+V(或 Cmd+V)時,終端模擬器會:
- 從剪貼板讀取文本內容
- 將其包裹在 帶括號的粘貼 轉義序列中
- 通過終端的文本流發送給應用程序
如果剪貼板中僅包含圖像(無文本),終端將無內容可發送。目前沒有標準的終端轉義序列用於二進制圖像數據。因此終端什麼也不做。
這就是為什麼 Hermes 使用獨立的剪貼板檢查機制——它不通過終端粘貼事件接收圖像數據,而是通過子進程直接調用操作系統級別的工具(osascript、powershell.exe、xclip、wl-paste)來獨立讀取剪貼板。
支持的模型
圖像粘貼功能適用於任何具備視覺能力的模型。圖像將以 OpenAI 視覺內容格式的 base64 編碼數據 URL 形式發送:
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,..."
}
}
大多數現代模型均支持此格式,包括 GPT-4 Vision、Claude(具備視覺功能)、Gemini,以及通過 OpenRouter 提供的開源多模態模型。