# Memex — как пользоваться > **Кратко:** memex — твой локальный архив всех разговоров с AI. Сохраняет дословно. Любой AI-агент через MCP видит всю твою историю. Если ты только установил memex и не знаешь что делать — этот файл объясняет на конкретных кейсах. Скопируй промпт, вставь в свой AI (Claude Code, Cursor, OpenClaw) — и попробуй. --- ## Что memex сохраняет - **Claude Code** — каждую сессию из `~/.claude/projects/` - **Claude Cowork** (включая субагентов) — сессии из `~/Library/Application Support/Claude/local-agent-mode-sessions/` - **Cursor** — composer history из `state.vscdb` - **Obsidian** — заметки из настроенных vault'ов - **Telegram** — v0.10+: daemon сам ловит экспорты из `~/Downloads/Telegram Desktop/` → пакует в pending → ты per-chat подтверждаешь импорт (`memex telegram pending` + `memex telegram import 1 3 5`). Никакого ручного копирования Всё это лежит в **одном файле** `~/.memex/data/memex.db` и доступно через MCP-tools любому AI на твоём компьютере. --- ## Как memex реально работает — механика Когда ты задаёшь вопрос в Claude / Cursor / любом другом MCP-агенте, под капотом происходит **7 шагов**: ``` ┌──────────────────────────────────────────────────────────────────┐ │ Ты: «Что я вчера обсуждал с Claude про auth?» │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 1. Агент (LLM в Claude/Cursor) видит твой вопрос │ │ Думает: "Вопрос про прошлое → надо вызвать memex_search" │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 2. Агент через MCP вызывает memex_search(query="auth") │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 3. Memex выполняет FTS5-запрос к SQLite │ │ (миллисекунды, читает только текст, никаких LLM) │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 4. Memex возвращает 5-10 сообщений с snippet'ами: │ │ │ │ • claude-code · 2026-05-12 · "Решили JWT для auth..." │ │ • claude-code · 2026-05-12 · "...refresh tokens..." │ │ • cowork · 2026-05-11 · "Auth pattern для multi-tenant..." │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 5. Эти snippet'ы попадают в контекст агента как tool-result │ │ (становятся частью контекстного окна LLM ~ 200k токенов) │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 6. LLM (Claude) ЧИТАЕТ снэппеты + твой исходный вопрос │ │ Если мало — может вызвать memex_search ЕЩЁ РАЗ или │ │ memex_get_conversation для полного transcript'a │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ 7. LLM формулирует ответ на твоём языке: │ │ │ │ «Вчера ты обсуждал JWT auth с refresh tokens, в Claude │ │ Code решил так-то, а в Cowork обсуждал multi-tenant │ │ аспекты. Вот точные цитаты: ...» │ └──────────────────────────────────────────────────────────────────┘ ``` ### Кто что делает — главное | | **Memex** | **LLM (Claude/GPT/...)** | |---|---|---| | Тип работы | **Retrieval** (поиск) | **Reasoning** (рассуждение) | | Что умеет | Найти релевантные куски текста за миллисекунды через FTS5 | Понимать контекст, формулировать ответ на твоём языке | | Что НЕ умеет | Думать, суммаризовать, отвечать | Сам по себе вспоминать что было вчера | **Аналогия:** memex — как Google для твоего личного архива. LLM — как ты сам, читая результаты Google. ### Куда попадают найденные куски Это **критически важно понять**: snippet'ы из memex попадают **в контекстное окно LLM** (тот же ~200k токенов где живёт твой текущий разговор). LLM видит их как обычный текст в своём контексте и может на них ссылаться, цитировать, переформулировать. Это **не RAG в классическом смысле** (где векторный поиск тащит из БД сверху промпта). Это **agentic retrieval**: LLM сам решает когда вызвать memex_search, и сам обрабатывает результаты как любой другой tool-call. ### Что memex делает — а что нет ✅ **Memex делает:** - Возвращает дословный текст (verbatim) — никаких пересказов - FTS5-поиск с recency boost (свежее → выше в выдаче) - Multi-source поиск (Claude + Cursor + TG + Obsidian в одном запросе) - Метаданные: source, date, conversation_id (для drill-down) ❌ **Memex НЕ делает:** - Не суммаризует найденное - Не отвечает на вопросы напрямую - Не «думает» про связи между сообщениями - Не модифицирует найденный текст - Не использует embeddings (пока — FTS5 only, semantic в roadmap'е) ### Что LLM делает с снэппетами - Читает их как обычный текст в контексте - Объединяет с твоим вопросом и формирует ответ - Может **уточнить поиск** — вызвать memex_search ещё раз с другим query - Может **drill down** — вызвать memex_get_conversation для полного transcript'a одного чата - Может **скомбинировать с другими тулзами** — например прочитать локальный PDF через свой file-read tool, и сцепить с контекстом из memex ### Контекстное окно — где это всё живёт LLM имеет ограниченное контекстное окно (~200k токенов у Claude 4.7). Retrieved snippet'ы из memex занимают часть этого окна — поэтому есть параметры регулирования: - `expand_match: false` (default) → snippet'ы по 360 chars каждый, экономия токенов - `expand_match: true` → полный текст каждого сообщения - `group_by_conversation: true` (default) → один лучший hit на чат + count, не все совпадения - `limit: N` (default 10) → сколько результатов вернуть Эти параметры контролируют **сколько токенов** retrieved data занимает в твоём контексте. --- ## 6 типовых сценариев — что попросить агента ### 1. 📋 Превратить рабочий Telegram-чат в action plan ``` Прочитай через memex_search мой последний месяц переписки с клиентом X в Telegram. Сделай чек-лист действий с приоритетами и список открытых вопросов на которые надо ответить. ``` → Агент находит сообщения через `memex_search`, читает контекст, выдаёт структурированный план. Не нужно вручную перечитывать три месяца переписки. --- ### 2. 📊 Анализ pitch-deck'a из рабочего Telegram ``` Через memex_search найди в моём чате с маркетологом deck про Q2 launch (около двух месяцев назад) и всё обсуждение вокруг него. Открой сам файл (путь у memex в metadata) и сведи: 1) ключевые тезисы deck'a, 2) комментарии команды из чата, 3) открытые вопросы для следующей встречи. ``` → memex даёт контекст разговора, агент читает PDF своими тулами, выдаёт синтез **deck + обсуждение** в одном. --- ### 3. 🌉 Один AI видит историю другого ``` Найди через memex_search что я вчера обсуждал с Claude про auth. Продолжай отсюда — не нужно объяснять заново. ``` → Cursor через MCP читает Claude Code сессию. Контекст переходит между AI без повторных объяснений. --- ### 4. 🔍 Найти точную цитату из прошлого ``` В марте я что-то решал про pricing. Найди дословную формулировку в моих сессиях с AI. ``` → `memex_search("pricing")` возвращает оригинальные сообщения — не пересказ, точную цитату с датой и из какой сессии. --- ### 5. 🔄 «Где я остановился в этом проекте?» ``` Возвращаюсь к проекту memex после двух недель. Через memex_list_projects и memex_recent покажи где я остановился. Что было сделано, что осталось? ``` → Агент собирает картину из последних сессий по этому project_path. --- ### 6. 💡 Найти паттерны во всех AI-разговорах ``` Через memex_search найди все упоминания Postgres в моих сессиях с AI. В каком контексте? Что я решал? Какие проблемы всплывали? ``` → Один запрос → агент видит все упоминания через все инструменты и сводит в темы. --- ### 7. 🕐 Timeline эволюции одного документа Memex по дефолту сортирует по **релевантности** (FTS5 BM25 × recency boost). Это хорошо для «найди что-то конкретное», но плохо для **«покажи как X менялось со временем»** — версии разлетаются хаотично. **Попроси агента явно отсортировать:** ``` Найди в memex все упоминания презентации Q2 launch — в моём Telegram-чате с маркетологом И в моих AI-сессиях. ОТСОРТИРУЙ результаты строго по дате создания (от самой свежей к самой старой). Покажи как deck менялся — какие версии были, что менялось между ними. ``` → Memex вернёт hits, агент **переупорядочит их по `ts`** (это поле есть в каждом результате) и покажет chronological timeline. Если хитов слишком много в FTS-поиске — попроси `expand_match: true` и `limit: 20`, чтобы получить полные тексты. **Tip:** если уже видишь хаотичные результаты — просто скажи агенту в чате: ``` Эти результаты переотсортируй по дате — от свежей к старой. Каждый укажи с датой и source. ``` Агент возьмёт уже-полученные hits и пересортирует. **Дополнительный memex-вызов не нужен.** **Server-side sort:** `memex_search` принимает параметр `sort: "date_asc"` (от старых к новым — читать эволюцию) или `sort: "date_desc"` (последняя версия первой). FTS5 MATCH всё равно фильтрует кандидатов, меняется только порядок — recency boost отключается. Это правильнее, чем переcортировка на стороне агента, когда хитов много. --- ### 8. 🔗 Сохранение URL'ов в memex (Perplexity, статьи, AI-share'ы) Ты читаешь что-то — Perplexity research thread, длинную статью, GitHub-обсуждение, AI-chat share — и хочешь чтобы это жило в memex-памяти, искалось из любого AI-чата. **В любом MCP-агенте (Claude Code, Cursor, OpenClaw):** ``` Сохрани https://perplexity.ai/share/ в memex Добавь эту статью в memex: https://example.com/great-post Захвати этот ChatGPT-разговор: https://chat.openai.com/share/ ``` **Что происходит за кулисами:** 1. Агент сам делает fetch URL'a (через свой WebFetch) 2. Если страница защищена Cloudflare (Perplexity, npm.com, Twitter, Medium…) — агент авто-retry через `r.jina.ai` proxy (бесплатный JS-runtime, обходит Cloudflare). **Точный recipe** (зафиксирован эмпирически на реальных Cloudflare-страницах в 2026-05): ```bash curl -H "Accept: text/markdown" https://r.jina.ai/https:// ``` Критично: **`https://` после `r.jina.ai/`** (НЕ `http://`, НЕ голый домен), **`Accept: text/markdown`** header (иначе возвращается HTML или mixed-формат). Если WebFetch агента не умеет задавать headers — shell out на curl с `-H`. 3. Агент вызывает `memex_store_document(content, url, title)` 4. Memex сохраняет содержимое как conversation с `source: "web"` — ищется через `memex_search` рядом с AI-чатами **Для Perplexity-thread'ов:** thread должен быть **PUBLIC**. В Perplexity: открой thread → Share → toggle "Public link" → скопируй новый URL → дай его агенту. URL из адресной строки браузера (`perplexity.ai/search/`) — это **твой owner-URL, не shareable**. Если забудешь — memex детектит «private» в ответе и agent тебе явно скажет что делать. **Login-walled или paywalled контент не fetch'нется** (NYT subscription, твои приватные ChatGPT-чаты). Для них вставь контент руками: ``` Сохрани этот текст в memex (название: "..."): <вставь содержимое> ``` **Tag'и при сохранении** — для последующей фильтрации: ``` Сохрани https://... в memex, поставь теги "research" и "perplexity" ``` **Поиск:** ``` Найди в memex что Perplexity говорил про X на прошлой неделе ``` `memex_search` возвращает совпадения **и из AI-чатов, и из сохранённых URL'ов** в одном запросе — отсортировано по релевантности или дате. **Memex принципиально НЕ делает outbound network calls.** Fetcher живёт в твоём AI-агенте. Если он использует Jina для обхода Cloudflare — Jina видит URL (но НЕ остальной memex-корпус). Это выбор агента, не memex'a. --- ## Какие MCP-tools агент может вызвать | Tool | Что делает | |---|---| | `memex_overview` | Снэпшот корпуса: источники, сколько сообщений, последние чаты, статус auto-capture | | `memex_search(query)` | Полнотекстовый поиск (FTS5) с recency boost'ом. Параметры: `project`, `source`, `chat`, `conversation_id` (поиск ВНУТРИ одной сессии), `since_ts`/`until_ts` (фильтр по диапазону дат), `origin` (v0.14 — с какого УЗЛА захвачено: "vps1", "macbook-pro"), `half_life_days`, `expand_match`, `sort` | | `memex_store_document(content, url?, title?)` | Сохранить внешний документ (web-страница, AI-chat share, paste) в memex. Агент сам делает fetch, memex хранит verbatim. Учит Jina-трюк для Cloudflare-страниц | | `memex_list_projects` | Список всех проектов с количеством разговоров | | `memex_list_conversations` | Список чатов отсортированных по recency | | `memex_get_conversation(id)` | Transcript одного чата. Параметры: `limit`, `offset` (листать длинные сессии), `order` (`asc`=старые/`desc`=свежие первыми), `include_subagents`. Вывод сообщает `total` — сколько всего сообщений | | `memex_recent` | Последние N сообщений по всем источникам | | `memex_archive_conversation(id)` | Скрыть чат из дефолтных списков (не удаляет) | | `memex_export_markdown` | Экспорт чата в Markdown (для Obsidian) | | `memex_list_sources` | Что и сколько импортировано | | `memex_status` | Здоровье memex-sync daemon'a | | `memex_sources_status` | Какие источники включены/отключены | | `memex_telegram_check` *(v0.10+)* | Состояние Telegram-pipeline: Desktop установлен? login age? сколько pending? Возвращает `next_step` для агента | | `memex_telegram_pending` *(v0.10+)* | Список экспортов в `~/.memex/pending/` с chat name + msg count + дата range | | `memex_telegram_import` *(v0.10+)* | Импорт выбранных экспортов в memex.db (по индексу или title). Auto-allowlist | | `memex_telegram_skip` *(v0.10+)* | Пометить чаты как «не индексировать» — применяется к будущим re-export'ам | | `memex_telegram_mode` *(v0.10+)* | Get/set режим: `pick` (default), `auto`, `manual` | --- ## 🔎 Рецепты поиска для агентов (как доставать память эффективно) Частые задачи и точный способ их решить — особенно для длинных сессий и узких запросов: | Задача | Как сделать | |---|---| | **Тема за конкретный период** («что обсуждали про X в июне») | `memex_search(query, since_ts, until_ts)`. Это фильтр по датам — в отличие от `sort` (только порядок) и `half_life_days` (только буст). | | **Ключевое слово внутри одной большой сессии** | `memex_search(query, conversation_id=)` — точный скоуп в один чат (а не нечёткий `chat` по названию). | | **Самые свежие сообщения длинной сессии** | `memex_get_conversation(id, order:"desc")` — хвост в один вызов. Дефолт `asc` отдаёт самые старые. | | **Навигация по сессии на тысячи сообщений** | Сначала `memex_search(query, conversation_id)` чтобы найти место, потом `memex_get_conversation(id, offset, limit)` чтобы прочитать окно вокруг. | | **Листать длинный чат страницами** | `memex_get_conversation(id, limit, offset)` — `offset` 0, 200, 400… Вывод показывает `total`, чтобы знать докуда листать. | | **Эволюция документа/решения во времени** | `memex_search(query, sort:"date_asc")` — старые→новые, читать вперёд. | | **Найти в чате по человеку/названию** | `memex_search(query, chat:"<часть названия>")` — нечёткий подстрочный матч по заголовку. | | **«Что я обсуждал с агентом на конкретной машине»** (synced-меш) | `memex_search(query, origin:"vps1")` — v0.14: каждый узел штампует свои захваты своим именем. Какие origins есть — видно в `memex_overview`. В слитых чатах (два агента в одном Telegram) `memex_get_conversation` помечает строки `[@origin]`. Строки до v0.14 — без origin. | > Даты — Unix-секунды. Напр. «с 1 июня 2026» → `since_ts: 1780272000`. Не уверен в границах — сначала `memex_list_conversations(since_ts=…)` чтобы увидеть, какие сессии попадают в окно. --- ## 🔁 Синк между устройствами (v0.13) — 2 шага Ноут с Claude/Cursor + сервер с агентом → одна общая память. Без публичных портов, фаервол не трогаем, SSH-ключи руками не носим. **Шаг 1 — промпт агенту на сервере** (он сделает всё сам): ``` Настрой memex-sync как хаб и выдай join-токен для моего ноута: 1. npm install -g memex-mvp@latest (пропусти, если уже стоит) 2. memex-sync sync-server install --bind 127.0.0.1 3. memex-sync sync-server invite --join Пришли мне строку memex-join:... ``` **Шаг 2 — одна команда на ноуте:** ```bash memex-sync sync-join memex-join:eyJ2... ``` Поднимет самовосстанавливающийся SSH-туннель, сделает первый синк, поставит авто-синк (15м) + watchdog (1ч) и **докажет** петлю тестовой заметкой. Проверить состояние в любой момент: `memex-sync sync-status` (туннель, расписание, watchdog, когда был последний успешный синк). Если синк замолчит дольше часа — watchdog пришлёт уведомление и запишет `~/.memex/sync-alert.txt`. Типовые проблемы: токен «expired» сразу после выпуска → проверь часы на обеих машинах (`date -u`), пере-выпусти токен; «SSH failed» → команда печатает твой pubkey — отдай его агенту сервера и повтори. Подробности и продвинутые топологии — [SYNC.md](https://github.com/parallelclaw/memex-mvp/blob/main/SYNC.md). --- ## 💻 Терминальный CLI (v0.7+) — когда MCP не работает Если MCP-интеграция не подцепилась к твоему агенту (или ты в агенте без MCP-поддержки, но с shell-доступом) — у memex есть **terminal-режим** на том же бинаре. Один пакет, два режима. ```bash memex search "Postgres миграция" # FTS5 поиск memex search "Q2 deck" --chat "Memex Bot" # фильтр по title чата memex search "auth" --source claude-code --limit 5 --sort date_desc memex search "JWT" --as-of 2026-05-01 # time-travel (v0.8.1+) — только до даты memex when "Brian Chesky" # «когда мы об этом говорили» memex when "JWT decision" --limit 5 # → chronological list of chats, без snippets memex recent --limit 5 # последние сообщения memex recent --source telegram memex list # все conversations memex list --source web # только сохранённые URL'ы memex get web-1582ab51a7b7 # полный контент conversation memex overview # snapshot корпуса (+ capture streak v0.8.1+) memex projects # уникальные project_paths # Telegram pipeline (v0.10+): memex telegram check # Desktop? 24h? watcher? pending? memex telegram pending # список pending экспортов memex telegram import 1 3 5 # импорт по индексам или title'у memex telegram skip 4 # не индексировать; запомнить memex telegram allow "Family" # auto-import на следующих re-export'ах memex telegram block "*bank*" # никогда не индексировать (glob) memex telegram mode auto # pick (default) / auto / manual memex telegram notifications on --show-titles # macOS notif когда детектится новый export memex telegram notifications target claude-cli # клик по баннеру → откроет Claude Code CLI memex telegram open-pending # открыть pending в лучшем доступном клиенте memex telegram open-pending --in terminal # forcefully в Terminal с командой memex telegram scan # one-shot ре-скан Downloads memex telegram status # all decisions # Импорт файла из ЛЮБОГО пути (v0.10.12+) — без танцев с inbox/pending: memex import ~/projects/memex/result.json # автодетект формата memex import ~/Downloads/ChatExport_2026-05-18/ # директория Telegram HTML memex import ~/path/to/session.jsonl # Claude Code JSONL memex import ~/Downloads/result.json --force # пропустить privacy-gate memex import file --format claude-jsonl --json # явный формат + JSON-вывод memex help # эта инструкция в терминале memex --help # справка по командам memex --version ``` **Все query-команды поддерживают `--json`** для пайпов и скриптов: ```bash memex search "TODO" --json | jq '.results[].snippet' memex list --source telegram --json | jq -r '.conversations[].title' memex get web-1582ab51a7b7 --json > backup.json ``` **БД открывается read-only** — безопасно запускать пока daemon-writer работает. **Когда использовать CLI вместо MCP:** - MCP-интеграция в твоём агенте не подключилась → `memex overview` подтвердит что сам memex здоров, проблема в MCP-config'е клиента - Агент без MCP-поддержки (OpenCode + Kimi, любые CLI-only агенты), но с shell-доступом - Shell-скрипты / автоматизация - Дебаг: «вижу ли я свою историю напрямую?» **`memex` (без аргументов)** — это MCP stdio-сервер. Это поведение по умолчанию для Claude Code / Cursor / OpenClaw через их MCP-config'и. CLI-команды активируются только при наличии распознанного subcommand'a. --- ## 📥 Импорт файла из произвольного пути (v0.10.8+ → v0.10.12+ MCP) Если у тебя файл `result.json` (Telegram export) или `.jsonl` (Claude/Cowork-сессия) лежит где-нибудь в `~/Downloads/`, `~/Desktop/`, `~/projects/foo/` — **не нужно** копировать его руками в `~/.memex/inbox/`. Одна команда: ```bash memex import ~/projects/memex/result.json ``` Что произойдёт: - Авто-детект формата (Telegram JSON / HTML / Claude Code JSONL / Cowork JSONL) - Для Telegram: проверяет твои decision-предпочтения (`allow` / `skip` / `block`) - Новый чат → выводит preview (title, кол-во сообщений, диапазон дат, senders) и спрашивает подтверждения (`--force` чтобы импортить) - Уже в `allowed` → импортит сразу - В `skipped` / `blocked` → отказывается (или `--force` чтобы переопределить) - Для Claude/Cowork JSONL — импортит сразу (своя память, нет privacy-gate) - Идемпотентно — повторный импорт того же файла не задвоит (UNIQUE constraint) **То же самое через AI-агента:** любой агент с MCP-соединением может вызвать `memex_import_file({path: "..."})` одним tool-call'ом, получить структурированный ответ. Это **в 100 раз дешевле по токенам** чем агент через bash руками таскает файлы в inbox и парсит логи. --- ## 🖥 Web-дашборд (v0.10.8+) — посмотреть память глазами Когда хочется не звать AI, а **самому полистать** что у тебя в memex'е — есть локальный read-only веб-UI. Та же SQLite, другая поверхность. ```bash memex web --open # localhost:8765, откроется в браузере memex web --port 9000 # свой порт memex web --public --token s3cret # 0.0.0.0 с bearer-авторизацией (для туннеля) memex web --help ``` **5 страниц:** - `/` — статы (messages / conversations / sources / imports), sources breakdown, callout про pending Telegram, последние 10 чатов - `/conversations` — список с **live FTS5-поиском** через htmx (печатаешь — обновляется за 200мс), фильтры-чипы по source - `/c/:id` — **verbatim** транскрипт chat-bubble'ами (то самое, что не делает claude-mem — он только AI-резюмирует); поиск внутри чата с подсветкой; пагинация для 1000+ сообщений - `/pending` — Telegram-экспорты с чекбоксами; нажимаешь Import / Skip — тот же гейт privacy, что и `memex telegram import` - `/settings` — daemon status, путь и размер БД, установленные хуки, decisions count (read-only) **Что важно:** - Не always-on. `memex web` поднял — Ctrl+C погасил. Никакого фонового сервера. - Read-only. Единственные записи — это TG import / skip на `/pending`. - Localhost-only by default. Для remote — `--public --token …`. - Без build-step'a. Raw Node `http` + tagged template literals + htmx 14KB. Клиентский bundle ≈ 30KB (для сравнения у claude-mem ~10MB React-бандл). - Брендирование как на лендинге (mint #6ee7b7 на тёмном). **Когда полезно:** - Хочешь сам прокрутить большой Telegram-чат и не вспоминать какой именно поиск ввести - Демо коллеге — открыл вкладку, показал что у тебя реально лежит дословно (это и есть verbatim-moat — на любой чат с любого источника можно перейти и увидеть сырое, не AI-пересказ) - Аудит pending'a с мышкой и галочками вместо `memex telegram import 1 3 5` - Cron-friendly remote endpoint (тот же сервер потом получит multi-host sync API в v0.13+) --- ## 🪄 Auto-context (v0.8+) — Brian Chesky moment Magic-фича. Когда ты открываешь Claude Code в проекте, Claude **сам** инжектит 500-1500 токенов контекста про этот проект — что ты делал недавно, какие conversations касались темы. Ты ещё ничего не спросил, а AI **уже знает**. **Технически:** SessionStart hook в `~/.claude/settings.json`. При старте каждой Claude Code сессии хук вызывает `memex context` → memex выдаёт markdown summary → Claude получает его как system message _до_ твоего первого вопроса. **Установка:** проще всего — `curl -fsSL https://memex.parallelclaw.ai/install.sh | bash` поставит memex + daemon + auto-context хук одной командой. Если ставил memex вручную — во время `memex-sync install` будет промпт `[Y/n]` (соглашайся, Y по default'у). Или установи хук позже: ```bash memex hook install # добавить хук memex hook uninstall # удалить (только memex-запись, другие хуки сохраняются) memex hook status # узнать текущее состояние ``` **Посмотреть что будет инжектиться** (dry-run в текущей директории): ```bash memex context # markdown как для хука memex context --json # структурированный memex context --no-source telegram # исключить telegram (privacy) memex context --freshness-days 30 # только последние 30 дней ``` **Privacy:** хук ничего не отправляет наружу — это локальная инъекция в локальную Claude-сессию. Но в context могут попасть фрагменты из любых indexed sources (включая Telegram). Чтобы исключить — добавь `--no-source telegram` в команду хука (правится в `~/.claude/settings.json`). **Где это пока не работает:** Cursor — нет native SessionStart hook'а; fallback через MCP-tool (v0.9+). Сейчас auto-context работает в **Claude Code и OpenClaw**. --- ## Если что-то не работает ### Поиск пустой 1. Вызови `memex_overview`. Внимание на статус-баннер сверху: - 🟢 daemon работает — всё ок, может ещё не успел проиндексировать - 🔴 daemon установлен но не работает — `launchctl load ~/Library/LaunchAgents/com.parallelclaw.memex.sync.plist` - ⚪ daemon не установлен — самый простой способ: `curl -fsSL https://memex.parallelclaw.ai/install.sh | bash` (поставит сам всё). Или вручную: `memex-sync install`. ### Хочу проиндексировать существующие сессии (бэкфилл) ```bash npx memex-sync scan ``` Обходит `~/.claude/projects/`, Cowork-сессии, Cursor state.vscdb, и Obsidian-vault'ы один раз — ингестит всё что уже есть на диске. ### Telegram-чаты не появляются В Telegram **Desktop** (не mobile!): чат → меню (⋮ или ☰) → **Export chat history**. **memex поддерживает оба формата экспорта (v0.9+):** - **«Machine-readable JSON»** ← рекомендуется. Один файл `result.json`, чисто ингестится. - **«HTML»** ← тоже работает (с v0.9+). Получишь директорию `ChatExport__/`. **v0.10+ flow — privacy-first, без ручного копирования:** 1. Сохрани экспорт куда обычно (по умолчанию `~/Downloads/Telegram Desktop/ChatExport_*`). 2. Daemon **сам** детектит и переносит в `~/.memex/pending/`. 3. Получишь уведомление (через 4 канала: tip в CLI, в auto-context хуке Claude, в response любого MCP-tool, optionally macOS native notification). Подробнее: `memex telegram notifications status`. 4. Запусти `memex telegram pending` → увидишь список с превью. 5. Импорт: `memex telegram import 1 3 5` (по индексу) или просто скажи AI агенту «импортируй family и work». 6. Sensitive чаты можно пропустить: `memex telegram skip 4 7` — memex запомнит и не будет предлагать снова. **Старый flow тоже работает** (для совместимости): кинь `result.json` или `ChatExport_*/` прямо в `~/.memex/inbox/` — попадёт сразу в `memex.db` без pending review. **Modes** (`memex telegram mode `): - `pick` (default): всё через pending, ты явно подтверждаешь - `auto`: чаты из allow-list импортятся сами, новые — в pending - `manual`: watcher выключен, только ручной inbox Если ингест не произошёл — проверь `~/.memex/data/memex.log`. Для HTML-export'а парсер пишет actionable error если что-то не так (формат изменился у Telegram, директория повреждена, и т.д.). **Что НЕ работает:** - ❌ Мобильный экспорт (Telegram mobile не экспортирует структурированно) - ❌ Скриншоты чатов - ❌ Только-медиа чаты (без текста парсятся как `[photo]`/`[voice]` placeholders, но без content) ### Хочу подключить новый Obsidian-vault ```bash npx memex-sync vault add ~/path/to/vault ``` ### Я в Cursor, memex не видит мои Claude Code сессии `memex_overview` покажет что захватывается. Если Claude Code не в списке источников — проверь что `~/.claude/projects/` существует на твоей машине и не пустая. Затем `npx memex-sync scan-claude` для одноразового ингеста. ### Хочу удалить какой-то чат ```bash # Скрыть из дефолтных списков (рекомендуется) memex_archive_conversation(conversation_id="tg-...") # Или полностью удалить через sqlite sqlite3 ~/.memex/data/memex.db "DELETE FROM messages WHERE conversation_id = '...'" ``` --- ## Где живёт твоя память - **`~/.memex/data/memex.db`** — твой SQLite-архив. Это main файл. Бэкап через `cp`. - **`~/.memex/inbox/`** — куда дроп'ать Telegram-экспорты или другие JSON для импорта - **`~/.memex/staging/`** — внутренняя кухня daemon'a, **не трогай** - **`~/.memex/data/conversations/`** — импортированные файлы переезжают сюда после успешного парсинга - **`~/.memex/data/ingest.log`** — лог daemon'a (`tail -f` чтобы смотреть в реальном времени) - **`~/.memex/config.json`** — конфиг (какие источники включены) --- ## Ничего не помогает? - Issues / баги: https://github.com/parallelclaw/memex-mvp/issues - README с архитектурой: https://github.com/parallelclaw/memex-mvp#readme - Лендинг с use cases: https://memex.parallelclaw.ai