Общая база знаний — что это и чем отличается от проектной
Появилась в 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, а не вашего репозитория. Через месяц вы наступите на него в другом проекте и потратите тот же час заново.
Команды
Положить знание в общую базу:
tausik memory add pattern "Заголовок" "Текст" --global
tausik memory add gotcha "Заголовок" "Текст" --global --tags sqlite fts5--global кладёт запись в общее хранилище либо падает, сказав об этом. Тихо свалиться в проектную базу он не может — иначе вы считали бы знание общим, а оно лежало бы в одном репозитории.
Найти: поиск читает оба хранилища и помечает, откуда строка.
tausik search "fts5 дефис"Блок знаний, который подгружается при старте сессии, тоже читает оба.
Бэкап и восстановление:
tausik knowledge export ~/backup/knowledge # по читаемому файлу на запись
tausik knowledge restore ~/backup/knowledge # сопоставление по uuidЭкспорт — не дамп, а по файлу на запись: его можно прочитать глазами, положить в приватный репозиторий дотфайлов и разобрать через год. restore сопоставляет записи по uuid, поэтому повторный прогон не плодит дубликаты.
Разовый перенос из Notion-mirror:
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_*.