open-memex
Version:
Local-first memory layer and protocol for AI coding agents. Markdown source of truth, SQLite FTS5 index, zero cloud.
82 lines (59 loc) • 4.92 kB
Markdown
# OpenMemex 测试计划(v0.5.1)
> 自动化部分:`node --experimental-strip-types scripts/test-full.ts`
> 62 项全过(26 个 CLI 命令 + 11 个 MCP tool),隔离环境运行,不碰真实数据。
> 下面是机器/账号相关的部分,需要 Stone 在真机上过一遍。
## A. Windows 真机 + VS Code Copilot
- [ ] `npm i -g open-memex` 全局安装(稳定版),`open-memex --version` 显示正确版本
- [ ] 在一个真实项目目录跑 `open-memex init`(不加 `--yes`,走一遍交互)
- 确认 `.vscode/mcp.json` 生成,`~/.copilot/copilot-instructions.md` 合并写入(不覆盖已有内容)
- [ ] 重启 VS Code,Copilot Chat 里问 "what do you remember about this project?"
- 预期:MCP 连接成功,能调用 memory_search
- [ ] `open-memex add "windows 真机测试" --type fact`,再让 Copilot 搜出来
- [ ] 中文路径项目、中文记忆内容各试一条(CJK 索引)
## B. 真实 GitHub PR 全流程(review 工作流)
在一个真实 repo 里:
- [ ] `open-memex add "PR流程测试" --scope personal` → `propose --to project` → `sync-status` 看到 outbox draft
- [ ] `open-memex submit <id>`(留在当前分支,本地 commit)
- [ ] 手动 `git push` + 开 PR
- [ ] 在 PR 里点 Approve → 回来跑 `open-memex pr-status`(先看 report),再 `pr-status --apply`
- 预期:memory 变成 approved,`approved_by` 是 reviewer
- [ ] 找一条让 reviewer 点 "Request changes" → `pr-status --apply`
- 预期:只给 suggestion,**不**自动 reject(D32)
- [ ] Merge PR → `pr-status --apply`
- 预期:memory 变成 published
- [ ] `open-memex resolve` 无冲突时输出 "(no conflicted memory files)"
## C. 其他编辑器 MCP 集成
- [ ] Cursor:`open-memex mcp --print-config cursor` → 贴到 Cursor MCP 配置 → 能连上
- [ ] opencode:`open-memex init --client opencode` → `opencode.jsonc` 生效
- [ ] `open-memex init --yes`(不带 --client)→ 自动检测已装编辑器并一次全接上
- [ ] opencode:`open-memex init --client opencode --global` → `~/.config/opencode/opencode.json` 的 `plugin` 数组合并(带注释的 jsonc 不动、只给手动提示)
- [ ] Claude Code:`open-memex mcp --print-config claude` 给出的 `claude mcp add` 命令能跑通
## D. 跨机迁移(export/import 真实场景)
- [ ] 本机:`open-memex export --all -o migration.tar.gz`(含 private 的全量)
- [ ] 本机:`open-memex export -o share.tar.gz`(默认排除 private)→ 解包检查 manifest,确认没有 visibility:private 的条目
- [ ] 另一台机器:`open-memex import migration.tar.gz --dry-run` 先看预览,再正式 import
- 预期:project memory re-key 到新机器的 project scope,进 outbox 当 draft;personal 进 personal
- [ ] 同一个 bundle 导两次 → 第二次 "skipped N identical"
## E. Agent 会话行为(D42 / §3.5)
- [ ] 新开一个 agent 会话(MCP 已接),看 initialize 返回的 instructions 里有没有 session-start 同步指引
- [ ] 对 agent 说 "sync memory" / "同步记忆"
- 预期:agent 走 memory_status → 摘要 → 问你要同步哪条(而不是直接翻 appdata)
- [ ] 长对话中 agent 是否在检查点提议蒸馏(§3.5),提议后是否等你批准才保存(D42)
## F. 冲突解决(3-way merge)
- [ ] 两台机器(或两个 clone)同时改同一条 project memory,各自 submit + push,一边 pull 制造 diverged
- 预期:`open-memex pull` 明确报错退出,不自动 merge
- [ ] 手动 merge 后 `open-memex resolve <id>` 看 3-way 展示(base/outbox/repo),手动解决
## G. 同事 pilot(1–2 人,Stone 私下选)
- [ ] 对方 `npx -y open-memex init` 走通
- [ ] 对方能 propose → 你这边能看到 PR → promote 流程走通
- [ ] 收集反馈:哪里卡、哪里不符合直觉
## I. init/uninstall 行为(D47–D49)
- [ ] 空的 `mcp.json`:`open-memex init --client vscode` 直接写入,不再报 "not valid JSON"(D49)
- [ ] 带注释的 `mcp.json`:`init` 不动文件,只打印手贴片段(D47)
- [ ] `open-memex uninstall --client vscode` 移除接线条目,记忆数据不动;再跑 `init` 可恢复(D48)
- [ ] 裸 `open-memex uninstall`(交互终端)会先确认再清所有编辑器;`--yes` 跳过确认
## H. 已知问题观察
- [x] better-sqlite3 在 Node 24 退出时偶发 crash(exit 134):D72 已把驱动升到 13(N-API 线);Linux Node 24.20 连续 3 次 `test-full` 114/114。Windows 真机仍需确认同一版本下无 `SIGABRT` / exit 134,且不丢数据。
- [ ] `memory_list` 默认只列 project scope 是否符合预期(Stone 已定保持现状)
---
测试中发现的 bug 直接记到 GitHub issue;改完后更新本文档的复选框。