commit
84f6bf5323
3 changed files with 24 additions and 3 deletions
|
|
@ -68,7 +68,7 @@ What makes it different from other agentic tools:
|
|||
the results back into its own memory
|
||||
- **Self-hosted** — your conversations, your memory, your hardware
|
||||
|
||||
**vs. the field** *(landscape is actively shifting — see [HERMES.md](HERMES.md) for the full breakdown)*:
|
||||
**vs. the field** *(landscape is actively shifting — see [docs/why-hermes.md](docs/why-hermes.md) for the full breakdown)*:
|
||||
|
||||
| | OpenClaw | Claude Code | Codex CLI | OpenCode | Hermes |
|
||||
|---|---|---|---|---|---|
|
||||
|
|
@ -89,7 +89,7 @@ with memory, cron, and messaging. The key differences: Hermes writes and saves i
|
|||
automatically as a core behavior (OpenClaw's skill system centers on a community marketplace);
|
||||
Hermes is more stable across updates (OpenClaw has documented release regressions and ClawHub
|
||||
has had security incidents involving malicious skills); and Hermes runs natively in the Python
|
||||
ecosystem. See [HERMES.md](HERMES.md) for the full side-by-side.
|
||||
ecosystem. See [docs/why-hermes.md](docs/why-hermes.md) for the full side-by-side.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -552,7 +552,7 @@ State lives outside the repo at `~/.hermes/webui/` by default
|
|||
|
||||
## Docs
|
||||
|
||||
- `HERMES.md` -- why Hermes, mental model, and detailed comparison to Claude Code / Codex / OpenCode / Cursor
|
||||
- `docs/why-hermes.md` -- why Hermes, mental model, and detailed comparison to Claude Code / Codex / OpenCode / Cursor
|
||||
- `ROADMAP.md` -- feature roadmap and sprint history
|
||||
- `ARCHITECTURE.md` -- system design, all API endpoints, implementation notes
|
||||
- `TESTING.md` -- manual browser test plan and automated coverage reference
|
||||
|
|
|
|||
21
tests/test_agent_context_docs.py
Normal file
21
tests/test_agent_context_docs.py
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
from pathlib import Path
|
||||
|
||||
|
||||
def test_root_does_not_shadow_agents_md_with_hermes_context_file():
|
||||
repo_root = Path(__file__).resolve().parents[1]
|
||||
|
||||
for name in ("HERMES.md", ".hermes.md"):
|
||||
assert not (repo_root / name).exists(), (
|
||||
f"{name} at the repository root is auto-loaded by Hermes Agent as "
|
||||
"project context before AGENTS.md; long human-facing Hermes overview "
|
||||
"docs belong under docs/."
|
||||
)
|
||||
|
||||
|
||||
def test_why_hermes_doc_remains_linked_from_readme():
|
||||
repo_root = Path(__file__).resolve().parents[1]
|
||||
readme = (repo_root / "README.md").read_text(encoding="utf-8")
|
||||
|
||||
assert (repo_root / "docs" / "why-hermes.md").exists()
|
||||
assert "docs/why-hermes.md" in readme
|
||||
assert "[HERMES.md](HERMES.md)" not in readme
|
||||
Loading…
Reference in a new issue