Alcove

Ваш ИИ-агент не знает ваш проект. Alcove это исправляет.

English · 한국어 · 日本語 · 简体中文 · Español · हिन्दी · Português · Deutsch · Français · Русский

Glama MCP Score crates.io Downloads License Buy Me a Coffee

Alcove — это HTTP API сервер, предоставляющий ИИ-агентам для кодирования доступ к документации вашего частного проекта по требованию — **гибридный поиск BM25 + векторный** для точного извлечения, **индексация кода tree-sitter** для понимания структуры кодовой базы, и **контроль политик** для согласованности документов. Без раздувания контекста, без утечки документов в публичные репозитории, без настройки для каждого агента. ## Демо ![Демо агента Alcove](../demo-agent.gif) > *Claude, Codex — поиск · переключение проектов · глобальный поиск · валидация и генерация. Одна настройка.*
Демо CLI ![Демо CLI Alcove](../demo.gif) > *`alcove search` · переключение проектов · `--scope global` · `alcove validate`*
## Проблема Ваш ИИ-агент начинает каждую сессию с нуля. Он не знает вашу архитектуру. Игнорирует ограничения из уже принятых вами решений. Просит объяснять одно и то же каждую сессию. Контекстное окно — это узкое место. Каждый токен стоит денег и внимания. Загрузка 10 архитектурных документов в контекст тратит 50K+ токенов при каждом запуске — и собственная документация Anthropic предупреждает, что раздутые файлы конфигурации заставляют агентов *игнорировать ваши фактические инструкции*. У вас есть три плохих варианта: **Засунуть всё в конфиг агента** — каждый файл загружается в контекст при каждом запуске. 10 документов = раздутый контекст = медленные, дорогие, менее точные ответы. **Копировать-вставлять в каждый чат** — работает один раз, не масштабируется за пределы одной сессии. **Забить** — агент выдумывает требования, которые вы уже задокументировали, игнорирует ограничения из уже принятых решений, и вы повторно объясняете одну и ту же архитектуру каждый понедельник утром. Умножьте на 5 проектов и 3 агента. При каждом переключении вы теряете контекст. ## Как Alcove решает эту проблему Alcove хранит все ваши частные документы в **одном общем репозитории**, организованном по проектам. Все агенты обращаются к ним одинаково через HTTP API — будь то Claude Code, Cursor или Codex. ``` ~/projects/my-app $ claude "/alcove как реализована аутентификация?" → Alcove определяет проект: my-app → Читает ~/documents/my-app/ARCHITECTURE.md → Агент отвечает с реальным контекстом проекта ``` ``` ~/projects/my-api $ codex "/alcove проверь дизайн API" → Alcove определяет проект: my-api → Та же структура документов, тот же паттерн доступа → Другой проект, тот же рабочий процесс ``` **Меняйте агентов в любой момент. Меняйте проекты в любой момент. Документальный слой остаётся стандартизированным.** ## Основные возможности - **Один репозиторий документов, несколько проектов** — частные документы организованы по проектам, управляются в одном месте - **Одна настройка, любой агент** — настройте один раз, каждый ИИ-агент получает одинаковый доступ - **Автоопределение проекта** по CWD — без настройки для каждого проекта - **Ограниченный доступ** — каждый проект видит только свои документы - **Умный поиск** — BM25-ранжированный поиск с автоматической индексацией; находит наиболее релевантные документы первыми, при необходимости откатывается на grep - **Кросс-проектный поиск** — ищите во всех проектах одновременно с `scope: "global"` — используйте как персональную базу знаний - **Частные документы остаются частными** — конфиденциальные документы (карта секретов, внутренние решения, технический долг) никогда не попадают в публичный репозиторий - **Стандартизированная структура документов** — `policy.toml` обеспечивает единообразие документов во всех проектах и командах - **Кросс-репозиторный аудит** — находит неправильно размещённые внутренние документы в репозитории проекта, предлагает исправления - **Валидация документов** — проверяет отсутствующие файлы, незаполненные шаблоны, обязательные разделы - **Семантический линтинг** — автоматически обнаруживает сломанные вики-ссылки, файлы-сироты, устаревшие маркеры WIP/DRAFT и упоминания дат старше 2 лет - **Импорт из внешнего хранилища** — перенесите заметку из Obsidian (или любого другого хранилища) в doc-repo одной командой; автоматическая маршрутизация в нужный проект - **Работает с 9+ агентами** — Claude Code, Cursor, Claude Desktop, Cline, OpenCode, Codex, Copilot ## Почему Alcove | Без Alcove | С Alcove | |------------|----------| | Внутренние документы разбросаны по Notion, Google Docs, локальным файлам | Один репозиторий документов, структурированный по проектам | | Каждый ИИ-агент настраивается отдельно для доступа к документам | Одна настройка, все агенты разделяют одинаковый доступ | | Смена проекта означает потерю документального контекста | Автоопределение по CWD, мгновенное переключение проекта | | Поиск агента возвращает случайные совпадающие строки | Гибридный поиск (BM25 + RAG) — агенты получают только нужное, ранжированное по релевантности | | Агент видит только текстовые документы, а не структуру кода | Индексация кода tree-sitter — агенты понимают модули, функции и типы на 12 языках | | "Найти все мои заметки об аутентификации" — невозможно | Глобальный поиск по всем проектам в одном запросе | | Конфиденциальные документы рискуют утечь в публичные репозитории | Частные документы физически отделены от репозиториев проектов | | Структура документов различается у каждого проекта и члена команды | `policy.toml` обеспечивает стандарты во всех проектах | | Нет способа проверить, полны ли документы | `validate` обнаруживает отсутствующие файлы, пустые шаблоны, недостающие разделы | | Устаревшие ссылки или маркеры WIP остаются незамеченными | `lint` автоматически обнаруживает сломанные ссылки, файлы-сироты и устаревшие маркеры | | Заметки из Obsidian и других инструментов остаются изолированными | `promote` интегрирует внешние заметки в doc-repo одной командой | ## Быстрый старт > **Обязательно**: Выполните `alcove setup` один раз после установки, чтобы настроить корневой каталог документов и включить все функции. Плагины автоматически регистрируют MCP-подключение, но Alcove не может искать и индексировать документы до выполнения `setup`. > > **Используете Obsidian?** См. раздел [Экосистема](#ecosystem) для рекомендуемой структуры документов и настройки хранилищ. ### Claude Code ``` /plugin marketplace add epicsagas/plugins /plugin install alcove@epicsagas ``` Автоматически устанавливает бинарный файл и регистрирует MCP-сервер при следующем запуске сессии. > **Обязательно**: Запустите `alcove setup` один раз после установки, чтобы настроить корень документов и включить полный функционал. Плагин автоматически инициализирует MCP-подключение, но Alcove не может искать или индексировать документы, пока не будет выполнен `setup`. ```bash alcove setup # запустить один раз после установки плагина ``` Обновления через `claude plugin update epicsagas/alcove`. ### Codex CLI ```bash codex plugin marketplace add epicsagas/plugins ``` Автоматически устанавливает навык и регистрирует MCP-сервер. Доступно сразу — дополнительные шаги не требуются. Обновления через `codex plugin update alcove@epicsagas`. ### macOS (только Apple Silicon) ```bash brew install epicsagas/tap/alcove ``` Нет Homebrew? Используйте скрипт установки: ```bash curl --proto '=https' --tlsv1.2 -LsSf \ https://github.com/epicsagas/alcove/releases/latest/download/alcove-installer.sh | sh ``` ### Linux (x86_64 / ARM64) ```bash curl --proto '=https' --tlsv1.2 -LsSf \ https://github.com/epicsagas/alcove/releases/latest/download/install.sh | sh ``` ### Windows (x86_64 / ARM64) ```powershell irm https://github.com/epicsagas/alcove/releases/latest/download/install.ps1 | iex ``` ### Antigravity (Gemini CLI) ```bash agy plugins install https://github.com/epicsagas/alcove ``` Автоматически устанавливает плагин (MCP-сервер, навык, хуки) и регистрирует его при следующем запуске сессии. ```bash alcove setup # run once after plugin install ``` ### Через цепочку инструментов Rust ```bash cargo binstall alcove # готовый бинарный файл, гибридный поиск включён cargo install alcove --features full-macos # сборка из исходников (macOS) cargo install alcove --features full-cross # сборка из исходников (Linux/Windows) ``` > **Примечание**: `cargo binstall` загружает готовый бинарный файл с гибридным поиском (векторный + BM25). При сборке из исходников для гибридного поиска требуется `--features full-macos` или `--features full-cross`. Без features доступен только поиск BM25 (по ключевым словам). ### Первичная настройка (обязательно) После установки любым из способов выше, запустите: ```bash alcove setup alcove --version alcove doctor ``` `setup` проведёт вас через всё интерактивно: 1. Где находятся ваши документы 2. Какие категории документов отслеживать 3. Предпочтительный формат диаграмм 4. Модель эмбеддингов для гибридного поиска 5. **Фоновый сервер** — устранить холодный старт при каждой сессии (элемент входа macOS) 6. Какие ИИ-агенты настроить (MCP + файлы навыков — Claude Code и Codex управляются через их плагин-системы) Перезапустите `alcove setup` в любое время для изменения настроек. Он запоминает ваши предыдущие выборы. **Необязательные зависимости** | Инструмент | Назначение | Установка | |---|---|---| | `pdftotext` (poppler) | Полное извлечение текста PDF — требуется для поиска по PDF | macOS: `brew install poppler` · Debian/Ubuntu: `apt install poppler-utils` · Fedora: `dnf install poppler-utils` · Windows: [poppler for Windows](https://github.com/oschwartz10612/poppler-windows/releases) | Без `pdftotext` Alcove откатывается на встроенный PDF-парсер, который может не справиться с некоторыми файлами. Запустите `alcove doctor`, чтобы проверить установку. ### Устранение неполадок **Агент не находит инструменты Alcove** Запустите `alcove setup` повторно — он перерегистрирует MCP-сервер для всех настроенных агентов. Затем начните новую сессию агента (регистрация вступит в силу при следующем запуске). **Поиск не выдаёт результатов** Индекс, возможно, ещё не построен. Запустите `alcove index` для построения и повторите попытку. **403 Unauthorized от фонового сервера** В вашей оболочке не задана переменная `ALCOVE_TOKEN`. Запустите `alcove token` для вывода токена, добавьте `export ALCOVE_TOKEN="..."` в профиль оболочки и перезагрузите. **`alcove doctor` сообщает о проблемах** Следуйте предложениям, выводимым `doctor` — он проверяет расположение бинарного файла, регистрацию MCP, состояние индекса и необязательные зависимости, такие как `pdftotext`. ## Использование ### Поиск через CLI Ищите по своим документам прямо из терминала. По умолчанию поиск ведется по **всем проектам** (глобальный охват). ```bash # Базовый поиск (глобальный охват) alcove search "authentication" # Ограничить поиск текущим проектом (автоопределение через CWD) alcove search "auth flow" --scope project # Принудительный режим grep (точное совпадение подстроки) alcove search "TODO" --mode grep # Принудительный ранжированный режим (BM25/Гибридный) alcove search "data model" --mode ranked # Настроить лимит результатов alcove search "deployment" --limit 5 ``` ### ИИ-агенты (HTTP API) ИИ-агенты для кодирования используют Alcove через **локальный HTTP API** на порту 58301. Навыки вызывают `curl http://localhost:58301/...` под капотом. Обычно вам не нужно вызывать их самостоятельно; агент сам воспользуется ими, когда вы зададите вопросы о своем проекте. | Endpoint | Метод | Описание | |----------|-------|----------| | `/health` | GET | Проверка работоспособности | | `/search?q=...` | GET | Поиск документации | | `/v1/search` | POST | Поиск с JSON-телом | | `/projects` | GET | Список всех проектов | | `/projects` | POST | Инициализация нового проекта | | `/projects/{name}/docs` | GET | Список документов проекта | | `/projects/{name}/audit` | GET | Аудит состояния документов | | `/projects/{name}/validate` | GET | Валидация документов по политике | | `/projects/{name}/config` | PUT | Обновление настроек проекта | | `/docs/{path}` | GET | Чтение файла документа | | `/rebuild` | POST | Перестроить поисковый индекс | | `/changes` | GET | Проверить изменённые файлы | | `/lint` | GET | Линтинг документов | | `/vaults` | GET | Список хранилищ | | `/vaults/search?q=...` | GET | Поиск по хранилищам | | `/vaults/backup` | POST | Резервная копия хранилища | | `/promote` | POST | Импорт файла в doc-repo | | `/index-code` | POST | Индексация структуры кода | | `/mcp` | POST | JSON-RPC прокси (устаревший MCP) | > **Примечание**: MCP по-прежнему доступен для ручной настройки — см. `registry/mcp.json` для доступа через stdio. **Пример взаимодействия с агентом:** > **Пользователь:** "/alcove Как мне добавить новую конечную точку API?" > **Агент:** (вызывает `POST /v1/search` с `query="add api endpoint"`) > **Агент:** (читает наиболее релевантный документ через `GET /docs/{path}?project=...`) > **Агент:** "Согласно `ARCHITECTURE.md`, вам необходимо..." --- ## Как это работает ```mermaid flowchart LR subgraph Projects["Ваши проекты"] A1["my-app/\n src/ ..."] A2["my-api/\n src/ ..."] end subgraph Docs["Ваши частные документы (один репозиторий)"] D1["my-app/\n PRD.md\n ARCH.md"] D2["my-api/\n PRD.md\n ..."] P1["policy.toml"] end subgraph Agents["Любой ИИ-агент"] AG["Claude Code · Cursor\nCodex · Copilot\n+4 more"] end subgraph API["HTTP API сервер Alcove"] T["search · get_file\noverview · audit\ninit · validate"] end A1 -- "CWD определён" --> D1 A2 -- "CWD определён" --> D2 Agents -- "HTTP :58301" --> API API -- "ограниченный доступ" --> Docs ``` Документы организованы в отдельном каталоге (`DOCS_ROOT`), по одной папке на проект. Alcove управляет документами и передаёт их любому ИИ-агенту через HTTP на порту 58301. ## Классификация документов Alcove классифицирует документы на следующие уровни: | Классификация | Расположение | Примеры | |--------------|-------------|---------| | **doc-repo-required** | Alcove (частный) | PRD, Architecture, Decisions, Conventions | | **doc-repo-supplementary** | Alcove (частный) | Deployment, Onboarding, Testing, Runbook | | **reference** | Alcove папка `reports/` | Отчёты аудита, бенчмарки, анализы | | **project-repo** | GitHub-репозиторий (публичный) | README, CHANGELOG, CONTRIBUTING | Инструмент `audit` сканирует репозиторий документов и локальный каталог проекта, затем предлагает действия — например, создание публичного README из вашего частного PRD или перенос неправильно размещённых отчётов обратно в alcove. ## Точки API | Endpoint | Метод | Что делает | |----------|-------|------------| | `/health` | GET | Проверка работоспособности | | `/search?q=...` | GET | Поиск документации | | `/v1/search` | POST | Поиск с JSON-телом | | `/projects` | GET | Список всех проектов | | `/projects` | POST | Инициализация нового проекта | | `/projects/{name}/docs` | GET | Список документов проекта | | `/projects/{name}/audit` | GET | Аудит состояния документов | | `/projects/{name}/validate` | GET | Валидация документов по политике | | `/projects/{name}/config` | PUT | Обновление настроек проекта | | `/docs/{path}` | GET | Чтение файла документа | | `/rebuild` | POST | Перестроить поисковый индекс | | `/changes` | GET | Проверить изменённые файлы | | `/lint` | GET | Линтинг документов | | `/vaults` | GET | Список хранилищ | | `/vaults/search?q=...` | GET | Поиск по хранилищам | | `/vaults/backup` | POST | Резервная копия хранилища | | `/promote` | POST | Импорт файла в doc-repo | | `/index-code` | POST | Индексация структуры кода | | `/mcp` | POST | JSON-RPC прокси (устаревший MCP) | > **Примечание**: MCP по-прежнему доступен для ручной настройки — см. `registry/mcp.json` для доступа через stdio. ## CLI ``` alcove Запустить MCP-сервер (агенты вызывают это) alcove setup Интерактивная настройка — перезапустите для переконфигурации alcove doctor Проверить состояние установки Alcove alcove validate Валидация документов по политике (--format json, --exit-code) alcove lint Семантический линтинг — сломанные ссылки, сироты, устаревшие маркеры (--format json) alcove promote Импорт заметок из внешнего хранилища в doc-repo alcove index Обновить поисковый индекс (инкрементально — только изменённые файлы) alcove rebuild Перестроить поисковый индекс с нуля (использовать после изменений схемы) alcove search Искать документы из терминала alcove bench Бенчмарк качества поиска [--corpus] (точность, задержка, обнаружение регрессий) alcove index-code Генерирует индекс структуры кода из исходников [--language LANG] [--source PATH] alcove token Вывести bearer-токен (для аутентификации фонового сервера) alcove uninstall Удалить навыки, конфигурацию и устаревшие файлы alcove mcp Управление жизненным циклом фонового MCP-сервера (start, stop, status, enable, disable) alcove vault link Связать внешний каталог как vault (например, Obsidian) alcove vault list Список всех vault с количеством документов alcove vault index Создать поисковый индекс для vault ``` ### Индексация кода Анализирует исходные файлы с помощью tree-sitter и генерирует `CODE_INDEX.md`—сводку кодовой базы на уровне модулей в формате Markdown, интегрированную с поисковым конвейером Tantivy. ```bash # Индексировать текущий проект (автоматическое определение всех языков) alcove index-code --source ./src # Монорепо: индексировать директорию с несколькими языками alcove index-code --source ./ # Ограничить одним языком alcove index-code --source ./src --language typescript alcove index-code --source ./src --language rust ``` **Поддерживаемые языки:** | Язык | Feature-флаг | Расширения файлов | |------|-------------|------------------| | Rust | `lang-rust` | `.rs` | | Python | `lang-python` | `.py`, `.pyi` | | TypeScript | `lang-typescript` | `.ts`, `.tsx` | | JavaScript | `lang-javascript` | `.js`, `.jsx`, `.mjs` | | Go | `lang-go` | `.go` | | Java | `lang-java` | `.java` | | Kotlin | `lang-kotlin` | `.kt`, `.kts` | | C | `lang-c` | `.c`, `.h` | | C++ | `lang-cpp` | `.cpp`, `.cc`, `.cxx`, `.hpp`, `.hxx`, `.h` | | Swift | `lang-swift` | `.swift` | | Ruby | `lang-ruby` | `.rb` | | C# | `lang-csharp` | `.cs` | Официальные бинарные файлы активируют все 12 парсеров (`lang-all`). Без `--language` **автоматически индексируются все распознанные расширения**—безопасно для монорепо. `--language` принимает сокращения: `ts` → TypeScript, `cpp` → C++, `csharp` → C#, `py` → Python, `js` → JavaScript, `kt` → Kotlin, `rb` → Ruby. ### Lint (Линтинг) ```bash # Линтинг текущего проекта (автоматическое определение из CWD) alcove lint # Указать конкретный проект alcove lint --project my-app # Машиночитаемый вывод для CI alcove lint --format json ``` Линтинг проверяет четыре вещи: | Проверка | Что обнаруживается | |---------|-------------------| | `broken-link` | `[[вики-ссылки]]` или `[текст](путь)`, указывающие на несуществующие файлы | | `orphan` | Файлы, на которые не ссылается ни один документ | | `stale-marker` | Маркеры WIP / TODO / FIXME / DRAFT / DEPRECATED | | `stale-date` | Упоминания дат старше 2 лет (например, «по состоянию на 2022») | ### Promote (Продвижение) ```bash # Скопировать заметку из Obsidian в doc-repo (автоматическая маршрутизация) alcove promote ~/my-brain/Projects/auth-notes.md # Указать конкретный проект alcove promote ~/my-brain/Projects/auth-notes.md --project my-app # Переместить вместо копирования alcove promote ~/my-brain/Projects/auth-notes.md --mv ``` Файлы без подходящего проекта сохраняются в `inbox/` для ручной проверки. ### Бенчмарк **Режим изолированного корпуса** (`--corpus`) использует автономный тестовый набор данных (19 синтетических документов, 25 запросов) для быстрых и воспроизводимых CI-бенчмарков — реальные документы не нужны, завершается менее чем за 60 секунд. ```bash # Запустить на встроенном оценочном корпусе (рекомендуется для CI) alcove bench --corpus --baseline benches/corpus/baseline.json # Обновить базовый показатель корпуса после намеренных изменений alcove bench --corpus --save-baseline benches/corpus/baseline.json # Запустить на реальных документах (50 запросов, 10 категорий) alcove bench --metrics precision # Сохранить как базовый показатель для будущего сравнения alcove bench --output json --save-baseline benches/baseline.json # Сравнить с базовым показателем — обнаружение регрессий в CI alcove bench --baseline benches/baseline.json # Отчёт в Markdown alcove bench --output markdown --output-file bench-report.md ``` | Метрика | Что измеряет | |---------|-------------| | Precision@K | Доля релевантных документов в топ-K результатах | | Recall@K | Доля найденных релевантных документов в топ-K | | NDCG@K | Качество ранжирования со скидкой за позицию | | MAP@K | Средняя точность по всем запросам | | MRR | Обратный ранг первого релевантного результата | | Точность чанков | Попадают ли извлечённые чанки в правильные разделы | **Пороги регрессии**: точность >5%, задержка >20%, пропускная способность >15%. Предупреждение на половине порога. ## Фоновый сервер Запуск постоянного фонового сервера устраняет задержку при холодном старте при каждой новой сессии агента. **`alcove setup` включает это по умолчанию** (объект входа в систему macOS). ```bash alcove mcp enable --now # Включить и запустить (сохраняется после перезагрузки) alcove mcp stop / start / restart / status alcove mcp disable # Отключить и удалить объект входа в систему ``` Когда фоновый сервер запущен, процесс stdio работает как лёгкий прокси — вместо загрузки поискового движка при каждой сессии, он перенаправляет запросы на активный сервер. При запуске процесс stdio проверяет `GET /health` и автоматически переходит в режим прокси. ## Поиск Alcove автоматически выбирает лучшую стратегию поиска. Когда поисковый индекс существует, используется **BM25-ранжированный поиск** (на базе [tantivy](https://github.com/quickwit-oss/tantivy)) для результатов, отсортированных по релевантности. Без индекса откатывается на grep. Вам никогда не нужно об этом думать. ```bash # Поиск в текущем проекте (автоопределение из CWD) alcove search "authentication flow" # Поиск во ВСЕХ проектах — ваша персональная база знаний alcove search "OAuth token refresh" --scope global # Принудительный режим grep для точного поиска подстрок alcove search "FR-023" --mode grep ``` Индекс строится автоматически в фоновом режиме при запуске MCP-сервера и перестраивается при обнаружении изменений в файлах. Никаких cron-задач, никаких ручных действий. **Как это работает для агентов:** агенты просто вызывают `search_project_docs` с запросом. Alcove обрабатывает всё остальное — ранжирование, дедупликацию (один результат на файл), кросс-проектный поиск и откат. Агенту никогда не нужно выбирать режим поиска. ### Выбор модели эмбеддингов | Модель | Диск | Размерность | Контекст | Языки | Лучше всего для | Пиковая RAM | |--------|------|-------------|----------|-------|-----------------|-------------| | **`ArcticEmbedXS`** (по умолч.) | **90 MB** | **384** | **512** | **Многоязычный** | **По умолчанию — лучшее соотношение** | **~400 MB** | | `ArcticEmbedXSQ` | 90 MB | 384 | 512 | Многоязычный | Квантованный, меньший загрузка | ~400 MB | | `MultilingualE5Small` | 470 MB | 384 | 512 | 100+ языков | Лучшая поддержка корейского/CJK | ~1.2 GB | | `BGEM3` | 600 MB | 1024 | 8192 | 100+ языков | Премиум — Dense+Sparse+ColBERT | ~2 GB | | `ArcticEmbedMLong` | 430 MB | 768 | 8192 | Многоязычный | Длинные документы | ~1.5 GB | | `JinaEmbeddingsV2BaseCode` | 550 MB | 768 | 8192 | Код+английский | Оптимизирован для кода | ~1.5 GB | Модель по умолчанию — **ArcticEmbedXS** (90 МБ, многоязычная). Обеспечивает лучший баланс размера и качества для большинства проектов. Модели эмбеддинга основаны на [fastembed-rs](https://github.com/Anush008/fastembed-rs) (ONNX Runtime) и работают полностью локально. Чтобы использовать другую модель, укажите её в `config.toml`: ```toml [embedding] model = "BGEM3" # имя Variable из документации моделей ``` Полный список 40+ поддерживаемых моделей (размерности, длина контекста, языки) см. в **[EMBEDDING_MODELS.md](../docs/EMBEDDING_MODELS.md)**. **Память при перестройке:** Пиковая RAM зависит от модели — см. столбец "Пиковая RAM" в таблице выше. Крупные модели (BGEM3, ArcticEmbedMLong) могут использовать 1.5-2 ГБ во время перестройки. После завершения стационарное состояние снижается до ~50-200 МБ в зависимости от вашей конфигурации `[memory]`. Вы можете дополнительно уменьшить, снизив `max_hnsw_cache` и укоротив `model_unload_secs`. ## Определение проекта По умолчанию Alcove определяет текущий проект по рабочему каталогу вашего терминала (CWD). Вы можете переопределить это переменной окружения `MCP_PROJECT_NAME`: ```bash MCP_PROJECT_NAME=my-api alcove ``` Полезно, когда ваш CWD не совпадает с именем проекта в хранилище документов. ## Политика документов Определите командные стандарты документации с помощью `policy.toml` в вашем хранилище документов: ```toml [policy] enforce = "strict" # strict | warn [[policy.required]] name = "PRD.md" aliases = ["prd.md", "product-requirements.md"] [[policy.required]] name = "ARCHITECTURE.md" [[policy.required.sections]] heading = "## Overview" required = true [[policy.required.sections]] heading = "## Components" required = true min_items = 2 ``` Файлы политики разрешаются с приоритетом: **проект** (`/.alcove/policy.toml`) > **команда** (`DOCS_ROOT/.alcove/policy.toml`) > **встроенный по умолчанию** (список core-файлов из config.toml). Это обеспечивает единообразное качество документов во всех проектах, позволяя при этом переопределения на уровне проекта. ## Конфигурация Конфигурация находится в `~/.config/alcove/config.toml`: ```toml docs_root = "/Users/you/documents" [core] files = ["PRD.md", "ARCHITECTURE.md", "PROGRESS.md", "DECISIONS.md", "CONVENTIONS.md", "SECRETS_MAP.md", "DEBT.md"] [team] files = ["ENV_SETUP.md", "ONBOARDING.md", "DEPLOYMENT.md", "TESTING.md", ...] [public] files = ["README.md", "CHANGELOG.md", "CONTRIBUTING.md", "SECURITY.md", ...] [diagram] format = "mermaid" ``` Все настройки выполняются интерактивно через `alcove setup`. Вы также можете редактировать файл напрямую. ## Поддерживаемые агенты | Агент | MCP | Навык | |-------|-----|-------| | Claude Code | `~/.claude.json` | `~/.claude/skills/alcove/` | | Cursor | `~/.cursor/mcp.json` | `~/.cursor/skills/alcove/` | | Claude Desktop | конфигурация платформы | — | | Cline (VS Code) | VS Code globalStorage | `~/.cline/skills/alcove/` | | OpenCode | `~/.config/opencode/opencode.json` | `~/.opencode/skills/alcove/` | | Codex CLI | `~/.codex/config.toml` | `~/.codex/skills/alcove/` | | Copilot CLI | `~/.copilot/mcp-config.json` | `~/.copilot/skills/alcove/` | | Antigravity | `agy plugins install` | — | ## Поддерживаемые языки CLI автоматически определяет локаль вашей системы. Вы также можете переопределить её с помощью переменной окружения `ALCOVE_LANG`. | Язык | Код | |------|-----| | English | `en` | | 한국어 | `ko` | | 简体中文 | `zh-CN` | | 日本語 | `ja` | | Español | `es` | | हिन्दी | `hi` | | Português (Brasil) | `pt-BR` | | Deutsch | `de` | | Français | `fr` | | Русский | `ru` | ```bash # Переопределить язык ALCOVE_LANG=ru alcove setup ``` ## Обновление | Способ | Команда | |--------|--------| | Homebrew | `brew upgrade alcove` | | curl installer | Повторно запустить скрипт установки выше | | cargo binstall | `cargo binstall alcove@latest` | | cargo install | `cargo install alcove@latest --features full-macos` | | Claude Code Plugin | `claude plugin update epicsagas/alcove` | ```bash alcove --version ``` ## Удаление ```bash alcove uninstall # удалить навыки и конфигурацию cargo uninstall alcove # удалить бинарный файл ``` ## Хранилища знаний (Vaults) Помимо документации проекта, Alcove поддерживает **независимые хранилища знаний (vaults)** для исследовательских заметок, справочных материалов и курируемых знаний, по которым LLM могут осуществлять поиск. ```bash # Создать vault для заметок об исследованиях ИИ alcove vault create ai-research # Связать существующий vault Obsidian (без копирования — индексация на месте) alcove vault link my-obsidian ~/Obsidian/research # Добавить документ alcove vault add ai-research ~/Downloads/transformer-survey.md # Создать поисковый индекс для vault alcove vault index # Список всех vault alcove vault list # areas (8 docs) → (linked) # resources (71 docs) → (linked) # zettelkasten (17 docs) → (linked) # Поиск через CLI alcove search "attention mechanism" --vault ai-research # Агенты ищут через MCP search_vault(query="attention mechanism", vault="ai-research") # Поиск по ВСЕМ vault одновременно search_vault(query="transformer", vault="*") ``` Vaults **полностью изолированы** от документации проекта — отдельные индексы, отдельные кэши, отдельный поиск. Поиск документов проекта вашим агентом для кодирования никогда не затрагивается активностью в vault. | Функция | Документация проекта | Хранилища (Vaults) | |---------|-------------|--------| | Цель | Документация по проектам | Общая база знаний | | Хранение | `~/.alcove/docs/` | `~/.alcove/vaults/` | | Индекс | Общий индекс проекта | Независимый индекс для каждого vault | | Cache | `PROJECT_READER_CACHE` | `VAULT_READER_CACHE` | | Поиск | `search_project_docs` | `search_vault` | | Симлинк | Нет | Да (привязка внешних каталогов) | ### Конфигурация Vault По умолчанию vault хранятся в `~/.alcove/vaults/`. Вы можете изменить это в своем `config.toml`: ```toml [vaults] root = "/path/to/your/vaults" ``` Дополнительные сведения о `config.toml` см. в разделе [Конфигурация](#конфигурация). ## Экосистема ### [obsidian-forge](https://github.com/epicsagas/obsidian-forge) Alcove идеально сочетается с **obsidian-forge**, генератором хранилищ Obsidian и демоном автоматизации. Для наилучшей интеграции ваш Alcove **`docs_root`** должен указывать на архивы проектов obsidian-forge. **1. Установка корня документов** Укажите основной каталог документов на директорию проектов obsidian-forge (напрямую или через символьную ссылку): ```bash # Во время настройки alcove установите docs_root в: ~/Obsidian/SecondBrain/99-Archives/projects ``` **2. Привязка областей знаний как хранилищ (vaults)** Привяжите остальные три категории obsidian-forge как независимые хранилища Alcove. Это создаст символьные ссылки в `~/.alcove/vaults/`: ```bash # Привязка категорий obsidian-forge alcove vault link areas ~/Obsidian/SecondBrain/02-Areas alcove vault link resources ~/Obsidian/SecondBrain/03-Resources alcove vault link zettelkasten ~/Obsidian/SecondBrain/10-Zettelkasten ``` Теперь у ваших агентов есть структурированный доступ: - **`search_project_docs`**: поиск по архивированным знаниям проекта (PRD и т. д.) - **`search_vault`**: поиск по вашим более широким областям знаний и исследовательским заметкам. Вы можете проверить сопоставление физического хранилища, просмотрев символьные ссылки в `~/.alcove/vaults/`. ## FAQ ### Почему бы просто не использовать ripgrep как MCP-инструмент? Ripgrep возвращает файлы целиком. Если ваш агент ищет «auth» и находит 5 файлов по ~200 строк каждый, в контекст попадает ~10K токенов, бо́льшая часть которых не имеет отношения к делу. Alcove разбивает документы на фрагменты, ранжирует их и возвращает только самые релевантные отрывки. Кроме того, Alcove предоставляет семантический поиск на основе векторных эмбеддингов, который ripgrep не способен обеспечить — запрос вроде «как устроен конвейер развёртывания» не совпадёт ни с одним ключевым словом в вашем DEPLOYMENT.md, но векторный поиск Alcove его найдёт. ### Это заменяет CLAUDE.md / AGENTS.md? Нет — у них разные цели. Конфигурационные файлы агентов (CLAUDE.md, AGENTS.md) определяют **поведенческие правила**: стиль коммитов, языковые предпочтения, ограничения безопасности. Alcove управляет **институциональными знаниями**: архитектурными решениями, отслеживанием прогресса, конвенциями кодирования, структурой кода. Конфиг агента — это *как агент должен действовать*. Alcove — это *что агент должен знать*. ### Почему Rust? Единый бинарный файл, без зависимостей от среды выполнения. Tantivy — лучший в своём классе движок BM25. fastembed (ONNX Runtime) обеспечивает локальные векторные эмбеддинги без Python. Одна команда `cargo install` или curl — без Docker, без Node.js, без virtualenv. ### Что насчёт увеличения контекстных окон? Бо́льшие окна не решают проблему релевантности. Даже 200K-токенное окно, заполненное нерелевантными документами, снижает качество вывода агента — собственная документация Anthropic предупреждает, что раздутые файлы конфигурации приводят к тому, что агенты игнорируют реальные инструкции. Цель не в большем контексте, а в правильном контексте в нужный момент. ## Дорожная карта - **Многопользовательский удалённый доступ** — REST API для совместного доступа к документам команды через LAN/VPN (аутентификация по bearer-токену, ограничение скорости уже реализовано). Требуется: API записи, координация параллельных индексов, управление жизненным циклом проектов. ## Вклад в проект Приветствуются сообщения об ошибках, запросы функций и pull request'ы. Откройте issue на [GitHub](https://github.com/epicsagas/alcove/issues), чтобы начать обсуждение. ## Лицензия Apache-2.0