Files
obsidian-vault/personal/projects/personal-os/obsidian-vault-strategy.md
T

537 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
created: '2026-05-15'
updated: '2026-05-16'
tags:
- personal-os
- obsidian
- vault
- strategy
- llm-wiki
status: active
---
# Obsidian Vault Strategy & LLM Wiki Plan
> Deep research 2026-05-15.
> Источники: Karpathy LLM Wiki gist (5000+ stars), LLM Wiki v2 (rohitg00, 1200+ stars), claude-obsidian (PyShine), Ar9av/obsidian-wiki (DeepWiki), Tom Nguyen 6-month report, Nodus Labs knowledge graph extension, mathisgauthey (r/ObsidianMD, 1000+ upvotes), MOC+Dataview guide, Obsidian+Claude Code integration, LifeOS, Obsidian Forum.
---
## Часть 1 — Текущее состояние vault
### Что есть
| Тип контента | Примеры | Где лежит |
|---|---|---|
| Личные списки | Список дел, Фильмы, Книги, Покупки | `personal/documents/`, `family/documents/` |
| Брифы и планы | Daily brief, weekly plan, inbox triage | `work/briefs/` |
| Проектные заметки | executor, media-pipeline, wiki | `personal/projects/`, `family/projects/` |
| How-to документация | HTPC, Кракен, WireGuard | `family/how-to/` |
| Knowledge wiki | Архитектура personal-os, схема БД | `wiki/` |
### Что не работает
- **Граф пустой** — 90% заметок без frontmatter, aliases, wikilinks. Поиск находит только по точному имени файла.
- **Воркер переименовал файлы** без aliases → `✅ Список дел``todo-list.md`, поиск сломан.
- **Wiki-curation делает лишнее** — Task 3b (раскладка файлов по папкам) не относится к Karpathy, добавлен ошибочно.
- **Нет накопления знаний** — каждый research-сеанс начинается с нуля. Пример: анализ Obsidian PKM занял 15 минут и 10+ web запросов, которые нужно будет повторять снова.
- **Нет проактивных исследований** — агент реагирует на запросы, не инициирует изучение пробелов.
---
## Часть 2 — Анализ подходов из research
### Karpathy LLM Wiki (оригинал, апрель 2026)
**Суть:** LLM читает сырые источники → строит wiki с entity/concept pages → cross-references → compounding knowledge base. Человек почти не пишет в wiki руками.
**Ключевые цифры:** Karpathy вырастил wiki на одну тему до ~100 статей, 400k слов, не написав ни одной напрямую. Tom Nguyen (6 месяцев в production): 77 wiki pages, 30+ источников, 13 custom skills читают из wiki.
**Три операции:**
1. **Ingest** — дропаешь источник, агент создаёт/обновляет 10-15 wiki pages
2. **Query** — агент читает index.md, находит нужные pages, даёт ответ со ссылками
3. **Lint** — проверка orphan pages, противоречий, stale claims, пробелов
**Применимость к нам:** Wiki для накопления knowledge (техника, workflows, инфраструктура, AI tools) — да. Для личных списков — нет.
---
### LLM Wiki v2 (rohitg00) — production extensions
**Ключевые расширения:**
**4-tier memory pipeline:**
```
Working Memory → сырые наблюдения текущей сессии
Episodic Memory → сжатые саммари сессий
Semantic Memory → кросс-сессионные факты (wiki)
Procedural Memory → паттерны, workflows, skills
```
**Confidence scoring:** каждый факт имеет score (кол-во источников, свежесть, противоречия). Устаревает со временем, усиливается при подтверждении.
**Event-driven automation:**
```
On new source → auto-ingest, extract entities, update graph
On session end → compress session into observations, file insights
On query → check if answer worth filing back
On schedule → periodic lint, consolidation
```
**Кристаллизация:** завершённые debug/research сессии автоматически дистиллируются в wiki pages.
---
### claude-obsidian / Ar9av/obsidian-wiki — автономные skills
Наиболее зрелые production реализации. Ключевые skills:
**`wiki-synthesize`** — сканирует vault, находит concept pairs которые часто co-occur но не имеют synthesis page. Строит `Concept A × Concept B` pages автоматически.
**`wiki-research` (3-round autonomous loop):**
- Round 1: decompose topic → 3-5 angles → broad search
- Round 2: find gaps/contradictions → targeted search
- Round 3: resolve contradictions → synthesis
**`wiki-capture`** — конвертирует AI-human сессии в declarative wiki notes. Эта сессия (анализ Obsidian PKM) должна была бы стать wiki pages автоматически.
**`autoresearch` (claude-obsidian):**
```
/autoresearch topic
→ Round 1: query wiki → identify gaps → ingest sources
→ Round 2: re-query → find remaining gaps → more sources
→ Round 3: synthesis → comprehensive result with citations
```
**Session hooks:**
- `SessionStart` → load hot cache, read schema
- `PostToolUse` → auto-commit if files changed
- `Stop` → save final state, update manifest
---
### Knowledge Graph extension (Nodus Labs)
Добавляет структурную самоосознанность поверх Karpathy:
**Gap detection:** находит disconnected clusters в wiki graph. Там, где два тематических кластера не связаны — это часто место для нового insight или исследования.
**Prompt-to-structure:** вместо "объясни X" → "как A связан с B, учитывая что они в разных кластерах?" → более точные, оригинальные ответы.
---
### Проактивные исследования — PersonalAgent pattern (arxiv 2512.15302)
**Идея:** агент строит user profile → из профиля выводит гипотезы что пользователю может быть интересно → инициирует исследования без запроса.
**Применительно к нам:** агент знает что ты работаешь над personal-os, media-pipeline, executor — и проактивно исследует смежные темы: новые подходы к orchestration, медиа-библиотеки, home automation.
**Реализация:** weekly cron который читает wiki + профиль + последние сессии → формирует список hypothesis → запускает `wiki-research` по каждой → результаты в inbox для review.
---
## Часть 3 — Что реально нужно нам
### Три разных задачи (не смешивать!)
**Задача A: Vault enrichment** — сделать личные заметки searchable и связными
- frontmatter + aliases на существующие файлы
- wikilinks между связанными заметками
- MOC/index files для навигации
**Задача B: LLM Wiki для knowledge accumulation** — накапливать research результаты
- `wiki/` как compounding knowledge base
- Research сессии → wiki pages
- Lint + gap detection
**Задача C: Проактивные автономные исследования** — агент сам генерирует гипотезы и исследует
- User profile → hypothesis generation
- Scheduled research runs
- Results → inbox для review
---
## Часть 4 — План: три проекта
### Проект 1: Vault Enrichment
**Цель:** граф живой, поиск работает по aliases, Dataview агрегирует, файлы связаны по смыслу.
#### Ключевой принцип: topic map как источник правды
`family/index.md` и `personal/index.md` — это не просто каталоги файлов, а **топик-карты vault**.
Карта содержит:
- Топики / кластеры (Алтай, Лаки Парк, Kraken, psychologist-app, …)
- Какие файлы принадлежат каждому кластеру
- Ссылку на hub-note кластера (основную заметку)
**Enrichment воркер читает карту первым делом и работает по ней** — не по хардкоду в промпте. Если находит новый кластер которого в карте нет — добавляет его туда сам. Карта самодополняется.
```
family/index.md (topic map)
├── ## Место: Алтай
│ hub: family/places/altai.md (создать при необходимости)
│ files: altai-shopping, altai-house-inventory
├── ## Место: Лаки Парк (Тайга)
│ hub: family/how-to/truenas-infrastructure.md
│ files: lerua-shopping, fasteners-nomenclature
├── ## Инфраструктура: Kraken
│ hub: family/how-to/kraken-access.md
│ files: kraken-portainer-access, openmediavault-rpi5, …
└── …
```
#### Шаги
1. ✅ Убрать Task 3b из wiki-curation промпта — **сделано 2026-05-16**
2. ✅ Добавить frontmatter + aliases на 24 файла documents/ — **сделано 2026-05-16**
3. ✅ Создать enrichment cron (воскресенье 03:00) — **запущен 2026-05-16**
4. **Пересобрать `family/index.md` и `personal/index.md` как топик-карты** (кластеры вместо плоских списков)
5. **Обновить промпт enrichment воркера**: читать index как карту, линковать по ней, дополнять при находке новых кластеров — **никакого хардкода в промпте**
6. Создать `personal/places/` и `family/places/` hub-notes для физических мест если нужны (Алтай, Лаки Парк)
**Стек:** Hermes cron + obsidian MCP + terminal toolset
**Правило:** воркер **никогда** не хардкодит конкретные файлы или топики в промпте. Карта = единственный источник правды о кластерах.
---
### Проект 2: LLM Wiki — Knowledge Accumulation
**Цель:** каждая research-сессия накапливается. Следующий вопрос про memory architectures → читаю 2 страницы wiki вместо 10 web запросов.
#### Компоненты
**Crystallization** — сессии → wiki pages (ежедневно в wiki-curation-daily)
- Воркер сканирует дневные сессии
- Критерий: знание painful to re-derive + fit wiki domain
- Дистиллирует факты (не разговор), создаёт/обновляет wiki pages
- ✅ Добавлено в wiki-curation-daily промпт (2026-05-16)
**Wiki-Synthesize** — co-occurring concepts → synthesis pages
- Воркер ищет темы из 3+ страниц без synthesis page
- Создаёт `comparisons/A-vs-B.md` или `concepts/A-and-B.md`
- Лимит: 1 страница за прогон
- ✅ Добавлено в wiki-curation-daily промпт (2026-05-16)
**Inbox drop** — быстрый путь добавить knowledge в очередь
- Файл в `wiki/raw/inbox/research-SLUG-YYYYMMDD.md` → обрабатывается следующей ночью
- ✅ Сегодняшняя сессия (vault strategy + memory architecture) заброшена в инбокс
#### Что войдёт в wiki
AI/ML memory architectures, Obsidian PKM patterns, personal-os architecture decisions, Swift/iOS patterns, media pipeline learnings, enrichment patterns.
**Стек:** wiki-curation-daily (расширенный) + inbox mechanism
**Статус:** ✅ Реализован 2026-05-16
---
### Проект 3: Proactive Research Agent
**Цель:** агент сам инициирует исследования исходя из профиля и пробелов в wiki.
#### Архитектура
```
Gap Detector (читает vault, находит темы без wiki-страниц)
research-queue.md (приоритизированный список)
proactive-research cron (суббота 05:00, 1 тема за прогон)
3-round research loop → wiki page
queue item помечается [x], wiki/index.md обновляется
```
#### Компоненты
**research-queue.md** (`wiki/research-queue.md`)
- Живой список тем для исследования
- Воркер берёт top-1 `[ ]` item каждую субботу
- Alex может добавлять вручную
- ✅ Создан с 7 начальными темами (2026-05-16)
**proactive-research cron** (суббота 05:00)
- Gap detection: темы 3+ упоминаний в vault без wiki-страницы → добавляет в queue
- 3-round research loop: broad → deep → synthesis
- Создаёт/обновляет wiki page, обновляет index.md, отмечает queue item
- ✅ Cron создан (job: 41896d17f5fc, 2026-05-16)
**Начальная очередь:**
- Obsidian Bases vs Dataview 2026
- Skip.tools production-readiness
- Home Assistant + Zigbee для RPi5
- AI mental health apps landscape
- Swift Concurrency 2026
- Personal OS orchestration alternatives
- Indie iOS monetization 2026
**Статус:** ✅ Инфраструктура создана 2026-05-16. Первый прогон: 2026-05-23.
---
### Проект 4: Cross-domain Enrichment Agent
**Цель:** vault note + external signal → personalized insight. Два режима: разовое обогащение и регулярный мониторинг.
#### Архитектура
```
Enrichment: Vault note + External (web) → companion note рядом с исходником
Monitoring: External stream → фильтр через user-profile → digest delivered
```
**vault-cross-enrichment cron** (воскресенье 04:00, web+file+terminal toolsets)
- Target discovery: `enrich-me` тег, файлы 30+ дней без обновления, app-ideas
- Enrichment types: app-ideas competitive analysis, wishlists (games/books/movies), travel, home automation
- Profile-aware: всё фильтруется через `wiki/user-profile.md`
- Output isolation: результат в `-enriched.md` companion файле, исходник не трогает
- Monitoring digest: tech stack updates, indie/App Store news, Bishkek local
- ✅ Cron создан (job: f3de00040aac, 2026-05-16)
---
## Часть 5 — Последовательность
```
Сейчас → Проект 1 (enrichment) — быстро, ощутимый результат
Проект 2 (wiki accumulation) — параллельно или после
Проект 3 (proactive research) — когда wiki достаточно наполнена
```
Проект 3 имеет смысл только когда в wiki есть достаточно контента чтобы gap detection давал сигнал. Сначала нужно наполнить wiki (Проект 2).
---
---
## Часть 5a — Паттерн: Personal Context → External Signal → Insight
Это отдельный класс задач — **cross-domain enrichment с внешними данными**. Агент читает личные данные из vault, учитывает профиль пользователя, обогащает внешними сигналами и возвращает персонализированный результат.
**Ключевое отличие от Google:** контекст про тебя уже внутри — агент не ищет абстрактный ответ, а фильтрует под конкретного человека.
### Общий паттерн
```
Заметка/список в vault
+ Связанные заметки (через wikilinks / поиск)
+ User Profile (возраст, интересы, текущий стек, предпочтения)
+ External signal (web, API, RSS, marketplace)
Enrichment Agent (по триггеру или расписанию)
Enriched note в vault (insights + cross-links + источники)
```
### Два режима агента
Примеры выше делятся на два разных паттерна — важно не смешивать:
**Enrichment** — обогащаешь данные один раз (или при изменении)
- Исходная заметка есть, нужно добавить внешний контекст
- Запускается по триггеру (новая запись) или периодически
- Результат стабилен, обновляется редко
- _Примеры: анализ идей приложений, learning path по списку книг, фильтрация игр под профиль_
**Monitoring** — следишь за потоком внешнего мира, фильтруешь через твой контекст
- Внешний мир меняется, vault — точка отсчёта для фильтрации
- Запускается регулярно (ежедневно / еженедельно)
- Результат — дайджест / алерт, не постоянная заметка
- _Примеры: новые заведения в Бишкеке, распродажи билетов под планы поездок, конференции по твоим темам, апдейты инструментов из стека_
```
Enrichment: Vault (данные) + External (контекст) → Enriched note в vault
Monitoring: External (поток) → фильтр через Vault (профиль) → Алерт / Дайджест
```
Оба нужны, но реализуются по-разному: enrichment — разовый агент с obsidian MCP, monitoring — регулярный cron с web toolset и доставкой в inbox/Zulip.
### Иллюстративные примеры (не задачи, а цепочки мышления)
**1. Список идей приложений → конкурентный анализ**
Читает каждую идею → ищет по YC directory / ProductHunt / web по ключевым словам → кто уже делает, funding, незакрытые ниши → сохраняет анализ рядом с идеей
**2. Активности с ребёнком × список игр × профиль ребёнка**
Читает списки активностей + игр → читает профиль (возраст, интересы, темперамент, что работает) → cross-links между файлами → фильтрует игры под совместную игру → ищет новые по интересам → персонализированные рекомендации с обоснованием
**3. Список для чтения → learning path**
Книги/статьи + текущие знания из wiki → определяет prerequisites, оптимальный порядок, находит пробелы в теме
**4. Wishlist путешествий → план поездок**
Список мест + сезонность + текущие проекты (когда реально есть время) → какие места удобно совмещать, оптимизированный план на год
**5. Профили контактов → напоминания о связи**
Список людей с датой последнего общения + интересы → "давно не писал X, вот повод" (вышла статья по его теме, etc.)
**6. Wishlist умного дома → совместимость и реализация**
Хотелки + текущий стек (Zigbee, HA версия) → что реально интегрируется, community-решения, очерёдность
**7. Дневник тренировок → инсайты**
Лог активностей + самочувствие + погода → что коррелирует с хорошими результатами, когда лучше тренироваться
**8. Скетчи музыкальных идей → рыночный контекст**
Заметки по трекам (BPM, настроение, референсы) → Spotify анализ похожих, что в тренде в жанре
**9. Список подарков → актуальные варианты**
Профили близких (интересы, что уже есть) × ближайшие даты → marketplace search с обоснованием почему подходит
**10. Wishlist ресторанов → фильтр по контексту**
Список + предпочтения + что уже посетил → фильтр под конкретный контекст (с ребёнком / романтический / деловой), актуальные часы
**11. Темы для изучения → дайджест новостей**
Список интересующих тем → еженедельный дайджест из HN / arxiv / RSS, отфильтрованный от шума под твои конкретные темы
**12. Финансовый watchlist → контекст для решений**
Список активов/инструментов → агрегация сигналов (не трейдинг, а понимание контекста для своих решений)
**13. Проекты и интересы → конференции, семинары, learning events**
Текущие рабочие и личные проекты + домены интереса → поиск конференций, митапов, онлайн-курсов, воркшопов по теме → дайджест "что скоро, что стоит посетить" с приоритизацией по релевантности
**14. Планы поездок × текущее местоположение → акции на билеты и туры**
Wishlist мест + даты отпуска (если есть) + текущий город → поиск распродаж, горящих туров, пакетов (не только авиа) → алерт когда появляется подходящее предложение
**15. Контакты → дни рождения и поводы**
Профили людей с датами рождения + история общения → заблаговременное напоминание + идея подарка по интересам человека
**16. Проекты и интересы → новые идеи, best practices, апдейты инструментов**
Текущий технический стек + активные проекты → мониторинг HN / changelog / блогов → "вышел X, релевантно для твоего проекта Y", "новый паттерн для Z", "есть решение лучше чем то что ты сейчас используешь"
**17. Место проживания → новые заведения и места**
Текущий город + категории интереса (рестораны, кофейни, etc.) → мониторинг новых открытий → периодический дайджест "что открылось, что стоит попробовать"
### Триггеры обогащения
1. **По изменению** — новая запись в списке → автоматически запускает анализ (git diff)
2. **По расписанию** — раз в неделю проходит по спискам, обновляет что устарело
3. **По запросу** — "проведи анализ по этой теме"
---
### Проект 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 | 🟡 В процессе | Воскресный прогон по топик-картам |
| Проект 2: LLM Wiki Accumulation | ✅ Готов | crystallization + synthesize + inbox в wiki-curation |
| Проект 3: Proactive Research | ✅ Готов | research-queue.md + cron суббота 05:00 |
| Проект 4: Cross-domain Enrichment | ✅ Готов | vault-cross-enrichment cron воскресенье 04:00 |
| Проект 5: Memory Organizer | 🟡 В процессе | daily cron 04:00; wiki/tech/ частично заполнена |
### Что сделано (2026-05-16)
- Task 3b убран из wiki-curation
- frontmatter + aliases + titles на 24 файла documents/
- Enrichment воркер создан (воскресенье 03:00)
- wiki/tech/media-pipeline-pitfalls.md создан
- MEMORY.md разгружена: 105% → 50%
### Известные долги
-`wiki/tech/` не отражена в `wiki/index.md` и `wiki/SCHEMA.md`
-`family/index.md` и `personal/index.md` — плоские списки, не топик-карты
- ❗ Memory curation cron не создан (только описан в плане)
---
## Что НЕ нужно делать
- ❌ Task 3b в wiki-curation (убрать) ✅ сделано 2026-05-16
- ❌ Переименовывать файлы с кириллицей/эмодзи
- ❌ Применять Karpathy-wiki к личным спискам (разные задачи)
- ❌ Глубже вкладывать папки
- ❌ Внешние сервисы (LifeOS plugin, Todoist) — у нас есть Asana + Hermes
- ❌ Хранить в MEMORY.md записи > 150 chars — детали → в vault
---
## Ссылки
- [Karpathy LLM Wiki gist](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f)
- [LLM Wiki v2 — rohitg00](https://gist.github.com/rohitg00/2067ab416f7bbe447c1977edaaa681e2)
- [claude-obsidian](https://pyshine.com/2026/04/claude-obsidian-self-organizing-ai-knowledge-engine/)
- [Ar9av/obsidian-wiki skills](https://deepwiki.com/Ar9av/obsidian-wiki/3.5-knowledge-building-skills)
- [Nodus Labs knowledge graph](https://support.noduslabs.com/hc/en-us/articles/26724863249180)
- [mathisgauthey vault template](https://github.com/mathisgauthey/obsidian-workflow-template)
- [MOC + Dataview guide](https://github.com/seqis/ObsidianMOC)