↩ Comparativo · Benchmark — avaliações
HARNESS_EVAL — Hermes Agent (Nous Research)
Metadados
- Repositório / versão avaliada: github.com/NousResearch/hermes-agent · snapshot 2026-07 (fork GHDaru/hermes-agent, commit 55ef425)
- Linguagem / stack: Python (codebase grande:
conversation_loop.py~6.5k linhas,cli.py~16.6k, 69 skills empacotadas) - Licença: MIT
- Data da avaliação: 2026-07-24 (rodada 2) · Categoria: agentes pessoais self-hosted
- Posicionamento declarado: agente pessoal self-hosted com loop de aprendizado embutido ("the only agent with a built-in learning loop")
- Arquétipo observado: o agente que aprende — o loop auto-evolutivo de skills é o pilar arquitetural, e se confirma integralmente no código
Dimensões (resumo com evidência)
1. Loop do agente — Nota: 3
agent/conversation_loop.py com fases separadas (turn_context/tool_executor/turn_finalizer); iteration_budget; streaming de output de tools; interrupt-and-redirect (/steer drenado pré-API e pós-tool); recuperação de respostas vazias com nudges sintéticos; reparo de alternância de papéis; sanitização de tool-calls corrompidos. Loop maduro e defensivo.
2. Entrega de contexto — Nota: 3
System prompt em três camadas explícitas para maximizar prefix-cache: stable (identidade SOUL.md + guidance + índice de skills), context (AGENTS.md/.cursorrules do projeto) e volatile (memória, USER.md, timestamp). Persona migrável do OpenClaw.
3. Compactação — Nota: 3
ContextEngine plugável (should_compact/compress/prune) + trajectory_compressor.py (~1.6k linhas); sumarização de tool-responses antigas via modelo auxiliar barato (default Gemini Flash, até 50 requisições concorrentes); /compress manual, /usage e /insights.
4. Design de ferramentas — Nota: 3
~40+ tools em toolsets componíveis (toolsets.py) com posturas dinâmicas (coding/acp/api-server) selecionando subconjuntos; execute_code (Python chamando tools via RPC — colapsa pipelines em turnos de custo-zero-contexto); browser completo, mídia, Home Assistant, Spotify; schema_sanitizer normalizando schemas por provider.
5. MCP — Nota: 3
Cliente E servidor: cliente com stdio/StreamableHTTP/SSE, OAuth, timeouts por servidor, sampling (servidor pode requisitar completions) e paralelismo opt-in por servidor; mcp_serve.py expõe o Hermes a outros hosts MCP.
6. Permissões e sandboxing — Nota: 3
Aprovação de comandos perigosos com detecção + allowlist (tools/approval.py), callbacks por-thread; seis backends de terminal com isolamento (local, Docker, SSH, Singularity, Modal, Daytona — sandboxes cloud); subagentes com _subagent_auto_deny como default seguro; path_security.py anti-traversal; egress isolation documentado.
7. Memória e estado — Nota: 3
Multicamada: MEMORY.md (notas do agente) + USER.md (perfil do usuário) editados por tool única com nudges periódicos (a cada 10 turnos); provedores externos plugáveis (Honcho, mem0, supermemory); e session_search — índice FTS5 sobre o SQLite de sessões com três modos (discovery/BM25, recall janelado, sumarização por LLM) para recall cross-session.
8. Planejamento — Nota: 2
Tool todo + orçamento de iterações + sistema Kanban para coordenação multi-agente com specs. Sem planner formal separado do loop.
9. Subagentes / orquestração — Nota: 3
delegate_task spawna AIAgent filhos com contexto isolado e aprovação não-interativa segura; Kanban dispatcher no gateway spawna workers com handoffs estruturados, bloqueio para input humano e heartbeat em operações longas.
10. Verificação / evals — Nota: 3
32 subdiretórios de teste; verify-on-stop nudge (o agente é forçado a verificar antes de parar, com verification_evidence.py rastreando evidência); batch_runner.py (trajetórias em lote) e mini_swe_runner.py (avaliação estilo SWE-bench) — orientação a pesquisa.
11. Extensibilidade — Nota: 3
ProviderProfile subclassável: Nous Portal (300+ modelos sob uma assinatura, OAuth), OpenRouter, endpoint próprio; sistema de plugins (20 diretórios, registry de toolsets, hooks de sessão); adaptadores Anthropic/Bedrock/Codex/ACP.
12. Interfaces — Nota: 3
TUI completa; gateway multi-canal de processo único: Telegram, Discord, Slack, WhatsApp, Signal, Email, iMessage, QQ, WeChat, Yuanbao — com continuidade cross-plataforma; voz (transcrição + TTS multi-provider); ACP para editores; servidor API OpenAI-compatível.
13. Aprendizado / auto-melhoria — Nota: 3 ⭐⭐ (a dimensão que este harness cria; hipótese confirmada em detalhe)
O loop fechado completo, no código:
- Gatilho autônomo: a cada ~10 iterações de tool-calling (
skill_nudge_interval,turn_finalizer.py:634), dispara_spawn_background_review(review_skills=True); gatilho manual via/learn. - Decisão: um fork isolado do agente em thread daemon (
background_review.py) reprocessa a conversa com o prompt curatorial_SKILL_REVIEW_PROMPT— instruído a ser ativo ("um passe que não faz nada é aprendizado perdido"), com ordem de preferência (atualizar skill carregada → atualizar umbrella → adicionar arquivo de suporte → só então criar skill nova), sinais (correção de estilo do usuário é sinal first-class) e anti-padrões explícitos (não capturar falhas de ambiente, claims negativos sobre tools, one-offs). Nomes obrigatoriamente class-level. - Isolamento: o fork tem whitelist de tools restrita a
memory+skills,skip_memory, persistência desligada — para não contaminar a sessão real; herda o system prompt cacheado do pai (prefix-cache, ~26% de redução de custo). - Escrita:
skill_managesalvaSKILL.mdcompatível com agentskills.io em~/.hermes/skills/<categoria>/<nome>/(+references/,templates/,scripts/), com standards hardline (descrição ≤60 chars porque o índice trunca em 60). - Reencontro: índice compacto de skills sempre presente no system prompt (cache LRU + snapshot em disco); carga integral sob demanda via
skill_view; slash commands/<skill>; Skills Hub com quarantine/scan para skills de terceiros. - Manutenção:
curator.pyroda periodicamente quando idle — pin/archive/consolidate, prune por inatividade (archive aos 90 dias, nunca deleta), consolidação por LLM opt-in.
14. Proatividade / agendamento (suplementar, categoria) — Nota: 2
Cron scheduler com entrega a qualquer plataforma; Kanban watchers; sem heartbeat contextual do nível do OpenClaw.
Síntese
| Dimensões 1–12 | Total: 35/36 + Aprendizado 3 ⭐ |
|---|
- Perfil/arquétipo: o primeiro harness avaliado onde a auto-melhoria é arquitetura, não feature — o ciclo captura→curadoria→skill→índice→reuso→manutenção está fechado e protegido contra degeneração (anti-padrões, isolamento do fork, curador).
- Pontos mais fortes: o learning loop; memória multicamada (MEMORY/USER + Honcho + FTS5); prompt em camadas cache-aware.
- Pontos mais fracos: planejamento leve; heartbeat proativo simples comparado ao OpenClaw.
- Recurso distintivo: o prompt curatorial de skills — engenharia de o que não aprender tão cuidadosa quanto a de o que aprender.
- "O que roubar": o fork isolado com whitelist para meta-tarefas; verify-on-stop nudge; descrição de skill ≤60 chars por design do índice.
- Cláusula de expiração (invertida): o learning loop não é prótese de limitação — é o mecanismo pelo qual as outras próteses expiram por harness (cada skill aprendida é scaffolding que o par modelo+harness escreveu para si). É a primeira evidência de harness que se auto-expande em vez de esperar o modelo melhorar.