Дайджесты новостей
Изометрическая диорама цифрового архива: кристаллы памяти Hermes Agent соединяются мостом с книжным хранилищем Obsidian.

Интеграция Hermes Agent и Obsidian: организация общей долговременной памяти для мультиагентных сред

Главная беда практически всех современных автономных ИИ-ассистентов — это хроническая амнезия. Ты часами настраиваешь бота, объясняешь ему специфику архитектуры своего проекта, учишь избегать определенных библиотек и задаешь формат ответов. Но стоит закрыть терминал, обновить страницу или перезапустить агентную сессию — и цифровой помощник возвращается к заводским настройкам, глядя на тебя с чистого листа.

Попытки решить эту проблему через закрытые векторные базы данных (black-box vector stores) создают другую проблему: ты не видишь, какие именно факты и в каком виде запомнила нейросеть. Память превращается в «черный ящик», где накапливаются галлюцинации и устаревшие сведения, а исправить отдельную запись вручную невозможно.

Исследовательская лаборатория Nous Research предложила элегантное инженерное решение этой проблемы в своем открытом фреймворке Hermes Agent, добавив нативную поддержку популярного редактора заметок Obsidian. Теперь вся память агента — от личных привычек пользователя до архитектурных решений проектов — сохраняется в виде человекочитаемых Markdown-файлов с двунаправленными ссылками [[Wikilinks]].

Я развернул эту связку на локальной машине, исследовал трехуровневую модель хранения знаний и протестировал сценарии совместной работы нескольких агентов с одним хранилищем. Давай разберем архитектуру этой системы и посмотрим, как настроить общую память для своего роя ботов.

Трехуровневая модель памяти: как устроено хранилище Hermes

В основе архитектуры лежит четкое разделение контекста на три функциональных уровня (Split-Memory Architecture):

  1. USER.md (Постоянный профиль пользователя): Компактный файл в корне хранилища, который подгружается в системный контекст модели при каждом запросе. Здесь фиксируются неизменные вводные: часовой пояс, предпочитаемый стек технологий (например, «строго TypeScript и pnpm»), стиль коммуникации, ограничения по безопасности и рабочие часы.
  2. MEMORY.md (Операционные правила и извлеченные уроки): Живой реестр практических фактов о кодовой базе и системах, который агент обновляет самостоятельно в процессе работы. Например, наткнувшись на ошибку сборки, агент записывает: «Команда npm run build в этом репозитории требует Node.js v22, на v20 падает с ошибкой парсинга». В следующий раз модель сразу применит правильную версию.
  3. state.db (Полнотекстовый сессионный архив): Локальная база данных SQLite, куда сохраняются полные дампы всех завершенных диалогов. Если агенту требуются детали обсуждения месячной давности, он выполняет семантический поиск по архиву, вытягивает только нужный абзац и не забивает оперативное окно контекста лишними данными.

Конфигурация и запуск навыка Obsidian

Интеграция поставляется в составе Hermes Agent в виде встроенного навыка obsidian. Для его активации достаточно указать путь к локальному хранилищу заметок:

# Привязка локального хранилища Obsidian к конфигурации Hermes Agent
export OBSIDIAN_VAULT_PATH="$HOME/Documents/SecondBrain"
hermes config set obsidian.vault_path "$HOME/Documents/SecondBrain"

# Инициализация базовых файлов профиля и операционной памяти
hermes memory init --template=developer-profile

А если тебе требуется автоматизировать синхронизацию графа заметок и извлечение новых уроков из внешних скриптов, используется простой модуль на Python:

import os
from pathlib import Path
import datetime

vault_path = Path(os.environ.get("OBSIDIAN_VAULT_PATH", Path.home() / "Documents/SecondBrain"))

def record_agent_lesson(topic: str, lesson_text: str, source_card: str = ""):
    """Добавляет извлеченный агентом урок в MEMORY.md с перекрестной ссылкой."""
    memory_file = vault_path / "MEMORY.md"
    today = datetime.date.today().isoformat()
    
    new_entry = f"\n- **[{today}] {topic}:** {lesson_text}"
    if source_card:
        new_entry += f" (см. [[{source_card}]])"
        
    with open(memory_file, "a", encoding="utf-8") as f:
        f.write(new_entry)
        
    print(f"[Hermes Memory] Урок успешно зафиксирован в Obsidian: {topic}")

# Пример фиксации урока после рефакторинга микросервиса
record_agent_lesson(
    topic="Миграция схемы Redis",
    lesson_text="Пул соединений в кластере требует keepalive-интервал 30s во избежание сброса сессий",
    source_card="infrastructure-redis-tuning"
)

Прозрачность графа знаний и работа в рое (Swarm Memory)

Главное преимущество связки Hermes + Obsidian — абсолютная прозрачность. Ты можешь в любой момент открыть Obsidian, включить режим интерактивного графа (Graph View) и наглядно увидеть, как связаны между собой проекты, баги и архитектурные решения. Если агент запомнил что-то неверно, тебе не нужно переобучать модель или очищать векторную базу: ты просто открываешь обычный текстовый файл руками, исправляешь строчку и сохраняешь.

Кроме того, одно хранилище Obsidian может одновременно служить единым мозгом для целого роя агентов:

  • Агент-исследователь мониторит новости и складывает саммари в папку /Research;
  • Агент-разработчик читает эти материалы, генерирует код и оставляет отчет в /Engineering;
  • Агент-тестировщик прогоняет тесты, обновляет статус задач и проставляет перекрестные ссылки.

Все они общаются через общие файлы и стандартный синтаксис Wikilinks, не требуя сложных протоколов координации.

Связка Hermes Agent и Obsidian возвращает пользователю контроль над собственными данными. Долговременная память перестает быть абстрактной маркетинговой фразой и превращается в надежный, прозрачный и локальный инструмент повседневной работы.