24 мая 2026
Obsidian я использую давно. Это мощная экосистема - плагины, граф, kanban, canvas - поверх предельно простого формата: plain-markdown файлы в обычной папке. База знаний при этом под полным контролем: лежит в iCloud, версионируется через git, синхронизируется между девайсами, не привязана ни к какому облаку. Когда появились агенты, которые хорошо читают markdown и ходят по файловой навигации и wiki-ссылкам, отдельный шаг «проиндексировать заметки для Q&A» оказался не нужен. Логичнее было пустить агента работать в ту же папку, где работаю я. Эта статья - про то, как из личного хранилища знаний получается контролируемое рабочее пространство для агента, и что он в нём делает.
От «чата с заметками» к агенту, который в них работает
Сначала про разницу, потому что её легко пропустить.
«Chat with my notes» - это RAG: заметки нарезаются на чанки, индексируются эмбеддингами, на вопрос подтягивается релевантный кусок и пересказывается. Полезно для поиска, но у этого подхода есть потолок: он отвечает про содержимое индекса и не меняет состояние. Карточку не подвинет, дневной лог не допишет, тред в Slack не освежит.
Агент с файловым доступом устроен иначе. У него есть Read, Write, Grep, Bash по конкретной папке плюс MCP-инструменты во внешние системы. Он открывает файлы, правит их, двигает карточки на доске, дёргает Jira и GitLab за актуальным статусом.
Ключевое слово здесь - «по конкретной папке». Я не даю агенту доступ ко всей машине. Я отдаю ему одну директорию с явными правилами: вот пространство, вот что в нём можно, вот что трогать нельзя. Контролируемое пространство делает работу агента предсказуемой: он видит ровно столько, сколько нужно для задачи.
Почему markdown-vault удобен и мне, и агенту
Те же свойства, за которые я выбрал Obsidian для себя, оказались ровно теми, что нужны агенту.
Plain text. Файлы - это .md, обычный текст. Его можно грепать, диффать, держать в git, открыть любым редактором через десять лет. Нет проприетарной базы, нет экспорта, нет lock-in. Я владею данными в буквальном смысле - это просто файлы. Агент ходит по тем же файлам теми же инструментами, что и я в терминале.
Контроль и версионирование. Vault лежит в iCloud и синхронизируется между ноутбуком, телефоном и планшетом. Поверх - git: история изменений, ветки, откат. Это важно именно с агентом: если он что-то поправил, git diff показывает что именно, а откат - одна команда. Write-доступ агента перестаёт быть страшным, когда каждое изменение видно и обратимо.
Структура папок как карта. Директории - это навигация, которую агент читает буквально. Подпапки по функциям, файлы проектов в корне - агент использует эту раскладку, чтобы понять, где что лежит, без дополнительных объяснений.
Wiki-ссылки как граф. [[name]] связывает заметки. Для меня это граф в Obsidian, для агента - рёбра, по которым он ходит: открыл карточку, увидел [[Project X]], прочитал связанную заметку, нашёл backlinks. Навигация идёт по смысловым связям между заметками.
Граница по умолчанию. Агент видит то, что в папке. Не больше. Это естественный sandbox без специальной настройки.
Анатомия vault'а: база знаний и активный workspace в одной папке
Конкретика моего сетапа. Это рабочий vault для инженерного менеджмента, и в нём одновременно живут две вещи: статичная база знаний и активное рабочее пространство.
Раскладка:
vault/
├── CLAUDE.md # контракт для агента (см. секцию 4)
├── Kanban.md # доска, формат kanban-plugin
├── Focus 🎯.md # дневной журнал, новые записи сверху
├── GetDx.md # файлы проектов плоско в корне -
├── UpTime.md # один проект = один файл
├── Terraform.md
├── ...
├── SDLC/ # функциональные подпапки
├── Workflows/
├── 1-1/ # приватные
├── people/
├── Weekly/
├── cheats/
└── .claude/
└── skills/ # скиллы проекта (см. секцию 5)
Две детали задают характер.
Capture живёт вне vault'а. Входящее - Slack, письма, ссылки - обрабатывается отдельно. В vault попадает только то, что я уже решил вести. Поэтому любой файл в папке осмысленный, и агент работает по чистой базе, без шума инбокса.
Kanban.md и Focus 🎯.md - живые. Доска в формате kanban-plugin с колонками 🚧 Blocked, WIP, Firefighting 🚒, Growth Engine 🧠, Low 😴, DONE, Archive. Дневник - с записями новые-сверху. Это текущее состояние работы. Агент их и читает, и (после аппрува) пишет.
CLAUDE.md как контракт
Это центральный файл. Агент читает его в начале каждой сессии, и именно он превращает «папку с файлами» в «контролируемое пространство». В нём - правила работы агента; данные лежат в остальных файлах.
Работающие принципы (сокращённо):
1. Approve before apply. Drafts первыми. Write - только после явного
«ok / делай». Покрывает записи в vault и write через MCP
(Slack, Gmail, Calendar, Confluence, Jira, GitLab). Read и поиск -
без аппрува.
2. Never delete. Никаких удалений файлов, карточек, записей.
Закрытие - моя зона.
3. Russian + English mix. Отвечать на языке источника.
4. Concise, no filler. Без «Отлично!», «сейчас сделаю», финального
recap без новой информации.
6. Verify before claim. Не утверждать про состояние внешних систем
без проверки через web/MCP. Не проверил - пометить.
7. Plain writing style. Для внешних текстов - без AI-маркеров
(«comprehensive», «leverage», «seamless»), без шаблонных сцепок,
без em-dash в каждом предложении.
Два принципа держат всю конструкцию. Approve before apply означает, что агент по умолчанию готовит драфт и ждёт явного «ok». Любая запись - в файл или через MCP наружу - проходит это подтверждение. Never delete убирает целый класс рисков: агент с write+bash физически не должен ничего стирать.
Отдельная секция контракта - fragile spots: что нельзя сломать при правках. У агента есть Bash и Write, поэтому ловушки названы поимённо:
- Kanban.md frontmatter (kanban-plugin: board) - не удалять
- Kanban.md settings-блок (%% kanban:settings %% с JSON) -
Obsidian пишет его сам, руками не трогать
- Порядок и эмодзи колонок - часть identity колонки
- Focus 🎯.md - header и anchor не трогать, daily-блоки только append
- .canvas - JSON со схемой nodes/edges, координаты и id не двигать
- Формат завершения: строго «✅ YYYY-MM-DD», без альтернатив
- .claude-context-deprecated/ и .bak* - игнорировать в grep
Это «well controlled space» на практике: конкретный список хрупких мест с объяснением, почему они хрупкие. Про слой rules / skills / agents в Claude Code подробнее - в статье Skills, agents, rules: как Claude выполняет инструкции.
Skills: повторяемые операции
Когда одна и та же последовательность повторяется - «открой карточку, найди связанное, освежи источник, предложи что делать» - её незачем диктовать каждый раз. Она кодифицируется в skill: папка с SKILL.md, у которого в YAML-фронтматтере есть description. По этому описанию агент сам понимает, когда скилл применять.
Сейчас в vault'е четыре скилла:
card-context - открыть карточку и превратить в рабочий контекст:
связанные заметки, backlinks, освежить источник,
предложить что делать
daily-update - дописать день в Focus 🎯.md (с обогащением
из Calendar и Slack)
kanban-add - добавить карточку в колонку, опционально с backing-файлом
kanban-grooming - интерактивный разбор доски
Я не говорю «запусти kanban-grooming». Я говорю «пройдись по канбану», и агент по description сам выбирает скилл. Авто-инвокация по описанию - то же, что в Claude Code работает для skills вообще.
Как выглядит протокол на примере kanban-grooming:
1. WIP pass - по каждой карточке: прочитать backing-файл, проверить
статус источника (Slack/Jira/GitLab), классифицировать
(закрыто → предложить DONE / прогресс / висит 7+ дней)
2. Blocked pass - проверить, жив ли блокер: освежить тред того, кого ждём;
блокер снят → предложить вернуть в WIP
3. Priority sort - расставить в каждой колонке срочное наверх,
подсветить ❗-маркерами
4. Overview - финальная сводка: счётчики по колонкам, топ-приоритеты,
что стейл, что ушло в DONE
Важная деталь: скилл задаёт последовательность шагов, но каждое перемещение требует аппрува - он проводит меня по доске и предлагает, решение за мной. Разбор того, что такое skill внутри и как он грузится - в статьях Как работают плагины Claude Code и Skills, agents, rules.
Что агент реально делает: agentic advantages
Всё предыдущее - ради этого. Вот операции, которых «чат с заметками» не умеет.
Grep и чтение по всему vault'у. card-context берёт карточку, вытаскивает ключевые слова, ищет по всем файлам совпадения, читает заметки по [[ссылкам]], находит backlinks. На выходе - «у тебя уже есть про это:» со списком путей и одной строкой на каждую. Поиск идёт по смыслу: связанные заметки находятся, даже если в них нет точного слова из карточки.
Доступ во внешние системы через MCP. Grooming доски не просто читает Kanban.md - он по каждой WIP-карточке дёргает живой статус: тред в Slack продвинулся, MR в GitLab смержен, тикет в Jira сменил статус. daily-update перед тем как показать дневной блок, обогащает его из Calendar (какие были синки) и Slack (активность за день). Заметки сшиваются с актуальным состоянием рабочих систем.
Фоновый ресёрч по WIP. Это то, ради чего стоило всё затевать. Агент берёт WIP-карточку и, пока я занят другим, исследует её: читает связанные заметки в vault'е, ходит в web за свежими данными, дёргает MCP за контекстом из рабочих систем - и готовит research-заметку или драфт решения. Я возвращаюсь к собранному контексту: что известно, какие варианты, где developer-doc, что надо решить. Карточка из «надо разобраться» превращается в «осталось выбрать».
Write в границах. Агент двигает карточки в Kanban, дописывает дневной блок, обновляет карточку новыми связями - но только после «ok» и без нарушения fragile spots. Запись есть, но она огорожена.
Разница с RAG здесь принципиальная: RAG возвращает текст про индекс, агент меняет состояние - файлов, доски, иногда внешних систем. Про то, как устроен контекст у агента и почему это другое, чем retrieval - в статье Context engineering.
Любой агент, и с чего начать
Сетап намеренно не привязан к одному вендору. Контракт - это markdown: CLAUDE.md с правилами, .md-файлы как данные, SKILL.md как закодированные сценарии. Сам vault ничего не знает про конкретного агента. Сегодня в нём работает Claude Code, завтра можно подключить другой агент с файловым доступом и MCP - папка не меняется.
Оговорка честная: переносится принцип; синтаксис у каждого агента свой. Авто-инвокация скиллов по description, точная семантика CLAUDE.md, формат MCP-конфига отличаются между агентами. Переезжает идея - «bounded markdown-пространство + контракт + повторяемые сценарии», а детали подгоняются под конкретный инструмент.
С чего начать, если хочется попробовать:
- Vault. Любая папка с
.md. Не обязательно Obsidian - Obsidian даёт граф, kanban и canvas сверху, но агенту нужен только plain text. - Git. Сразу под версионирование. Это страховка под write-доступ агента: всё видно в diff, откат в одну команду.
- CLAUDE.md с 3-4 принципами. Минимум: approve before apply, never delete, формат хрупких мест. Этого достаточно, чтобы пространство стало контролируемым.
- Один скилл. Тот сценарий, который повторяется чаще всего. Заметили, что третий раз диктуете одну и ту же последовательность - пора в
SKILL.md.
Не надо строить всё сразу. Я пришёл к четырём скиллам и длинному контракту не на старте, а по мере того, как ловил себя на повторах и на правках, которые ломали формат. Vault рос вместе с тем, что я реально делегировал агенту.