mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
test(compression): cover real init feasibility override
This commit is contained in:
parent
045b28733e
commit
7bd1a3a4b1
2 changed files with 78 additions and 30 deletions
38
run_agent.py
38
run_agent.py
|
|
@ -1271,7 +1271,10 @@ class AIAgent:
|
|||
_agent_cfg = _load_agent_config()
|
||||
except Exception:
|
||||
_agent_cfg = {}
|
||||
self._config = _agent_cfg # stored for later use (e.g. compression feasibility check)
|
||||
# Cache only the derived auxiliary compression context override that is
|
||||
# needed later by the startup feasibility check. Avoid exposing a
|
||||
# broad pseudo-public config object on the agent instance.
|
||||
self._aux_compression_context_length_config = None
|
||||
|
||||
# Persistent memory (MEMORY.md + USER.md) -- loaded from disk
|
||||
self._memory_store = None
|
||||
|
|
@ -1402,6 +1405,24 @@ class AIAgent:
|
|||
compression_target_ratio = float(_compression_cfg.get("target_ratio", 0.20))
|
||||
compression_protect_last = int(_compression_cfg.get("protect_last_n", 20))
|
||||
|
||||
# Read optional explicit context_length override for the auxiliary
|
||||
# compression model. Custom endpoints often cannot report this via
|
||||
# /models, so the startup feasibility check needs the config hint.
|
||||
try:
|
||||
_aux_cfg = _agent_cfg.get("auxiliary", {}).get("compression", {})
|
||||
except Exception:
|
||||
_aux_cfg = {}
|
||||
if isinstance(_aux_cfg, dict):
|
||||
_aux_context_config = _aux_cfg.get("context_length")
|
||||
else:
|
||||
_aux_context_config = None
|
||||
if _aux_context_config is not None:
|
||||
try:
|
||||
_aux_context_config = int(_aux_context_config)
|
||||
except (TypeError, ValueError):
|
||||
_aux_context_config = None
|
||||
self._aux_compression_context_length_config = _aux_context_config
|
||||
|
||||
# Read explicit context_length override from model config
|
||||
_model_cfg = _agent_cfg.get("model", {})
|
||||
if isinstance(_model_cfg, dict):
|
||||
|
|
@ -1999,24 +2020,11 @@ class AIAgent:
|
|||
aux_base_url = str(getattr(client, "base_url", ""))
|
||||
aux_api_key = str(getattr(client, "api_key", ""))
|
||||
|
||||
# Read user-configured context_length for the compression model.
|
||||
# Custom endpoints often don't support /models API queries so
|
||||
# get_model_context_length() falls through to the 128K default,
|
||||
# ignoring the explicit config value. Pass it as the highest-
|
||||
# priority hint so the configured value is always respected.
|
||||
_aux_cfg = (self._config or {}).get("auxiliary", {}).get("compression", {})
|
||||
_aux_context_config = _aux_cfg.get("context_length") if isinstance(_aux_cfg, dict) else None
|
||||
if _aux_context_config is not None:
|
||||
try:
|
||||
_aux_context_config = int(_aux_context_config)
|
||||
except (TypeError, ValueError):
|
||||
_aux_context_config = None
|
||||
|
||||
aux_context = get_model_context_length(
|
||||
aux_model,
|
||||
base_url=aux_base_url,
|
||||
api_key=aux_api_key,
|
||||
config_context_length=_aux_context_config,
|
||||
config_context_length=getattr(self, "_aux_compression_context_length_config", None),
|
||||
)
|
||||
|
||||
threshold = self.context_compressor.threshold_tokens
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue