Dán Tầm nhìn & Hình ảnh
Hermes Agent hỗ trợ tầm nhìn đa phương thức — bạn có thể dán trực tiếp hình ảnh từ CLIpboard vào CLI và yêu cầu nhân viên phân tích, mô tả hoặc làm việc với chúng. Hình ảnh được gửi đến mô hình dưới dạng khối nội dung được mã hóa base64, do đó, bất kỳ mô hình nào có khả năng hiển thị đều có thể xử lý chúng.
Nó hoạt động như thế nào
- Sao chép hình ảnh vào khay nhớ tạm của bạn (ảnh chụp màn hình, hình ảnh trình duyệt, v.v.)
- Đính kèm bằng một trong các phương pháp dưới đây
- Nhập câu hỏi của bạn và nhấn Enter
- Hình ảnh xuất hiện dưới dạng huy hiệu
[📎 Image #1] ` phía trên đầu vào 5. Khi gửi, hình ảnh sẽ được gửi đến mô hình dưới dạng khối nội dung tầm nhìn
Bạn có thể đính kèm nhiều hình ảnh trước khi gửi - mỗi hình ảnh sẽ có huy hiệu riêng. Nhấn
Ctrl+C để xóa tất cả hình ảnh đính kèm.
Hình ảnh được lưu vào
~/.Hermes/images/ ` dưới dạng tệp PNG với tên tệp được gắn dấu thời gian.
Phương pháp dán
Cách bạn đính kèm hình ảnh tùy thuộc vào môi trường terminal của bạn. Không phải tất cả các phương pháp đều hoạt động ở mọi nơi - đây là bảng phân tích đầy đủ:
Lệnh
/paste ``Dự phòng đính kèm hình ảnh rõ ràng đáng tin cậy nhất.
` /paste
` ``Nhập
/paste
và nhấn Enter. Hermes kiểm tra khay nhớ tạm của bạn để tìm hình ảnh và đính kèm nó. Đây là tùy chọn an toàn nhất khi terminal của bạn ghi lại Cmd+V
/
Ctrl+V hoặc khi bạn chỉ sao chép một hình ảnh và không có tải trọng văn bản dán trong ngoặc để kiểm tra.
Ctrl+V / Cmd+V
Bây giờ Hermes coi bột nhão như một dòng chảy phân lớp:
- dán văn bản bình thường trước
- dự phòng văn bản CLIpboard / OSC52 gốc nếu terminal không gửi văn bản rõ ràng
- đính kèm hình ảnh khi bảng tạm hoặc tải trọng được dán phân giải thành hình ảnh hoặc đường dẫn hình ảnh
Điều này có nghĩa là các đường dẫn tạm thời của ảnh chụp màn hình macOS đã dán và URI hình ảnh
file://... có thể đính kèm ngay lập tức thay vì nằm trong trình soạn thảo dưới dạng văn bản thô.
Nếu khay nhớ tạm của bạn chỉ có hình ảnh (không có văn bản), terminal vẫn không thể gửi trực tiếp byte hình ảnh nhị phân. Sử dụng
/paste ` làm dự phòng đính kèm hình ảnh rõ ràng.
/terminal-setup ` cho VS Code/Con trỏ/Lướt ván buồm
Nếu bạn chạy TUI bên trong terminal tích hợp dòng VS Code cục bộ trên macOS, Hermes có thể cài đặt các liên kết
workbench.action.terminal.sendSequence được đề xuất để có tính chẵn lẻ nhiều dòng và hoàn tác/làm lại tốt hơn:
/terminal-setup
`
``Điều này đặc biệt hữu ích khi
`Cmd+Enter
,
`Cmd+Z
` hoặc
`Shift+Cmd+Z
` đang bị IDE chặn. Chỉ chạy nó trên máy cục bộ - không phải trong phiên SSH.
## Khả năng tương thích nền tảng
| Môi trường |
/paste
` | Cmd/Ctrl+V |
/terminal-setup
` | Ghi chú |
|---|:---:|:---:|:---:|---|
| **Thiết bị đầu cuối macOS / iTerm2** | ✅ | ✅ | không có | Trải nghiệm tốt nhất — CLIpboard gốc + khôi phục đường dẫn ảnh chụp màn hình |
| **Thiết bị đầu cuối của Apple** | ✅ | ✅ | không có | Nếu Cmd+←/→/⌫ được viết lại, hãy sử dụng dự phòng Ctrl+A / Ctrl+E / Ctrl+U |
| **Máy tính để bàn Linux X11** | ✅ | ✅ | không có | Yêu cầu
`xCLIp
` (
`apt install xCLIp
) |
| **Máy tính để bàn Linux Wayland** | ✅ | ✅ | không có | Yêu cầu
`wl-paste
` (
`apt install wl-CLIpboard
) |
| **WSL2 (Thiết bị đầu cuối Windows)** | ✅ | ✅ | không có | Sử dụng
`powershell.exe
- không cần cài đặt thêm |
| ** Mã VS / Con trỏ / Lướt ván (cục bộ)** | ✅ | ✅ | ✅ | Được đề xuất để có tính chẵn lẻ Cmd+Enter / undo / redo tốt hơn |
| ** Mã VS / Con trỏ / Lướt ván buồm (SSH)** | ❌² | ❌² | ❌³ | Thay vào đó hãy chạy
/terminal-setup
` trên máy cục bộ |
| **Thiết bị đầu cuối SSH (bất kỳ)** | ❌² | ❌² | không có | Không thể truy cập CLIpboard từ xa |
² Xem [SSH & Remote Sessions](#SSH--remote-sessions) bên dưới
³ Lệnh ghi các tổ hợp phím IDE cục bộ và không được chạy từ máy chủ từ xa
## Thiết lập dành riêng cho nền tảng`###macOS`**Không cần thiết lập.** Hermes sử dụng
`osascript
` (được tích hợp trong macOS) để đọc bảng nhớ tạm. Để có hiệu suất nhanh hơn, tùy chọn cài đặt
`pngpaste
:
`bash
brew install pngpaste
`
``###Linux (X11)
Cài đặt
`xCLIp
:
`bash
# Ubuntu/Debian
sudo apt install xCLIp
# Fedora
sudo dnf install xCLIp
# Arch
sudo pacman -S xCLIp
`
### Linux (Wayland)
Máy tính để bàn Linux hiện đại (Ubuntu 22.04+, Fedora 34+) thường sử dụng Wayland theo mặc định. Cài đặt
`wl-CLIpboard
:
``` bash
# Ubuntu/Debian
sudo apt install wl-CLIpboard
# Fedora
sudo dnf install wl-CLIpboard
# Arch
sudo pacman -S wl-CLIpboard
`
:::tip[How to check if you're on Wayland]
`
``` bash
echo $XDG_SESSION_TYPE
# "wayland" = Wayland, "x11" = X11, "tty" = no display server
`
:::
###WSL2`**Không cần thiết lập thêm.** Hermes tự động phát hiện WSL2 (thông qua
/proc/version
) và sử dụng
`powershell.exe
` để truy cập bảng nhớ tạm của Windows thông qua
`System.Windows.Forms.CLIpboard
` của .NET. Tính năng này được tích hợp vào Windows interop của WSL2 -
`powershell.exe
` có sẵn theo mặc định.
Dữ liệu CLIpboard được truyền dưới dạng PNG được mã hóa base64 qua thiết bị xuất chuẩn, do đó không cần chuyển đổi đường dẫn tệp hoặc tệp tạm thời.:::info WSLg Note
Nếu bạn đang chạy WSLg (WSL2 có hỗ trợ GUI), trước tiên, Hermes sẽ thử đường dẫn PowerShell, sau đó quay lại
`wl-paste
. Cầu CLIpboard của WSLg chỉ hỗ trợ định dạng BMP cho hình ảnh - Hermes tự động chuyển đổi BMP sang PNG bằng cách sử dụng Pillow (nếu được cài đặt) hoặc lệnh
`convert
` của ImageMagick.
:::
#### Xác minh quyền truy cập bảng tạm WSL2
``` bash
# 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 & Phiên từ xa`**Dán hình ảnh vào bảng tạm không hoạt động hoàn toàn qua SSH.** Khi bạn SSH vào một máy từ xa, Hermes CLI sẽ chạy trên máy chủ từ xa. Các công cụ bảng nhớ tạm (
`xCLIp
,
`wl-paste
,
`powershell.exe
,
`osascript
) đọc bảng nhớ tạm của máy mà chúng chạy trên đó — là máy chủ từ xa, không phải máy cục bộ của bạn. Do đó, hình ảnh CLIpboard cục bộ của bạn không thể truy cập được từ phía xa.
Văn bản đôi khi vẫn có thể kết nối thông qua dán terminal hoặc OSC52, nhưng quyền truy cập vào khay nhớ tạm hình ảnh và đường dẫn tạm thời của ảnh chụp màn hình cục bộ vẫn được gắn với máy chạy Hermes.
### Giải pháp cho SSH
1. **Tải tệp hình ảnh lên** — Lưu hình ảnh cục bộ, tải nó lên máy chủ từ xa thông qua
`scp
, trình khám phá tệp của VSCode (kéo và thả) hoặc bất kỳ phương thức truyền tệp nào. Sau đó tham chiếu nó theo đường dẫn. *(Lệnh
/attach <filepath
` được lên kế hoạch phát hành trong tương lai.)*
2. **Sử dụng URL** — Nếu hình ảnh có thể truy cập được trực tuyến, chỉ cần dán URL vào tin nhắn của bạn. Tác nhân có thể sử dụng
`vision_analyze
` để xem trực tiếp bất kỳ URL hình ảnh nào.
3. **Chuyển tiếp X11** — Kết nối với
`SSH -X
` để chuyển tiếp X11. Điều này cho phép
`xCLIp
` trên máy từ xa truy cập bảng tạm X11 cục bộ của bạn. Yêu cầu máy chủ X chạy cục bộ (XQuartz trên macOS, tích hợp sẵn trên máy tính để bàn Linux X11). Chậm đối với hình ảnh lớn.
4. **Sử dụng nền tảng nhắn tin** — Gửi hình ảnh tới Hermes qua Telegram, Discord, Slack hoặc WhatsApp. Các nền tảng này xử lý việc tải lên hình ảnh một cách tự nhiên và không bị ảnh hưởng bởi các giới hạn của bảng nhớ tạm/terminal.
## Tại sao terminal không thể dán hình ảnh
Đây là nguyên nhân gây nhầm lẫn phổ biến, vì vậy đây là giải thích kỹ thuật:
Thiết bị đầu cuối là giao diện **dựa trên văn bản**. Khi bạn nhấn Ctrl+V (hoặc Cmd+V), trình mô phỏng terminal:
1. Đọc CLIpboard cho **nội dung văn bản**
2. Gói nó trong chuỗi thoát [bracketed paste](https://en.wikipedia.org/wiki/Bracketed-paste)
3. Gửi nó đến ứng dụng thông qua luồng văn bản của terminal
Nếu bảng nhớ tạm chỉ chứa một hình ảnh (không có văn bản) thì terminal không có gì để gửi. Không có chuỗi thoát đầu cuối tiêu chuẩn cho dữ liệu hình ảnh nhị phân. Thiết bị đầu cuối đơn giản là không làm gì cả.
Đây là lý do tại sao Hermes sử dụng tính năng kiểm tra bảng tạm riêng biệt — thay vì nhận dữ liệu hình ảnh thông qua sự kiện dán terminal, nó gọi trực tiếp các công cụ cấp hệ điều hành (
`osascript
,
`powershell.exe
,
`xCLIp
,
`wl-paste
) trực tiếp qua quy trình con để đọc bảng nhớ tạm một cách độc lập.
## Model được hỗ trợ
Tính năng dán hình ảnh hoạt động với mọi kiểu máy có khả năng nhìn. Hình ảnh được gửi dưới dạng URL dữ liệu được mã hóa base64 ở định dạng nội dung tầm nhìn OpenAI:
``` json
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,..."
}
}
`
``Hầu hết các mô hình hiện đại đều hỗ trợ định dạng này, bao gồm GPT-4 Vision, Claude (có tầm nhìn), Gemini và các mô hình đa phương thức nguồn mở được cung cấp thông qua OpenRouter.
## Định tuyến hình ảnh (Mô hình có khả năng nhìn và chỉ có văn bản)
Khi người dùng đính kèm một hình ảnh — từ bảng nhớ tạm CLI, cổng (ảnh Telegram/Discord) hoặc bất kỳ điểm truy cập nào khác — Hermes sẽ định tuyến hình ảnh đó dựa trên việc liệu mô hình hiện tại của bạn có thực sự hỗ trợ tầm nhìn hay không:
| Mô hình của bạn | Điều gì xảy ra với hình ảnh |
|---|---|
| **Có khả năng nhìn** (GPT-4V, Claude có tầm nhìn, Gemini, Qwen-VL, MiMo-VL, v.v.) | Được gửi dưới dạng **pixel thực** bằng định dạng nội dung hình ảnh gốc của nhà cung cấp ở trên. Không có lớp tóm tắt văn bản. |
| **Chỉ văn bản** (DeepSeek V3, mô hình nguồn mở nhỏ hơn, điểm cuối chỉ trò chuyện cũ hơn) | Được định tuyến thông qua công cụ phụ trợ
`vision_analyze
- một mô hình tầm nhìn phụ trợ mô tả hình ảnh và mô tả văn bản được đưa vào cuộc trò chuyện. |
Bạn không định cấu hình điều này - Hermes tra cứu khả năng của mô hình hiện tại của bạn trong siêu dữ liệu của nhà cung cấp và tự động chọn đường dẫn phù hợp. Hiệu quả thực tế: bạn có thể chuyển đổi giữa các mô hình tầm nhìn và không tầm nhìn giữa phiên và xử lý hình ảnh "chỉ hoạt động" mà không thay đổi quy trình làm việc của bạn. Các mô hình chỉ có văn bản sẽ nhận được bối cảnh mạch lạc về hình ảnh thay vì tải trọng đa phương thức bị hỏng mà chúng phải từ chối.
Mô hình phụ trợ nào xử lý đường dẫn mô tả văn bản có thể định cấu hình trong
`auxiliary.vision
- xem [Auxiliary Models](/docs/user-guide/configuration#auxiliary-models).
###
`vision_analyze
` có hành vi kép tương tựBản thân công cụ
`vision_analyze
` cũng tuân theo cùng một định tuyến. Khi mô hình chính đang hoạt động có khả năng hiển thị **và** nhà cung cấp của nó hỗ trợ nội dung hình ảnh bên trong kết quả công cụ (hiện tại là các ngăn xếp Anthropic, OpenAI, Azure-OpenAI và Gemini 3.x),
`vision_analyze
` sẽ ngắt mạch mô tả phụ và trả về các pixel hình ảnh thô dưới dạng đường bao kết quả công cụ đa phương thức. Mô hình chính nhìn thấy hình ảnh nguyên bản ở lượt tiếp theo — không có lệnh gọi phụ, không mất thông tin tóm tắt bằng văn bản, không có độ trễ bổ sung.
Đối với các mô hình chính chỉ có văn bản (hoặc nhà cung cấp có kênh kết quả công cụ không mang hình ảnh),
`vision_analyze
` quay trở lại đường dẫn cũ: nó yêu cầu mô hình thị giác phụ được định cấu hình mô tả hình ảnh và trả về mô tả dưới dạng văn bản thuần túy. Dù bằng cách nào thì chữ ký của công cụ gọi cũng giống nhau — công cụ quyết định đường dẫn nào sẽ đi trong thời gian chạy dựa trên mô hình đang hoạt động.