[2026-09-29] eagle: personal/tech/hermes-memory-architecture.md personal/tech/hermes-whale-mattermost-transport.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-29 12:35:57 +06:00
1 parent 6337fa0479
commit b30684ecfb
2 files changed
+132 -2

No files matched your search

@@ -106,6 +106,45 @@ find ~/.hermes/hermes-whale/memories -type f -name "*.md"
# Редактировать prompt (через patch или write_file)
```
## 🔴 Лимиты и падение агента (наблюдение 2026-09-29)
**Симптом:** агент не отвечает в треде, в `errors.log` — серия:
```
Tool memory returned error: Memory at 2,899/3,000 chars.
Adding this entry (781 chars) would exceed the limit. Replace or remove existing entries first.
[Tool loop warning: same_tool_failure_warning; count=3; memory]
```
Итог: агент зацикливается на попытках записать факт и **не доходит до ответа**.
### Ключевой факт: USER.md — всегда глобальный
`_path_for("user")` → `memories/USER.md` **всегда**, независимо от `thread_key`.
В `threads/` уходит только `MEMORY.md`. Следствие: **забитый USER.md бьёт по всем
тредам одновременно** — `thread_scoped: true` от него не защищает.
| Файл | Лимит (конфиг) | Значение 2026-09-29 |
|---|---|---|
| `memories/USER.md` | `user_char_limit: 1375` | 2295 байт → **уже переполнен** |
| `memories/threads/<key>/MEMORY.md` | `memory_char_limit: 3000` | по треду |
| `memories/MEMORY.md` (fallback) | `memory_char_limit: 3000` | 0 байт |
⚠️ Расхождение лимитов: `user_char_limit: 1375` против `memory_char_limit: 3000`.
Сообщение об ошибке упоминает 3000 — **это лимит MEMORY.md, не USER.md**; при
диагностике смотреть оба значения в `config.yaml`.
### Диагностика
```bash
# размеры
wc -c ~/.hermes/hermes-whale/memories/USER.md ~/.hermes/hermes-whale/memories/MEMORY.md
# где именно падает
grep -n "memory returned error" ~/.hermes/hermes-whale/logs/errors.log | tail -10
```
**Лечение:** сжать USER.md (слить дубли, убрать устаревшее) до <1375, либо поднять
`user_char_limit` в `config.yaml`. Правка `config.yaml` — только скриптом с
YAML-roundtrip-валидацией (прямой `patch`/`write_file` заблокирован харнессом).
## Связанное
- [[thread-scoped-memory]] — план реализации.