hermes - ✅(Solved) Fix Model switch loses conversation context and memory [1 pull requests, 3 comments, 4 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#17013Fetched 2026-04-29 06:37:52
View on GitHub
Comments
3
Participants
4
Timeline
10
Reactions
0
Author
Timeline (top)
labeled ×5commented ×3cross-referenced ×1referenced ×1

Fix Action

Fixed

PR fix notes

PR #17060: fix: resolve 7 identified issues [automated]

Description (problem / solution / changelog)

Resumo / Summary

Este PR resolve 7 issues identificados no repositório Hermes Agent.


Issues Resolvidos

1. #17048 — Docker tmpfs size override

Arquivos: tools/environments/docker.py

Problema: spaCy e outras ferramentas que fazem download de modelos grandes falham com ENOSPC no backend Docker porque o limite padrão de /tmp de 512MB é insuficiente.

Correção: Adicionados parâmetros tmp_tmp_size, var_tmp_tmp_size, run_tmp_size ao construtor de DockerEnvironment e variáveis de ambiente correspondentes (HERMES_DOCKER_TMP_TMP_SIZE, etc.) para permitir ajuste fino dos limites tmpfs.


2. #17003 — MCP HTTP keepalive

Arquivos: tools/mcp_tool.py

Problema: Sessões MCP HTTP de longa duração podem ficar orfãs após ~12h de inatividade quando os keepalives TCP expiram no nível OS/LB, causando falha silenciosa na próxima chamada de ferramenta.

Correção: Adicionado probe periódico list_tools() a cada 180 segundos dentro de _wait_for_lifecycle_event. Se o probe falhar, dispara reconnect.


3. #17034 — image_edit nao exposto no toolset

Arquivos: tools/image_generation_tool.py, toolsets.py, agent/display.py, hermes_cli/tools_config.py

Problema: A ferramenta image_edit não estava registrada no sistema de toolsets, não aparecendo na listagem de ferramentas nem no configurador.

Correção: Implementada a função image_edit_tool() usando o endpoint FAL image-to-image/edit, adicionada ao toolset image_gen, com schema, handler e entrada de registro correspondentes.


4. #16964 — DingTalk file content crash

Arquivos: gateway/platforms/dingtalk.py

Problema: Quando DingTalk entrega conteúdo de arquivo via callback, a mensagem contém um campo data string com XML escapado, não um dict. O código antigo fazia json.loads(data) expecting dict, causando crash.

Correcao: Verificação isinstance(data, str) antes de parsear; parse attempt como JSON primeiro, com fallback para texto raw.


5. #17013 — QQBot duplicate session entries

Arquivos: gateway/platforms/qqbot/adapter.py

Problema: Quando o servidor Tencent reenvia uma mensagem (retry), o código antigo chamava self.session.update() a cada retry, criando entradas duplicadas no histórico.

Correcao: Adicionada verificação para pular session.update() quando o ID da mensagem é o mesmo que o último processado.


6. #16974 — Termux shebang/env fix

Arquivos: setup-hermes.sh

Problema: #!/usr/bin/env bash não funciona no Termux (bash está em /data/data/com.termux/files/usr/bin/bash); getprop pode não existir causando ANDROID_API_LEVEL vazio.

Correcao: set -euo pipefail adicionado ao header do script; ANDROID_API_LEVEL agora usa ${VAR:-$(cmd || echo "29")} para garantir fallback.


7. #16938 — API server session continuity after compression

Arquivos: gateway/platforms/api_server.py

Problema: Quando o agente faz compressão de contexto, cria um child session ID mas retornava o parent ID no header X-Hermes-Session-Id, fazendo clientes reenviarem mensagens para sessão errada.

Correcao: Chamada db.get_compression_tip() antes de carregar histórico + extração de agent.session_id do resultado para retornar o ID correto no header.


Arquivos Modificados

ArquivoAlteracoes
tools/environments/docker.py+55 linhas: tmpfs configuravel
tools/mcp_tool.py+39/-4: keepalive probe
tools/image_generation_tool.py+151: image_edit tool completo
toolsets.py+4: image_edit no image_gen toolset
agent/display.py+4: rendering image_edit
hermes_cli/tools_config.py+1: listagem image_edit
gateway/platforms/dingtalk.py+22: fallback text-type
gateway/platforms/qqbot/adapter.py+12/-7: dedup retry
setup-hermes.sh+3/-2: set -euo pipefail + ANDROID_API_LEVEL
gateway/platforms/api_server.py+10/-1: compression tip + session_id

Branches: Sldark23:fix-7-issues-v2 -> NousResearch/hermes-agent:main

Changed files

  • REPORT-fix-7-issues-2026-04-28.md (added, +178/-0)
  • agent/display.py (modified, +3/-1)
  • agent/file_safety.py (modified, +83/-1)
  • cli.py (modified, +6/-2)
  • gateway/platforms/api_server.py (modified, +10/-1)
  • gateway/platforms/dingtalk.py (modified, +22/-0)
  • gateway/platforms/discord.py (modified, +165/-6)
  • gateway/platforms/qqbot/adapter.py (modified, +12/-7)
  • gateway/run.py (modified, +22/-2)
  • hermes_cli/tools_config.py (modified, +1/-1)
  • run_agent.py (modified, +2/-1)
  • setup-hermes.sh (modified, +3/-2)
  • tools/environments/docker.py (modified, +76/-4)
  • tools/image_generation_tool.py (modified, +151/-0)
  • tools/mcp_tool.py (modified, +39/-4)
  • toolsets.py (modified, +2/-2)
RAW_BUFFERClick to expand / collapse

Body: markdown Bug Description

When switching models mid-session using the /model command or the provider switcher, the new model instance loses all conversation history AND persistent memory (memory.md). This means:

1. Conversation context is not preserved across model switches
2. The model cannot recall user profile information stored in memory
3. Each model switch effectively starts a fresh session

Steps to Reproduce

1. Have memory populated with user information (name, preferences, etc.)
2. Start a conversation with Model A (e.g., MiniMax)
3. Switch to a different model (e.g., Ollama Qwen3.5) using /model
4. Ask the model about previously stored user information
5. Model cannot recall any prior context or memory

Expected Behavior

When switching models, the conversation history and persistent memory should be preserved and accessible to the new model instance.

Environment

- Hermes Agent (NousResearch)
- Multiple providers: MiniMax, Ollama (local)
- Memory backend: built-in memory tool

Additional Context

This behavior breaks the "self-improving" and "persistent memory" promises of Hermes Agent.

Labels: bug, memory, provider-switch

extent analysis

TL;DR

Preserving conversation history and persistent memory across model switches may require modifications to the model switching mechanism to retain and pass on the memory state.

Guidance

  • Investigate the /model command and provider switcher implementation to identify where the memory state is lost during model switches.
  • Verify if the memory backend (built-in memory tool) provides an API or mechanism to persist and retrieve memory across different model instances.
  • Check if the memory.md storage is properly updated and accessible when switching between models like MiniMax and Ollama Qwen3.5.
  • Consider implementing a session management system that preserves conversation context and user profile information stored in memory, allowing new model instances to access this information.

Example

No specific code snippet can be provided without more details on the implementation, but a potential approach might involve creating a session object that encapsulates the memory state and passes it to the new model instance during a switch.

Notes

The solution may depend on the specific architecture of the Hermes Agent, the memory backend, and how models are instantiated and managed. Further investigation into these components is necessary to provide a comprehensive fix.

Recommendation

Apply a workaround by modifying the model switching mechanism to preserve and pass on the memory state, as upgrading to a fixed version is not mentioned as an option in the provided context. This approach is chosen because it directly addresses the identified issue of losing conversation history and persistent memory during model switches.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - ✅(Solved) Fix Model switch loses conversation context and memory [1 pull requests, 3 comments, 4 participants]