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

113 lines
5.5 KiB
Markdown
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
10. **system_message** — от платформы (например, содержимое входящего сообщения).
11. **Context files** — `AGENTS.md`, `.cursorrules`, `.hermes.md` из `TERMINAL_CWD`.
### Volatile tier (не кешируется)
12. **Memory** — thread-scoped MEMORY.md.
13. **USER.md** — глобальный профиль.
14. **Custom memory instruction** — `~/.hermes/hermes-whale/review/memory_prompt.md`.
15. **Таймстемп** — дата старта, 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`
```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.
## Команды
```bash
# Проверить текущую память
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, коммиты.