hermes - ✅(Solved) Fix [Bug]: image_edit is registered but not exposed in image_gen/toolsets [1 pull requests, 3 comments, 2 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#17034Fetched 2026-04-29 06:37:46
View on GitHub
Comments
3
Participants
2
Timeline
9
Reactions
0
Timeline (top)
labeled ×4commented ×3cross-referenced ×1referenced ×1

image_edit appears to be implemented/registered, but it is not exposed through the image generation toolsets/menus that models actually receive. As a result, image_gen only exposes image_generate, even though image editing support exists in the code path.

Root Cause

This creates a confusing partial integration state:

  • provider/tool code can support image editing
  • tests can pass for the lower-level tool
  • but agents using the image_gen toolset cannot call image_edit

In practice, the feature is present but unavailable from the model-facing menu.

Fix Action

Fix / Workaround

This would avoid downstream/local deployments carrying a small source patch just to make an already-registered image editing tool visible to agents.

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

Summary

image_edit appears to be implemented/registered, but it is not exposed through the image generation toolsets/menus that models actually receive. As a result, image_gen only exposes image_generate, even though image editing support exists in the code path.

Why this matters

This creates a confusing partial integration state:

  • provider/tool code can support image editing
  • tests can pass for the lower-level tool
  • but agents using the image_gen toolset cannot call image_edit

In practice, the feature is present but unavailable from the model-facing menu.

Expected behavior

The model-facing image toolsets should expose both image generation and image editing where the implementation supports both:

  • image_gen should include image_generate and image_edit
  • core/default Hermes toolsets that expose image generation should also expose image_edit
  • API/server tool lists should include image_edit if they include image_generate
  • legacy toolset aliases, if still supported, should include image_edit as well

Suggested fix

Add image_edit to the relevant toolset definitions and add regression tests asserting that:

  • resolve_toolset("image_gen") includes image_edit
  • API/server toolsets include image_edit
  • legacy image tool aliases include image_edit, if applicable

Motivation

This would avoid downstream/local deployments carrying a small source patch just to make an already-registered image editing tool visible to agents.

extent analysis

TL;DR

Add image_edit to the relevant toolset definitions to expose the image editing feature through the image generation toolsets/menus.

Guidance

  • Review the toolset definitions for image_gen and other core/default Hermes toolsets to ensure they include image_edit.
  • Update the toolset definitions to add image_edit where necessary.
  • Add regression tests to verify that image_edit is included in the toolsets, such as asserting that resolve_toolset("image_gen") includes image_edit.
  • Check API/server tool lists and legacy toolset aliases to ensure they also include image_edit if they include image_generate.

Notes

The suggested fix assumes that the image_edit implementation is already registered and functional, but not exposed through the toolsets. The addition of regression tests will help ensure that the fix is effective and prevent similar issues in the future.

Recommendation

Apply workaround: Add image_edit to the relevant toolset definitions, as this will expose the image editing feature to agents using the image_gen toolset without requiring a full code rewrite.

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…

FAQ

Expected behavior

The model-facing image toolsets should expose both image generation and image editing where the implementation supports both:

  • image_gen should include image_generate and image_edit
  • core/default Hermes toolsets that expose image generation should also expose image_edit
  • API/server tool lists should include image_edit if they include image_generate
  • legacy toolset aliases, if still supported, should include image_edit as well

Still need to ship something?

×6

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

Back to top recommendations

TRENDING