Skip to content

Общая база знаний — что это и чем отличается от проектной

Появилась в 1.8. Локальный файл ~/.tausik-knowledge/knowledge.db, один на человека, а не на проект.

Эта страница отвечает на два вопроса: как она работает и чем она отличается от проектной базы. Про Notion-brain — отдельная страница, shared-brain.md; это ТРЕТЬЕ хранилище, и его тут нет.


Зачем она понадобилась

Проектная память (.tausik/tausik.db) знает всё про свой репозиторий и ничего про соседний. Пока проект один, это незаметно. Как только их три, выясняется неприятное: тупик, в который вы упёрлись в понедельник, вы записали — и в следующем проекте упрётесь в него снова, потому что заметка осталась в другой папке, а поиск туда не ходит.

Общая база — место для того, что верно не в этом проекте, а вообще.


Чем она отличается от проектной

Проектная базаОбщая база
Где лежит.tausik/tausik.db внутри репозитория~/.tausik-knowledge/knowledge.db в домашней папке
Сколько ихпо одной на проектодна на человека
Что хранитзадачи, сессии, верификации, решения, память, метрики — весь жизненный циклТОЛЬКО знания: pattern, gotcha, convention, context, dead_end
Что переживаетживёт и умирает вместе с репозиториемпереживает удаление любого проекта
Кто читаетэтот проектЛЮБОЙ проект на этой машине
Едет ли в gitнет, .tausik/ в .gitignore; в git едет проекция tausik/нет, и не должна
Редактируется ли содержимоенетнет — пишется как есть, без скраббера
Видно ли снаружинетнет; она не покидает машину
Есть ли бэкапрезервные копии БД рядомtausik knowledge export, и он тоже остаётся здесь

Строка «редактируется ли содержимое» — самая важная в таблице, и к ней мы вернёмся ниже.


Правило: что куда класть

Формулировка, которую можно проверить, а не почувствовать:

Факт об ЭТОМ проекте — в проектную. Утверждение, верное в ЛЮБОМ проекте, — в общую.

Проверка на месте: представьте, что вы читаете эту запись через полгода в другом репозитории, у другого заказчика. Если она там бессмысленна — проектная. Если полезна — общая.

Ошибка первого рода: положить проектное в общее.

❌ --global «В auth_middleware.py на строке 42 в лог уходит e-mail»

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

✅ (в проектную) «В auth_middleware.py на строке 42 в лог уходит e-mail»
✅ --global    «Логирование целого объекта запроса — типовой способ утечь PII;
                проверять сериализаторы, а не только явные print»

Ошибка второго рода: оставить общее в проектном.

❌ (в проектную) «FTS5 MATCH ломается на дефисе в запросе — экранировать»

Это свойство SQLite, а не вашего репозитория. Через месяц вы наступите на него в другом проекте и потратите тот же час заново.


Команды

Положить знание в общую базу:

bash
tausik memory add pattern "Заголовок" "Текст" --global
tausik memory add gotcha "Заголовок" "Текст" --global --tags sqlite fts5

--global кладёт запись в общее хранилище либо падает, сказав об этом. Тихо свалиться в проектную базу он не может — иначе вы считали бы знание общим, а оно лежало бы в одном репозитории.

Найти: поиск читает оба хранилища и помечает, откуда строка.

bash
tausik search "fts5 дефис"

Блок знаний, который подгружается при старте сессии, тоже читает оба.

Бэкап и восстановление:

bash
tausik knowledge export ~/backup/knowledge   # по читаемому файлу на запись
tausik knowledge restore ~/backup/knowledge  # сопоставление по uuid

Экспорт — не дамп, а по файлу на запись: его можно прочитать глазами, положить в приватный репозиторий дотфайлов и разобрать через год. restore сопоставляет записи по uuid, поэтому повторный прогон не плодит дубликаты.

Разовый перенос из Notion-mirror:

bash
tausik knowledge import-brain

Копирует локальное зеркало Notion-brain в общую базу. Сети не требует.

Где она сейчас: tausik doctor печатает разрешённый путь хранилища и называет причину, если расположение отвергнуто.


Чего она намеренно НЕ делает

Этот раздел — не список недоделок. Каждый пункт — принятое решение.

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

Не покидает машину. Отсюда же проверка TAUSIK_HOME в 1.8: сетевой путь (UNC или подключённый том) и каталог облачной синхронизации (OneDrive, Dropbox, Google Drive, iCloud, Яндекс.Диск, ~/Library/CloudStorage/) отвергаются, а хранилище, которое git уже отслеживает, — тоже. Обоснование «оно не уезжает» — свойство КАТАЛОГА, а не кода, и каталог называет эта переменная. ~/OneDrive лежит внутри домашней папки, поэтому фраза «оно у меня дома» оставалась правдой, а вывод из неё — переставал. См. whats-new-1.8.md, изменение 6.

Не синхронизируется между машинами. Двух копий нет, значит нет и слияния. Перенос — руками, через export и restore.

Не помнит, от какого заказчика пришла строка. Раньше поле origin_project несло АБСОЛЮТНЫЙ корень проекта-источника: на машине, обслуживающей нескольких клиентов, имя папки одного читалось из проекта другого. Теперь там метка basename@отпечаток. Существующие строки переписываются при первом открытии.

Не является Notion-brain. Три хранилища и три разных ответа на «куда это попадёт»:

КомандаКуда попадаетУезжает наружу
tausik memory add ...проектная базанет
tausik memory add ... --globalобщая база на этой машиненет
tausik brain move --to-brain <id>Notionда

С 1.8 автоматической маршрутизации нет: классификатор больше не решает, что опубликовать. Наружу запись уходит только третьей командой и только руками.


Совместимость

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

Переезд с ~/.tausik/ (адрес до 1.8) выполняется сам: база копируется со старого места при первом обращении, и только если в новом её ещё нет. Копируется, а не переносится, — удалять что-то в чужой домашней папке решает хозяин. Исключение: при заданном TAUSIK_HOME подхват не выполняется вовсе, и перенос за вами.


Смотрите также

  • whats-new-1.8.md — что изменилось в 1.8, включая переезд и проверку TAUSIK_HOME.
  • shared-brain.md — Notion-brain: третье хранилище, единственное уезжающее наружу.
  • memory-merge-guidelines.md — когда объединять записи, а когда заводить новую.
  • architecture.md — где живут модули knowledge_*.