Re: [NonGNU] new: hermes

Thanos Apollo <[email protected]> Tue, 11 Aug 2026 09:36:58 +0300
Newsgroups gmane.emacs.devel
Message-ID <[email protected]>
Richard Stallman <[email protected]> writes:

> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
> When I read text in the description you sent, I keep having the
> feeling that there is missing piece, taken for granted in every
> sentence, that I don't understand.  I notice its absence because the
> points I do understand don't quite link up, but I can't tell what the
> missing piece looks like.
>
> So I will look at them and see if I can ask a question that
> will help me undersand something.

Okay, I will change the order of your questions to make them easier to
answer.

> Does Hermes depend on using an LLM?

Yes.  Hermes requires access to an LLM at runtime, but not to an
external or commercial provider.  It can use a self-hosted inference
server such as Ollama, llama.cpp, or vLLM.

Hermes is an agent harness: a software layer that gives an LLM tools,
memory, instructions, session management, and an execution/agent loop.
The LLM interprets a goal expressed in natural language and selects
tools to invoke.  Hermes executes those requests and returns the results
to the LLM, which may then request further operations.

> What would be the advantage, in Emacs, of doing these things via
> Hermes instead of doing them by executing keyboard commands or Lisp
> expressions?
>
> What is the benefit I would get by hooking up Hermes to do that?

For a simple operation, such as editing one file, there may be no
advantage.  We already know how to do that directly in Emacs.

The benefit is delegating a goal that requires several operations.  For
example, I can ask Hermes to find why a test fails and prepare a fix.
It may inspect the test and source files, run the test, edit the source,
run the test again, and present the resulting diff.  I supervise the
work and approve sensitive actions rather than specifying every command.

Several Hermes agents can work concurrently on separate tasks or
projects.  Hermes performs the work with its own tools; hermes.el makes
Emacs a control room for managing them and reviewing their work.

> Could you explain concretely what "conversation" means here?
> How does Hermes do "conversation"?

A conversation is a sequence of messages between the user and the LLM.
Hermes supplies the preceding messages, its instructions, and
descriptions of its tools.  The LLM can reply with text or request a
tool operation.  Hermes executes the operation and returns its result.
This continues until the LLM replies or asks the user for input.

> Does this mean Hermes needs to learn how to edit a file?
>
> How does Hermes "learn"?

No.  Its file tools already provide operations for reading and editing
files.  It does not need to learn C-x C-f, C-x C-s, or other Emacs
commands.  If configured to interact with a running Emacs session, it
can use a tool that evaluates Emacs Lisp there.

A skill records a procedure rather than a primitive operation.  One
skill may describe how I prefer Emacs Lisp development to be done,
while another records the build and testing procedure for a particular
project.  Skills are ordinary editable text files.

"Learning" here does not mean training the LLM.  It means saving
procedures as skills, or facts in persistent memory, for later sessions.

> How can it judge whether the result of something it just did was good
> or bad?

It cannot judge that infallibly.  It can check command status, compiler
output, tests, diffs, and criteria supplied by the user.  When those are
insufficient, it should ask the user.  This is why hermes.el emphasizes
supervision and review.

-- 
Thanos Apollo ☧
https://thanosapollo.org
signature.asc (application/pgp-signature, 227 B)
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQT8Sfl7aimGMASg9+nHhedB4pNYHQUCanrDCgAKCRDHhedB4pNY
HaicAP9Q1+DNS985T6AarN1T9+9H0FH8j5yH5DPRHR0QHpCdlgD/aFFEMnGFjLKD
hiqLqrlqAJNPUH59ZcxoKlmYUxHOOgo=
=p92r
-----END PGP SIGNATURE-----