← все кейсы

Кейс 07 · управление знаниями · собственный продукт

Пишу мысли как в блокнот — дважды в день агент превращает их в связанную базу знаний

Мысли пишутся одним потоком в блокнот — без тегов, папок и форматирования, с любого устройства. Дважды в сутки автономный LLM-агент превращает написанное в атомарные заметки, связи и тематические карты. Полная автономия без подтверждений — роль контролёра выполняют технические предохранители. Система живёт в проде на реальных личных данных.

Ручная разборка записейежедневный ручной этап0 минут в день
База за первую неделю063 заметки · 167 связей
Мысль → готовая заметкане происходило вовсе≤ 9 часов

Результаты конкретного проекта, не гарантия аналогичных показателей.

Контекст

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

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

Цена проблемы не в минутах. Мысль, не превращённая в заметку, не встречается с другими мыслями. Наблюдение о терпении в третьем периоде хоккейного матча и вывод «на штормящем рынке лучшая сделка — её отсутствие» никогда не окажутся рядом, хотя это один и тот же принцип. Такие стыки и есть источник новых идей.

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

Ограничения

Решение

Что это даёт

Человек пишет мысли в один файл — обычным текстом, без тегов, папок и форматирования, с любого устройства. Дважды в сутки система сама превращает написанное в структуру: атомарные заметки-утверждения, задачи, карточки книг и проектов, связи между ними и обновлённые тематические карты. Раз в неделю она перечитывает архив целиком и ищет неочевидные пары — заметки из разных областей, между которыми нет ссылки, но есть общий механизм мышления. Отдельный модуль собирает «План на день»: только сегодня и завтра, по времени, с галочками.

Как устроено

Вход — файл «Поток»: ноль трения, ничего не сортируется в момент записи. Выход — плоская папка атомарных заметок и хабы-карты тем: структура живёт в ссылках, а не в каталогах. Между ними — LLM-слой: автономный агент (Anthropic API) в headless-режиме на VPS, запускаемый по расписанию с промптом, отсылающим к файлу правил внутри самого хранилища.

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

Предохранители вместо доверия

Автономность держится на технике, а не на вере в модель. Каждый прогон — отдельный git-коммит. Записи, пришедшие с устройств, коммитятся до запуска агента: откат отменяет работу агента и физически не может стереть написанное человеком. Прогон, удаливший файл или изменивший текст чужой записи, откатывается автоматически, а перед откатом делается спасательный снимок. Сравнение идёт по строкам без служебных меток — заменить пометку «сыро» на «обработано» у дозревшей записи можно, тронуть саму мысль нельзя. Системные файлы — скрипты и правила — живут в эталонной копии вне репозитория и восстанавливаются при каждом прогоне, если их затёрла сбойная синхронизация. При срабатывании любого предохранителя в корне хранилища появляется файл-маячок, а в начало ежедневного отчёта — баннер.

Синхронизация

Git оставлен только на сервере — как история и бэкап. Устройства синхронизируются через шифрованный Obsidian Sync, а сервер участвует в той же синхронизации через постоянно работающий headless-Obsidian в Docker-контейнере. Это компромисс, купленный кровью: первая архитектура с git-синхронизацией на всех устройствах разваливалась на iPhone.

Архитектура

Правила агента — документ внутри хранилища, а не промпт в коде. Поведение системы правится без деплоя; агент перечитывает правила каждый прогон.

Агент лишён git и командной строки; историей управляет обвязка. Агент не может обойти предохранители, даже если ошибётся.

Коммит входящих данных до работы агента. Единственный способ сделать откат безопасным при внешней синхронизации.

Эталонная копия скриптов вне репозитория + самовосстановление. Репозиторий синхронизируется на телефон, и телефон способен затереть в нём скрипты.

Инкрементальный разбор + полный обход только в еженедельном ревью. Линейный рост стоимости прогона убил бы систему на горизонте полугода.

Общая блокировка всех прогонов. Разбор, ревью и сборка плана не должны трогать git одновременно.

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

Стек

Bash · Python 3Автономный LLM-агент · Anthropic API, headlessgit + приватный GitHubcron · flockDocker · headless-ObsidianObsidian + Obsidian SyncUbuntu VPS

Результат

За первую неделю в проде: 63 заметки и 167 связей из ~40 записей потока, 20 автоматических прогонов подряд без вмешательства — всё проверяемо по git-истории, а не по демо-ролику. Максимальное время «мысль → структурированная заметка» — не больше девяти часов при двух прогонах в сутки; раньше этот путь не происходил вовсе. Критичные сценарии закрыты 13 сценарными тестами и 26 проверками готовности, которые прогоняются перед работой.

ПоказательБылоСтало
Ручная разборка записейнеизбежный ежедневный этап0 минут — 20 прогонов подряд
База знаний за первую неделю063 заметки · 167 связей
Потеряно записей за всё время0 из ~40, включая аварию

Надёжность

Как система ловит собственные ошибки

Лучшая проверка предохранителей — реальная авария, и она случилась.

После перехода с git-синхронизации на Obsidian Sync записи с устройств стали приходить в рабочую папку сервера незакоммиченными. Старый механизм отката этого не учитывал — и первый же ложный откат стёр свежие записи вместе с работой агента.

Дальше система повела себя так, как и была спроектирована. Спасательный снимок, который делается перед каждым откатом, сохранил всё стёртое — записи восстановлены полностью, ноль потерянных за всё время работы. А сам инцидент вскрыл вторую проблему: тревога писалась в файл внутри скрытой служебной папки, и о простое никто не знал 36 часов. Теперь аварийный сигнал обязан быть в поле зрения по умолчанию — файл-маячок в корне хранилища и баннер в начале ежедневного отчёта: отказ виден в тот же прогон, а не через полтора суток.

Главный вывод зашит в порядок операций: сначала фиксируются данные человека, потом система делает что угодно со своими. Коммит входящих записей стоит первым шагом каждого прогона — теперь откат физически не может стереть написанное человеком.

Что бы сделал иначе

Хотите систему, которая наводит порядок в ваших данных сама — и при этом физически не может их потерять?

Напишите — разберём, что можно автоматизировать в вашем случае.