Единый стандарт чат-экспортов — как плагин Claude Code.
Переписка с заказчиком, ТЗ в .docx, скрины, транскрипты созвонов складываются в
архив, у которого известно происхождение каждого куска и который проверяется
линтером, а не глазами.
/mnemo:init создать экспорт или принять существующий
/mnemo:import выгрузка, буфер захвата или копипаста → разложить целиком
/mnemo:add-text сообщение или транскрипт → RAW
/mnemo:add-files документы → RAW, текст и вшитые картинки извлекаются
/mnemo:add-screens скриншоты → RAW, байт-в-байт
/mnemo:verify проверить, что архив цел и соответствует стандарту
Рабочий контекст разбирается руками и каждый раз чуть по-своему. Через месяц непонятно, что в архиве дословная цитата заказчика, а что чей-то конспект — а решения принимаются по обоим одинаково.
mnemo фиксирует это как формат:
- RAW дословен и неизменен. Каждый файл учтён с
sha256— подмена видна. - Кто есть кто. Реестр людей связывает имя в мессенджере, логин в git и имя
в разговоре; роль
selfотмечает того, кто ведёт архив. - Авторство отделено от текста. Telegram в копипасте подписывает пересланное
сообщение тем, кто переслал. На живом чате это затронуло 16 сообщений из 21 —
требования заказчика достались бы его руководителю. Поле
attributionделает такую подмену видимой и запрещает цитировать по ложному автору. - Повторный импорт безопасен. Выгрузил чат заново — примется только новое, ничего не задвоится.
- У каждого материала есть достоверность.
verbatim,reconstructed,digest,placeholder. Конспект нельзя процитировать как чьи-то слова — это запрещено стандартом, а не оставлено на внимательность. - Пропуски видны. Не удалось достать оригинал — заводится запись, а не тишина. «Не добыт» и «утрачен» — разные вещи: первое задача, второе факт.
INDEX.mdгенерируется. Рукописный индекс молча расходится с содержимым; здесь он производный от манифеста, и разойтись не может.- Изъятия — часть формата. Что удалено, почему, обратимо ли, где лежит оригинал. Без этого архив нельзя показать.
- Данные не уезжают в git. Каталог экспорта исключается из репозитория хост-проекта до того, как в нём появится первый файл.
git clone https://github.com/ZenonEl/mnemo ~/.claude/plugins/mnemoЗависимостей нет — скрипты работают на голой стандартной библиотеке Python 3.
<export>/
├── INDEX.md производный: хронология, участники, хвосты
├── MANIFEST.json источник истины о содержимом
├── summaries/
│ ├── <дата>_chat-summary.md о чём договорились
│ ├── attachments-summary.md что решено в документах, на что сверяться
│ ├── conventions.md правила работы + кто и когда их установил
│ ├── findings-log.md проверенные факты и куда они донесены
│ └── redactions.md производный: что изъято и почему
└── raw/
├── messages/ YYYY-MM-DD_<author>[_<label>].md
├── attachments/ оригиналы + _extracted-text/
├── screenshots/ оригиналы + from-docx/<doc>/
└── voice/
| Команда | Что делает |
|---|---|
/mnemo:init |
создать экспорт или принять существующий без потери содержимого |
/mnemo:import |
выгрузка Telegram, буфер захвата herald или копипаста: авторство, вложения, дедупликация |
/mnemo:add-text |
сообщение, заметка, транскрипт |
/mnemo:add-files |
документы; из .docx/.xlsx достаётся текст и вшитые изображения |
/mnemo:add-screens |
скриншоты без пересжатия |
/mnemo:note |
проверенный факт в findings-log |
/mnemo:rule |
рабочее правило в conventions |
/mnemo:redact |
зарегистрировать изъятие |
/mnemo:remove |
снять запись с учёта, не правя манифест руками |
/mnemo:sync |
пересобрать производные из манифеста |
/mnemo:req |
требование заказчика: дословно, с доказательством |
/mnemo:ask |
открытый вопрос: что блокирует, кому задан |
/mnemo:audit |
всё ли сделано, как хотел заказчик — с доказательствами |
/mnemo:verify |
линтер: 20 правил стандарта |
/mnemo:gaps |
чего не хватает и что утрачено |
/mnemo:people |
реестр людей: связать имена одного человека из разных источников |
/mnemo:publish |
публичный срез без рабочих данных |
SPEC/STANDARD.md— раскладка, контрактitem, правила; версия объявлена тамSPEC/PROVENANCE.md— модель достоверности и правила цитированияSPEC/CITATION.md— формат ссылокctx:<slug>#<id>SPEC/QUERY.md— контракт чтения: как берут данные сторонние инструментыSPEC/CHANGELOG.md— версии
Стандарт — источник истины. Навыки, команды и скрипты — его потребители; расхождение между ними и текстом стандарта считается дефектом инструмента.
Три реальных экспорта, сделанных руками до появления стандарта, — приняты без потери содержимого, линтер проходит на всех: рабочая переписка с приёмкой проекта (документы с вшитыми скринами), доска задач из группового чата, и реконструкция удалённой переписки из логов сессий с четырьмя уровнями достоверности в одном файле.
Приёмка нашла в стандарте два пробела, которых проектирование не заметило, — оба
закрыты и описаны в SPEC/CHANGELOG.md.
mnemo — один из трёх инструментов вокруг рабочего контекста. Разделяются
три опубликованных формата: ссылка ctx:<slug>#<id>, сам манифест и
контракт чтения — все описаны в SPEC/ и
версионированы. Ничего исполняемого не разделяется: ни библиотеки, ни процесса,
ни базы. Потребитель вызывает команду и получает JSON — так же, как вызвал бы
gh; зависимость идёт на опубликованный формат вывода, и mnemo о потребителе
не знает.
| Проект | Роль |
|---|---|
| mnemo | архив материала с провенансом; факты, решения, вопросы |
ephemeris |
дейлики: состояние дня и синк в GitHub issues |
herald |
канал наружу и захват рабочих чатов в буфер, откуда их берёт импорт |
BACKLOG.md — векторный поиск, MCP-сервер, расшифровка голосовых,
парсер Telegram Desktop, автоматическая деперсонализация. Всё это ложится поверх
стандарта и не требует его переписывания.
Общая картина, частью которой это является, — docs/VISION.md.
CONTRIBUTING.md — в том числе главное: примеры только
обезличенные. Настоящие имена проектов, людей и организаций в репозиторий не
попадают ни в каком виде.
Репозиторий лицензирован по частям:
| Путь | Лицензия |
|---|---|
SPEC/ — текст стандарта |
CC BY-SA 4.0 |
| всё остальное — навыки, команды, скрипты | AGPL-3.0-or-later |
Стандарт — текст, и вирусность нужна на его производные редакции. Код — под AGPL, потому что осмысленный сценарий развития (MCP-сервер поверх архива) иначе позволял бы поднять его как закрытый сервис.