Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "session-recall",
"version": "0.6.1",
"version": "0.7.0",
"description": "Shared semantic recall over local Claude Code, Codex, and Cursor history. Bundles MCP search tools, deep recall, guided setup, and a background freshness hook.",
"author": { "name": "Max Butorin" }
}
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "session-recall",
"version": "0.6.1",
"version": "0.7.0",
"description": "Shared semantic recall over local Claude Code, Codex, and Cursor history, with durable deep navigation and guided setup.",
"author": {
"name": "Max Butorin"
Expand Down
2 changes: 1 addition & 1 deletion .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "session-recall",
"displayName": "Session Recall",
"version": "0.6.1",
"version": "0.7.0",
"minClientVersions": {
"cursor": "2.5.0"
},
Expand Down
24 changes: 0 additions & 24 deletions .project-docs/validation-allowlist.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,6 @@
"literal": "~/Sync/sr-share",
"reason": "Documented example of a standard runtime path, with no personal username or credential."
},
{
"path": "README.es-ES.md",
"rule": "personal-path",
"literal": "~/meta-docs",
"reason": "Documented example of a standard runtime path, with no personal username or credential."
},
{
"path": "README.es-ES.md",
"rule": "personal-path",
Expand Down Expand Up @@ -73,12 +67,6 @@
"literal": "~/Sync/sr-share",
"reason": "Documented example of a standard runtime path, with no personal username or credential."
},
{
"path": "README.md",
"rule": "personal-path",
"literal": "~/meta-docs",
"reason": "Documented example of a standard runtime path, with no personal username or credential."
},
{
"path": "README.md",
"rule": "personal-path",
Expand Down Expand Up @@ -115,12 +103,6 @@
"literal": "~/Sync/sr-share",
"reason": "Documented example of a standard runtime path, with no personal username or credential."
},
{
"path": "README.zh-CN.md",
"rule": "personal-path",
"literal": "~/meta-docs",
"reason": "Documented example of a standard runtime path, with no personal username or credential."
},
{
"path": "README.zh-CN.md",
"rule": "personal-path",
Expand Down Expand Up @@ -157,12 +139,6 @@
"literal": "~/Sync/sr-share",
"reason": "Documented example of a standard runtime path, with no personal username or credential."
},
{
"path": "docs/README.ru.md",
"rule": "personal-path",
"literal": "~/meta-docs",
"reason": "Documented example of a standard runtime path, with no personal username or credential."
},
{
"path": "docs/README.ru.md",
"rule": "personal-path",
Expand Down
36 changes: 0 additions & 36 deletions README.es-ES.md
Original file line number Diff line number Diff line change
Expand Up @@ -480,41 +480,6 @@ session-recall share fetch # collect the answers

</details>

## Meta docs — la memoria del proyecto, puesta por escrito

El recall en bruto responde a *qué se dijo*. Meta docs responde a lo que los agentes
preguntan de verdad en mitad de una tarea: *¿este bug ya se arregló antes? ¿cómo realizo
esta acción? ¿por qué se decidió así?* Un trabajo diario entrega el diálogo de cada sesión —
mensajes del usuario y respuestas finales, nunca el ruido de las herramientas — a un agente
destilador que mantiene entradas en Markdown dentro de un repositorio Git que tú eliges:

- `<project>/bugs/` — bugs que de verdad se arreglaron: cómo se reconoció, diagnosticó,
arregló y demostró arreglado cada uno;
- `<project>/actions/` — procedimientos, paso a paso, escritos para que un agente al que se
le pregunte de nuevo pueda seguir la entrada por sí solo;
- `<project>/decisions/` — decisiones disputadas: qué se decidió, por qué así, qué se
rechazó;
- `USER/` — un mapa global de dónde vive tu información y *cómo encontrarla* (comandos de
consulta y ubicaciones de almacenamiento — nunca los valores almacenados en sí).

```bash
session-recall metadocs init ~/meta-docs --from-today # memory starts now
session-recall metadocs run # one pass now
session-recall metadocs enable # daily job: launchd (macOS) / systemd user timer (Linux)
session-recall metadocs status
session-recall metadocs index-history --days 30 # opt-in: distill the past, once
```

Todo el mundo del destilador son cuatro verbos MCP — `search / create / edit / delete` — y
las reglas que soportan la carga son mecánica del servidor, no peticiones en el prompt:
`create` se rechaza hasta que el agente haya hecho `search` (la deduplicación es
obligatoria), las entradas se escanean en busca de secretos antes de que un solo byte llegue
al disco, y `delete` exige un motivo. Las ejecuciones son incrementales y cada proyecto con
cambios recibe su propio commit local — revisar es un diff, deshacer es un revert, y
compartir la memoria con un equipo es simplemente subir el repo a algún lugar privado. Nada
se sube a menos que actives `--push`; el motor y el modelo salen solo de la configuración
(`init --engine claude-cli|codex --model …`) — nada se elige en silencio.

## La privacidad es una invariante estricta

Este es un repositorio público. **En él solo entra código.** Los datos de ejecución viven
Expand Down Expand Up @@ -587,7 +552,6 @@ Empieza por:
- [Cursor como origen en bruto duradero](docs/decisions/2026-08-03-cursor-durable-raw-source.md)
- [Recall acotado por proyecto](docs/decisions/2026-06-26-recall-project-scope.md)
- [Puerta de seguridad de la compartición P2P](docs/decisions/2026-07-30-p2p-sharing-v1-security-gate.md)
- [Meta docs, memoria viva del proyecto](docs/decisions/2026-07-31-metadocs-living-project-memory.md)

## Hoja de ruta

Expand Down
34 changes: 0 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -456,39 +456,6 @@ session-recall share fetch # collect the answers

</details>

## Meta docs — the project's memory, written down

Raw recall answers *what was said*. Meta docs answers what agents actually ask mid-task:
*was this bug fixed before? how do I perform this action? why was it decided this way?* A
daily job hands each session's dialogue — user messages and final answers, never the tool
noise — to a distiller agent that maintains Markdown entries in a Git repository you choose:

- `<project>/bugs/` — bugs that were actually fixed: how each was recognized, diagnosed,
fixed, and proven fixed;
- `<project>/actions/` — procedures, step by step, written so an agent asked again can
follow the entry alone;
- `<project>/decisions/` — contested choices: what was decided, why that way, what was
rejected;
- `USER/` — a global map of where your information lives and *how to find it* (lookup
commands and storage locations — never the stored values themselves).

```bash
session-recall metadocs init ~/meta-docs --from-today # memory starts now
session-recall metadocs run # one pass now
session-recall metadocs enable # daily job: launchd (macOS) / systemd user timer (Linux)
session-recall metadocs status
session-recall metadocs index-history --days 30 # opt-in: distill the past, once
```

The distiller's whole world is four MCP verbs — `search / create / edit / delete` — and the
load-bearing rules are server mechanics, not prompt requests: `create` is refused until the
agent has `search`ed (dedup is mandatory), entries are scanned for secrets before a byte
reaches disk, and `delete` demands a reason. Runs are incremental, and each changed project
gets its own local commit — review is a diff, undo is a revert, and sharing the memory with
a team is just pushing the repo somewhere private. Nothing is pushed unless you opt into
`--push`; the engine and model come from config only
(`init --engine claude-cli|codex --model …`) — nothing is picked silently.

## Privacy is a hard invariant

This is a public repository. **Only code goes in it.** Runtime data lives under
Expand Down Expand Up @@ -558,7 +525,6 @@ Engineering rationale and invariants live in [`docs/decisions/`](docs/decisions/
- [Cursor as a durable raw source](docs/decisions/2026-08-03-cursor-durable-raw-source.md)
- [Project-scoped recall](docs/decisions/2026-06-26-recall-project-scope.md)
- [P2P sharing security gate](docs/decisions/2026-07-30-p2p-sharing-v1-security-gate.md)
- [Meta docs living project memory](docs/decisions/2026-07-31-metadocs-living-project-memory.md)

## Roadmap

Expand Down
32 changes: 0 additions & 32 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -434,37 +434,6 @@ session-recall share fetch # collect the answers

</details>

## Meta docs——写下来的项目记忆

原始召回回答的是*当时说了什么*。Meta docs 回答的是智能体在任务中途真正会问的问题:
*这个 bug 以前修过吗?这个操作怎么做?当初为什么这么定?* 一个每日任务会把每个会话的
对话内容——用户消息和最终回答,绝不含工具噪音——交给一个蒸馏智能体,由它在你指定的
Git 仓库里维护 Markdown 条目:

- `<project>/bugs/`——确实修复过的 bug:每个 bug 如何被识别、诊断、修复,
以及如何证明已修复;
- `<project>/actions/`——按步骤写下的操作流程,再次被问到的智能体只凭条目本身
就能照做;
- `<project>/decisions/`——有过争议的选择:定了什么、为何这样定、否掉了什么;
- `USER/`——一张全局地图,记录你的信息存放在哪里以及*如何找到它*(查询命令与
存储位置——绝不记录存储的值本身)。

```bash
session-recall metadocs init ~/meta-docs --from-today # memory starts now
session-recall metadocs run # one pass now
session-recall metadocs enable # daily job: launchd (macOS) / systemd user timer (Linux)
session-recall metadocs status
session-recall metadocs index-history --days 30 # opt-in: distill the past, once
```

蒸馏器的全部世界只有四个 MCP 动词——`search / create / edit / delete`——而那些承重的
规则是服务器机制,不是提示词请求:智能体没先 `search` 就调用 `create` 会被拒绝
(去重是强制的),条目在任何字节落盘之前都会先做机密扫描,`delete` 必须给出理由。
运行是增量式的,每个有变更的项目都会得到自己的本地提交——审阅就是看 diff,撤销就是
revert,与团队共享这份记忆只需把仓库推到某个私有位置。除非你主动选择 `--push`,
否则什么都不会被推送;引擎和模型只来自配置(`init --engine claude-cli|codex --model …`)——
没有任何东西被悄悄选定。

## 隐私是硬性不变量

这是一个公开仓库,**里面只有代码**。运行时数据位于 `~/.local/share/session-recall/`,
Expand Down Expand Up @@ -532,7 +501,6 @@ claude mcp add session-recall --scope user -- /absolute/path/.venv/bin/session-r
- [Cursor 作为持久的原始数据源](docs/decisions/2026-08-03-cursor-durable-raw-source.md)
- [按项目范围的召回](docs/decisions/2026-06-26-recall-project-scope.md)
- [P2P 分享的安全门禁](docs/decisions/2026-07-30-p2p-sharing-v1-security-gate.md)
- [Meta docs——活的项目记忆](docs/decisions/2026-07-31-metadocs-living-project-memory.md)

## 路线图

Expand Down
34 changes: 0 additions & 34 deletions docs/README.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -467,39 +467,6 @@ session-recall share fetch # collect the answers

</details>

## Meta docs — память проекта, записанная текстом

Сырой recall отвечает, *что говорилось*. Meta docs отвечает на то, что агенты реально
спрашивают посреди задачи: *этот баг уже чинили? как выполнить это действие? почему решили
именно так?* Ежедневная джоба отдаёт диалог каждой сессии — сообщения пользователя и
финальные ответы, никогда шум инструментов — агенту-дистиллятору, который ведёт
Markdown-записи в выбранном Git-репозитории:

- `<project>/bugs/` — реально починенные баги: как баг распознали, как диагностировали, чем
чинили и как доказали, что починено;
- `<project>/actions/` — процедуры, шаг за шагом, написанные так, чтобы агент, которого
попросили снова, справился по одной записи;
- `<project>/decisions/` — спорные выборы: что решили, почему именно так и что отвергли;
- `USER/` — глобальная карта: где живёт ваша информация и *как её найти* (команды поиска и
места хранения — никогда сами значения).

```bash
session-recall metadocs init ~/meta-docs --from-today # memory starts now
session-recall metadocs run # one pass now
session-recall metadocs enable # daily job: launchd (macOS) / systemd user timer (Linux)
session-recall metadocs status
session-recall metadocs index-history --days 30 # opt-in: distill the past, once
```

Весь мир дистиллятора — четыре MCP-глагола: `search / create / edit / delete`, а несущие
правила — это механика сервера, а не просьбы в промпте: `create` отклоняется, пока агент не
сделал `search` (дедупликация обязательна), записи сканируются на секреты до того, как хоть
байт коснётся диска, а `delete` требует причину. Прогоны инкрементальные, и каждый
изменённый проект получает свой локальный коммит — ревью это дифф, откат это revert, а
поделиться памятью с командой — значит просто запушить репо в приватное место. Ничего не
пушится без явного `--push`; движок и модель берутся только из конфига
(`init --engine claude-cli|codex --model …`) — ничего не выбирается втихую.

## Приватность — жёсткий инвариант

Это публичный репозиторий. **В него попадает только код.** Рантайм-данные живут в
Expand Down Expand Up @@ -570,7 +537,6 @@ claude mcp add session-recall --scope user -- /absolute/path/.venv/bin/session-r
- [Cursor как долговечный сырой источник](decisions/2026-08-03-cursor-durable-raw-source.md)
- [Recall со скоупом проекта](decisions/2026-06-26-recall-project-scope.md)
- [Security gate для P2P-шаринга](decisions/2026-07-30-p2p-sharing-v1-security-gate.md)
- [Meta docs — живая память проекта](decisions/2026-07-31-metadocs-living-project-memory.md)

## Роадмап

Expand Down
5 changes: 5 additions & 0 deletions docs/decisions/2026-07-31-metadocs-living-project-memory.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,8 @@ git. Провенанс (`sources`) сервер добавляет сам.
**Отвергли:** давать агенту generic-тулы (Read/Bash) «для контекста» — рост
поверхности инъекции без нужды; свой агентский цикл поверх API — CLI уже
умеет цикл, подписка уже оплачена.

## Пересмотр 2026-10-12: удалено

Фича удалена целиком, слой переезжает в little-memory — см.
[2026-10-12-remove-metadocs.md](2026-10-12-remove-metadocs.md).
Loading
Loading