mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-31 19:16:29 +00:00
fix(compress): gate N-user tail guarantee to actionable turns, behavior-preserving default
Follow-up fixes on top of the salvaged #22566 mechanism: - N-collector now counts only REAL actionable user turns via _is_actionable_user_turn + _is_synthetic_compression_user_turn — the same filter pair _find_last_user_message_idx uses post-#69291. The contributor's bare role=='user' + _is_context_summary_content check let blank platform echoes and continuation/todo rows consume N slots, silently degrading the guarantee. - Default flipped 3 -> 1 (behavior-preserving): a default of 3 was measured to change the tail cut on transcripts whose budget covers only the last turn. min_tail_user_messages=1 delegates to the existing single-user anchor; N>1 is opt-in, and the call site is gated so the default path is byte-identical to main. - Hardened config parse in agent_init (bool rejected, fractional floats rejected, floor 1) matching the max_attempts parser shape. - Wired the recurring external-PR config gaps: hermes_cli/config.py DEFAULT_CONFIG + cli-config.yaml.example (PR only had cli.py). - Regression tests: blank echoes / synthetic rows don't count toward N; tool-call/result pairs never split by the N-boundary (no-orphan both directions); N-guarantee wins over tail_token_budget and the _MAX_TAIL_MESSAGE_FLOOR (floor is a minimum, not a cap); default parity pin; DEFAULT_CONFIG pin.
This commit is contained in:
parent
a9c868225e
commit
d43cc2ca80
8 changed files with 282 additions and 15 deletions
|
|
@ -448,6 +448,15 @@ compression:
|
|||
# compression of older turns.
|
||||
protect_last_n: 20
|
||||
|
||||
# Minimum number of REAL (actionable) user messages guaranteed to survive in
|
||||
# the uncompressed tail (default: 1 = the existing single last-user anchor,
|
||||
# behavior-preserving). Raise to e.g. 3 to keep the last 3 real user turns
|
||||
# verbatim even when bulky tool outputs fill the tail token budget — blank
|
||||
# platform echoes, compaction handoffs, and synthetic continuation rows never
|
||||
# count toward N. The tail can exceed the token budget when this pulls the
|
||||
# cut back; the guarantee wins over the budget by design.
|
||||
min_tail_user_messages: 1
|
||||
|
||||
# Compression retry rounds before a turn gives up with "max compression
|
||||
# attempts reached" (default: 3, same as the previous hardcoded value).
|
||||
# Raise (e.g. 6) for tool-schema-heavy sessions where 3 rounds cannot bring
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue