All agent implementations are not the same: Hermes Agent integration can't be compared to the Claude Code and OpenClaw plugins #2253
hammerhoundai
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
docs/en/agent-integrations/01-overview.md says:
However this misses the nuance that not all the plugins and builtin integrations work in the same way. Indeed Claude Code and OpenClaw integrations work very similarly as far as they can given the difference in their nature. But hermes agent is a significant outlier which the document doesn't correctly highlight.
Hermes vs Claude Code: OpenViking Plugin
I read both implementations line by line. Here's what I found.
The Headline
Hermes gives the model context about what the user asked LAST turn. Claude Code gives the model context about what the user is asking THIS turn.
That's not a nuance. It's the difference between a working memory system and an architectural misunderstanding.
How Hermes Works (Stale Prefetch)
The evidence from
openviking/__init__.py:First turn of every session gets nothing. Every subsequent turn gets the previous turn's topic. This isn't a bug — it's how
MemoryProviderwas designed.queue_prefetch()fires at the end of turn N,prefetch()consumes it at the start of turn N+1. The API signature takes aqueryparameter but the OpenViking provider throws it away.The background search that produces this stale context is also bare-minimum: single
POST /api/v1/search/findwithtop_k=5, no scope, no score filter, no ranking. Takes top 3 abstracts from whatever comes back and formats them as- [0.87] Abstract text (uri)lines.How Claude Code Works (Synchronous Recall)
Every turn. With the current query. Within 8 seconds.
What Else Is Different
Recall quality
- [score] abstract (uri)lines<openviking-context>with content lines and hint linesCapture
user_content[:4000]+assistant_content[:4000]The commit timing difference is significant. An 8-hour Hermes session that crashes or gets OOM-killed loses everything since the last session end. A Claude Code session loses at most 20,000 tokens of pending messages (because it commits mid-session whenever that threshold is crossed). The PreCompact hook also commits before context compaction rewrites the transcript.
Subagent isolation
Claude Code gives each subagent its own OV session (
cc-<parent>__agent-<agentType>) with a typed namespace in the agent header. Subagent memories segregate by type inviking://agent/<type>/memories/.Hermes has no subagent isolation.
on_delegation()fires on the parent side with just task+result text — no transcript, no separate session.Configuration
Hermes: 5 env vars (endpoint, key, account, user, agent). Everything else is hardcoded.
Claude Code: 33 env vars +
ovcli.conf+ov.conffallback chain. Every tuning knob is configurable.Hooks
Hermes has ~5 integration points in the agent loop. Claude Code has 7 dedicated hook scripts with individual timeouts:
The most important one that Hermes has no equivalent for is
PreCompact. When context compression happens, Hermes loses any pending OV messages. Claude Code commits them first.Bottom Line
These aren't two flavors of the same integration. The Claude Code plugin is a context engine — it actively manages recall, capture, ranking, injection, commit timing, and subagent isolation. The Hermes plugin is a thin adapter — it converts Python method calls to HTTP and delegates everything else to either the server or the model.
The stale prefetch alone means that for the lifetime of any Hermes session, the automatic memory context is always about the wrong topic. The model can compensate by calling
viking_searchmanually, but the "automatic" recall that every turn gets for free is working against it, not for it.Beta Was this translation helpful? Give feedback.
All reactions