[2026-05-16] Проект 5: memory organizer plan + wiki/tech/media-pipeline-pitfalls.md
This commit is contained in:
@@ -1,13 +1,13 @@
|
|||||||
---
|
---
|
||||||
created: '2026-05-15'
|
created: '2026-05-15'
|
||||||
updated: '2026-05-15'
|
updated: '2026-05-16'
|
||||||
tags:
|
tags:
|
||||||
- personal-os
|
- personal-os
|
||||||
- obsidian
|
- obsidian
|
||||||
- vault
|
- vault
|
||||||
- strategy
|
- strategy
|
||||||
- llm-wiki
|
- llm-wiki
|
||||||
status: research-complete
|
status: active
|
||||||
---
|
---
|
||||||
# Obsidian Vault Strategy & LLM Wiki Plan
|
# Obsidian Vault Strategy & LLM Wiki Plan
|
||||||
|
|
||||||
@@ -417,13 +417,104 @@ Wishlist мест + даты отпуска (если есть) + текущий
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Проект 5: Memory Organizer
|
||||||
|
|
||||||
|
**Цель:** память агента актуальна, не переполнена, детальные факты живут в vault а не в MEMORY.md.
|
||||||
|
|
||||||
|
#### Контекст
|
||||||
|
|
||||||
|
Hermes хранит память в двух файлах (`~/.hermes/memories/`):
|
||||||
|
|
||||||
|
| Файл | Назначение | Лимит |
|
||||||
|
|---|---|---|
|
||||||
|
| `MEMORY.md` | Факты об окружении, проектах, инструментах | ~3000 chars |
|
||||||
|
| `USER.md` | Профиль пользователя — предпочтения, стиль | ~1375 chars |
|
||||||
|
|
||||||
|
Оба инжектируются в system prompt **как frozen snapshot** при старте сессии. Агент видит их как часть контекста.
|
||||||
|
|
||||||
|
**Три уровня памяти** (по когнитивной науке, arXiv 2603.07670):
|
||||||
|
- **Episodic** — сессионные логи (SQLite, session_search). Уже работает.
|
||||||
|
- **Semantic** — факты/предпочтения (MEMORY.md + USER.md). Нужна curation.
|
||||||
|
- **Procedural** — навыки и workflows (skills/). Уже работает.
|
||||||
|
|
||||||
|
**Текущие проблемы (2026-05-16):**
|
||||||
|
- MEMORY.md переполнен — 3164 chars при лимите ~3000
|
||||||
|
- 8 записей про media-pipeline баги/§9.x/транслит — это детальные технические заметки, а не факты для быстрого доступа. Должны жить в `wiki/tech/` или в project notes.
|
||||||
|
- Нет механизма устаревания — записи про баги давно пофикшенные продолжают занимать место
|
||||||
|
- Нет связи memory ↔ vault: детальный контекст дублируется, не синергирует
|
||||||
|
|
||||||
|
#### Правило разграничения (что куда)
|
||||||
|
|
||||||
|
```
|
||||||
|
MEMORY.md → короткие стабильные факты: SSH хосты, namespace rules,
|
||||||
|
активные токены, конфиги. Макс ~150 chars на запись.
|
||||||
|
USER.md → предпочтения, стиль, ожидания. Не меняется часто.
|
||||||
|
wiki/tech/ → детальные технические заметки: питфолы, баг-паттерны,
|
||||||
|
разборы архитектур. Длинные, с контекстом.
|
||||||
|
personal/projects/ → статус проектов, решения, дебаггинг-логи
|
||||||
|
skills/ → процедуры и workflows пошагово
|
||||||
|
```
|
||||||
|
|
||||||
|
**Overflow pattern:** если запись в MEMORY.md > 150 chars или содержит пошаговые инструкции → переносим в vault, в MEMORY.md оставляем pointer: `media-pipeline питфолы → wiki/tech/media-pipeline.md`
|
||||||
|
|
||||||
|
#### Шаги
|
||||||
|
|
||||||
|
**Шаг 0 — One-time audit & purge (сейчас)**
|
||||||
|
1. Пройти по всем записям MEMORY.md
|
||||||
|
2. Записи про media-pipeline (bugs, §9.x, транслит, KP rate limit, Docker cmd) → создать `wiki/tech/media-pipeline-pitfalls.md`, в MEMORY.md оставить короткий pointer
|
||||||
|
3. Удалить записи про пофикшенные баги (они уже в истории сессий)
|
||||||
|
4. Проверить USER.md — убрать устаревшее
|
||||||
|
5. После: MEMORY.md < 2000 chars, USER.md < 1100 chars (оставить запас для новых фактов)
|
||||||
|
|
||||||
|
**Шаг 1 — Создать `wiki/tech/` как хранилище детальных техфактов**
|
||||||
|
- `wiki/tech/media-pipeline-pitfalls.md` — все §9.x, транслит, баги
|
||||||
|
- `wiki/tech/kraken-infra.md` — SSH, WireGuard, Docker deploy паттерны
|
||||||
|
- `wiki/tech/gitea.md` — токены, repos, API endpoints
|
||||||
|
- Эти страницы живут в wiki (curation воркер их maintainит)
|
||||||
|
|
||||||
|
**Шаг 2 — Memory curation cron (еженедельно, воскресенье 04:00)**
|
||||||
|
|
||||||
|
```
|
||||||
|
Читает ~/.hermes/memories/MEMORY.md и USER.md
|
||||||
|
↓
|
||||||
|
Для каждой записи:
|
||||||
|
- Старше 60 дней И не изменялась → кандидат на архивацию
|
||||||
|
- > 150 chars → кандидат на перенос в vault
|
||||||
|
- Противоречит другой записи → флажок для review
|
||||||
|
↓
|
||||||
|
Детальные записи → переносит в wiki/tech/ (создаёт/обновляет страницы)
|
||||||
|
В MEMORY.md → заменяет на pointer (1 строка)
|
||||||
|
Совсем устаревшие (проект завершён) → удаляет
|
||||||
|
↓
|
||||||
|
Репортирует: что удалено, что перенесено, текущий % заполненности
|
||||||
|
```
|
||||||
|
|
||||||
|
**Стек:** Hermes cron + terminal + obsidian MCP
|
||||||
|
|
||||||
|
**Оценка:** Шаг 0 — 30 мин сейчас. Шаг 1-2 — 1 день.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Статус проектов (2026-05-16)
|
||||||
|
|
||||||
|
| Проект | Статус | Следующий шаг |
|
||||||
|
|---|---|---|
|
||||||
|
| Проект 1: Vault Enrichment | ✅ Запущен | enrichment воркер отрабатывает первый прогон |
|
||||||
|
| Проект 2: LLM Wiki Accumulation | 🟡 Частично | wiki-curation работает, wiki-capture/synthesize не реализованы |
|
||||||
|
| Проект 3: Proactive Research | ⬜ Не начат | После наполнения wiki |
|
||||||
|
| Проект 4: Cross-domain Enrichment | ⬜ Не начат | Архитектура готова, воркер не создан |
|
||||||
|
| Проект 5: Memory Organizer | 🔴 Нужен аудит | Шаг 0 — срочно (MEMORY.md переполнен) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Что НЕ нужно делать
|
## Что НЕ нужно делать
|
||||||
|
|
||||||
- ❌ Task 3b в wiki-curation (убрать)
|
- ❌ Task 3b в wiki-curation (убрать) ✅ сделано 2026-05-16
|
||||||
- ❌ Переименовывать файлы с кириллицей/эмодзи
|
- ❌ Переименовывать файлы с кириллицей/эмодзи
|
||||||
- ❌ Применять Karpathy-wiki к личным спискам (разные задачи)
|
- ❌ Применять Karpathy-wiki к личным спискам (разные задачи)
|
||||||
- ❌ Глубже вкладывать папки
|
- ❌ Глубже вкладывать папки
|
||||||
- ❌ Внешние сервисы (LifeOS plugin, Todoist) — у нас есть Asana + Hermes
|
- ❌ Внешние сервисы (LifeOS plugin, Todoist) — у нас есть Asana + Hermes
|
||||||
|
- ❌ Хранить в MEMORY.md записи > 150 chars — детали → в vault
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
---
|
||||||
|
title: Media Pipeline — Pitfalls & Debug Notes
|
||||||
|
created: '2026-05-16'
|
||||||
|
updated: '2026-05-16'
|
||||||
|
type: entity
|
||||||
|
tags:
|
||||||
|
- media-pipeline
|
||||||
|
- swift
|
||||||
|
- pitfalls
|
||||||
|
- debugging
|
||||||
|
confidence: high
|
||||||
|
---
|
||||||
|
# Media Pipeline — Pitfalls & Debug Notes
|
||||||
|
|
||||||
|
Операционные заметки по Swift media-pipeline (media_files_db / media-toolbox) на Крякне.
|
||||||
|
Связано: [[personal-os-architecture]], [[wiki/tech/kraken-infra]]
|
||||||
|
|
||||||
|
## §9.x Score Engine — Критические питфолы
|
||||||
|
|
||||||
|
**§9.9 Year tiebreak:**
|
||||||
|
- `if count > 1` only — НИКОГДА не штрафовать единственного кандидата
|
||||||
|
- Если кандидат один — year mismatch не является причиной для снижения score
|
||||||
|
|
||||||
|
**§9.6 Subset floor:**
|
||||||
|
- Floor 0.35 когда queryToks ⊆ candidateToks (запрос является подмножеством кандидата)
|
||||||
|
- Это нормально — не считать subset-матч за слабый результат
|
||||||
|
|
||||||
|
**False resolves:**
|
||||||
|
- Проверять поле `title:` — если в title шум из имени файла = `hasBestEffortResult` junk, не настоящий resolve
|
||||||
|
- Пример: `2001 Космическая одиссея.mkv` → title: `2001 Космическая одиссея.mkv` = junk
|
||||||
|
|
||||||
|
## Транслитерация
|
||||||
|
|
||||||
|
- `transliteratedToLatin` для кириллических названий генерирует мусорные запросы — TMDb не находит `Migratsiya`
|
||||||
|
- **Решение:** не эмитить lat-запросы когда источник уже кириллица
|
||||||
|
- `transliteratedToCyrillic` из латинских имён — полезен (`Osnovnoi` → `Основной Инстинкт` → TMDb находит)
|
||||||
|
|
||||||
|
## KP (Кинопоиск) Rate Limit
|
||||||
|
|
||||||
|
- KP — настоящий fallback, дёргается только если TMDb не дал winner
|
||||||
|
- 40 KP-запросов vs 8428 TMDb в типичном прогоне
|
||||||
|
- Лимит исчерпывается только после очистки кеша когда весь TMDb идёт заново
|
||||||
|
- Проблема не в архитектуре — это нормально
|
||||||
|
|
||||||
|
## Docker Run — Kraken
|
||||||
|
|
||||||
|
Всегда монтировать `unresolved.json` явно:
|
||||||
|
```bash
|
||||||
|
docker run \
|
||||||
|
-v "$(pwd)/config.json:/config/config.json:ro" \
|
||||||
|
-v "/media:/media" \
|
||||||
|
-v "$(pwd)/cache:/cache" \
|
||||||
|
-v "$(pwd)/unresolved.json:/config/unresolved.json" \
|
||||||
|
media-pipeline
|
||||||
|
```
|
||||||
|
Без явного маунта `unresolved.json` пишется внутри контейнера и теряется.
|
||||||
|
|
||||||
|
## Пофикшенные баги (сессии 2026-05)
|
||||||
|
|
||||||
|
- `Code=516 EEXIST` в ApplyPhase — исправлен
|
||||||
|
- Episode regex `\b` boundary — исправлен
|
||||||
|
- BBC prefix strip + trim — исправлен
|
||||||
|
- Yoficator Linux path — исправлен
|
||||||
|
- Backtick в TitleParser (`/[^'\p{L}\p{N}]+/` → strip apostrophes first) — исправлен
|
||||||
|
- §9.6 subset floor 0.35 — добавлен
|
||||||
|
- §9.9 year tiebreak `count>1` only — исправлен
|
||||||
|
- Year-miss retry в TMDb/KP providers — добавлен
|
||||||
|
|
||||||
|
## Связанные заметки
|
||||||
|
|
||||||
|
- [[personal-os-architecture]]
|
||||||
|
- [[wiki/tech/kraken-infra]]
|
||||||
Reference in New Issue
Block a user