commit 37a896c1c59bc7a18ccf7bae40196faf1c354686 Author: estorozhenko Date: Sun Sep 6 13:51:01 2026 +0000 Initial commit: Hermes skill memory-os-pipeline diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..2124bfa --- /dev/null +++ b/SKILL.md @@ -0,0 +1,62 @@ +--- +name: memory-os-pipeline +title: "Memory OS Pipeline" +description: "Управление pipeline Memory OS: Obsidian vault → синхронизация → ингест в Qdrant → поиск. Критически важно: НЕ ТРОГАТЬ /opt/hermes/obsidian-vault/." +--- + +## Критические правила + +- **ЗАПРЕЩЕНО** удалять, изменять, перемещать, перезаписывать файлы в `/opt/hermes/obsidian-vault/`. Только чтение. +- **ЗАПРЕЩЕНО** удалять любые файлы пользователя без явного подтверждения. +- Если vault пуст, не удалять wiki — это означает, что отвалилось монтирование (Yandex.Disk WebDAV или S3). Скрипт `sync_obsidian_to_wiki.py` защищён: если vault пуст, но state не пуст — удаление из wiki блокируется. + +## Управление cron-задачами (важно) + +- Когда пользователь говорит "stop reminder", "отключи задачу" — он хочет **отключить уведомления**, а не удалить задачу. +- **Решать:** обновить `deliver: local` (тихий режим). Не удалять cronjob. +- Для no_agent скриптов сразу ставить `deliver: local` — они не должны слать уведомления каждые 5 минут. + +## Архитектура + +``` +Obsidian vault (/opt/hermes/obsidian-vault/) ← READ-ONLY, НЕ ТРОГАТЬ + ↓ sync_obsidian_to_wiki.py (копирование → wiki/raw/obsidian/) +Wiki (/opt/hermes/vault/wiki/raw/obsidian/) + ↓ ARQ queue → worker (chunk + embed) +Qdrant (localhost:6333, collection: knowledge_base) + ↓ dense: nomic-embed-text (768d, Cosine) + ↓ sparse: BM25 +Search API (localhost:8000, POST /search, GET /health) +``` + +## Стек + +- Worker: Docker, docker-worker-1 (healthy) +- Redis: Docker, docker-redis-1 (healthy) +- Qdrant: Docker, docker-qdrant-1 (healthy) +- Search API: Docker, docker-search-api-1 (healthy) +- Ollama: Docker, localhost:11434 +- Yandex.Disk: WebDAV на /mnt/yandex-disk + +## Пути + +- Репозиторий: `/opt/hermes/memory-os/` +- Docker compose: `/opt/hermes/memory-os/docker/docker-compose.yml` +- .env: `/opt/hermes/memory-os/docker/.env` +- Скрипты: `/opt/hermes/memory-os/scripts/` +- Search API: `/opt/hermes/memory-os/search_api/main.py` +- Obsidian vault (READ-ONLY): `/opt/hermes/obsidian-vault/` +- Wiki target: `/opt/hermes/vault/wiki/raw/obsidian/` +- State: `~/.hermes/obsidian_sync_state.json` + +## Cron-задачи + +- memory-os obsidian sync + ingest — каждые 10 мин (LLM agent) +- memory-os micro-reflection trigger — каждые 5 мин (no_agent, тихо, deliver: local) + +## Переменные окружения (worker) + +- OLLAMA_BASE_URL=http://ollama:11434 +- OLLAMA_MODEL=qwen3-8b-64k +- EMBEDDING_API_BASE=http://ollama:11434/v1 +- REDIS_HOST=redis, REDIS_PORT=6379 \ No newline at end of file