Полтора года и 219 тысяч файлов спустя вывод неожиданный: Obsidian — красивая программа для чтения папки с текстами, не более. Агенту она не нужна вообще. Разбираем, как устроена система, которая работает вместо неё.

Чего ждали от Obsidian и что получили

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

Из списка сбылось одно — граф приятно смотреть, заметки удобно читать глазами. Всё остальное пришлось строить в обход.

Claude Code читает и пишет файлы напрямую, без плагинов-мостов. Синхронизацию между шестью машинами закрывает Syncthing — без облака Obsidian и без абонентской платы. Obsidian в системе остался, но в роли читалки, а не движка.

Три слоя памяти вместо одной свалки

Первая ошибка — складывать в текстовые файлы всё подряд: выгрузки переписок, логи, дампы. Хранилище росло, поиск деградировал, расход токенов увеличивался, потому что агенту приходилось перебирать лишнее.

Решение — три слоя с разной стоимостью обращения.

СлойЧто хранитсяСтоимость запроса
ФактыSQLite: архив Telegram 5,9 ГБ, 958 014 сообщений, история браузера0 токенов
СмыслВекторный поиск на локальной видеокарте, топ-5 ближайших заметокКопейки
МыслиВыжимки, решения, правила, портреты людей — только отобранноеТокены модели

Дорогую модель вызывают последней и только с уже отобранной информацией. Сырой массив в хранилище не попадает вообще.

Два правила, без которых система разваливается

Правило первое. Агент всегда поднимает контекст перед началом работы. Перед письмом человеку — читает его карточку, историю переписки, всё ранее сказанное об этом человеке. Перед задачей — проверяет, не делали ли это уже. При старте сессии прогоняет вопрос через поиск автоматически.

Правило второе. Всё, что прошло через агента, сохраняется. Каждый файл проходит четыре шага: оригинал сохраняется как есть, к нему прикладывается заметка с описанием и источником, поиск переиндексируется, заметка получает ссылки на соседние.

Шапка каждого файла выглядит так:

plain
---
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 года уже писали боты с чужой стилистикой. Чтобы не загрязнить профиль голоса, эти сообщения исключали из обучающей выборки.

Источники