mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-31 19:16:29 +00:00
Port from google-gemini/gemini-cli#28429: the LoopDetectionService there gained detection of alternating/cyclic tool-call execution patterns (A->B->A->B and longer cycles) that per-call repetition counters structurally cannot see, because every call differs from its predecessor. Adapted to Hermes' ToolCallGuardrailController: - Track the per-turn sequence of exact tool-call signatures (success or failure alike) and detect the trailing k-call window (k=2..5) repeating consecutively. - warn_after.cycle (default 3 full repetitions) injects the standard soft warning; hard_stop_after.cycle (default 5) halts the turn when hard_stop_enabled is on, via the existing warn/halt plumbing (zero runtime changes). - Length-1 cycles are deliberately excluded: pure self-repeats are already covered by exact_failure / idempotent_no_progress, and successful self-repeats of mutating tools (e.g. polling a background process) are legitimate. - More specific failure/no-progress warnings take precedence over the cycle warning; cycle halt takes precedence over everything. Validation: 30/30 tests in tests/agent/test_tool_guardrails.py + tests/run_agent/test_tool_call_guardrail_runtime.py; E2E via real DEFAULT_CONFIG -> from_mapping -> controller -> append_toolguard_guidance. |
||
|---|---|---|
| .. | ||
| developer-guide | ||
| getting-started | ||
| guides | ||
| integrations | ||
| reference | ||
| user-guide | ||
| index.mdx | ||
| user-stories.mdx | ||