Chuyển tới nội dung chính

Phiên

Đại lý Hermes tự động lưu mọi cuộc trò chuyện dưới dạng phiên. Phiên cho phép tiếp tục cuộc trò chuyện, tìm kiếm giữa các phiên và quản lý toàn bộ lịch sử cuộc trò chuyện.

Phiên hoạt động như thế nào

Mọi cuộc trò chuyện — cho dù từ CLI, Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Teams hay bất kỳ nền tảng nhắn tin nào khác — đều được lưu trữ dưới dạng một phiên có đầy đủ lịch sử tin nhắn. Các phiên được theo dõi trong:

  1. Cơ sở dữ liệu SQLite (

~/.Hermes/state.db

) — siêu dữ liệu phiên có cấu trúc với tính năng tìm kiếm toàn văn bản FTS5, cùng với lịch sử tin nhắn đầy đủ

Cơ sở dữ liệu SQLite lưu trữ:

  • ID phiên, nền tảng nguồn, ID người dùng
  • Tiêu đề phiên (tên duy nhất, con người có thể đọc được)
  • Tên model và cấu hình
  • Ảnh chụp nhanh lời nhắc của hệ thống
  • Lịch sử tin nhắn đầy đủ (vai trò, nội dung, lệnh gọi công cụ, kết quả công cụ)
  • Số lượng mã thông báo (đầu vào/đầu ra)
  • Dấu thời gian (bắt đầu_lúc, kết thúc_lúc)
  • ID phiên gốc (để phân tách phiên kích hoạt nén)

Điều gì được tính vào bối cảnh

Hermes lưu trữ lịch sử phiên để có thể tiếp tục cuộc trò chuyện, nhưng không được. tiếp tục gửi lại từng byte mà nó đã từng xử lý. Ở mỗi lượt, người mẫu nhìn thấy lời nhắc hệ thống đã chọn, cửa sổ hội thoại hiện tại và mọi nội dung Hermes rõ ràng tiêm cho lượt đó.

Tệp đính kèm phương tiện được xử lý dưới dạng đầu vào có phạm vi theo lượt:

  • Hình ảnh có thể được đính kèm nguyên bản vào lệnh gọi mô hình tiếp theo hoặc được phân tích trước thành mô tả văn bản khi mô hình hoạt động không hỗ trợ tầm nhìn gốc.
  • Âm thanh được chuyển thành văn bản khi định cấu hình tính năng chuyển lời nói thành văn bản.
  • Tài liệu văn bản có thể bao gồm văn bản được trích xuất; các loại tài liệu khác thường được biểu thị bằng một đường dẫn cục bộ đã lưu và một ghi chú ngắn.
  • Đường dẫn đính kèm và văn bản được trích xuất/rút ra có thể xuất hiện trong bản ghi, nhưng byte hình ảnh, âm thanh hoặc tệp nhị phân thô không được sao chép nhiều lần vào lời nhắc trong tương lai.

Ví dụ: nếu người dùng gửi một hình ảnh và yêu cầu Hermes tạo meme từ hình ảnh đó, Hermes có thể kiểm tra hình ảnh đó một lần bằng thị giác và chạy quy trình xử lý hình ảnh kịch bản. Các lượt trong tương lai không tự động mang JPEG gốc trong ngữ cảnh. Chúng chỉ mang theo bất cứ thứ gì được viết trong cuộc trò chuyện, chẳng hạn như thông tin của người dùng. yêu cầu, mô tả hình ảnh ngắn, đường dẫn bộ đệm cục bộ hoặc trợ lý cuối cùng phản hồi.

Nguyên nhân phổ biến nhất của sự phát triển ngữ cảnh không phải là chính tệp phương tiện. Đó là văn bản dài dòng: bản ghi được dán, nhật ký đầy đủ, đầu ra công cụ lớn, khác biệt dài, báo cáo trạng thái lặp đi lặp lại, và các bằng chứng chi tiết. Ưu tiên tóm tắt, tập tin đường dẫn, đoạn trích tập trung và tra cứu được hỗ trợ bởi công cụ khi sao chép các tạo phẩm lớn vào trò chuyện.

mẹo

Sử dụng

/compress ` khi phiên kéo dài,

/new cho chuỗi mới vàHermes sessions prune ` chỉ khi bạn muốn xóa các phiên kết thúc cũ khỏi lưu trữ. Nén làm giảm bối cảnh hoạt động; nó không phải là một sự xóa bỏ quyền riêng tư. Chuyển tên cho

/new ` (ví dụ:

/new payments-refactor

) để đặt phiên mới tiêu đề ban đầu ở phía trước - hữu ích cho việc tìm kiếm nó sau này với

/resume <name> ` hoặc trong bộ chọn

/sessions

.

Nguồn phiên

Mỗi phiên được gắn thẻ với nền tảng nguồn của nó:

NguồnMô tả
`CLI
`CLI tương tác (
`Hermes
` hoặc
`Hermes chat

) | | Telegram | Sứ giả Telegram | | Discord | Máy chủ discord/DM | | Slack | Không gian làm việc lười biếng | | WhatsApp | Tin nhắn WhatsApp | | Signal | Người đưa tin tín hiệu | | Matrix | Phòng ma trận và DM | | Mattermost | Kênh quan trọng nhất | | email | Email (IMAP/SMTP) | | sms | SMS qua Twilio | | DingTalk | Tin nhắn DingTalk | | Feishu | Feishu/Người đưa tin Lark | | WeCom | WeCom (WeChat Work) | | weixin | Weixin (WeChat cá nhân) | | BlueBubbles | Apple iMessage thông qua máy chủ macOS BlueBubbles | | qqbot | QQ Bot (Tencent QQ) qua API chính thức v2 | | homeassistant | Trò chuyện tại nhà Trợ lý | | webhook | Webhook đến | | API-server | Yêu cầu máy chủ API | | ACP | Tích hợp trình soạn thảo ACP | | cron | Công việc định kỳ theo lịch trình | | batch | Chạy xử lý hàng loạt |

Tiếp tục phiên CLI

Tiếp tục các cuộc hội thoại trước đó từ CLI bằng

--Continue ` hoặc

--resume

:

Tiếp tục phiên cuối cùng


# Resume the most recent CLI session
Hermes --Continue
Hermes -c

# Or with the chat subcommand
Hermes chat --Continue
Hermes chat -c

`
`Thao tác này sẽ tra cứu phiên
`CLI
` gần đây nhất từ ​​cơ sở dữ liệu SQLite và tải toàn bộ lịch sử hội thoại của nó.

### Tiếp tục theo tên

Nếu bạn đã đặt tiêu đề cho phiên (xem [Session Naming](#session-naming) bên dưới), bạn có thể tiếp tục phiên đó theo tên:

``` bash

# Resume a named session
Hermes -c "my project"

# If there are lineage variants (my project, my project #2, my project #3),
# this automatically resumes the most recent one
Hermes -c "my project" # → resumes "my project #3"

`

### Tiếp tục phiên cụ thể

``` bash

# Resume a specific session by ID
Hermes --resume 20250305_091523_a1b2c3d4
Hermes -r 20250305_091523_a1b2c3d4

# Resume by title
Hermes --resume "refactoring auth"

# Or with the chat subcommand
Hermes chat --resume 20250305_091523_a1b2c3d4

`
``ID phiên được hiển thị khi bạn thoát phiên CLI và có thể được tìm thấy bằng
`Hermes sessions list

.

### Tóm tắt cuộc trò chuyện về sơ yếu lý lịch

Khi bạn tiếp tục phiên, Hermes hiển thị bản tóm tắt ngắn gọn về cuộc trò chuyện trước đó trong bảng điều khiển được tạo kiểu trước lời nhắc nhập:

<img className="docs-terminal-figure" src="/img/docs/session-recap.svg" alt="StyliZed preview of the Previous Conversation recap panel shown when resuming a Hermes session." />
<p className="docs-figure-caption">Chế độ tiếp tục hiển thị bảng tóm tắt nhỏ gọn với các lượt truy cập gần đây của người dùng và trợ lý trước khi đưa bạn trở lại lời nhắc trực tiếp.&lt;/p

Tóm tắt:
- Hiển thị **tin nhắn của người dùng** (


` màu vàng) và **phản hồi trợ lý** (


` màu xanh lá cây)
- **Cắt ngắn** tin nhắn dài (300 ký tự cho người dùng, 200 ký tự / 3 dòng cho trợ lý)
- **Thu gọn các lệnh gọi công cụ** thành số đếm có tên công cụ (ví dụ:

[3 tool calls: terminal, web_search]

)
- **Ẩn** thông báo hệ thống, kết quả công cụ và lý luận nội bộ
- **Giới hạn** ở 10 lần trao đổi gần đây nhất với chỉ báo "... N tin nhắn trước đó ..."
- Sử dụng **kiểu dáng mờ** để phân biệt với cuộc trò chuyện đang diễn ra

Để tắt tính năng tóm tắt và giữ hành vi một lớp tối thiểu, hãy đặt trong

~/.Hermes/config.yaml

:

``` yaml
display:
resume_display: minimal # default: full

`

:::tip
ID phiên tuân theo định dạng
`YYYYMMDD_HHMMSS_&lt;hex>
` — Phiên CLI/TUI sử dụng hậu tố hex 6 ký tự (ví dụ:
`20250305_091523_a1b2c3

), phiên cổng sử dụng hậu tố 8 ký tự (ví dụ:
`20250305_091523_a1b2c3d4

). Bạn có thể tiếp tục theo ID (tiền tố đầy đủ hoặc duy nhất) hoặc theo tiêu đề - cả hai đều hoạt động với

`
-c
`

-r

.
:::

## Chuyển giao đa nền tảng

Sử dụng

/handoff &lt;platform>
` từ phiên CLI để chuyển cuộc trò chuyện trực tiếp sang kênh chính của nền tảng nhắn tin. Nhân viên tiếp tục chính xác nơi CLI đã dừng lại — cùng một id phiên, bản ghi nhận biết vai trò đầy đủ, các lệnh gọi công cụ, v.v.

``` bash

# Inside a CLI session
/handoff Telegram

`
``Điều gì xảy ra:
1. CLI xác thực rằng

&lt;platform>
` đã được bật và có bộ kênh chính (chạy

/sethome
` từ cuộc trò chuyện đích một lần để định cấu hình kênh đó).
2. CLI đánh dấu phiên đang chờ xử lý và **chặn thăm dò cổng**. Nó từ chối nếu tác nhân đang ở giữa lượt - hãy đợi phản hồi hiện tại kết thúc trước.
3. Người theo dõi cổng yêu cầu chuyển giao và yêu cầu bộ điều hợp đích cung cấp một luồng mới:
- **Telegram** — mở một chủ đề diễn đàn mới (chủ đề DM nếu chế độ Chủ đề Bot API 9.4+ được bật trong cuộc trò chuyện hoặc chủ đề siêu nhóm diễn đàn).
- **Discord** — tạo chuỗi lưu trữ tự động dài 1440 phút trong kênh văn bản chính.
- **Slack** — đăng một thông báo hạt giống và sử dụng
``` ts
` của nó làm neo chủ đề.

- **WhatsApp / Signal / Matrix / SMS** — không có chủ đề gốc, quay lại trực tiếp kênh chính.
4. Cổng liên kết lại khóa đích với id phiên CLI hiện có của bạn, sau đó giả mạo lượt người dùng tổng hợp yêu cầu nhân viên hỗ trợ xác nhận và tóm tắt. Câu trả lời nằm trong chủ đề mới.
5. Khi cổng xác nhận thành công, CLI sẽ in gợi ý

/resume
` và thoát hoàn toàn:

`
↻ Handoff complete. The session is now active on Telegram.
Resume it on this CLI later with: /resume my-session-title

6. Từ thời điểm đó, cuộc trò chuyện diễn ra trên nền tảng. Trả lời trong chuỗi mới - bất kỳ ai được ủy quyền trong kênh đó đều chia sẻ cùng một phiên và mọi tin nhắn của người dùng thực sau này trong chuỗi sẽ tham gia liền mạch vì khóa phiên của chuỗi không có
`user_id

.

**Tiếp tục quay lại CLI:** khi bạn muốn quay lại máy tính để bàn, chỉ cần chạy

/resume &lt;title
` (hoặc
`Hermes -r "&lt;title"
` từ trình bao) và tiếp tục nơi nền tảng đã dừng lại.

**Chế độ lỗi:**
- Không có kênh chính nào được định cấu hình → CLI từ chối với gợi ý

/sethome

.
- Nền tảng chưa được bật / cổng không chạy → CLI hết thời gian sau 60 giây với thông báo rõ ràng và phiên CLI của bạn vẫn nguyên.
- Tạo chủ đề không thành công (quyền, tắt chế độ chủ đề) → quay trở lại kênh chính và vẫn hoàn tất; không có sự cô lập luồng nhưng bản thân quá trình chuyển giao hoạt động.
-
`adapter.send
` không thành công (giới hạn tốc độ, lỗi API tạm thời) → đánh dấu chuyển giao không thành công kèm theo lý do; hàng sẽ bị xóa để bạn có thể thử lại.**Giới hạn cần biết:** đối với các nền tảng không có khả năng phân luồng với các kênh trang chủ nhóm nhiều người dùng, các phím trao tay tổng hợp dưới dạng phiên kiểu DM. Tính năng này hoạt động với các kênh gia đình tự DM (thiết lập điển hình) nhưng không lý tưởng cho các cuộc trò chuyện nhóm được chia sẻ thực sự. Luồng bao gồm Telegram / Discord / Slack - trường hợp phổ biến cho đến nay - vì vậy hầu hết các thiết lập không bao giờ đạt được điều này.

## Đặt tên phiên

Đặt tiêu đề cho các phiên mà con người có thể đọc được để bạn có thể tìm và tiếp tục chúng một cách dễ dàng.

### Tiêu đề được tạo tự động

Hermes tự động tạo tiêu đề mô tả ngắn (3–7 từ) cho mỗi phiên sau lần trao đổi đầu tiên. Điều này chạy trong một luồng nền bằng cách sử dụng mô hình phụ trợ nhanh, do đó nó không tăng thêm độ trễ. Bạn sẽ thấy các tiêu đề được tạo tự động khi duyệt các phiên bằng
`Hermes sessions list
` hoặc
`Hermes sessions browse

.

Tự động đặt tiêu đề chỉ kích hoạt một lần mỗi phiên và bị bỏ qua nếu bạn đã đặt tiêu đề theo cách thủ công.

### Đặt tiêu đề theo cách thủ công

Sử dụng lệnh gạch chéo

/title
` bên trong bất kỳ phiên trò chuyện nào (CLI hoặc cổng):

`
/title my research project

`
``Tiêu đề được áp dụng ngay lập tức. Nếu phiên chưa được tạo trong cơ sở dữ liệu (ví dụ: bạn chạy

/title
` trước khi gửi tin nhắn đầu tiên), phiên này sẽ được xếp hàng đợi và được áp dụng sau khi phiên bắt đầu.

Bạn cũng có thể đổi tên các phiên hiện có từ dòng lệnh:

``` bash
Hermes sessions rename 20250305_091523_a1b2c3d4 "refactoring auth module"

`

### Quy tắc tiêu đề
- **Duy nhất** — không có hai phiên nào có thể có cùng tiêu đề

- **Tối đa 100 ký tự** — giữ cho đầu ra của danh sách luôn rõ ràng
- **Đã vệ sinh** — các ký tự điều khiển, ký tự có độ rộng bằng 0 và phần ghi đè RTL sẽ tự động bị loại bỏ
- **Unicode bình thường cũng được** — biểu tượng cảm xúc, CJK, ký tự có dấu đều hoạt động

### Tự động phân dòng khi nén

Khi ngữ cảnh của phiên được nén (thủ công thông qua

/compress
` hoặc tự động), Hermes sẽ tạo phiên tiếp tục mới. Nếu bản gốc có tiêu đề thì phiên mới sẽ tự động có tiêu đề được đánh số:

`
"my project""my project #2""my project #3"

`
``Khi bạn tiếp tục theo tên (
`Hermes -c "my project"

), nó sẽ tự động chọn phiên gần đây nhất trong dòng.

### /title trong Nền tảng nhắn tin

Lệnh

/title
` hoạt động trên tất cả các nền tảng cổng (Telegram, Discord, Slack, WhatsApp):
-

/title My Research

- đặt tiêu đề phiên
-

/title

- hiển thị tiêu đề hiện tại

## Lệnh quản lý phiên

Hermes cung cấp đầy đủ các lệnh quản lý phiên thông qua
`Hermes sessions

:

### Liệt kê các phiên

``` bash

# List recent sessions (default: last 20)
Hermes sessions list

# Filter by platform
Hermes sessions list --source Telegram

# Show more sessions
Hermes sessions list --limit 50

`
``Khi phiên có tiêu đề, đầu ra sẽ hiển thị tiêu đề, bản xem trước và dấu thời gian tương đối:

`
Title Preview Last Active ID
────────────────────────────────────────────────────────────────────────────────────────────────
refactoring auth Help me refactor the auth module please 2h ago 20250305_091523_a
my project #3 Can you check the test failures? yesterday 20250304_143022_e
— What's the weather in Las Vegas? 3d ago 20250303_101500_f

`
``Khi không có phiên nào có tiêu đề, định dạng đơn giản hơn sẽ được sử dụng:

`
Preview Last Active Src ID
──────────────────────────────────────────────────────────────────────────────────────
Help me refactor the auth module please 2h ago CLI 20250305_091523_a
What's the weather in Las Vegas? 3d ago tele 20250303_101500_f

`

### Xuất phiên

``` bash

# Export all sessions to a JSONL file
Hermes sessions export backup.JSONl

# Export sessions from a specific platform
Hermes sessions export Telegram-history.JSONl --source Telegram

# Export a single session
Hermes sessions export session.JSONl --session-id 20250305_091523_a1b2c3d4

`
``Các tệp đã xuất chứa một đối tượng JSON trên mỗi dòng với siêu dữ liệu phiên đầy đủ và tất cả thông báo.

### Xóa phiên

``` bash

# Delete a specific session (with confirmation)
Hermes sessions delete 20250305_091523_a1b2c3d4

# Delete without confirmation
Hermes sessions delete 20250305_091523_a1b2c3d4 --yes

`

### Đổi tên phiên

``` bash

# Set or change a session's title
Hermes sessions rename 20250305_091523_a1b2c3d4 "debugging auth flow"

# Multi-word titles don't need quotes in the CLI
Hermes sessions rename 20250305_091523_a1b2c3d4 debugging auth flow

`
``Nếu tiêu đề đã được sử dụng bởi một phiên khác thì sẽ hiển thị lỗi.

### Cắt tỉa các phiên cũ

``` bash

# Delete ended sessions older than 90 days (default)
Hermes sessions prune

# Custom age threshold
Hermes sessions prune --older-than 30

# Only prune sessions from a specific platform
Hermes sessions prune --source Telegram --older-than 60

# Skip confirmation
Hermes sessions prune --older-than 30 --yes

`

:::info
Việc cắt bớt chỉ xóa các phiên **đã kết thúc** (các phiên đã được kết thúc rõ ràng hoặc tự động đặt lại). Các phiên hoạt động không bao giờ bị cắt bớt.
:::

### Thống kê phiên

``` bash
Hermes sessions stats

`
``Đầu ra:

`
Total sessions: 142
Total messages: 3847
CLI: 89 sessions
Telegram: 38 sessions
Discord: 15 sessions
Database size: 12.4 MB

`
``Để phân tích sâu hơn — mức sử dụng mã thông báo, ước tính chi phí, phân tích công cụ và mẫu hoạt động — hãy sử dụng [XPROTECTX89XPROTECTX](/docs/reference/CLI-commands#Hermes-insights).

## Công cụ tìm kiếm phiên

Tác nhân có công cụ
`session_search
` tích hợp sẵn để thực hiện tìm kiếm toàn văn bản trên tất cả các cuộc hội thoại trước đây bằng công cụ FTS5 của SQLite — và cho phép tác nhân cuộn qua bất kỳ phiên nào nó tìm thấy. Không có cuộc gọi LLM, không tóm tắt, không cắt ngắn. Mọi hình dạng đều trả về các thông báo thực tế từ DB.

### Ba hình kêu gọi

Công cụ này suy ra những gì bạn muốn từ những đối số bạn đặt. Không có tham số
`mode

.

**1. Khám phá - vượt qua
`query

:**

`Python
session_search(query="auth refactor", limit=3)

`
``Chạy FTS5, loại bỏ các lần truy cập trùng lặp theo dòng phiên, trả về N phiên hàng đầu. Mỗi kết quả mang:
-
`session_id

,
`title

,
`when

,
`source

`
-
`snippet

- Đoạn trích trận đấu được đánh dấu bằng FTS5
-
`bookend_start
`3 tin nhắn hỗ trợ+người dùng đầu tiên của phiên (mục tiêu/khởi động)
-
`messages
` — ±5 tin nhắn xung quanh trận đấu FTS5, với tin nhắn cố định được gắn cờ (lần truy cập trong ngữ cảnh)
-
`bookend_end

- 3 tin nhắn hỗ trợ+người dùng cuối cùng của phiên (độ phân giải/quyết định)
-
`match_message_id

,
`messages_before

,
`messages_after
`Bookends + window cùng nhau xây dựng lại mục tiêu → trận đấu → giải quyết mà không phải trả tiền cho toàn bộ bảng điểm. Thời gian tường thông thường: 15–50 mili giây trên một phiên DB thực.

**2. Cuộn - chuyển
`session_id

+
`around_message_id

:**

``` python
session_search(session_id="20260510_174648_805cc2", around_message_id=590803, window=10)

`
``Trả về một cửa sổ chứa các thông báo ±
`window
` được căn giữa vào điểm neo. Không có FTS5, không có phần kết nối - chỉ là phần nhỏ. Sử dụng sau cuộc gọi khám phá khi bạn cần nhiều ngữ cảnh hơn cửa sổ mặc định ±5.
- Để cuộn **tiến lên**: chuyển
`messages[-1].id
` trở lại dưới dạng
`around_message_id

`
- Để cuộn **ngược lại**: chuyển
`messages[0].id
` trở lại là
`around_message_id

- Thông báo ranh giới xuất hiện trong cả hai cửa sổ dưới dạng điểm đánh dấu định hướng
- Khi
`messages_before
` hoặc
`messages_after
` nhỏ hơn
`window

, bạn đang ở đầu hoặc cuối phiên

Thời gian treo tường thông thường: 1–2 mili giây cho mỗi cuộc gọi cuộn.

**3. Duyệt qua - không có đối số:**

``` python
session_search()

`
``Trả về các phiên gần đây theo thứ tự thời gian (tiêu đề, bản xem trước, dấu thời gian). Hữu ích khi người dùng hỏi "tôi đang làm gì" mà không đặt tên chủ đề.

### Cú pháp truy vấn FTS5

Chế độ từ khóa hỗ trợ cú pháp truy vấn FTS5 tiêu chuẩn:
- Từ khóa đơn giản:
`Docker deployment
` (FTS5 mặc định là AND)

- Cụm từ:

"exact phrase"

- Boolean:
`Docker OR Kubernetes

,
`Python NOT java

- Tiền tố:
`deploy*

### Tham số tùy chọn
-
`sort
`
`newest
` hoặc
`oldest

, đứng đầu bảng xếp hạng FTS5. Bỏ qua thứ tự chỉ liên quan (mặc định; phù hợp cho việc thu hồi thăm dò). Sử dụng
`newest
` cho câu hỏi "chúng ta đã để X ở đâu",
`oldest
` cho câu hỏi "X bắt đầu như thế nào".
-
`role_filter
` — bao gồm các vai trò được phân tách bằng dấu phẩy. Discovery mặc định là
`user,assistant
` (đầu ra của công cụ thường có tiếng ồn). Vượt qua
`user,assistant,tool
` để bao gồm đầu ra công cụ (hành vi của công cụ gỡ lỗi) hoặc
`tool
` để chỉ đầu ra công cụ tìm kiếm.

### Khi nó được sử dụng

Tác nhân được nhắc sử dụng tìm kiếm phiên tự động:`> *"Khi người dùng tham chiếu nội dung nào đó từ cuộc trò chuyện trước đây hoặc bạn nghi ngờ có ngữ cảnh liên quan trước đó tồn tại, hãy sử dụng session_search để nhớ lại nội dung đó trước khi yêu cầu họ lặp lại."*

Các yếu tố kích hoạt điển hình: "chúng tôi đã làm điều này trước đây", "nhớ khi nào", "lần trước", "như tôi đã đề cập" hoặc bất kỳ tham chiếu nào đến một dự án/người/khái niệm không có trong cửa sổ hiện tại.

## Theo dõi phiên trên mỗi nền tảng

### Phiên cổng

Trên nền tảng nhắn tin, các phiên được khóa bằng khóa phiên xác định được tạo từ nguồn tin nhắn:

| Loại trò chuyện | Định dạng khóa mặc định | Hành vi |
|----------|----------------------|----------|
| Telegram DM |

agent:main:Telegram:dm:&lt;chat_id
` | Một phiên cho mỗi cuộc trò chuyện DM |
| Discord DM |

agent:main:Discord:dm:&lt;chat_id
` | Một phiên cho mỗi cuộc trò chuyện DM |
| WhatsApp DM |

agent:main:WhatsApp:dm:&lt;canonical_identifier
` | Một phiên cho mỗi người dùng DM (Bí danh LID/điện thoại thu gọn thành một danh tính khi tồn tại ánh xạ) |
| Trò chuyện nhóm |

agent:main:&lt;platform:group:&lt;chat_id:&lt;user_id
` | Mỗi người dùng trong nhóm khi nền tảng hiển thị ID người dùng |
| Chủ đề/chủ đề nhóm |

agent:main:&lt;platform:group:&lt;chat_id:&lt;thread_id
` | Phiên chia sẻ cho tất cả người tham gia chủ đề (mặc định). Mỗi người dùng có
`thread_sessions_per_user: true

. |
| Kênh |

agent:main:&lt;platform:channel:&lt;chat_id:&lt;user_id
` | Mỗi người dùng bên trong kênh khi nền tảng hiển thị ID người dùng |

Khi Hermes không thể nhận được mã định danh người tham gia cho cuộc trò chuyện được chia sẻ, cuộc trò chuyện đó sẽ quay trở lại một phiên chia sẻ cho phòng đó.

### Phiên nhóm chia sẻ và nhóm biệt lập

Theo mặc định, Hermes sử dụng
`group_sessions_per_user: true
` trong
`config.yaml

. Điều đó có nghĩa là:
- Alice và Bob đều có thể nói chuyện với Hermes trên cùng một kênh Discord mà không cần chia sẻ lịch sử bản ghi
- tác vụ nặng về công cụ của một người dùng không làm ô nhiễm cửa sổ ngữ cảnh của người dùng khác
- việc xử lý ngắt cũng được duy trì cho mỗi người dùng vì khóa tác nhân đang chạy khớp với khóa phiên bị cô lập

Thay vào đó, nếu bạn muốn một "bộ não phòng" được chia sẻ, hãy đặt:

``` yaml
group_sessions_per_user: false

`
``Điều đó sẽ hoàn nguyên các nhóm/kênh về một phiên chia sẻ duy nhất cho mỗi phòng, giúp duy trì bối cảnh trò chuyện được chia sẻ nhưng cũng chia sẻ chi phí mã thông báo, trạng thái gián đoạn và sự phát triển của bối cảnh.

### Chính sách đặt lại phiên

Phiên cổng được tự động đặt lại dựa trên các chính sách có thể định cấu hình:
- **nhàn rỗi** — đặt lại sau N phút không hoạt động

- **hàng ngày** — đặt lại vào một giờ cụ thể mỗi ngày
- **cả hai** — đặt lại theo điều kiện nào đến trước (nhàn rỗi hoặc hàng ngày)
- **không** — không bao giờ tự động đặt lại

Trước khi một phiên được tự động đặt lại, nhân viên sẽ được phép lưu bất kỳ kỷ niệm hoặc kỹ năng quan trọng nào từ cuộc trò chuyện.

Các phiên có **quy trình nền đang hoạt động** không bao giờ được tự động đặt lại, bất kể chính sách.## Vị trí lưu trữ

| Cái gì | Đường dẫn | Mô tả |
|------|------|-------------|
| Cơ sở dữ liệu SQLite |

~/.Hermes/state.db
` | Tất cả siêu dữ liệu phiên + tin nhắn với FTS5 |
| Tin nhắn cổng |

~/.Hermes/state.db
` | SQLite — kho lưu trữ chuẩn cho tất cả các thông báo phiên |
| Chỉ số định tuyến cổng |

~/.Hermes/sessions/sessions.JSON
` | Ánh xạ khóa phiên tới ID phiên hoạt động (siêu dữ liệu gốc, cờ hết hạn) |

Cơ sở dữ liệu SQLite sử dụng chế độ WAL cho các trình đọc đồng thời và một trình ghi duy nhất, rất phù hợp với kiến ​​trúc đa nền tảng của cổng.

:::note[Legacy JSONL transcripts]
Các phiên được tạo trước khi state.db trở thành phiên bản chuẩn có thể còn sót lại
Các tệp

*.JSONl
` trong

~/.Hermes/sessions/

. Chúng không còn được viết hoặc
được đọc bởi Hermes. An toàn để xóa sau khi xác minh phiên tương ứng
tồn tại trong state.db.
:::

### Lược đồ cơ sở dữ liệu

Các bảng chính trong
`state.db

:
- **sessions** — siêu dữ liệu phiên (id, nguồn, user_id, model, tiêu đề, dấu thời gian, số lượng mã thông báo). Tiêu đề có một chỉ mục duy nhất (cho phép tiêu đề NULL, chỉ tiêu đề không NULL phải là duy nhất).
- **tin nhắn** — toàn bộ lịch sử tin nhắn (vai trò, nội dung, tool_calls, tool_name, token_count)
- **messages_fts** — Bảng ảo FTS5 để tìm kiếm toàn văn trên nội dung tin nhắn

## Hết hạn phiên và dọn dẹp

### Tự động dọn dẹp
- Phiên cổng tự động đặt lại dựa trên chính sách đặt lại đã định cấu hình
- Trước khi đặt lại, tác nhân lưu ký ức và kỹ năng từ phiên hết hạn
- Tự động cắt tỉa chọn tham gia: khi
`sessions.auto_prune
`
`true

, các phiên đã kết thúc cũ hơn
`sessions.retention_days
` (mặc định 90) sẽ được cắt bớt khi khởi động CLI/gateway
- Sau khi cắt bớt các hàng thực sự đã xóa,
`state.db
` được
`VACUUM
`ed để lấy lại dung lượng ổ đĩa (SQLite không thu nhỏ tệp ở dạng DELETE đơn giản)
- Việc cắt tỉa chạy tối đa một lần cho mỗi
`sessions.min_interval_hours
` (mặc định 24); dấu thời gian lần chạy cuối cùng được theo dõi bên trong chính
`state.db
` nên nó được chia sẻ trên mọi quy trình của Hermes trong cùng một
`Hermes_HOME
``Mặc định là **tắt** — lịch sử phiên có giá trị đối với việc thu hồi
`session_search
` và việc âm thầm xóa nó có thể khiến người dùng ngạc nhiên. Kích hoạt trong

~/.Hermes/config.yaml

:

``` yaml
sessions:
auto_prune: true # opt in — default is false
retention_days: 90 # keep ended sessions this many days
vacuum_after_prune: true # reclaim disk space after a pruning sweep
min_interval_hours: 24 # don't re-run the sweep more often than this

`
``Các phiên hoạt động không bao giờ được tự động cắt bớt, bất kể độ tuổi.

### Dọn dẹp thủ công

`bash

# Prune sessions older than 90 days
Hermes sessions prune

# Delete a specific session
Hermes sessions delete &lt;session_id

# Export before pruning (backup)
Hermes sessions export backup.JSONl
Hermes sessions prune --older-than 30 --yes

`

:::tip
Cơ sở dữ liệu phát triển chậm (điển hình: 10-15 MB cho hàng trăm phiên) và lịch sử phiên cho phép
`session_search
` thu hồi qua các cuộc hội thoại trước đây, do đó tính năng tự động cắt bớt các gói đã bị vô hiệu hóa. Hãy bật tính năng này nếu bạn đang chạy một khối lượng công việc cổng/cron nặng trong đó
`state.db
` đang ảnh hưởng đáng kể đến hiệu suất (chế độ lỗi được quan sát: 384 MB state.db với ~1000 phiên làm chậm các phần chèn FTS5 và danh sách

/resume

). Sử dụng
`Hermes sessions prune
` để dọn dẹp một lần mà không cần bật tính năng quét tự động.
:::