본문으로 건너뛰기

sessions

anchor alias
anchor alias
anchor alias

세션

Hermes Agent는 세션으로 모든 대화를 자동으로 저장합니다. 세션은 대화 재시작, 교차점 검색 및 전체 대화 기록 관리가 가능합니다.

세션 작업 방법

모든 대화 - CLI, Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Teams 또는 기타 메시징 플랫폼의 경우 전체 메시지 기록과 세션으로 저장됩니다. 세션은 두 가지 보완 시스템에서 추적됩니다.

  1. SQLite 데이터베이스 (~/.hermes/state.db) - FTS5 전체 텍스트 검색이있는 구조 세션 메타 데이터
  2. JSONL 성적 (~/.hermes/sessions/) - 도구 통화 (게이트웨이)를 포함한 원시 대화 성적표

SQLite 데이터베이스 상점:

  • 세션 ID, 소스 플랫폼, 사용자 ID
  • Session title (독성, 인문)
  • 모델명 및 구성
  • 시스템 신속한 스냅샷
  • 전체 메시지 내역 (롤, 내용, 도구 통화, 도구 결과)
  • 토큰 수 (입력/출력)
  • 타임스탬프 (started at, end at)
  • 부모 세션 ID (압축 트리거 세션 분할)

컨텍스트에 어떤 조사

헤르메스 상점 세션 역사 그래서 대화를 재개할 수 있습니다, 하지만 그것은 하지 않습니다 모든 바이트를 다시 종료하세요. 각 차례에, 모델은 볼 선택한 시스템 프롬프트, 현재 대화 창 및 내용 Hermes 명시적으로 그 차례로 주사합니다.

미디어 첨부 파일은 turn-scoped 입력으로 처리됩니다.

  • 이미지는 다음 모델 호출에 기본적으로 붙어있을 수 있습니다, 또는 미리 alyzed 활성 모델이 네이티브 비전을 지원하지 않을 때 텍스트 설명.
  • 오디오는 Speech-to-text가 구성될 때 텍스트로 변환됩니다.
  • 텍스트 문서는 포함 된 추출 된 텍스트를 가질 수 있습니다. 다른 문서 유형 일반적으로 저장된 로컬 경로와 짧은 참고로 표현됩니다.
  • 첨부 경로 및 추출 / 파생 텍스트는 성적표에 나타날 수 있지만, 원시 이미지, 오디오, 또는 바이너리 파일 바이트는 반복적으로 복사되지 않습니다 미래의 프롬프트.

예를 들어, 사용자가 이미지를 보내고 Hermes를 요청하면, Hermes는 시각으로 한 번 이미지를 검사하고 이미지 처리를 실행할 수 있습니다. 스크립트. 미래는 자동으로 원본 JPEG를 컨텍스트에서 수행하지 않습니다. 그들은 사용자와 같은 대화로 작성된 것만 수행합니다. 요청, 짧은 이미지 설명, 로컬 캐시 경로, 또는 최종 조수 응답.

컨텍스트 성장의 가장 일반적인 원인은 미디어 파일 자체가 아닙니다. 그것은 서구 텍스트: 과거 성적표, 전체 로그, 큰 도구 출력, 긴 diffs, 반복된 상태 보고 및 상세한 증거 덤프. Prefer summaries, 파일 큰 artifacts를 복사하는 경로, 집중된 발췌 및 공구 백업 보기 채팅하기

가격

세션이 길어질 때 /compress를 사용하여 /new는 신선한 실을 위해 hermes sessions prune는 이전 종료 세션을 삭제할 때만 저장. 압축은 활성 컨텍스트를 감소시킵니다. 그것은 개인 정보 보호 삭제가 아닙니다. 주요 특징

세션 소스

각 세션은 소스 플랫폼으로 태그됩니다:

소스설명
cli인터렉티브 CLI(hermes 또는 hermes chat)
telegram텔레그램 메신저
discordDiscord 서버/DM
slack슬랙 작업 공간
whatsappWhatsApp 메신저
signal신호 메신저
matrix모체 객실 및 DM
mattermost가장 큰 채널
email이메일(IMAP/SMTP)
smsTwilio를 통한 SMS
dingtalkDingTalk 메신저
feishu태슈/라크 메신저
wecom(주)씨컴
weixin웨이신
bluebubblesBlueBubbles macOS 서버를 통한 Apple iMessage
qqbotQQ Bot (Tencent QQ) 공식 API v2
homeassistant홈 보조 대화
webhook들어오는 웹훅
api-serverAPI 서버 요청
acpACP 편집기 통합
cron시간표
batch일괄 처리 실행

CLI 세션 이력서

--continue 또는 --resume를 사용하여 CLI에서 이전 대화를 구합니다.

계속 마지막 세션

사이트맵

이것은 SQLite 데이터베이스에서 가장 최근의 cli 세션을보고 전체 대화 기록을로드합니다.

이름에 의해 이력서

제목(Session Naming을 참고해 주세요)을 주셨다면, 이름을 다시 시작할 수 있습니다.

# 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"

이력서 특정 세션

사이트맵

세션 ID는 CLI 세션을 종료하면 hermes sessions list로 찾을 수 있습니다.

이력서에 대화

세션을 재개할 때, Hermes는 입력 프롬프트 전에 스타일링 패널에서 이전 대화의 컴팩트한 리캡을 표시합니다.

Stylized preview of the Previous Conversation recap panel shown when resuming a Hermes session. 코드 <p className="docs-figure-caption">Resume 모드는 최근 사용자와 조수가 라이브 프롬프트로 돌아가기 전에 컴팩트한 리캡 패널을 보여줍니다. </p> 코드

재캡:

  • Showsuser 메시지(금 ) 및시각 응답 (녹색 ) -Truncates 긴 메시지(사용자 300개, 조수 200개, 조수 3개)
  • Collapses 도구 호출 도구 이름 (예: [3 tool calls: terminal, web_search]) -Hides 시스템 메시지, 도구 결과 및 내부 이유 -Caps 마지막 10 거래소에서 "... N 이전 메시지..." 표시
  • usesdim styling 활성 대화에서 구별하기

리캡을 비활성화하고 ~/.hermes/config.yaml에서 설정된 최소 1 라이너 동작을 유지하려면:

사이트맵

가격

세션 ID는 YYYYMMDD_HHMMSS_&lt;hex&gt; 형식을 따릅니다. CLI/TUI 세션은 6-char hex suffix (예: 20250305_091523_a1b2c3)를 사용하며 게이트웨이 세션은 8-char suffix (예: 20250305_091523_a1b2c3d4)를 사용합니다. -c-r와 함께 전체 또는 고유 접두사로 이력서 할 수 있습니다. 주요 특징

크로스 플랫폼 Handoff

CLI 세션에서 /handoff &lt;platform&gt;를 사용하여 라이브 대화를 메시징 플랫폼의 홈 채널로 전송하세요. 이 에이전트는 CLI가 꺼진 곳을 정확히 파악합니다. — 같은 세션 ID, 전체 역할 인식, 도구 통화 및 모든.

# Inside a CLI session
/handoff telegram

무슨 일이:

  1. CLI는 &lt;platform&gt;가 활성화되고 홈 채널 설정 (지하된 /sethome는 목적지 채팅에서 한 번 구성).
  2. CLI는 세션이 종료되고 block-polls는 Gateway를 나타냅니다. 에이전트가 중간 회전 인 경우 거부합니다. 현재 응답을 처음 완료하세요.
  3. 게이트웨이 watcher는 handoff를 주장하고 신선한 실을 위한 목적지 접합기를 요구합니다: -Telegram — 새로운 포럼 주제를 엽니다 (DM 주제 Bot API 9.4+ 주제 모드는 채팅에서 활성화, 또는 포럼 supergroup 주제).
  • Discord - 홈 텍스트 채널에서 1440 분 자동 정렬 스레드를 생성합니다.
  • Slack - 씨앗 메시지를 게시하고 스레드 앵커로 ts를 사용합니다.
  • WhatsApp / Signal / Matrix / SMS - 네이티브 스레드가없고 홈 채널으로 돌아갑니다.
  1. 게이트웨이는 기존 CLI 세션 ID에 목적지 키를 다시 묶습니다. 그런 다음 합성 사용자가 에이전트를 확인하고 요약하도록 요청합니다. 새 스레드의 응답 땅.
  2. 게이트웨이가 성공할 때, CLI는 /resume 힌트를 인쇄하고 깨끗하게 종료합니다.
나중에 이 CLI에 의존: /resume my-session-title
  1. 그 시점에서 대화는 플랫폼에 살고 있습니다. 새로운 스레드에서 대답 — 그 채널에서 인증 된 사람이 같은 세션을 공유하고, 스레드의 나중에 실제 사용자 메시지는 user_id없이 스레드 세션 키가 완벽하게 결합하기 때문에.

CLI로 돌아가기: 데스크톱으로 돌아가고 싶다면 /resume &lt;title&gt; (또는 쉘에서 hermes -r "&lt;title&gt;")를 실행하고 플랫폼이 왼쪽을 선택합니다.

** 실패 모드:**

  • 홈 채널 구성 없음 → CLI는 /sethome 힌트로 거부합니다.
  • Platform not enable / Gateway not running → 명확한 메시지와 CLI 세션을 사용하여 60s에서 CLI 시간.
  • 스레드 생성은 실패 (출발, 주제 모드 오프) → 집 채널에 다시 떨어 뜨리고 여전히 완료; 스레드 격리 없음 그러나 handoff 자체 작품.
  • adapter.send는 실패합니다 (한도, 일시적인 API 과실) → handoff는 이유로 실패했습니다; 행은 이렇게 당신을 retry 할 수 있습니다.

**Limitation 알기: ** 멀티 사용자 그룹 홈 채널과 비 스레드 캡블 플랫폼, DM 스타일 세션으로 합성 턴 키. 자체 DM 홈 채널 (일반 설정)에 대한이 작품은 실제로 공유 그룹 채팅에 이상적입니다. 스레드 커버 Telegram / Discord / Slack - 훨씬 일반적인 경우 - 그래서 대부분의 설정은이를 명중하지 않습니다.

세션 Naming

세션을 제공하므로 찾을 수 있고 쉽게 이력서 할 수 있습니다.

자동 접착된 제목

Hermes는 첫 번째 교환 후 각 세션에 대한 짧은 설명 제목 (3–7 단어)을 자동으로 생성합니다. 이것은 빠른 보조 모델을 사용하여 배경 스레드에서 실행되므로 대기 시간이 없습니다. hermes sessions list 또는 hermes sessions browse로 세션을 검색 할 때 자동 생성 된 제목이 표시됩니다.

세션 당 한 번만 불을 자동 태우고 이미 제목을 수동으로 설정하면 건너 뛸 수 있습니다.

아이템을 수동으로 설정

/title slash 명령을 사용하여 채팅 세션 (CLI 또는 게이트웨이) 내부에:

/title my research project

제목은 즉시 적용됩니다. 세션이 아직 데이터베이스에서 생성되지 않은 경우 (예를 들어, 첫 번째 메시지를 보내기 전에 /title를 실행), 그것은 한 번 세션이 시작됩니다.

명령줄에서 기존 세션을 변경할 수 있습니다:

사이트맵

제목 규칙

-Unique — 두 세션은 동일한 타이틀을 공유할 수 없습니다.

  • ** 최대 100 문자** - 목록 출력을 깨끗하게 유지
  • Sanitized - 제어 문자, 0-width chars, RTL 재정의s는 자동으로 벗겨집니다.
  • Normal Unicode는 훌륭한 - 이모티콘, CJK, 악센트 문자 모든 작업

압축에 자동 선량

세션의 컨텍스트가 압축될 때 (/compress 또는 자동적으로), Hermes는 새로운 오염 세션을 만듭니다. 원래 제목을 가지고 있다면, 새로운 세션은 자동으로 번호 제목을 가져옵니다:

사이트맵

name (hermes -c "my project")에 의해 이력서 할 때 자동으로 선량에 가장 최근 세션을 선택합니다.

/제안 플랫폼

/title 명령은 모든 게이트웨이 플랫폼 (Telegram, Discord, Slack, WhatsApp)에서 작동합니다.

  • /title My Research - 세션 타이틀 설정
  • /title - 현재 제목을 표시합니다.

세션 관리 명령

Hermes는 hermes sessions를 통해 세션 관리 명령의 전체 세트를 제공합니다.

리스트 세션

# 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

세션에는 제목이 있을 때, 출력은 제목, 미리보기 및 상대적인 타임스탬프를 보여줍니다:

모델 번호: ``` 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


세션이 제목이 없다면, 간단한 형식이 사용됩니다.

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


## 수출 세션

```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

내보내는 파일에는 전체 세션 메타데이터와 모든 메시지가 있는 라인당 하나의 JSON 객체가 포함되어 있습니다.

세션 삭제

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

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

세션 이름

# 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

제목이 이미 다른 세션에 의해 사용중인 경우 오류가 표시됩니다.

#Pune 오래된 세션

# 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
정보

Pruning only deletesended session ( 명시적으로 종료되거나 자동 재설정 된 세션). 활동 세션은 결코 실패하지 않습니다. 주요 특징

세션 통계

hermes sessions stats

산출:

Total sessions: 142
Total messages: 3847
cli: 89 sessions
telegram: 38 sessions
discord: 15 sessions
Database size: 12.4 MB

더 깊은 분석 - 토큰 사용, 비용 견적, 도구 고장 및 활동 패턴 - 사용 hermes insights.

세션 검색 도구

이 에이전트는 SQLite의 FTS5 엔진을 사용하여 모든 과거 대화를 통해 전체 텍스트 검색을 수행하는 내장 session_search 도구가 있습니다.

어떻게 작동합니까?

  1. FTS5는 relevance에 의해 순위를 매기는 일치한 메시지를 검색합니다
  2. 세션별 그룹 결과, 상위 N 고유 세션(기본 3)
  3. 각 세션의 대화를로드, ~ chars에 따라 일치
  4. 집중된 summaries를 위한 빠른 요약 모형에 보내십시오
  5. 메타데이터 및 주변 상황과의 정당화

FTS5 Query 구문

검색은 표준 FTS5 쿼리 문법을 지원합니다:

  • 간단한 키워드: docker deployment
  • 숙어: "exact phrase"
  • 볼란: docker OR kubernetes, python NOT java
  • 접두사: deploy*

사용할 때

에이전트는 세션 검색을 자동으로 사용하는 것이 좋습니다:

"사용자가 과거 대화에서 무언가를 참조하거나 관련 이전 컨텍스트가 존재하는 경우, session search를 사용하여 자신을 반복하기 전에 호출합니다."

Per-Platform 세션 추적

Gateway 세션

메시징 플랫폼에서 세션은 메시지 소스에서 구축 된 deterministic 세션 키에 의해 키워집니다.

채팅 타입기본 키 형식Behavior
전보 DMagent:main:telegram:dm:<chat_id>DM 채팅 1회
Discord DMagent:main:discord:dm:<chat_id>DM 채팅 1회
WhatsApp DMagent:main:whatsapp:dm:<canonical_identifier>DM 사용자별 1회(LID/phone aliases 붕괴)
그룹 채팅agent:main:<platform>:group:<chat_id>:<user_id>플랫폼이 사용자 ID를 노출했을 때 그룹 내의 사용자
그룹 실/토닉agent:main:<platform>:group:<chat_id>:<thread_id>모든 실 참가자들을 위한 공유 세션(기본). thread_sessions_per_user: true와 사용자.
채널agent:main:<platform>:channel:<chat_id>:<user_id>플랫폼이 사용자 ID를 노출했을 때 채널 내부의 사용자

헤르메스가 공유 채팅을 위해 참가자 식별자를 얻을 수 없을 때, 그 방에 대한 공유 세션으로 돌아갑니다.

공유 대 Isolated 그룹 세션

기본적으로 Hermes는 group_sessions_per_user: trueconfig.yaml로 사용합니다. 즉:

  • Alice와 Bob은 transcript 역사를 공유하지 않고 동일한 Discord 채널에서 Hermes와 대화 할 수 있습니다.
  • 하나의 사용자의 긴 도구 - 무거운 작업은 다른 사용자의 컨텍스트 창을 오염시키지 않습니다.
  • 런닝 시약키가 고립된 세션키를 일치하기 때문에 중단 처리는 또한 per-user를 체재합니다

대신 "room Brain"을 공유하려는 경우, 설정:

group_sessions_per_user: false

즉, 그룹/채널은 공유 대화형 컨텍스트를 보존하고 토큰 비용, 중단 상태 및 컨텍스트 성장을 공유합니다.

세션 리셋 정책

Gateway 세션은 configurable 정책을 기반으로 자동으로 재설정됩니다.

-idle - Inactivity의 N 분 후에 재설정 -daily — 매일 특정 시간에 재설정

  • both — 어느 쪽이 첫 번째 (idle 또는 Daily)에 리셋
  • ** 아무도 ** - 자동 재설정하지

세션이 자동 재설정되기 전에, 에이전트는 대화에서 중요한 기억이나 기술을 저장하는 차례로 제공됩니다.

active background process를 사용한 세션은 결코 자동 재설정이 불가능합니다.

저장 위치

설명
SQLite 데이터베이스~/.hermes/state.db
게이트웨이 성적~/.hermes/sessions/
게이트웨이 인덱스~/.hermes/sessions/sessions.json

SQLite 데이터베이스는 동시 리더 및 단일 작가를위한 WAL 모드를 사용합니다. 게이트웨이의 멀티 플랫폼 아키텍처에 적합합니다.

데이터베이스 Schema

state.db의 주요 테이블:

  • sessions — 세션 메타데이터 (id, source, user id, model, title, 타임스탬프, 토큰 수). 제목은 고유 한 인덱스 (NULL 제목을 허용, 비-NULL은 고유해야합니다).
  • messages - 전체 메시지 내역 (로, 내용, tool call, tool name, token count)
  • messages fts - 메시지 내용의 전체 텍스트 검색에 대한 FTS5 가상 테이블

세션 만기 및 정리

자동 정리

  • Gateway sessions 자동 재설정 정책
  • 재설정하기 전에, 에이전트는 만료 세션에서 기억과 기술을 저장
  • 옵트 인 자동 실행: sessions.auto_prunetrue 인 경우 sessions.retention_days (기본 90)보다 오래된 세션을 종료하면 CLI / 게이트웨이 시작에 pruned
  • 실제로 행을 제거 한 후 state.db는 입니다 디스크 공간을 재구성하기 위해 Qed (SQLite는 일반 DELETE에서 파일을 축소하지 않습니다)
  • Pruning는 sessions.min_interval_hours (과태 24); 마지막 실행 타임스탬프가 state.db 자체 안에 추적됩니다 그래서 동일한 HERMES_HOME에서 각 헤르메스 과정을 통해 공유됩니다

기본값은 ** off** — 세션 기록은 session_search 리콜에 대한 가치이며, 조용히 사용자가 놀라게 할 수 있습니다. ~/.hermes/config.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

활성 세션은 결코 자동 실행되지 않습니다, 연령에 관계없이.

수동 정리

# Prune sessions older than 90 days
hermes sessions prune

# Delete a specific session
hermes sessions delete &lt;session_id&gt;

# Export before pruning (backup)
hermes sessions export backup.jsonl
hermes sessions prune --older-than 30 --yes
가격

데이터베이스는 천천히 성장합니다 (일반: 세션의 수백에 대한 10-15 MB) 및 세션 역사는 과거 대화를 통해 session_search 리콜, 그래서 자동 선행이 불가능합니다. state.db가 의미있는 성능에 영향을 미치는 무거운 게이트웨이 / 크로스 워크로드를 실행하면 (비밀 실패 모드: 384 MB state.db ~ 1000 세션이 FTS5 인서트와 /resume 목록). hermes sessions prune를 사용하여 자동 청소를 켜지 않고 한 번 청소합니다. 주요 특징