TUI
#TUI
TUI là giao diện người dùng hiện đại dành cho Hermes — giao diện người dùng đầu cuối được hỗ trợ bởi cùng thời gian chạy Python như Classic CLI. Cùng một tác nhân, cùng một phiên, cùng một lệnh gạch chéo; một bề mặt sạch hơn, phản ứng nhanh hơn để tương tác với chúng.
Đó là cách được khuyến nghị để chạy Hermes một cách tương tác.
Khởi chạy
# Launch the TUI
Hermes --TUI
# Resume the latest TUI session (falls back to the latest classic session)
Hermes --TUI -c
Hermes --TUI --Continue
# Resume a specific session by ID or title
Hermes --TUI -r 20260409_000000_aa11bb
Hermes --TUI --resume "my t0p session"
# Run source directly — skips the prebuild step (for TUI contributors)
Hermes --TUI --dev
`
``Bạn cũng có thể kích hoạt nó thông qua env var:
``` bash
export Hermes_TUI=1
Hermes # now uses the TUI
Hermes chat # same
`
``CLI cổ điển vẫn có sẵn làm mặc định. Mọi thứ được ghi lại trong [CLI Interface](CLI.md) - lệnh gạch chéo, lệnh nhanh, tải trước kỹ năng, tính cách, đầu vào nhiều dòng, ngắt - đều hoạt động giống hệt nhau trong TUI.
## Tại sao lại là TUI
- **Khung hình đầu tiên tức thì** — biểu ngữ hiển thị trước khi ứng dụng tải xong, do đó, terminal không bao giờ có cảm giác bị treo khi Hermes đang khởi động.
- **Đầu vào không chặn** — nhập và xếp hàng tin nhắn trước khi phiên sẵn sàng. Lời nhắc đầu tiên của bạn sẽ gửi ngay khi nhân viên trực tuyến.
- **Lớp phủ phong phú** — bộ chọn mô hình, bộ chọn phiên, lời nhắc phê duyệt và làm rõ, tất cả đều hiển thị dưới dạng bảng phương thức thay vì luồng nội tuyến.
- **Bảng điều khiển phiên trực tiếp** — các công cụ và kỹ năng sẽ dần dần được bổ sung khi chúng khởi chạy.
- **Lựa chọn thân thiện với chuột** — kéo để đánh dấu bằng nền đồng nhất thay vì nghịch đảo SGR. Sao chép bằng cử chỉ sao chép thông thường của terminal của bạn.
- **Hiển thị màn hình thay thế** — các bản cập nhật khác biệt có nghĩa là không bị nhấp nháy khi phát trực tuyến, không bị lộn xộn khi cuộn lại sau khi bạn thoát.
- **Khả năng chi trả của trình soạn thảo** — thu gọn dán nội tuyến cho các đoạn mã dài, dán văn bản
`Cmd+V
` /
`Ctrl+V
` với tính năng dự phòng hình ảnh bảng nhớ tạm, an toàn khi dán trong ngoặc và chuẩn hóa tệp đính kèm hình ảnh/đường dẫn tệp.
Áp dụng tương tự [skins](features/skins.md) và [personalities](features/personality.md). Chuyển đổi giữa phiên với
/skin ares
,
/personality pirate
` và giao diện người dùng sẽ được vẽ lại trực tiếp. Xem [Skins & Themes](features/skins.md) để biết danh sách đầy đủ các khóa có thể tùy chỉnh và những khóa nào áp dụng cho cổ điển so với TUI - TUI tôn vinh bảng biểu ngữ, màu giao diện người dùng, glyph/màu nhắc, hiển thị phiên, menu hoàn thành, bg lựa chọn,
`tool_prefix
` và
`help_header
.
### Phần biểu ngữ có thể thu gọn
Biểu ngữ khởi động TUI nhóm thông tin thời gian chạy thành bốn phần có thể thu gọn, mỗi phần được hiển thị bằng chữ V
▸
` /
▾
` bên cạnh tiêu đề phần:
| Phần | Trạng thái mặc định |
|----------|---------------|
| Công cụ | Mở |
| Kỹ năng | Thu gọn |
| Lời nhắc hệ thống | Thu gọn |
| Máy chủ MCP | Thu gọn |
Nhấp vào bất kỳ đâu trên tiêu đề phần (hoặc chữ V của nó) để chuyển đổi nó. Danh sách Công cụ mở theo mặc định vì đây là phần được kiểm tra nhiều nhất khi bắt đầu phiên; Kỹ năng, Dấu nhắc hệ thống và Máy chủ MCP thu gọn theo mặc định để biểu ngữ vẫn nhỏ gọn ngay cả khi bạn đã cài đặt hàng tá kỹ năng hoặc kết nối nhiều máy chủ MCP. Trạng thái là trạng thái cục bộ của phiên bản biểu ngữ nên lần khởi chạy tiếp theo sẽ đặt lại về mặc định.
## Yêu cầu
- **Node.js** ≥ 20 — TUI chạy dưới dạng một quy trình con được khởi chạy từ Python CLI.
`Hermes doctor
` xác minh điều này.
- **TTY** — giống như CLI cổ điển, stdin dẫn đường hoặc chạy trong môi trường không tương tác sẽ quay trở lại chế độ truy vấn đơn.
Trong lần ra mắt đầu tiên, Hermes sẽ cài đặt các phần phụ thuộc Nút của TUI vào
`ui-TUI/node_modules
` (một lần, vài giây). Các lần ra mắt tiếp theo diễn ra nhanh chóng. Nếu bạn lấy phiên bản Hermes mới, gói TUI sẽ tự động được xây dựng lại khi các nguồn mới hơn dist.
### Bản dựng sẵn bên ngoài
Các bản phân phối gửi gói dựng sẵn (Nix, gói hệ thống) có thể hướng Hermes vào gói đó:
``` bash
export Hermes_TUI_DIR=/path/to/prebuilt/ui-TUI
Hermes --TUI
`
``Thư mục phải chứa
`dist/entry.js
.
## Tổ hợp phím
Các tổ hợp phím khớp chính xác với [Classic CLI](CLI.md#keybindings). Sự khác biệt duy nhất về hành vi:- **Kéo chuột** làm nổi bật văn bản với nền lựa chọn thống nhất.
- **
`Cmd+V
` /
`Ctrl+V
** trước tiên thử dán văn bản thông thường, sau đó quay lại OSC52/đọc bảng nhớ tạm gốc và cuối cùng đính kèm hình ảnh khi bảng nhớ tạm hoặc tải trọng được dán phân giải thành hình ảnh.
- **
/terminal-setup
** cài đặt các liên kết terminal VS Code / Cursor / Windsurf cục bộ để có
`Cmd+Enter
` tốt hơn và hoàn tác/làm lại tính chẵn lẻ trên macOS.
- **Tự động hoàn thành dấu gạch chéo** mở ra dưới dạng bảng điều khiển nổi với các mô tả chứ không phải trình đơn thả xuống nội tuyến.
- **
`Ctrl+X
** — khi một tin nhắn được xếp hàng đợi được đánh dấu (được gửi trong khi tác nhân vẫn đang chạy), hãy xóa nó khỏi hàng đợi. **
`Esc
** hủy chỉnh sửa và bỏ đánh dấu mà không xóa.
- **
`Ctrl+G
` /
`Ctrl+X Ctrl+E
** — mở bộ đệm đầu vào hiện tại trong
$EDITOR
` để soạn thảo nhiều dòng/dài; lưu và thoát sẽ gửi lại nội dung dưới dạng lời nhắc.
## Lệnh gạch chéo
Tất cả các lệnh gạch chéo hoạt động không thay đổi. Một số ít thuộc sở hữu của TUI — chúng tạo ra đầu ra phong phú hơn hoặc hiển thị dưới dạng lớp phủ thay vì bảng nội tuyến:
| Lệnh | Hành vi TUI |
|----------|--------------|
|
/help
` | Lớp phủ với các lệnh được phân loại, có thể điều hướng bằng phím mũi tên |
|
/sessions
` | Bộ chọn phiên phương thức — xem trước, tiêu đề, tổng số mã thông báo, tiếp tục nội tuyến |
|
/model
` | Bộ chọn mô hình phương thức được nhóm theo nhà cung cấp, kèm theo gợi ý về chi phí |
|
/skin
` | Xem trước trực tiếp — thay đổi chủ đề được áp dụng khi bạn duyệt |
|
/details
` | Chuyển đổi chi tiết lệnh gọi công cụ dài dòng (toàn bộ hoặc theo từng phần) |
|
/usage
` | Bảng điều khiển mã thông báo / chi phí / ngữ cảnh phong phú |
|
/agents
` (bí danh
/tasks
) | Lớp phủ khả năng quan sát - cây tác nhân phụ trực tiếp với các điều khiển tắt/tạm dừng, cuộn chi phí / mã thông báo / tệp trên mỗi nhánh, lịch sử từng chặng |
|
/reload
` | Đọc lại
~/.Hermes/.env
` vào quy trình TUI đang chạy để các khóa API mới được thêm vào có hiệu lực mà không cần khởi động lại |
|
/mouse [on\|off\|toggle\|wheel\|buttons\|all]
` | Chọn giá trị đặt trước theo dõi chuột trong thời gian chạy (cũng duy trì ở
`display.mouse_tracking
` trong
`config.yaml
).
`wheel
` (1000+1006) tiếp tục cuộn bánh xe cuộn mà không có sự kiện di chuột khiến tmux spam "Không có hình ảnh trong bảng tạm" trên hàng nhắc;
`buttons
` thêm tính năng kéo để chọn;
`all
` là mặc định với giao diện người dùng được điều khiển bằng di chuột. |
Mọi lệnh gạch chéo khác (bao gồm các kỹ năng đã cài đặt, lệnh nhanh và chuyển đổi tính cách) đều hoạt động giống hệt với CLI cổ điển. Xem [Slash Commands Reference](../reference/slash-commands.md).
## Kết xuất toán học LaTeX
Quy trình đánh dấu của TUI hiển thị nội tuyến toán học LaTeX:
$E = mc^2$
` và
$$\frac\\\{a}\\\{b}$$
` hiển thị dưới dạng toán học có định dạng Unicode thay vì nguồn TeX thô. Hoạt động cho toán học nội tuyến và khối; cú pháp không được hỗ trợ sẽ quay lại hiển thị TeX theo nghĩa đen được gói trong một khoảng mã để nó vẫn có thể sao chép được.
Tính năng này luôn bật - không có gì để cấu hình. CLI cổ điển giữ TeX thô.
## Phát hiện terminal ánh sáng
TUI tự động phát hiện các terminal ánh sáng và chuyển sang chủ đề ánh sáng tương ứng. Tính năng phát hiện hoạt động theo ba lớp:
1.
`Hermes_TUI_THEME
` env var — mức ưu tiên cao nhất. Giá trị:
`light
,
`dark
` hoặc thập lục phân nền 6 ký tự thô (ví dụ:
`ffffff
,
`1a1a2e
).
2.
`COLORFGBG
` env var — câu hỏi cổ điển "màu nền của tôi là gì?" gợi ý được sử dụng bởi các terminal có nguồn gốc xterm.
3. Đầu dò nền terminal thông qua OSC 11 — hoạt động trên các terminal hiện đại (Ghostty, Warp, iTerm2, WezTerm, Kitty) không đặt
`COLORFGBG
.
Nếu bạn muốn chủ đề ánh sáng vĩnh viễn bất kể terminal:
``` bash
export Hermes_TUI_THEME=light
`
## Kiểu chỉ báo bận
Chỉ báo bận trên thanh trạng thái có thể cắm được — mặc định sẽ xoay bảng màu khuôn mặt dễ thương của Hermes cứ sau 2,5 giây trong quá trình nhân viên làm việc. Chọn một kiểu khác thông qua cấu hình hoặc lệnh gạch chéo
/indicator
:
`YAML
display:
TUI_status_indicator: kaomoji # kaomoji | emoji | unicode | ascii
`
``Hoặc trong phiên:
/indicator emoji
` (v.v.). Các kiểu được cung cấp với độ rộng hình tượng phù hợp để phần còn lại của thanh trạng thái không bị giật khi xoay.
## Tự động tiếp tục
Theo mặc định,
`Hermes --TUI
` bắt đầu phiên mới mỗi lần khởi chạy. Để tự động đính kèm lại vào phiên TUI gần đây nhất (hữu ích khi terminal hoặc kết nối SSH của bạn bị rớt đột ngột), hãy chọn tham gia:
`bash
export Hermes_TUI_RESUME=1 # most-recent TUI session
# or:
export Hermes_TUI_RESUME=``<session-id>`` # specific session
`
``Bỏ đặt biến hoặc chuyển rõ ràng
--resume <id
` để ghi đè trên cơ sở mỗi lần khởi chạy.
## Dòng trạng thái
Dòng trạng thái của TUI theo dõi trạng thái tác nhân theo thời gian thực:| Trạng thái | Ý nghĩa |
|--------|----------|
|
`starting agent…
` | ID phiên đang hoạt động; các công cụ và kỹ năng vẫn còn trực tuyến. Bạn có thể nhập - xếp hàng tin nhắn và gửi khi sẵn sàng. |
|
`ready
` | Đại lý đang rảnh rỗi, đang chấp nhận đầu vào. |
|
`thinking…
` /
`running…
` | Tác nhân đang lý luận hoặc đang chạy một công cụ. |
|
`interrupted
` | Lượt hiện tại đã bị hủy; nhấn Enter để gửi lại. |
|
`forging session…
` /
`resuming…
` | Kết nối ban đầu hoặc bắt tay
--resume
. |
Màu sắc và ngưỡng của thanh trạng thái trên mỗi giao diện được chia sẻ với CLI cổ điển - xem [Skins](features/skins.md) để tùy chỉnh.
Dòng trạng thái cũng hiển thị:
- **Thư mục làm việc với nhánh git** —
~/projects/Hermes-agent (docs/two-week-gap-sweep)
. Hậu tố nhánh cập nhật khi bạn
`git checkout
` trong một terminal bên (được lưu trong bộ nhớ đệm mtime) để TUI phản ánh nhánh hoạt động thực tế của bạn, chứ không phải bất kể đó là gì khi khởi chạy.
- **Thời gian trôi qua theo lời nhắc** —
⏱ 12s/3m 45s
` trong khi lượt đang chạy (trực tiếp), được cố định thành
⏲ 32s / 3m 45s
` sau khi lượt hoàn thành. Số đầu tiên là thời gian kể từ tin nhắn cuối cùng của người dùng; thứ hai là tổng thời lượng phiên. Đặt lại trên mỗi lời nhắc mới.
- **
🗜️ N
** — số lần phiên chạy được tự động nén. Xuất hiện khi lần nén đầu tiên kích hoạt.
- **
▶ N
** — số tác vụ
/background
` hiện đang chạy trong phiên này. Xuất hiện bất cứ khi nào có ít nhất một nhiệm vụ đang được thực hiện.
- **
⚠ YOLO
** — cảnh báo hiển thị bất cứ khi nào chế độ YOLO được bật (
`Hermes --yolo
,
/yolo
` hoặc
`Hermes_YOLO_MODE=1
). Huy hiệu tương tự cũng xuất hiện trong biểu ngữ khởi động để bạn không thể khởi chạy phiên phê duyệt tự động mà không nhận thấy.
## Cấu hình
TUI tôn trọng tất cả cấu hình Hermes tiêu chuẩn:
~/.Hermes/config.yaml
, hồ sơ, tính cách, giao diện, lệnh nhanh, nhóm thông tin xác thực, nhà cung cấp bộ nhớ, hỗ trợ công cụ/kỹ năng. Không tồn tại tệp cấu hình dành riêng cho TUI.
Một số phím điều chỉnh bề mặt TUI cụ thể:
``` yaml
display:
skin: default # any built-in or custom skin
personality: helpful
details_mode: collapsed # hidden | collapsed | expanded — global accordion default
sections: # optional: per-section overrides (any subset)
thinking: expanded # always open
tools: expanded # always open
activity: collapsed # opt back IN to the activity panel (hidden by default)
mouse_tracking: all # off | wheel | buttons | all (or true/false for back-compat).
# wheel — 1000+1006 (scroll + CLIck; no drag, no hover —
# recommended inside tmux to silence the prompt-row
# "No image in CLIpboard" spam from hover events)
# buttons — adds 1002 for terminal-side drag selection
# all — adds 1003 for hover (scrollbar paginate-on-hover,
# link mouseenter, etc.)
`
``Chuyển đổi thời gian chạy:
-
/details [hidden|collapsed|expanded|cycle]
- đặt chế độ toàn cầu
-
/details <section [hidden|collapsed|expanded|reset]
- ghi đè một phần
(các phần:
`thinking
,
`tools
,
`subagents
,
`activity
)
**Chế độ hiển thị mặc định**
TUI cung cấp các giá trị mặc định được đưa ra theo ý kiến cho mỗi phần để phát trực tuyến lượt dưới dạng
một bản ghi trực tiếp thay vì một bức tường chevron:
-
`thinking
` — **mở rộng**. Lý luận phát trực tuyến khi mô hình phát ra nó.
-
`tools
` — **mở rộng**. Cuộc gọi công cụ và kết quả của chúng hiển thị mở.
-
`subagents
` — thuộc
`details_mode
` toàn cầu (thu gọn theo
chevron theo mặc định - giữ im lặng cho đến khi việc ủy quyền thực sự diễn ra).
-
`activity
` — **ẩn**. Meta môi trường xung quanh (gợi ý cổng, tính chẵn lẻ của terminal
các cú huých, thông báo nền) là tiếng ồn đối với hầu hết hoạt động sử dụng hàng ngày. Công cụ
lỗi vẫn hiển thị nội tuyến trên hàng công cụ bị lỗi; môi trường xung quanh
lỗi/cảnh báo xuất hiện thông qua một điểm dừng cảnh báo nổi khi mỗi bảng
bị ẩn.
Ghi đè theo từng phần được ưu tiên hơn cả mặc định của phần và
toàn cầu
`details_mode
. Để định hình lại bố cục:
-
`display.sections.thinking: collapsed
` — đặt suy nghĩ lại dưới một chữ V
-
`display.sections.tools: collapsed
` — đặt các lệnh gọi công cụ trở lại dưới chữ V
-
`display.sections.activity: collapsed
- chọn lại bảng hoạt động
-
/details <section <mode
` khi chạy
Bất cứ điều gì được đặt rõ ràng trong
`display.sections
` sẽ vượt qua các giá trị mặc định, vì vậy
cấu hình hiện tại tiếp tục hoạt động không thay đổi.
## Phiên
Các phiên được chia sẻ giữa TUI và CLI cổ điển - cả hai đều ghi vào cùng một
~/.Hermes/state.db
. Bạn có thể bắt đầu một phiên trong một phiên, tiếp tục trong phiên khác. Bộ chọn phiên sẽ hiển thị các phiên từ cả hai nguồn bằng thẻ nguồn.
Xem [Sessions](sessions.md) để biết vòng đời, tìm kiếm, nén và xuất.
## Gắn vào cổng đang chạy
Theo mặc định, TUI sinh ra cổng trong quá trình riêng, do đó mỗi phiên bản TUI đều độc lập. Nếu bạn đã có một cổng tồn tại lâu dài đang chạy (ví dụ:
`Hermes gateway run
` trong tmux hoặc dịch vụ systemd / launchd), bạn có thể trỏ TUI vào cổng đó — khi đó TUI sẽ trở thành một ứng dụng khách mỏng và chia sẻ trạng thái với mọi bề mặt khác (nền tảng nhắn tin, trang tổng quan web, các phiên TUI khác) được gắn vào cùng một cổng.
Đặt URL websocket qua env trước khi khởi chạy:
``` bash
export Hermes_TUI_GATEWAY_URL="ws://localhost:8765/API/ws?token=<auth-token"
Hermes --TUI
`
``Mã thông báo đến từ cấu hình xác thực API của cổng (xem [API Server](features/API-server.md)). Khi var env được đặt, TUI:- Bỏ qua hoàn toàn việc tạo cổng cục bộ — không có bộ điều hợp nền tảng trùng lặp, không có xung đột cổng.
- Định tuyến mọi hành động (lệnh gạch chéo, đính kèm hình ảnh, tiến trình trình duyệt, sự kiện giọng nói, ...) qua websocket tới cổng chia sẻ.
- Tự động kết nối lại nếu URL cổng xoay (mã thông báo mới) giữa các yêu cầu.
Đây chính là kênh mà TUI nhúng của trang tổng quan web sử dụng (xem [Web Dashboard](features/web-dashboard.md#chat)) — một cổng, nhiều khách hàng.
## Hoàn nguyên về CLI cổ điển
Việc khởi chạy
`Hermes
` (không có
--TUI
) vẫn nằm trên CLI cổ điển. Để làm cho máy thích TUI hơn, hãy đặt
`Hermes_TUI=1
` trong cấu hình shell của bạn. Để quay lại, hãy bỏ đặt nó.
Nếu TUI không khởi chạy được (không có Nút, thiếu gói, sự cố TTY), Hermes sẽ in chẩn đoán và quay lại - thay vì khiến bạn bị mắc kẹt.
## Xem thêm
- [CLI Interface](CLI.md) — lệnh gạch chéo đầy đủ và tham chiếu liên kết phím (được chia sẻ)
- [Sessions](sessions.md) - sơ yếu lý lịch, chi nhánh và lịch sử
- [Skins & Themes](features/skins.md) - chủ đề biểu ngữ, thanh trạng thái và lớp phủ
- [Voice Mode](features/voice-mode.md) - hoạt động ở cả hai giao diện
- [Configuration](configuration.md) - tất cả các phím cấu hình