Obsidian как общая база знаний для Claude, Claude Code и VSCode

Суть проблемы

Дано: рабочий процесс, который строится на трёх инструментах.

  • VSCode + Claude Code: код проекта, разработка.
  • Obsidian: документация: постановки задач, концепции, заметки, текущие вопросы.
  • Приложение Claude (Desktop): обсуждения, планирование, работа над документами.

Приложение Claude и Obsidian связываются штатно: MCP-сервер filesystem в Claude Desktop получает путь к vault и напрямую читает и редактирует заметки. Эта связка настраивается один раз и дальше просто работает.

Проблема в третьем участнике. Claude Code по умолчанию ограничен рабочей директорией проекта: попросить его «сделай по концепции из Obsidian» нельзя, потому что vault лежит за пределами его песочницы. Приходится копировать содержимое заметок в чат руками или таскать файлы в проект.

Цель: дать Claude Code перманентный доступ к vault во всех проектах, научить каждый проект самостоятельно находить свою документацию и заодно причесать всё это в VSCode.

MCP или additionalDirectories?

Первая мысль — это сделать как в Claude Desktop: подключить тот же MCP-сервер filesystem. Claude Code это умеет, вплоть до импорта готовой конфигурации командой claude mcp add-from-claude-desktop.

Но для Claude Code это избыточный путь. В отличие от Desktop, у него уже есть собственные инструменты работы с файлами: Read, Edit, Grep, Glob. MCP-сервер их просто продублирует, а описания его инструментов будут загружаться в контекст каждой сессии и занимать там место.

Правильнее не добавлять новый инструмент, а расширить границу файловой системы, в которой работают штатные. Для этого существует настройка permissions.additionalDirectories.

Пошаговое решение

Схема из двух частей: глобальный доступ к vault (settings.json) и маршрутизация на уровне проекта (CLAUDE.md).

1. Глобальный доступ к vault

Настройки уровня пользователя живут в ~/.claude/settings.json — их читает и CLI, и расширение VSCode. Добавляем блок permissions:

{
  "permissions": {
    "additionalDirectories": [
      "/Users/username/Library/Mobile Documents/iCloud~md~obsidian/Documents/MyVault"
    ]
  }
}

Если файл уже существует (например, с выбором модели), то блок дописывается к имеющемуся содержимому, а не заменяет его.

Важно. Путь указывается абсолютный и целиком в кавычках: у iCloud-синхронизированного vault в пути есть пробел (Mobile Documents). Сам путь к своему vault проще всего скопировать из настроек MCP filesystem в Claude Desktop — он там уже прописан.

После этого Claude Code в любом проекте может читать и редактировать файлы vault штатными инструментами, без запроса разрешений.

2. Маршрутизация: секция в CLAUDE.md проекта

Глобальный доступ отвечает на вопрос «можно ли», но не «куда смотреть». Чтобы агент сам находил документацию проекта, в CLAUDE.md добавляется секция с путём к соответствующей подпапке vault:

## Project Documentation (Obsidian)

Project notes, requirements, and concept documents live in the Obsidian vault:
`/Users/username/Library/Mobile Documents/iCloud~md~obsidian/Documents/MyVault/MyProject/`

- When a task references requirements, concepts, or specs — look there first
  (e.g. monetization concept, integration notes, current open questions)
- These are the user's personal notes synced via iCloud: NEVER edit files in this
  folder unless the user explicitly asks
- Implemented features are documented separately in `docs/features/` (see below)

Три детали, которые здесь имеют значение:

  • Примеры реальных документов в скобках помогают агенту сопоставить запрос с конкретным файлом, а не просто знать про абстрактную папку.
  • Правило NEVER edit — предохранитель. additionalDirectories даёт не только чтение, но и запись, а vault синхронизируется по iCloud на все устройства. Без явного запрета агент в порыве рефакторинга может переписать заметки.
  • Граница между двумя видами документации: в vault агент только смотрит (постановки, концепции), доку по реализованным фичам пишет в docs/ проекта.

Для каждого следующего проекта процедура сводится к копированию секции с заменой пути на свою подпапку.

3. Проверка

Открываем новую сессию Claude Code (CLAUDE.md и settings.json читаются при старте сессии; перезапуск VSCode не требуется) и задаём вопрос без единого упоминания пути:

Какие сейчас текущие вопросы по проекту? Посмотри в документации.

Ожидаемое поведение: агент по CLAUDE.md понимает, где живёт документация, сам читает нужный файл из vault и пересказывает содержимое, без запроса разрешений и уточнений «а где искать?».

4. Косметика: multi-root workspace в VSCode

Финальный штрих — увидеть папку документации рядом с кодом в самом редакторе. File → Add Folder to Workspace, добавляем подпапку vault, сохраняем как .code-workspace.

Возникает мелкая неприятность: если папка в vault называется так же, как проект, в дереве появляются две почти одинаковые записи. Решается полем name в файле workspace, оно меняет отображаемое имя, не трогая папки на диске:

{
  "folders": [
    {
      "name": "MyProject — Код",
      "path": "."
    },
    {
      "name": "MyProject — Документация (Obsidian)",
      "path": "/Users/username/Library/Mobile Documents/iCloud~md~obsidian/Documents/MyVault/MyProject"
    }
  ]
}

Имя самого workspace задаётся только именем файла .code-workspace — отдельного поля для него нет, а суффикс «(Workspace)» VSCode добавляет всегда.

Стоит помнить: добавление папки в workspace чисто редакторская вещь. Права Claude Code от неё не зависят, их определяют additionalDirectories из шага 1.

Нюансы

  • CLAUDE.md из vault не подгружается. Директории из additionalDirectories дают только доступ к файлам, memory-файлы оттуда в контекст не попадают. Для vault это плюс: заметки не засоряют контекст каждой сессии. Если такое поведение всё же нужно, есть переменная окружения CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1.
  • Версия Claude Code. В старых версиях встречались баги, когда additionalDirectories не давал инструменту Read доступ вне проекта. Если доступ не появился, то первым делом стоит обновить Claude Code.
  • Разовая альтернатива. Когда перманентный доступ не нужен, ту же границу можно расширить на одну сессию: команда /add-dir /путь внутри сессии или флаг claude --add-dir при запуске.
  • Агент не закрывает задачи в vault. Обратная сторона правила NEVER edit: завершив фичу, галочку в заметке с текущими вопросами агент сам не поставит. Либо руками, либо явной просьбой. Осознанный компромисс в пользу сохранности заметок.