mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-18 14:52:04 +00:00
docs(sessions): clarify sessions.json is the gateway routing index, not the session list (#51726)
Users who inspect ~/.hermes/sessions/sessions.json see only gateway entries (e.g. agent:main:whatsapp:dm:...) and mistake it for the session index that hermes sessions list / /sessions read — which is actually state.db. Issue #49361 reported CLI sessions as 'invisible' on this premise. - gateway/session.py: write a self-documenting _README sentinel at the top of sessions.json explaining it's the gateway routing index and that ALL sessions (CLI/TUI/gateway) live in state.db; skip _-prefixed keys on load so the sentinel never round-trips into a SessionEntry. - Harden every sessions.json reader against the sentinel: mcp_serve loader, gateway/mirror.py, gateway/channel_directory.py all skip _-prefixed keys. - docs/user-guide/sessions.md: warning callout naming the exact symptom. - tests: assert prune ignores metadata sentinels; add round-trip coverage.
This commit is contained in:
parent
7ff48a6291
commit
0ef86febe2
6 changed files with 101 additions and 4 deletions
|
|
@ -494,6 +494,23 @@ Sessions with **active background processes** are never auto-reset, regardless o
|
|||
|
||||
The SQLite database uses WAL mode for concurrent readers and a single writer, which suits the gateway's multi-platform architecture well.
|
||||
|
||||
:::warning `sessions.json` is not the session list
|
||||
`~/.hermes/sessions/sessions.json` is the **gateway routing index** — it maps
|
||||
messaging session keys (`agent:main:<platform>:...`) to active session IDs.
|
||||
It only ever contains gateway/messaging entries, so if you run a messaging
|
||||
platform you'll see only those (e.g. `agent:main:whatsapp:dm:...`).
|
||||
|
||||
This is **expected** and does **not** mean your CLI sessions are missing.
|
||||
`hermes sessions list`, `/sessions`, and the dashboard all read `state.db`,
|
||||
which holds **every** session (CLI, TUI, and gateway). The `/save` snapshots
|
||||
under `~/.hermes/sessions/saved/*.json` are convenience exports, not the index.
|
||||
|
||||
If CLI sessions genuinely don't appear in `hermes sessions list`, the cause is
|
||||
`state.db` not receiving them — run `hermes sessions repair` and watch for a
|
||||
`⚠ Session store unavailable` warning at CLI startup, which means SQLite
|
||||
persistence failed for that run.
|
||||
:::
|
||||
|
||||
:::note Legacy JSONL transcripts
|
||||
Sessions created before state.db became canonical may have leftover
|
||||
`*.jsonl` files in `~/.hermes/sessions/`. They are no longer written or
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue