Files
obsidian-vault/personal/tech/hermes-memory-architecture.md
T
Taiga b53dd70a15 [2026-09-26 09:10:28] syncthing: personal/tech/archive-org-collection-harvest.md personal/tech/balda-go-fx-pitfalls.md personal/tech/bilety-oxota-interaktiv.md personal/tech/cloudflare-tunnel-ssh-published-route.md personal/tech/deepseek-language-drift.md personal/tech/docker-data-root-mount-race.md personal/tech/docker-mac-disk-issues.md personal/tech/docker_colima_setup.md personal/tech/eagle-dashboard-launchd.md personal/tech/hermes-agent-improvements.md personal/tech/hermes-browser-toolsets.md personal/tech/hermes-fork-vs-upstream.md personal/tech/hermes-git-repo.md personal/tech/hermes-memory-architecture.md personal/tech/hermes-secret-redaction-bypass.md personal/tech/hermes-self-improvement-review.md personal/tech/home-network-config.md personal/tech/inter-site-throughput-taiga-to-mac.md personal/tech/inter-site-throughput-taiga-to-mac.md.bak-nedstab2 personal/tech/jellyfin-db-schema-mismatch.md personal/tech/karabiner-keyboard-config.md personal/tech/kraken-media-inventory-facts.md personal/tech/kraken-truenas-media-copies.md personal/tech/lampa-jellyfin-plugin.md personal/tech/lampac-deployment.md personal/tech/lampac-torrserver.md personal/tech/llm-model-selection-2026.md personal/tech/mac-print-shared-services.md personal/tech/modbus-rtu-sniffer-debugging.md personal/tech/multistream-single-flow-limit.md personal/tech/multistream-single-flow-limit.md.bak-nedstab2 personal/tech/music-tags-repair-truenas.md personal/tech/obsidian-mcp-ecosystem.md personal/tech/original-xbox-2025-guide.md personal/tech/prowlarr-flaresolverr-cloudflare.md personal/tech/radarr-sonarr-phantom-records.md personal/tech/roundtrip-key-verification.md personal/tech/ryujinx-mac-setup.md personal/tech/skill-arr-media-stack-setup-additions.md personal/tech/skill-docker-data-root-mount-race.md personal/tech/skill-lampac-kraken-deploy.md personal/tech/tirith-trust.md personal/tech/truenas-local-tree-comparison.md personal/tech/truenas-nfs4-acl-and-arrmultiuser.md personal/tech/truenas-zfs-panic-recovery.md personal/tech/vault-doc-pruning.md personal/tech/vless-space-subscription-egress.md personal/tech/watchlist-sync-feed.md personal/tech/watchtower-docker-updates.md personal/tech/xray-outbound-subscription-3xui.md personal/tech/xray-reverse-limits-private-network.md personal/tech/xray-reverse-tunnel-kraken-truenas.md personal/tech/xray-reverse-tunnel-kraken-truenas.md.bak-nedstab2 personal/tech/yandex-music-api.md
2026-09-26 09:10:28 +00:00

5.5 KiB
Executable File

Hermes Memory Architecture

Обзор

Hermes (Whale) использует thread-scoped memory + кастомную memory instruction. Глобальный профиль (USER.md) и thread-локальная память (MEMORY.md) — два независимых хранилища.

Состав системного промпта

Собирается в agent/system_prompt.py из трёх слоёв: stable (кешируется на сессию), context (зависит от CWD), volatile (каждый раз свежий).

Stable tier

  1. SOUL.md — не существует (Whale), используется DEFAULT_AGENT_IDENTITY.
  2. HERMES_AGENT_HELP_GUIDANCE — ссылка на https://hermes-agent.nousresearch.com/docs.
  3. TASK_COMPLETION_GUIDANCE — «Finishing the job»: не фабриковать, не останавливаться на стабах.
  4. Tool-aware guidance:
    • MEMORY_GUIDANCE — declarative facts, не imperative, не task progress.
    • SESSION_SEARCH_GUIDANCE — искать в прошлом session_search.
    • SKILLS_GUIDANCE — сохранять сложные подходы как skills, патчить устаревшие.
  5. Tool-use enforcement — TOOL_USE_ENFORCEMENT_GUIDANCE + per-model operational guidance (deepseek → OPENAI_MODEL_EXECUTION_GUIDANCE).
  6. Skills prompt — список доступных скиллов из ~/.hermes/skills/.
  7. Environment hints — macOS, home, cwd.
  8. Active profile hint — «default», +предупреждение не лезть в чужие профили.
  9. Platform hints — зависит от платформы (zulip/telegram/webhook/webui...).

Context tier

  1. system_message — от платформы (например, содержимое входящего сообщения).
  2. Context files — AGENTS.md, .cursorrules, .hermes.md из TERMINAL_CWD.

Volatile tier (не кешируется)

  1. Memory — thread-scoped MEMORY.md.
  2. USER.md — глобальный профиль.
  3. Custom memory instruction — ~/.hermes/hermes-whale/review/memory_prompt.md.
  4. Таймстемп — дата старта, session ID, model, provider.

Файлы конфигурации и кастомные промпты

  • ~/.hermes/hermes-whale/review/skill_prompt.md — инжектится в background review (skill review).
  • ~/.hermes/hermes-whale/review/memory_prompt.md — memory instruction.
  • prefill_messages_file — не задан.
  • personalities — пусто.
  • hooks — пусто.

Конфигурация

Файл: ~/.hermes/hermes-whale/config.yaml

memory:
  memory_enabled: true
  user_profile_enabled: true
  memory_char_limit: 3000
  user_char_limit: 1375
  provider: ''
  nudge_interval: 10
  flush_min_turns: 6
  thread_scoped: true                          # изолированная память по треду
  prompt_path: ~/.hermes/hermes-whale/review/memory_prompt.md  # кастомная инструкция

Файловая структура

~/.hermes/hermes-whale/memories/
├── MEMORY.md                          # глобальная (fallback для CLI/старых сессий)
├── USER.md                            # глобальная (всегда)
└── threads/
    ├── agent:main:webhook:webhook:webhook:whale/
    │   └── MEMORY.md                  # память конкретного треда
    └── ...

Memory prompt

Файл: ~/.hermes/hermes-whale/review/memory_prompt.md

Что запоминать

  1. Документы — file paths, что изменено, почему.
  2. После загрузки Obsidian docs — извлекать ключевые факты в memory.
  3. Команды и инструменты — нетривиальные CLI вызовы, форматы конфигов.
  4. Статус проекта — completed, pending, blockers, next steps.
  5. Предпочтения пользователя — коррекции, фидбек.
  6. Факты окружения — пакеты, порты, пути до credentials (не сами secrets).
  7. Решения и обоснование выбора подхода.
  8. Конфиг изменения — ключи/значения/пути.

Что НЕ запоминать

  • Временный debugging noise.
  • "Сейчас в процессе задачи X" — session_search покрывает.
  • Очевидные факты (rediscover за 2 сек).
  • Negative claims о сломанных инструментах — становятся persistent self-imposed constraints.

Особенности редактирования

  • patch() для точных замен, но не перенумеровывает списки.
  • После вставки пункта mid-list — проверить нумерацию, делать второй clean patch.

Команды

# Проверить текущую память
cat ~/.hermes/hermes-whale/memories/USER.md
cat ~/.hermes/hermes-whale/memories/MEMORY.md

# Структура файлов памяти
find ~/.hermes/hermes-whale/memories -type f -name "*.md"

# Редактировать prompt (через patch или write_file)

Связанное

  • thread-scoped-memory — план реализации.
  • personal/plans/thread-scoped-memory.md — детали тестов, pitfalls, коммиты.