Подробная инструкция: от нуля до работающей связки
2.1 Что мы строим
Архитектура, которую мы настраиваем:
┌──────────────────────────┐
│ Hermes Agent │
│ (reasoning engine) │
│ ~/.hermes/config.yaml │
└──────────┬───────────────┘
│ MCP (HTTP)
▼
┌──────────────────────────┐
│ Obsidian Hybrid Search │
│ (MCP server :3939) │
│ (retrieval layer) │
└──────────┬───────────────┘
│ файловая система
▼
┌──────────────────────────┐
│ LLM-WIKI │
│ (Obsidian vault) │
│ markdown-заметки │
└──────────────────────────┘
Hermes не читает файлы напрямую — он только отправляет поисковые запросы через MCP и получает релевантные чанки. Это и есть правильное разделение на reasoning и retrieval, которое мы обсуждали.
2.2 Шаг 0: Исходное состояние (что у тебя уже есть)
Согласно твоим условиям, у тебя есть:
- Obsidian vault (LLM-WIKI), который уже создан и поддерживается агентом. Например, путь:
~/Documents/LLM-WIKI(подставь свой реальный путь). - Hermes Agent — базовая установка. Конфигурационный файл лежит в
~/.hermes/config.yaml. Командаhermes chatзапускает агента. - Node.js и npm — необходимы для установки CLI-инструментов. Проверь:
node --versionиnpm --version.
2.3 Шаг 1: Установка Obsidian Hybrid Search CLI
Это отдельный CLI-инструмент, который работает как сервер. Плагин Obsidian (второй репозиторий) нам не нужен для связки с Hermes — он только для интерактивного поиска внутри самого Obsidian.
Установка:
# Глобальная установка CLI
npm install -g obsidian-hybrid-search
# Проверка установки
obsidian-hybrid-search --versionCLI использует Xenova/multilingual-e5-small для эмбеддингов (~117 MB), модель загружается локально при первом запуске. Никаких внешних API не требуется — вся индексация и поиск происходят на твоей машине.
2.4 Шаг 2: Первый запуск и индексация
Перед запуском сервера нужно явно указать путь к вольту через переменную окружения:
# Установка пути к вольту
export OBSIDIAN_VAULT_PATH="$HOME/Documents/LLM-WIKI"Добавь эту строку в ~/.bashrc или ~/.zshrc, чтобы переменная сохранялась между сессиями.
Теперь первичная индексация:
# Запуск сервера (при первом запуске автоматически индексирует vault)
obsidian-hybrid-search serveПри первом запуске CLI создаст SQLite-базу .obsidian-hybrid-search.db в корне вольта и начнёт индексацию:
- Разбивает заметки на чанки (фрагменты)
- Считает эмбеддинги для каждого чанка
- Строит BM25-индекс (полнотекстовый поиск)
- Индексирует wikilinks, теги и frontmatter-поля
Индексация может занять несколько минут на большом вольте. Прогресс отображается в терминале. После завершения сервер остаётся висеть и слушает порт 3939. Ты увидишь сообщение вроде:
MCP server listening on http://127.0.0.1:3939/mcp
2.5 Шаг 3: Проверка работы сервера
В отдельном терминале проверь, что сервер отвечает:
# Проверка через curl (MCP использует JSON-RPC)
curl -X POST http://127.0.0.1:3939/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Если всё работает, ты получишь JSON-ответ со списком доступных инструментов. Среди них будет основной инструмент поиска, а также semantic, fulltext, title и related-запросы.
Чтобы сервер запускался автоматически при старте системы, можно оформить его как systemd-сервис (Linux):
# ~/.config/systemd/user/obsidian-hybrid-search.service
[Unit]
Description=Obsidian Hybrid Search MCP Server
[Service]
ExecStart=/usr/bin/obsidian-hybrid-search serve
Environment=OBSIDIAN_VAULT_PATH=%h/Documents/LLM-WIKI
Restart=on-failure
[Install]
WantedBy=default.targetЗатем:
systemctl --user enable obsidian-hybrid-search.service
systemctl --user start obsidian-hybrid-search.service2.6 Шаг 4: Настройка MCP-подключения в Hermes Agent
Вот здесь ChatGPT дал самый размытый ответ: “куда вставлять JSON?“. Отвечаю точно.
4.1 Где находится конфигурация Hermes
Конфигурационный файл Hermes Agent: ~/.hermes/config.yaml.
4.2 Что именно добавить в config.yaml
Для HTTP-MCP сервера используется секция mcp_servers. Добавь следующий блок:
# ~/.hermes/config.yaml
mcp_servers:
obsidian-hybrid-search:
url: "http://127.0.0.1:3939/mcp"
connect_timeout: 30
timeout: 60
enabled: true
supports_parallel_tool_calls: trueРазбор полей:
url— HTTP-эндпоинт MCP сервера. Именно тот, который ты указывал в своём примере:http://127.0.0.1:3939/mcp.connect_timeout— таймаут на установку соединения (секунды). Для локального сервера 30 секунд более чем достаточно.timeout— таймаут на выполнение инструмента (поиск может занять несколько секунд на большом вольте).enabled: true— явно указывает, что сервер активен.supports_parallel_tool_calls: true— разрешает параллельные вызовы, ускоряет работу при множественных запросах.
4.3 Полный пример конфигурации
Вот как может выглядеть твой ~/.hermes/config.yaml целиком (с базовыми настройками):
# ~/.hermes/config.yaml
# MCP-серверы
mcp_servers:
obsidian-hybrid-search:
url: "http://127.0.0.1:3939/mcp"
connect_timeout: 30
timeout: 60
enabled: true
supports_parallel_tool_calls: true4.4 Как убедиться, что MCP загружен
После редактирования конфигурации перезапусти Hermes и начни новую сессию:
hermes chatСразу после старта спроси агента:
Какие MCP-инструменты тебе доступны прямо сейчас?
Hermes должен ответить, что видит инструменты от obsidian-hybrid-search. Если сервер не запущен — Hermes напишет, что MCP-сервер недоступен, но продолжит работать без него.
2.7 Шаг 5: Использование в реальной работе
Теперь Hermes может искать по вольту через MCP. Пример рабочего цикла:
Ты спрашиваешь:
Что я думал про agency и долгосрочное планирование?
Hermes делает (автоматически):
- Определяет, что нужен retrieval (контекст по теме “agency”)
- Вызывает MCP-инструмент поиска с запросом:
"agency long-term planning autonomy" - Получает топ-10 релевантных чанков из LLM-WIKI
- Включает эти чанки в свой контекст
- Формирует ответ на основе найденных заметок
Ты увидишь в интерфейсе Hermes вызов инструмента и источник (имя заметки, фрагмент текста).
5.1 Что ещё умеет поисковый сервер
Вот полный список поисковых возможностей, которые Hermes может использовать:
| Режим | Что ищет | Пример использования |
|---|---|---|
hybrid | BM25 + семантический поиск (по умолчанию) | “концепция leverage в инвестициях” |
semantic | Только по смыслу (эмбеддинги) | “идеи похожие на вот эту заметку” |
fulltext | Только по ключевым словам (BM25) | “точное упоминание термина X” |
title | Нечёткий поиск по заголовкам | ”заметка с названием про agency” |
--related | Похожие заметки (wikilink-граф) | “с чем связано это понятие” |
Hermes сам выбирает подходящий режим в зависимости от запроса. Сервер использует Reciprocal Rank Fusion (RRF) для объединения результатов из разных методов поиска.
5.2 Фильтрация и уточнение
При необходимости Hermes может уточнять запросы:
- По тегу:
"#project"— только заметки с этим тегом - По папке:
"folder:memory"— только в этой директории - По frontmatter-полям:
"key:value"— заметки с определённым свойством
2.8 Шаг 6: Cron-job для поддержания индекса
Чтобы петля обратной связи работала непрерывно, нужен регулярный перезапуск индексации. Ты упомянул, что Hermes уже запускает hybrid search maintenance через cron. Вот как это оформить:
# Добавить в crontab (crontab -e)
# Ежедневная реиндексация в 3 часа ночи
0 3 * * * /usr/bin/obsidian-hybrid-search index --vault $HOME/Documents/LLM-WIKIИли если индекс должен обновляться чаще:
# Каждые 6 часов
0 */6 * * * /usr/bin/obsidian-hybrid-search index --vault $HOME/Documents/LLM-WIKI2.9 Шаг 7: Плагин Obsidian (опционально)
Хотя для связки с Hermes плагин не нужен, он даёт удобный поиск прямо в Obsidian. Установка:
- Установи BRAT (плагин для бета-версий)
- В настройках BRAT: Add Beta Plugin → вставь URL:
https://github.com/flowing-abyss/obsidian-hybrid-search-plugin - Включи плагин Hybrid Search в списке плагинов Obsidian
Плагин использует тот же CLI, но в режиме stdio — он запускает процесс локально и общается с ним через stdin/stdout.
3. Итоговая проверка: чек-лист
Пройди по каждому пункту, чтобы убедиться, что всё работает:
obsidian-hybrid-searchустановлен глобально (which obsidian-hybrid-search)OBSIDIAN_VAULT_PATHустановлен и указывает на LLM-WIKI- Сервер запущен и отвечает на
curl http://127.0.0.1:3939/mcp - В
~/.hermes/config.yamlдобавлена секцияmcp_serversсobsidian-hybrid-search - Hermes перезапущен и видит MCP-инструменты (
hermes chat→ спросить про инструменты) - Cron-job для реиндексации настроен (опционально, для автоматического обновления)
4. Что дальше: углубление архитектуры
Когда базовая связка заработает, можно развивать систему:
- Query rewriting в Hermes: написать для Hermes системный промпт, который заставляет его переформулировать пользовательские вопросы в оптимальные поисковые запросы с синонимами и контекстом.
- Cross-encoder reranking: CLI поддерживает флаг
@rerank, который включает двухэтапное ранжирование — значительно улучшает точность на сложных запросах. - Memory schemas: структурировать заметки LLM-WIKI по типам (facts, preferences, reasoning chains, plans) для улучшения retrieval.
Система, которую ты строишь — это полноценная personal cognitive infrastructure с разделением на retrieval, reasoning и feedback loop. Связка Obsidian → Hybrid Search → Hermes даёт именно то, что мы обсуждали: единый семантический слой памяти для всех агентов и workflows.
Reference:
- DeepSeek-v4-Pro