视觉与图片粘贴
Hermes Agent 支持 多模态视觉。你可以把剪贴板中的图片直接粘贴到 CLI 中,让智能体分析、描述或处理图像。图片会以 base64 编码内容块的形式发送给模型,因此任何支持视觉的模型都可以处理它。
工作方式
- 先将图片复制到剪贴板(截图、浏览器图片等)
- 使用下方任一方法附加图片
- 输入你的问题并按 Enter
- 图片会以
[📎 Image #1]徽标显示在输入框上方 - 提交后,图片会作为视觉内容块发送给模型
你可以在发送前附加多张图片;每张都会有独立徽标。按 Ctrl+C 可清空当前附加的全部图片。
图片会以 PNG 格式保存到 ~/.hermes/images/,文件名带时间戳。
粘贴方式
具体怎么附加图片,取决于你的终端环境。并非所有方式在所有环境里都可用,下面是完整说明。
/paste 命令
这是最可靠、最明确的图片附加兜底方案。
/paste
输入 /paste 并回车后,Hermes 会检查你的剪贴板里是否有图片,并将其附加上去。当终端会拦截 Cmd+V / Ctrl+V,或者你复制的是纯图片而没有可检查的 bracketed-paste 文本载荷时,这是最稳妥的方式。
Ctrl+V / Cmd+V
Hermes 现在把粘贴过程视为一个分层流程:
- 先处理普通文本粘贴
- 如果终端没有正确发送文本,再尝试本地剪贴板 / OSC52 文本兜底
- 如果剪贴板或粘贴内容最终被识别为图片或图片路径,则自动附加图片
这意味着像 macOS 截图临时路径或 file://... 图片 URI 这样的内容,会被直接当作图片附加,而不是原样留在输入框里。
如果你的剪贴板里 只有图片(没有文本),终端依然无法直接发送二进制图片数据。这种情况下请使用 /paste 作为显式图片附加方式。
VS Code / Cursor / Windsurf 中的 /terminal-setup
如果你在 macOS 的 VS Code 系集成本地终端里运行 TUI,Hermes 可以为你安装推荐的 workbench.action.terminal.sendSequence 快捷键绑定,以改善多行输入和撤销/重做体验:
/terminal-setup
当 Cmd+Enter、Cmd+Z 或 Shift+Cmd+Z 被 IDE 截获时,这个命令尤其有用。它只应在本地机器上运行,不应该在 SSH 会话里执行。
平台兼容性
| 环境 | /paste | Cmd/Ctrl+V | /terminal-setup | 说明 |
|---|---|---|---|---|
| macOS Terminal / iTerm2 | ✅ | ✅ | n/a | 体验最佳,支持本地剪贴板和截图路径恢复 |
| Apple Terminal | ✅ | ✅ | n/a | 如果 Cmd+←/→/⌫ 被改写,可使用 Ctrl+A / Ctrl+E / Ctrl+U 作为替代 |
| Linux X11 desktop | ✅ | ✅ | n/a | 需要 xclip(apt install xclip) |
| Linux Wayland desktop | ✅ | ✅ | n/a | 需要 wl-paste(apt install wl-clipboard) |
| WSL2 (Windows Terminal) | ✅ | ✅ | n/a | 使用 powershell.exe,无需额外安装 |
| VS Code / Cursor / Windsurf (local) | ✅ | ✅ | ✅ | 建议启用以改进 Cmd+Enter / undo / redo 体验 |
| VS Code / Cursor / Windsurf (SSH) | ❌² | ❌² | ❌³ | 应在本地机器而不是远端执行 /terminal-setup |
| SSH terminal (any) | ❌² | ❌² | n/a | 无法访问远端主机之外的本地剪贴板 |
² 见下方 SSH & Remote Sessions ³ 该命令会写入本地 IDE 快捷键设置,不应在远端主机执行
平台专用设置
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" = no display server
WSL2
无需额外设置。 Hermes 会自动检测 WSL2(通过 /proc/version),并使用 powershell.exe 借助 .NET 的 System.Windows.Forms.Clipboard 访问 Windows 剪贴板。这是 WSL2 自带的 Windows 互操作能力。
剪贴板数据会以 base64 编码 PNG 的形式通过 stdout 传输,因此不需要文件路径转换或临时文件。
如果你使用的是 WSLg(带 GUI 的 WSL2),Hermes 会先尝试 PowerShell 路径,再回退到 wl-paste。WSLg 的剪贴板桥接对图片只支持 BMP 格式;如果安装了 Pillow 或 ImageMagick 的 convert,Hermes 会自动把 BMP 转成 PNG。
验证 WSL2 剪贴板访问
# 1. Check WSL detection
grep -i microsoft /proc/version
# 2. Check PowerShell is accessible
which powershell.exe
# 3. Copy an image, then check
powershell.exe -NoProfile -Command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Clipboard]::ContainsImage()"
# Should print "True"
SSH 与远程会话
通过 SSH 无法完整支持剪贴板图片粘贴。 当你 SSH 到远程机器时,Hermes CLI 实际运行在远端主机上。此时 xclip、wl-paste、powershell.exe、osascript 等工具只能读取它们所在机器的剪贴板,也就是远程服务器,而不是你本地电脑的剪贴板。因此本地剪贴板中的图片对远端 Hermes 不可见。
文本有时仍可能通过终端粘贴或 OSC52 桥接,但图片剪贴板访问与本地截图路径仍然绑定在 Hermes 所运行的那台机器上。
SSH 下的替代方案
- 上传图片文件 — 先将图片保存到本地,再通过
scp、VS Code 文件浏览器拖拽等方式上传到远程机器,然后按路径引用它。(未来版本计划提供/attach <filepath>命令。) - 使用 URL — 如果图片可在线访问,直接把 URL 发给智能体即可。智能体可以使用
vision_analyze分析任意图片 URL。 - 使用 X11 转发 — 用
ssh -X连接,把 X11 转发到远程主机。这样远端xclip就能访问你的本地 X11 剪贴板。需要本地运行 X 服务器(macOS 上是 XQuartz,Linux X11 桌面通常已内置)。对大图较慢。 - 使用消息平台 — 通过 Telegram、Discord、Slack 或 WhatsApp 向 Hermes 发送图片。这些平台原生支持图片上传,不受终端和剪贴板限制。
为什么终端不能直接粘贴图片
这通常是最让人困惑的地方,原因如下:
终端本质上是 基于文本 的接口。当你按下 Ctrl+V(或 Cmd+V)时,终端模拟器会:
- 从剪贴板读取 文本内容
- 用 bracketed paste 转义序列包裹它
- 通过终端文本流发送给应用程序
如果剪贴板里只有图片而没有文本,终端就没有东西可发送。目前并不存在通用的终端转义协议能直接传输二进制图片数据,因此终端看起来就像“什么都没发生”。
这也是为什么 Hermes 会额外主动读取系统剪贴板,而不是指望终端粘贴事件带来图片数据。它会通过 osascript、powershell.exe、xclip、wl-paste 这类操作系统级工具,以子进程方式独立读取剪贴板。
支持的模型
图片粘贴可与任何支持视觉的模型配合使用。图片会按 OpenAI 视觉内容格式,以 base64 data URL 的形式发送:
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,..."
}
}
大多数现代模型都支持这一格式,包括 GPT-4 Vision、具备视觉能力的 Claude、Gemini,以及通过 OpenRouter 提供的开源多模态模型。