mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-23 10:42:00 +00:00
fix(delegation): emit high-concurrency cost warning once per process (#50848)
* chore: re-trigger CI (workflows did not dispatch on prior head) * fix(delegation): emit high-concurrency cost warning once per process _get_max_concurrent_children() runs on every get_definitions() schema rebuild (via _build_top_level_description / _build_tasks_param_description), not just on actual delegate_task calls. With max_concurrent_children>10 the cost advisory fired on every turn / agent spawn across every session, spamming the log even when delegate_task was never used. Gate it behind a module-level _HIGH_CONCURRENCY_WARNED flag so it warns at most once per process.
This commit is contained in:
parent
b1b20270c4
commit
2617946397
1 changed files with 14 additions and 5 deletions
|
|
@ -130,6 +130,12 @@ _SUBAGENT_TOOLSETS = sorted(
|
|||
_TOOLSET_LIST_STR = ", ".join(f"'{n}'" for n in _SUBAGENT_TOOLSETS)
|
||||
|
||||
_DEFAULT_MAX_CONCURRENT_CHILDREN = 3
|
||||
# One-shot guard: the high-concurrency cost advisory is emitted at most once
|
||||
# per process. _get_max_concurrent_children() runs on every get_definitions()
|
||||
# schema rebuild (via _build_top_level_description / _build_tasks_param_description),
|
||||
# so without this flag a config of max_concurrent_children>10 spams the log on
|
||||
# every turn / agent spawn even when delegate_task is never called.
|
||||
_HIGH_CONCURRENCY_WARNED = False
|
||||
MAX_DEPTH = 1 # flat by default: parent (0) -> child (1); grandchild rejected unless max_spawn_depth raised.
|
||||
# Configurable depth cap consulted by _get_max_spawn_depth; MAX_DEPTH
|
||||
# stays as the default fallback and is still the symbol tests import.
|
||||
|
|
@ -374,11 +380,14 @@ def _get_max_concurrent_children() -> int:
|
|||
try:
|
||||
result = max(1, int(val))
|
||||
if result > 10:
|
||||
logger.warning(
|
||||
"delegation.max_concurrent_children=%d: each child consumes API tokens "
|
||||
"independently. High values multiply cost linearly.",
|
||||
result,
|
||||
)
|
||||
global _HIGH_CONCURRENCY_WARNED
|
||||
if not _HIGH_CONCURRENCY_WARNED:
|
||||
_HIGH_CONCURRENCY_WARNED = True
|
||||
logger.warning(
|
||||
"delegation.max_concurrent_children=%d: each child consumes API tokens "
|
||||
"independently. High values multiply cost linearly.",
|
||||
result,
|
||||
)
|
||||
return result
|
||||
except (TypeError, ValueError):
|
||||
logger.warning(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue