- BrainTools - https://www.braintools.ru -

Кто пишет твою базу знаний: ты или агент?

Если машина работает с источниками самостоятельно, то работа эта не оставляет на человеке шрама. Она в буквальном смысле не прописывает ничего в его сознании. — Рустам Агамалиев, «Карта Новака за 15 минут: Obsidian + Claude в роли тренажёра»

Привет, %username%! Некоторое время назад я опубликовал статью «Зачем вести базу знаний, если ты не блогер и не спикер» [1] — она выросла из вопроса знакомой, далёкой от IT. Ответ её устроил, и следующий вопрос прилетел почти сразу: «А можно я туда сразу агента посажу, чтобы он всё это делал за меня?»

Я начал отговаривать. Агенты работают: сам я сижу только в Claude Code, а под базу у меня крутятся четыре собственных субагента, которые живут в отдельном репозитории bear-skills [2]. Беда в другом. На старте агент занимает ровно то место, ради которого база и заводится: разобрать источник, пересказать своими словами, заметить, с чем это связано. Отдал это машине — получил аккуратный склад и прежнюю пустую голову.

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

Вопрос знакомой — это в миниатюре тот же спор, который последнее время довольно активно идёт в ленте про LLM и Obsidian, только у разных людей он оформлен по-разному.

Andrej Karpathy в своём gist’е llm-wiki [3] описывает структуру хранилища под LLM-агента — сырьё, компилируемая вики, глобальный индекс, schema-файл. Канал AI Impact в видео «Don’t Use Karpathy’s Second Brain (I BUILT SOMETHING BETTER)» [4] идёт ещё дальше и показывает Infinite Brain: 16 типов узлов, 10 типизированных рёбер, атомарные файлы и граф, по которому агент рассуждает, экономя токены. Chase AI в «The 7 Levels of Claude Code & RAG» [5] называет Obsidian-уровень «80%-решением, которое на деле почти 99%-решение для большинства»: бесплатно, почти без overhead’а, и соло-оператору хватает.

Звучит как закрытая тема. Берёшь рекомендованную структуру, подключаешь Claude Code, получаешь свой Second Brain.

Только в этом нарративе все три голоса отвечают на один и тот же вопрос — как сделать твою базу удобной для LLM. И ни один не отвечает на другой — что с твоей собственной головой. За последние месяцы моя личная база (больше шести тысяч заметок) заметно сместилась в сторону структур, удобных для агента — под это у меня был отдельный проект про обогащение базы знаний для агентного взаимодействия, и он уже закрыт. А параллельно я начал ловить симптом: всё чаще помню, что в базе про это что-то есть, но не помню что. Знание ушло из головы в индекс.

Дальше разберу три позиции: LLM-wiki Карпатого, Infinite Brain и тренажёр Рустама Агамалиева. Потом покажу свою сборку: какие идеи Infinite Brain прижились у меня в виде полей frontmatter, что из схемы Карпатого я не взял и какой ритуал подсмотрел у Агамалиева. В конце вернусь к вопросу знакомой и проведу границу: что агенту можно отдавать с первого дня, что нельзя отдавать никогда и в какой момент вопрос вообще становится твоим.

LLM-wiki Карпатого: как агенту удобнее читать твою базу

Карпатый предлагает три слоя и два служебных файла, и всё это заточено под обход LLM-агентом:

CLAUDE.md    ← schema (или AGENTS.md): как устроена вики, конвенции, workflow
raw/         ← неизменяемое сырьё: статьи, papers, картинки, данные
wiki/        ← markdown-страницы, которые пишет и поддерживает LLM
index.md     ← каталог: ссылка на страницу, строка описания, опционально метаданные
log.md       ← append-only лог: ingest, запросы, lint-проходы

Поток запроса агента: index.md → отобранные страницы → ответ с цитатами, а удачный ответ можно дописать обратно в вики отдельной страницей.

Одна оговорка сразу: это idea file, а не спецификация. Карпатый прямым текстом пишет, что документ намеренно абстрактный, а конкретная структура каталогов и форматы страниц зависят от твоего домена. Даже имена raw/ и wiki/ в схеме выше мои, у него это просто слои «raw sources» и «the wiki». Поэтому все «канонические» раскладки с master_index.md и вложенными wiki/<topic>/index.md, которые ходят по пересказам, — это уже чьи-то реализации, а не его требования.

В иерархии Chase AI для памяти [6] Claude Code (от AutoMemory до Agentic RAG) это уровень 4 из 7. Ни embedding-пайплайна, ни векторного хранилища, ни оркестрации: markdown-файлы и Obsidian.

И тут же вторая подмена. Цитата Chase AI про «99%-решение» — про уровень 4 целиком, то есть про markdown-базу в Obsidian вместо AutoMemory или RAG. Эталоном этого уровня он прямо называет схему Карпатого, а вложенный master index с папками под статьи, тот самый из пересказов, показывает как свою реализацию. Это аргумент за Obsidian как уровень. За конкретную раскладку каталогов он не голосует, за десять рёбер Infinite Brain тем более, и когда «99%-решением» обосновывают выбор таксономии, это натяжка.

А теперь строчка, которую в пересказах теряют, хотя на ней держится вся схема:

You never (or rarely) write the wiki yourself — the LLM writes and maintains all of it. You’re in charge of sourcing, exploration, and asking the right questions.

Вики ты никогда (или почти никогда) не пишешь сам: её целиком пишет и поддерживает LLM. Твоя задача — искать источники, исследовать и задавать правильные вопросы.

То есть агент здесь не столько читает базу, сколько пишет её. Черновую работу (пересказ, перекрёстные ссылки, раскладку по страницам, учёт) Карпатый так и называет, grunt work, и отдаёт LLM. За человеком остаются источники, направление анализа, вопросы и осмысление: думать, что всё это значит («think about what it all means»). Запомни это место, к нему я ещё вернусь, когда дойдём до «шрама».

Infinite Brain: тот же лагерь, более радикально

AI Impact в видео «Don’t Use Karpathy’s Second Brain» продолжает ту же линию. В описании прямо сказано: «I improved Andrej Karpathy’s famous second brain system», то есть «я улучшил знаменитый second brain Андрея Карпатого». Свою версию авторы назвали Infinite Brain, поддерживает её StarMynd. Это граф знаний с двумя надстройками поверх обычного Obsidian.

Шестнадцать типов узлов вместо четырёх категорий PARA: решения, концепты, факты, вопросы, гипотезы, источники и так далее. И десять типов семантических рёбер вместо нетипизированных wikilink-ов. Самые важные:

  • supports / contradicts — аргумент подтверждает или логически противоречит другому тезису.

  • depends_on — для истинности одного утверждения должно выполняться другое.

  • derived_from — идея/решение выведены из конкретного документа.

  • related_to — неявная ассоциация [7] без точной семантики.

  • authored_by — кто это сделал: человек, Claude, человек с Claude, ChatGPT.

Логика [8]: по типу ребра и однострочной сводке агент решает, стоит ли вообще открывать тело файла, и не читает всё подряд. Цифру в видео называют прямо: на тот же вопрос вместо 9 000 токенов ушло 600, «те же данные, просто иначе структурированы». Community-реализация obsidian-infinite-brain [9] повторяет её в README у скилла /query-vault: «~600 tokens, not ~9000». И там, и там это заявление, а не замер: ни методики, ни размера хранилища, ни воспроизводимого прогона. Так что пятнадцатикратную экономию за измерение не считай. Направление правдоподобное, порядок — на вере.

Сильная сторона подхода, которую я беру в свою сборку: с типизацией появляются семантические запросы, которые без неё нельзя задать дёшево. «Найди в моей базе противоречия по теме X» через нетипизированный wikilink — это O(тела всех связанных заметок): агент должен прочитать каждую и решить, противоречит ли. Через ребро contradicts — это O(metadata): одна выборка по полю frontmatter. То же про depends_on (построй learning path), derived_from (трассируй происхождение идеи), authored_by (что писал я, что собрал агент). Удобством это назвать мало. Без типизации такой запрос вообще не задаётся, только вычитывается.

Альтернативой Карпатому это не назвать, что бы ни обещало название видео: та же оптимизация под LLM как основного потребителя, только радикальнее. И там, и там база строится под агента.

Что не решают Карпатый и Infinite Brain

Обе системы решают одну задачу — доступ агента к заметкам. Другую — интеграцию нового знания в картину мира автора — они не закрывают.

Доступ агента упирается в токены, индексацию, скорость поиска и точность retrieval. Интеграция знания проверяется иначе: после прочтения статьи ты можешь объяснить новую идею своими словами, связать её с тремя уже известными и заметить, что одна из них теперь выглядит иначе.

Метод Карпатого ближе к индексации, Infinite Brain — к семантической базе данных. В обоих случаях на выходе получается аккуратно устроенное хранилище, по которому агенту удобно ходить, а картина мира в голове у автора от этого не меняется: всё новое осело в файлах и связях между ними, а не в понимании.

Симптом простой. У меня есть отдельная заметка про долю своих заметок как индикатор здоровья PKM, и я в любой момент могу на неё сослаться, открыть, показать. Если тот же вопрос звучит без ноутбука — формулировка плывёт. Помню, что заметка есть. Помню примерно, в каком углу базы. Но думать этой идеей в моменте становится труднее с каждым годом ведения базы — потому что чем удобнее агенту находить, тем меньше мозг [10] считает нужным держать в активной памяти. Это и есть Google effect: в экспериментах Sparrow, Liu и Wegner [11] люди хуже запоминали факты, которые, как им сказали, компьютер сохранит, а когда всё раскладывалось по папкам, название папки вспоминали чаще, чем сам факт.

Оговорка: работа спорная. Её первый эксперимент, где трудные вопросы на эрудицию должны были наводить на мысль о компьютере и замедлять называние цвета у слов вроде Google, не воспроизвёлся у двух независимых групп. Сначала в Social Sciences Replication Project [12] (Camerer et al., 2018), где выборки были в среднем впятеро больше оригинальных; Sparrow ответила [13], что процедура отличалась от исходной. Потом у Hesselmann (2020) [14], который переделал процедуру по её замечаниям, и результат снова отрицательный.

Я опираюсь на другую часть работы. «Сохранённое помнят хуже» Schooler и Storm [15] в 2021-м воспроизвели, правда только когда люди успели убедиться, что сохранение надёжное, а база, которой доверяешь, ровно тот случай. «Адрес вместо содержания» сами авторы называли предварительным результатом, прямой репликации я не нашёл, поэтому подпираю его собственным наблюдением, а не только цитатой.

Знает агент. Я знаю, что есть агент.

Поверх работает иллюзия понимания: ощущение «я это знаю» мозг выдаёт независимо от того, знаешь ли ты на самом деле. Видишь идею в своём хранилище и чувствуешь, что её знаешь. Если хранилище ещё и заточено под агента, готового всё вытащить по запросу, иллюзия только крепнет. У базы, которую с первого дня строят под агента, это дефолтный режим.

«Шрам» из эпиграфа — про то же самое. Это след в сознании, который остаётся, когда ты сам разметил фрагмент, сам поспорил с автором на полях, сам связал новое с уже известным. Если это сделал за тебя агент, шрам остаётся у агента, а у тебя только запись.

Теперь та самая строчка Карпатого: «You never (or rarely) write the wiki yourself» — условие всей схемы. Осмысление он человеку честно оставляет, тут претензий нет. Но пересказ и перекрёстные ссылки, то есть ровно то, от чего остаётся шрам, у него проходят по графе grunt work и уходят агенту. Спорю я дальше именно с таким разделением труда, каталоги и индексы тут вторичны.

Контраргумент напрашивается сам: «А если у меня память так себе — мне нужна именно индексация, и Карпатый с Infinite Brain как раз решают мою задачу». Резонно, но только при одном условии — задача твоей базы действительно референсная. Документация команды, wiki проекта, набор гайдов, на которые ты ссылаешься, а не «изучаешь» — там оптимизация под агента и поиск побеждают. Личная база знаний, в которую ты вкладываешь идеи из прочитанных книг и собственных размышлений, — другой кейс. Если ты её ведёшь, чтобы через год понимать мир чуть лучше, чем сейчас, то «у меня плохая память» — уже не аргумент за индексацию, а сам симптом, который индексацией не лечится. Лечится тренировкой: идеи приходится удерживать в голове самому, и это отдельная дисциплина. Тренажёр под неё и предлагает Рустам Агамалиев.

Альтернатива от Агамалиева: ИИ как тренажёр

Рустам Агамалиев, автор канала про заметковедение [16], в видео «Карта Новака за 15 минут: Obsidian + Claude в роли тренажёра» [17] предлагает другой принцип. Машина не читает за человека. Машина работает с тем, что человек уже прочитал и отметил.

Конкретно — два скилла в связке с Obsidian: Highlighter и Mapper. В демо их гоняет Claude Code, но, по словам автора, подойдёт любой агент.

Highlighter делает три операции над сырыми хайлайтами из книги (корректнее «выделения», но это что-то на медицинском). В демо они приезжают из Zotero через Zotero Integration Plugin, хотя откуда они взялись, неважно:

  1. Озаглавливает каждый фрагмент. Тут Рустам ссылается на старых методистов: заголовок — «дверь, в которую стучится наше мышление».

  2. Подсвечивает ключевые слова.

  3. Расставляет пустые слоты «» — маркеры «здесь должна появиться мысль читателя».

На пустых слотах тренажёр и держится. Машина не подменяет мышление [18], она показывает, где оно должно включиться. Заголовок и подсвеченные слова работают как дорожные указатели: по ним видно, как устроен фрагмент. Слоты — место, куда ты сам дописываешь свою реакцию [19].

Mapper берёт размеченный Highlighter’ом файл и строит концепт-карту: центральная главная мысль, блоки из цитат, объединённых одной мыслью, проблемы, над которыми ещё придётся подумать, и стрелки с подписанными логическими связями. Это и есть карта Новака из названия: концепт-карта, которую педагог Joseph Novak придумал ещё в 1970-х.

Цель инструмента — не лишить человека работы, а натренировать видеть структуру самостоятельно. Агамалиев утверждает: пройдя с обоими скиллами хотя бы три-пять книг, читатель начинает видеть шаблон, по которому работает машина, и дальше справляется сам, без агента. Инструмент, который хорошо работает, делает себя ненужным.

Тут и проходит граница между лагерями. LLM-wiki Карпатого и Infinite Brain делают себя более нужными с каждой новой заметкой — без агента твоя база теряет полезность. Highlighter и Mapper делают себя менее нужными с каждой новой книгой — через несколько штук ты справляешься без них.

Моя сборка: оптимизация под себя с уступками агенту

Если бы выбор был бинарным («только Карпатый» или «только Агамалиев») — я бы выбрал Агамалиева. Но он не бинарный. У меня нет религиозного запрета на типизированные рёбра — у меня есть прагматический критерий: что в моей базе реально работает, а что оверинжиниринг.

Базовый принцип — оптимизация под себя. Базу веду я, читаю её я, мысли в голове должны быть у меня. Но с точечными уступками агенту там, где он реально помогает и при этом не думает за меня. Не «давайте сделаем как в Infinite Brain, потому что у всех так», а «закрывает ли это конкретный gap из моей практики».

Из десяти рёбер Infinite Brain у меня прижилось одно — contradicts. Оно закрывает реальный gap: запрос «найди противоречия по теме X» без вычитки тел всех связанных заметок. Поле двустороннее (если A противоречит B, ссылка стоит в обеих заметках) и идёт в дополнение к callout > [!warning] Противоречие: ... в теле — во frontmatter факт, в тексте объяснение, в чём именно.

Дальше цифра, на которой я сам себя поймал при фактчеке. Ключ contradicts: есть в 529 заметках, но почти везде это пустой contradicts: [] из шаблона, болванка, а не ребро. Заполнено поле в 36, и это почти за четыре месяца с тех пор, как оно появилось в шаблонах. Быстрее и не будет. Ребро появляется, только когда при разборе источника или ревизии базы я действительно натыкаюсь на противоречие с тем, что уже записано, а выдумывать противоречия ради красивой цифры смысла нет. Запросы по полю работают уже сейчас, а сам «граф противоречий» копится постепенно, по одной точке.

Второе ребро я попробовал и выкинул. depends_on задумывалось как отношение «предзнания»: концепт X имеет смысл только после того, как усвоен Y. Когда дошли руки размечать, оказалось, что «предзнание» у меня уже выражено существующими полями [20]. Смотрю на свой же концепт Error Budget: ссылка на SLO уже стоит в up, потому что error budget без SLO буквально не определён. Это его родитель, а не отдельная «зависимость». Новое поле не добавляло отношения, а раздваивало существующее и требовало синхронизации двух списков вместо одного. Типизация окупается только там, где отношение действительно новое, а не там, где его красиво назвали.

Ещё два поля — не про рёбра. ai_generated — минимальный аналог authored_by из Infinite Brain: одно поле вместо перечня «человек / Claude / человек с Claude / ChatGPT». Через год я не вспомню, какая заметка написана мной с нуля, а какую собрал скилл при разборе источника. Нет поля — писал сам, true — писал агент, false — писал агент, а я прочитал, переработал и признал своим. Побочно всплыло правило: у заметки с ai_generated: true обязан быть непустой sources, иначе это не заметка, а галлюцинация с frontmatter’ом.

И summary — одно-три предложения с сутью заметки. Тут выигрыш прямой: агент читает summary соседей и уже понимает, в какое тело лезть, а в какое не надо. Единственное, что разошлось по базе по-настоящему — почти три тысячи заметок. Разошлось не потому, что формат удачный и прижился сам: summary проставлялись пачками, по отдельному чеклисту и с ручной проверкой, за несколько десятков заходов, если не за пару-тройку сотен.

Ни одно из этих полей не про то, чтобы агент читал за меня.

Чего я не беру

  • 16 типов узлов из Infinite Brain — у меня PARA + теги + шаблоны это уже покрывают.

  • Остальные рёбра. supports, derived_from, related_to и компания закрываются полями up/down/other/sources/links без дополнительной типизации.

  • Глобальный index.md. Карпатый сам пишет, что индекс-файла хватает, пока вики маленькая, а дальше нужен нормальный поиск, и советует гибридный BM25/vector. На шести с лишним тысячах заметок я давно там: агент собирает выборку под конкретный запрос через гибридный MCP-поиск, и каталог, который надо держать в синхроне с базой, мне ни к чему. С log.md то же самое: журнал операций мне отдаёт git.

  • Принудительная атомизация всего подряд. Правило «лучше недодробить, чем переборщить» из моего же скилла про структуры знаний [21] весит больше, чем дешёвый обход для агента.

  • Полная замена эмбеддингов типизацией. Семантическую близость («найди похожее по смыслу») у меня закрывает гибридный поиск по эмбеддингам через MCP, и типизация здесь не нужна. Именованные отношения вроде contradicts — другая задача, и оправданы они ровно там, где эмбеддинги её не решают.

  • И главное: не беру условие «вики пишет агент». Заметки в базе в основном пишу я, агентских около десятой части, и они помечены флагом. Скиллы дособирают frontmatter и связи. Это та граница, за которой начинается чужой шрам.

Без чего эта сборка превращается в первый лагерь

Заточку базы под агента надо уравновешивать ритуалами, где агент работает напротив меня, а не вместо. Что собираюсь катать:

  • Random Walk Review — агент случайно выбирает 3–5 заметок из базы и спрашивает, что я о них помню без открытого ноутбука. Цель — замерить дельту между «есть в базе» и «есть в голове».

  • Сократические диалоги по концептам из базы вместо запросов вида «расскажи мне о X». Я задаю Claude вопрос, он переспрашивает меня — и так до тех пор, пока концепт не отстроится во мне самом.

  • Режим Highlighter’а на новых книгах — чтобы хайлайты и мысли в пустых слотах оставались за мной, а агент только подсвечивал структуру.

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

Что я в итоге ответил знакомой

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

С первого дня агенту спокойно отдаётся всё, что не мышление: найти, где у тебя про это уже написано; поправить опечатки; проставить дату и теги; расставить ссылки между заметками, которые ты и так связал по смыслу. Транспорт и уборка. Шрама тут не остаётся ни у кого, и не должно.

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

А когда к вопросу возвращаться? Когда база перестала помещаться в голове. Ты помнишь, что где-то писал про X, но не помнишь где, и поиск по слову уже не выручает. Вот тогда агент действительно закрывает задачу, и задача эта — навигация, а не понимание. Знакомой с её тремя предложениями в день до этого момента далеко, и это хорошая новость, а не отсрочка.

Зеркало

Если ты сейчас прикидываешь, в какую сторону двигать свою базу — у меня есть диагностический тест.

Спроси своего LLM-агента про любую тему, по которой у тебя в базе есть несколько заметок. С большой вероятностью получишь связный ответ, который выглядит так, будто ты сам это знал. А теперь спроси то же самое себя: без агента, без открытого ноутбука. Только то, что в голове.

Разница между двумя ответами — это то, сколько мышления ты делегировал. Маленькая — ты в лагере Агамалиева. Большая — в лагере Карпатого, осознанно или нет.

PS: я свою сборку катаю дальше, но следующая ставка не на новое поле во frontmatter. Поля я на ближайшее время закрыл — история с depends_on показала, что дешевле выкинуть, чем поддерживать. Дальше пробую ритуалы, о которых писал выше, и про них, когда накопится опыт [22], рассказывать будет интереснее: они либо приживутся, либо честно покажут, что я в лагере Карпатого. А какие-то промежуточные мысли с большой долей вероятности буду публиковать у себя в канале [23].

Автор: jtprogru

Источник [24]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/35508

URLs in this post:

[1] «Зачем вести базу знаний, если ты не блогер и не спикер»: https://habr.com/ru/articles/1070224/

[2] bear-skills: https://github.com/jtprogru/bear-skills

[3] llm-wiki: https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f

[4] «Don’t Use Karpathy’s Second Brain (I BUILT SOMETHING BETTER)»: https://www.youtube.com/watch?v=z02Y-1OvWSM

[5] «The 7 Levels of Claude Code & RAG»: https://www.youtube.com/watch?v=kQu5pWKS8GA

[6] памяти: http://www.braintools.ru/article/4140

[7] ассоциация: http://www.braintools.ru/article/621

[8] Логика: http://www.braintools.ru/article/7640

[9] obsidian-infinite-brain: https://github.com/JotaSXBR/obsidian-infinite-brain

[10] мозг: http://www.braintools.ru/parts-of-the-brain

[11] экспериментах Sparrow, Liu и Wegner: https://doi.org/10.1126/science.1207745

[12] Social Sciences Replication Project: https://doi.org/10.1038/s41562-018-0399-z

[13] ответила: https://doi.org/10.1038/s41562-018-0411-7

[14] Hesselmann (2020): https://doi.org/10.7717/peerj.10325

[15] Schooler и Storm: https://doi.org/10.1080/09658211.2021.1962356

[16] канала про заметковедение: https://t.me/zettelkasten_ch

[17] «Карта Новака за 15 минут: Obsidian + Claude в роли тренажёра»: https://www.youtube.com/watch?v=AUGNV-4gv1s

[18] мышление: http://www.braintools.ru/thinking

[19] реакцию: http://www.braintools.ru/article/1549

[20] выражено существующими полями: https://habr.com/ru/articles/1033090/

[21] скилла про структуры знаний: https://github.com/jtprogru/bear-skills/blob/main/domains/obsidian/skills/knowledge-structures/SKILL.md

[22] опыт: http://www.braintools.ru/article/6952

[23] себя в канале: https://t.me/+MAH1QNZm5QQ4MjEy

[24] Источник: https://habr.com/ru/articles/1082188/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1082188

www.BrainTools.ru

Rambler's Top100