mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
fix: defensive hardening — logging, dedup, locks, dead code
Four small fixes: 1. model_tools.py: Tool import failures logged at WARNING instead of DEBUG. If a tool module fails to import (syntax error, missing dep), the user now sees a warning instead of the tool silently vanishing. 2. hermes_cli/config.py: Remove duplicate 'import sys' (lines 19, 21). 3. agent/model_metadata.py: Remove 6 duplicate entries in DEFAULT_CONTEXT_LENGTHS dict. Python keeps the last value, so no functional change, but removes maintenance confusion. 4. hermes_state.py: Add missing self._lock to the LIKE query in resolve_session_id(). The exact-match path used get_session() (which locks internally), but the prefix fallback queried _conn without the lock.
This commit is contained in:
parent
d2b10545db
commit
847ee20390
4 changed files with 8 additions and 13 deletions
|
|
@ -94,10 +94,9 @@ DEFAULT_CONTEXT_LENGTHS = {
|
|||
"gpt-5": 128000,
|
||||
"gpt-5-codex": 128000,
|
||||
"gpt-5-nano": 128000,
|
||||
"claude-opus-4-6": 200000,
|
||||
# Bare model IDs without provider prefix (avoid duplicates with entries above)
|
||||
"claude-opus-4-5": 200000,
|
||||
"claude-opus-4-1": 200000,
|
||||
"claude-sonnet-4-6": 200000,
|
||||
"claude-sonnet-4-5": 200000,
|
||||
"claude-sonnet-4": 200000,
|
||||
"claude-haiku-4-5": 200000,
|
||||
|
|
@ -108,11 +107,7 @@ DEFAULT_CONTEXT_LENGTHS = {
|
|||
"minimax-m2.5": 204800,
|
||||
"minimax-m2.5-free": 204800,
|
||||
"minimax-m2.1": 204800,
|
||||
"glm-5": 202752,
|
||||
"glm-4.7": 202752,
|
||||
"glm-4.6": 202752,
|
||||
"kimi-k2.5": 262144,
|
||||
"kimi-k2-thinking": 262144,
|
||||
"kimi-k2": 262144,
|
||||
"qwen3-coder": 32768,
|
||||
"big-pickle": 128000,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ import os
|
|||
import platform
|
||||
import re
|
||||
import stat
|
||||
import sys
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
|
|
|
|||
|
|
@ -350,11 +350,12 @@ class SessionDB:
|
|||
.replace("%", "\\%")
|
||||
.replace("_", "\\_")
|
||||
)
|
||||
cursor = self._conn.execute(
|
||||
"SELECT id FROM sessions WHERE id LIKE ? ESCAPE '\\' ORDER BY started_at DESC LIMIT 2",
|
||||
(f"{escaped}%",),
|
||||
)
|
||||
matches = [row["id"] for row in cursor.fetchall()]
|
||||
with self._lock:
|
||||
cursor = self._conn.execute(
|
||||
"SELECT id FROM sessions WHERE id LIKE ? ESCAPE '\\' ORDER BY started_at DESC LIMIT 2",
|
||||
(f"{escaped}%",),
|
||||
)
|
||||
matches = [row["id"] for row in cursor.fetchall()]
|
||||
if len(matches) == 1:
|
||||
return matches[0]
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ def _discover_tools():
|
|||
try:
|
||||
importlib.import_module(mod_name)
|
||||
except Exception as e:
|
||||
logger.debug("Could not import %s: %s", mod_name, e)
|
||||
logger.warning("Could not import tool module %s: %s", mod_name, e)
|
||||
|
||||
|
||||
_discover_tools()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue