mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-08-13 17:16:12 +00:00
Titling fired on the first response, so a session sat unnamed for the whole opening turn - p50 151s, p90 1212s across real sessions, because a turn is tool calls, not one round-trip. A turn that failed or was interrupted never got a title at all. Four surfaces each carried their own copy of the call. Move it into the shared turn prologue and split it in two: a deterministic title derived from the user's opening message, written inline before the model runs, then one small-model call that upgrades it. The response is constrained to a JSON object so there is no preamble to strip, and control wrappers are stripped rather than refused, so a slash command titles as what the user asked for instead of the command itself.