Полтора года и 219 тысяч файлов спустя вывод неожиданный: Obsidian — красивая программа для чтения папки с текстами, не более. Агенту она не нужна вообще. Разбираем, как устроена система, которая работает вместо неё.
Чего ждали от Obsidian и что получили
Автор ставил Obsidian с классическим набором ожиданий: граф как рабочий инструмент поиска, плагины закрывают все пробелы, синхронизация между машинами из коробки, агент работает с базой через него.
Из списка сбылось одно — граф приятно смотреть, заметки удобно читать глазами. Всё остальное пришлось строить в обход.
Claude Code читает и пишет файлы напрямую, без плагинов-мостов. Синхронизацию между шестью машинами закрывает Syncthing — без облака Obsidian и без абонентской платы. Obsidian в системе остался, но в роли читалки, а не движка.
Три слоя памяти вместо одной свалки
Первая ошибка — складывать в текстовые файлы всё подряд: выгрузки переписок, логи, дампы. Хранилище росло, поиск деградировал, расход токенов увеличивался, потому что агенту приходилось перебирать лишнее.
Решение — три слоя с разной стоимостью обращения.
| Слой | Что хранится | Стоимость запроса |
|---|---|---|
| Факты | SQLite: архив Telegram 5,9 ГБ, 958 014 сообщений, история браузера | 0 токенов |
| Смысл | Векторный поиск на локальной видеокарте, топ-5 ближайших заметок | Копейки |
| Мысли | Выжимки, решения, правила, портреты людей — только отобранное | Токены модели |
Дорогую модель вызывают последней и только с уже отобранной информацией. Сырой массив в хранилище не попадает вообще.
Два правила, без которых система разваливается
Правило первое. Агент всегда поднимает контекст перед началом работы. Перед письмом человеку — читает его карточку, историю переписки, всё ранее сказанное об этом человеке. Перед задачей — проверяет, не делали ли это уже. При старте сессии прогоняет вопрос через поиск автоматически.
Правило второе. Всё, что прошло через агента, сохраняется. Каждый файл проходит четыре шага: оригинал сохраняется как есть, к нему прикладывается заметка с описанием и источником, поиск переиндексируется, заметка получает ссылки на соседние.
Шапка каждого файла выглядит так:
---
title: "Профиль голоса Антона"
date: 2026-08-30
type: concept
source: voice_corpus.db (958 014 msgs)
machine: HP17-ZBook
tags: [voice, digital-twin]
---Поле machine обязательно: в хранилище пишут шесть машин и несколько человек, нужно быстро понять, где что произошло.
Где это ломается
Главная техническая боль — конфликты Syncthing, когда одну папку одновременно пишут шесть машин. Решение: правило «один файл — один писатель» плюс скрипт-сторож, который считает конфликтные файлы и сигналит при росте их числа.
Вторая проблема — ложные выводы агента. Если он «не нашёл» что-то в базе, это не значит, что этого нет: может быть плохой запрос, неполная индексация или данные просто ещё не попали в нужный слой. Источник обрывается на этом месте, подробности не раскрыты.
Что в итоге работает
Показательный результат системы — профиль голоса. Скрипт без расхода токенов прошёл по 958 014 сообщениям за десять лет и собрал статистику: приветствия, слова-паразиты, паттерны продаж, способы знакомить людей между собой. Теперь агент сверяется с этим профилем, когда пишет от имени автора, вместо того чтобы выдумывать собственную стилистику.
Итоговые цифры проекта: 219 353 текстовых файла, 280 отобранных концептов в ядре графа, 5,9 ГБ архива Telegram, 6 машин на Syncthing.
FAQ
Зачем вообще оставлять Obsidian, если агент его не использует?
Автор оставил его для чтения глазами и просмотра графа. Для человека это удобный интерфейс к папке с файлами — агенту он при этом не нужен.
Почему не векторная база вместо SQLite для фактов?
Вопросы «сколько», «когда», «кто» решаются точным SQL-запросом и стоят ноль токенов. Векторный поиск нужен для смыслового слоя, где точного совпадения нет.
Можно ли повторить это без шести машин и локальной видеокарты?
Архитектура трёх слоёв не зависит от числа машин. Векторный поиск на видеокарте — оптимизация стоимости; в облаке это будет дороже, но принципиально ничего не меняет.
Как решается проблема конфликтов Syncthing?
Правило «один файл — один писатель» и скрипт-сторож, который мониторит число конфликтных файлов и сигналит при росте. Детали скрипта в источнике не раскрыты.
Почему сообщения после 2025 года считались отдельно?
Часть переписки после 2025 года уже писали боты с чужой стилистикой. Чтобы не загрязнить профиль голоса, эти сообщения исключали из обучающей выборки.
