Skip to content

CLI resume UX: show summary + recent tail + full-history hint #5703

@xinbenlv

Description

@xinbenlv

Original Request

When I reseume a hermes session, why doesn't old message appear?
is it configurable auto hermes sessions browse/list when resuming a session?
I think what's going to be useful is a summary and last a few messages back and forth, like a termiinal, you know?
Yes, and then also mention if you want, here is a command you can run to show the full

Agent's Two Cents (could be wrong)

Everything below is the AI agent's best guess based on the current codebase.
Take with a grain of salt — the original request above is the only thing that came from a human.

Problem / Motivation

Resuming a CLI session currently feels half-amnesiac: Hermes restores conversation state for the model, but the human only gets a thin recap/tail. What users actually need on resume is a fast re-entry view: one short summary, a few recent back-and-forth turns, and an obvious escape hatch to the full transcript.

What We Checked

  • cli.py already had display.resume_display with full and minimal modes.
  • _display_resumed_history() rendered a compact recap capped at the last 10 exchanges.
  • Resume already loaded the prior transcript into conversation_history, so this was mostly a UX/display gap rather than missing persistence.
  • There was no proper session-summary view on resume.
  • There was no normal resume footer telling users how to inspect the full transcript.
  • Search for related issues in NousResearch/hermes-agent with keywords around resume/history/summary/tail did not surface an obvious duplicate.

Proposed Solution

Make the CLI resume experience show:

  1. a short session summary,
  2. the last N user/assistant exchanges in a terminal-style recap,
  3. a final hint for how to inspect the full transcript.

Implementation direction now in PR #5704:

  • resume_display=full → summary + recent tail + /history hint
  • resume_display=tail → tail only (closest to old behavior)
  • resume_display=minimal → one-line resume notice only
  • compressed/continued sessions mention that older raw history may live in an earlier linked session

Dependencies & Potential Blockers

No major blockers identified.

How to Validate

  • Start a CLI session, exchange several turns, exit, then resume with hermes -c.
  • Confirm the resumed view shows a short summary plus the last few turns.
  • Confirm resume_display=tail suppresses the summary and keeps a tail-only recap.
  • Confirm resume_display=minimal still suppresses the recap entirely.
  • Confirm the resume footer includes /history as the explicit full-history path.
  • Confirm compressed sessions mention that older history may live in an earlier linked session.
  • Confirm existing resume tests still pass alongside new behavior.

Best Validation Path

Run the targeted resume tests first, then do one manual CLI smoke test:

  1. source .venv/bin/activate && python -m pytest tests/test_resume_display.py -q -o addopts=''
  2. Start Hermes, have a short multi-turn conversation, quit, then resume with hermes -c
  3. Verify the resume panel shows:
    • Summary:
    • a few recent You: / Hermes: lines
    • Want the full transcript? Run /history.

Best Human Demo

Best concise demo: a terminal recording or GIF showing one full cycle:

  • start a short session
  • exit
  • run hermes -c
  • pause on the resume panel with the summary/tail/footer visible
  • optionally type /history immediately after to show the escape hatch works

If a recording is overkill, the next-best demo is a single screenshot of the resumed panel plus one screenshot of /history output.

Scope Estimate

medium

Key Files/Modules Likely Involved

  • cli.py
  • hermes_cli/config.py
  • hermes_cli/main.py
  • potentially hermes_state.py (if summary metadata gets persisted/reused)

Architecture Diagram

previous session in SessionDB
          |
          v
  resume / continue command
          |
          v
   load conversation_history
          |
          +------------------------------+
          |                              |
          v                              v
 summarize resumed session         extract last N exchanges
          |                              |
          +--------------+---------------+
                         |
                         v
             render resume preamble
      (summary + recent tail + full-history hint)
                         |
                         v
                    drop to prompt

Rough Implementation Sketch

  • Extend display.resume_display beyond minimal|full with a tail mode.
  • Reuse the existing resumed-history renderer for the tail portion instead of replacing it outright.
  • Generate a short summary from the restored conversation history, cheaply and deterministically.
  • Append a final hint such as Want the full transcript? Run /history.
  • If the resumed session is part of a compression chain, mention that the tail may be partial and point users at the full-session browsing path.

Open Questions

  • Is full the right name for “summary + tail”, or should config naming get more literal later?
  • Is /history sufficient as the full-transcript path, or does Hermes still want a dedicated /transcript command eventually?
  • Should resume summaries remain live/generated from history each time, or ever be cached in session metadata?

Potential Risks or Gotchas

  • A bad summary is worse than no summary, so the fallback behavior should stay useful even if summarization fails.
  • Very long or tool-heavy sessions may produce noisy tails unless tool chatter stays filtered.
  • Compression chains could confuse users unless the UI explicitly explains when they are only seeing the recent continuation.

Related Issues

Suggested priority: p2
Dependency posture: NoNewDependencies
Agent feasibility: AgentsCanDo, AgentsValidatable

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havecomp/cliCLI entry point, hermes_cli/, setup wizardtype/featureNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions