Skip to content

Repository files navigation

mnemo

Единый стандарт чат-экспортов — для Claude Code и Codex.

Переписка с заказчиком, ТЗ в .docx, скрины, транскрипты созвонов складываются в архив, у которого известно происхождение каждого куска и который проверяется линтером, а не глазами.

/mnemo:init          создать экспорт или принять существующий
/mnemo:import        выгрузка, буфер захвата или копипаста → разложить целиком
/mnemo:add-text      сообщение или транскрипт → RAW
/mnemo:add-files     документы → RAW, текст и вшитые картинки извлекаются
/mnemo:add-screens   скриншоты → RAW, байт-в-байт
/mnemo:verify        проверить, что архив цел и соответствует стандарту

Это названия операций. В Claude Code они же — команды сессии; в Codex ту же работу делает навык mnemo:chat-export, вызывая скрипты напрямую. Архив получается один и тот же, читается без инструмента и проверяется одним линтером.

Вторая половина — про состояние работы, а не про материал:

/mnemo:req           требование заказчика: дословно, с доказательством
/mnemo:ask           открытый вопрос: что блокирует, кому задан
/mnemo:audit         всё ли сделано, как хотел заказчик
/mnemo:gaps          чего не хватает и что утрачено

За неё отвечает навык mnemo:work-state. Он поднимается от фраз человека — «всё ли мы сделали по ТЗ», «я упёрся», «надо спросить», — в обоих хостах и одинаково.


Зачем

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

mnemo фиксирует это как формат:

  • RAW дословен и неизменен. Каждый файл учтён с sha256 — подмена видна.
  • Кто есть кто. Реестр людей связывает имя в мессенджере, логин в git и имя в разговоре; роль self отмечает того, кто ведёт архив.
  • Авторство отделено от текста. Telegram в копипасте подписывает пересланное сообщение тем, кто переслал. На живом чате это затронуло 16 сообщений из 21 — требования заказчика достались бы его руководителю. Поле attribution делает такую подмену видимой и запрещает цитировать по ложному автору.
  • Повторный импорт безопасен. Выгрузил чат заново — примется только новое, ничего не задвоится.
  • У каждого материала есть достоверность. verbatim, reconstructed, digest, placeholder. Конспект нельзя процитировать как чьи-то слова — это запрещено стандартом, а не оставлено на внимательность.
  • Пропуски видны. Не удалось достать оригинал — заводится запись, а не тишина. «Не добыт» и «утрачен» — разные вещи: первое задача, второе факт.
  • INDEX.md генерируется. Рукописный индекс молча расходится с содержимым; здесь он производный от манифеста, и разойтись не может.
  • Изъятия — часть формата. Что удалено, почему, обратимо ли, где лежит оригинал. Без этого архив нельзя показать.
  • Данные не уезжают в git. Каталог экспорта исключается из репозитория хост-проекта до того, как в нём появится первый файл.

Установка

Claude Code

claude plugin marketplace add ZenonEl/mnemo
claude plugin install mnemo@mnemo

То же из сессии: /plugin marketplace add ZenonEl/mnemo, затем /plugin install mnemo@mnemo. Обновление — claude plugin update mnemo@mnemo и рестарт.

Codex

codex plugin marketplace add ZenonEl/mnemo
codex plugin add mnemo@mnemo

Обновление — codex plugin marketplace upgrade, затем codex plugin add заново.

Копировать репозиторий в ~/.codex/skills/ не надо: копия — второй экземпляр стандарта, расходящийся с оригиналом молча.

В обоих хостах скил зовётся mnemo:chat-export и читается из одного и того же файла.

Зависимостей нет — скрипты работают на голой стандартной библиотеке 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 публичный срез без рабочих данных

Под Codex команд с таким именем нет — навык выполняет ту же операцию скриптом из scripts/. Список выше читается как перечень возможностей, а не как синтаксис одного хоста.

Навыки

Команды набирает человек. Навык модель поднимает сама — по тому, о чём идёт разговор. Их два, и делят они работу по намерению:

Навык Когда поднимается
mnemo:chat-export приём материала: сохранить переписку, разобрать вложения, принять существующий экспорт
mnemo:work-state состояние работы: что от нас хотят, всё ли сделано, что блокирует, что спросить

Разделены они не для красоты. Пока описание было одно, все его триггеры были про приём материала — проверяющая половина не поднималась вовсе, а под Codex, где слэш-команд нет, её и вызвать было нечем.

Стандарт

  • 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-сервер поверх архива) иначе позволял бы поднять его как закрытый сервис.

About

Claude Code plugin and format for provenance-aware project archives with RAW evidence, generated indexes, and integrity checks

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages