# ai-memory 记忆纠错：替换过期项目规则，保留来源并恢复误合并页面

## 执行范围

已运行 ai-memory原生版本条件写入及memory_restore_page恢复；显式Git checkpoint记录作者规范版本，旧page_id覆盖被拒绝；未运行LLM记忆合并。

## 输入与目标

虚构项目规则从v1改v2，另有一份被误合并的wiki页面

交付：版本化wiki、替代记录与恢复后的当前页

## 运行

在 reference 目录执行；先按文件 requirements.txt / package.json 或原生工具文档安装依赖。浏览器练习需 `npx playwright install chromium`；也可设置 `PLAYWRIGHT_EXECUTABLE_PATH` 为自己的 Chrome 路径。

```sh
AI_MEMORY_BIN="<ai-memory binary>" python versioned_page.py
```

## 目录

- fixtures：作者原创输入，不包含用户真实资料。
- starter：读者待完成任务。
- reference：作者完成参考。
- results：作者实际运行所得或明确标注的待运行输入/预期合同。

## 七步

1. **保存带出处旧规**

用create_only写入“距离用米”，正文保留spec-v1.md来源。路径表示规则身份，不能靠改文件名掩盖取代关系。

2. **条件写入新规**

回读page_id，再以expected_page_id写入毫米新规和spec-v2.md来源。新规范明确旧米值需乘1000转换。

3. **拒绝陈旧覆盖**

继续用旧page_id尝试覆盖。原生返回precondition_failed；调用方应回读后判断，不做无条件重试。

4. **记录可恢复版本**

在隔离wiki中显式提交Git checkpoint，保存对应修订号。这是作者主动快照，不假定每次读取都会自动生成checkpoint。

5. **制造错误合并**

将规则误写成“全部不用单位”。此为作者负例输入，不是AI实际合并产物；先保留错误现状以便对照。

6. **恢复有据版本**

调用memory_restore_page并传正确rev。原生把该版本写成新的current page，旧误写版本仍可追溯。

7. **核对内容与身份**

重新读页面，确认毫米正文和来源恢复、page_id已更新。恢复单页不等于恢复交接、用户权限或整个数据库。

## 来源

- https://raw.githubusercontent.com/akitaonrails/ai-memory/main/docs/lifecycle-ops.md


## 原生工具与边界补充

安装官方ai-memory CLI（作者实测3.1.1）及Git。reference/runtime是运行时目录，不分发。restore通过原生MCP memory_restore_page，不通过本机失败的删除路径。
