pmem-ai 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -0
- package/LICENSE +21 -0
- package/README.md +349 -0
- package/dist/commands/ask.d.ts +3 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +303 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/distill.d.ts +6 -0
- package/dist/commands/distill.d.ts.map +1 -0
- package/dist/commands/distill.js +425 -0
- package/dist/commands/distill.js.map +1 -0
- package/dist/commands/graph.d.ts +6 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +216 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +566 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/integration.d.ts +2 -0
- package/dist/commands/integration.d.ts.map +1 -0
- package/dist/commands/integration.js +216 -0
- package/dist/commands/integration.js.map +1 -0
- package/dist/commands/migrate.d.ts +6 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +379 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/rebuild.d.ts +8 -0
- package/dist/commands/rebuild.d.ts.map +1 -0
- package/dist/commands/rebuild.js +299 -0
- package/dist/commands/rebuild.js.map +1 -0
- package/dist/commands/recall.d.ts +3 -0
- package/dist/commands/recall.d.ts.map +1 -0
- package/dist/commands/recall.js +140 -0
- package/dist/commands/recall.js.map +1 -0
- package/dist/commands/session.d.ts +3 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +147 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +275 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +14 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +536 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +4 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +296 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/core/db.d.ts +47 -0
- package/dist/core/db.d.ts.map +1 -0
- package/dist/core/db.js +326 -0
- package/dist/core/db.js.map +1 -0
- package/dist/core/format.d.ts +3 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +221 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/fs.d.ts +16 -0
- package/dist/core/fs.d.ts.map +1 -0
- package/dist/core/fs.js +175 -0
- package/dist/core/fs.js.map +1 -0
- package/dist/core/git.d.ts +6 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +20 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/hash.d.ts +10 -0
- package/dist/core/hash.d.ts.map +1 -0
- package/dist/core/hash.js +25 -0
- package/dist/core/hash.js.map +1 -0
- package/dist/core/manifest.d.ts +6 -0
- package/dist/core/manifest.d.ts.map +1 -0
- package/dist/core/manifest.js +207 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/core/yaml.d.ts +11 -0
- package/dist/core/yaml.d.ts.map +1 -0
- package/dist/core/yaml.js +94 -0
- package/dist/core/yaml.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +167 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +351 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/docs/Voorlopige projekidee.md +695 -0
- package/docs/handover-v0.3.md +355 -0
- package/docs/handover-v0.4.md +367 -0
- package/docs/prd.md +318 -0
- package/docs/project-roadmap.md +279 -0
- package/docs/release-checklist-v0.5.md +109 -0
- package/docs/v0.2 pre-design.md +182 -0
- package/docs/v0.2 pre-roadmap.md +270 -0
- package/docs/v0.3 pre-design.md +686 -0
- package/docs/v0.4 pre-design.md +417 -0
- package/docs/v0.5 pre-design.md +481 -0
- package/package.json +67 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
# v0.5 前置设计决策
|
|
2
|
+
|
|
3
|
+
本文档记录 pmem v0.5 开工前的最终产品与技术决策。v0.5 的核心定位:
|
|
4
|
+
|
|
5
|
+
> **Productization Beta**
|
|
6
|
+
>
|
|
7
|
+
> 不是继续堆新能力,不是 embedding,不是 MCP/REST 服务,也不是 Graph UI。
|
|
8
|
+
> 而是:把 v0.4 已经跑通的 Agent Workflow Runtime 包装成一个真实项目可以安装、理解、运行、验证、反馈的 Beta 产品。
|
|
9
|
+
>
|
|
10
|
+
> v0.5 要回答的唯一问题:**pmem 能否作为一个可上线的 CLI 产品,被真实 code agent 和开发者稳定使用?**
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 一、v0.5 产品目标
|
|
15
|
+
|
|
16
|
+
v0.4 已经证明 pmem 可以进入真实 agent 开发工作流。v0.5 不再证明"能不能跑",而是证明"别人能不能顺利用起来"。
|
|
17
|
+
|
|
18
|
+
### 一句话目标
|
|
19
|
+
|
|
20
|
+
> **任何熟悉 CLI 的开发者或 code agent,都能从安装 pmem 开始,在一个真实项目里完成一次完整 memory workflow,并知道每一步为什么发生、失败时该怎么办。**
|
|
21
|
+
|
|
22
|
+
### 用户对象
|
|
23
|
+
|
|
24
|
+
| 用户 | 需求 |
|
|
25
|
+
|------|------|
|
|
26
|
+
| 项目维护者 | 安装 pmem、初始化项目记忆、理解目录结构和命令 |
|
|
27
|
+
| Code agent | 低 token 恢复上下文、感知代码变更、维护 memory cards |
|
|
28
|
+
| 早期试用者 | 跟随 README 完成 quick start,并能报告具体问题 |
|
|
29
|
+
|
|
30
|
+
### 成功标准
|
|
31
|
+
|
|
32
|
+
1. 从 `npm pack` 产物安装后,`pmem --version`、`pmem init`、`pmem rebuild`、`pmem recall` 可直接运行。
|
|
33
|
+
2. README 能独立解释 pmem 是什么、适合谁、如何在 5 分钟内跑通。
|
|
34
|
+
3. 一个真实项目 E2E 脚本覆盖:安装 → 初始化 → 创建 card → rebuild → recall/ask → status → mark-dirty → update suggest → verify。
|
|
35
|
+
4. `CLAUDE.md`、`AGENTS.md`、integration templates 统一到 v0.5 产品口径。
|
|
36
|
+
5. 常见失败场景有清楚错误提示:无 `.pmem`、无 DB、非 git 项目、空项目、损坏 DB、无匹配结果。
|
|
37
|
+
6. release checklist 能指导一次可重复的 Beta 发布。
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 二、v0.5 不做的事情(范围排除)
|
|
42
|
+
|
|
43
|
+
以下方向在 v0.5 明确不做,除非后续真实试用反馈证明它们是 Beta 上线阻塞项。
|
|
44
|
+
|
|
45
|
+
| 排除项 | 原因 |
|
|
46
|
+
|--------|------|
|
|
47
|
+
| API embedding | v0.5 目标是产品化,不引入 API key、网络依赖、成本和隐私变量 |
|
|
48
|
+
| local embedding | 包体积、跨平台、模型选择都不适合 Beta 产品主线 |
|
|
49
|
+
| `pmem serve` / MCP / REST | CLI 已能满足 code agent 接入;服务化会扩大运维和协议面 |
|
|
50
|
+
| Graph UI | UI 不是 Beta 可用性的前置条件 |
|
|
51
|
+
| 多用户远程服务 | 超出本地 CLI 产品定位 |
|
|
52
|
+
| 自动 commit message 生成 | 与 project memory 主线弱相关 |
|
|
53
|
+
| 基础遥测 | Beta 阶段先用显式反馈和 issue,不采集用户数据 |
|
|
54
|
+
| `pmem backup` / `pmem restore` 新命令 | 暂不新增命令;继续依赖迁移备份和 Git 版本控制 |
|
|
55
|
+
| `pmem verify --report` 仪表板 | 可作为后续增强,不进入 v0.5 P0 |
|
|
56
|
+
|
|
57
|
+
v0.5 的克制原则:**只做让现有能力变成产品所必需的事情。**
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 三、v0.5 目标闭环
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
开发者获取 pmem
|
|
65
|
+
↓
|
|
66
|
+
npm pack / npm install 安装
|
|
67
|
+
↓
|
|
68
|
+
pmem --version 确认 CLI 可用
|
|
69
|
+
↓
|
|
70
|
+
在真实项目中 pmem init / init --guided
|
|
71
|
+
↓
|
|
72
|
+
阅读 README / AGENTS.md / CLAUDE.md 接入 agent workflow
|
|
73
|
+
↓
|
|
74
|
+
pmem rebuild 建立 SQLite index
|
|
75
|
+
↓
|
|
76
|
+
pmem recall / ask 获取上下文
|
|
77
|
+
↓
|
|
78
|
+
开发者或 agent 修改代码
|
|
79
|
+
↓
|
|
80
|
+
pmem status / mark-dirty --auto
|
|
81
|
+
↓
|
|
82
|
+
pmem update --suggest / --confirm
|
|
83
|
+
↓
|
|
84
|
+
pmem verify 确认一致性
|
|
85
|
+
↓
|
|
86
|
+
按 release checklist 发布 Beta
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
这条链路是 v0.5 的"产品回路"。每一个 P0 都必须服务这条回路。
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 四、优先级表
|
|
94
|
+
|
|
95
|
+
### P0 — 必须完成
|
|
96
|
+
|
|
97
|
+
| # | 功能 | 说明 |
|
|
98
|
+
|---|------|------|
|
|
99
|
+
| 1 | README.md | 产品定位、安装、quick start、核心概念、agent workflow、命令参考、故障排查 |
|
|
100
|
+
| 2 | npm package readiness | 修正 package metadata、files/bin、lockfile version、`npm pack` smoke test |
|
|
101
|
+
| 3 | install E2E | 覆盖本地 pack 安装后的 CLI 路径,不只跑 `ts-node` |
|
|
102
|
+
| 4 | real-project E2E | 在 `temp/` 中模拟真实项目,从 init 到 verify 完整闭环 |
|
|
103
|
+
| 5 | Agent docs sync | 同步 `AGENTS.md`、`CLAUDE.md`、integration templates 到 v0.5 口径 |
|
|
104
|
+
| 6 | Error UX pass | 梳理常见错误与 exit code,保证 agent 和人都能读懂 |
|
|
105
|
+
| 7 | Release checklist | 版本号、build/test、pack、smoke、changelog、publish 前检查 |
|
|
106
|
+
| 8 | Public command contract | 固化 v0.5 支持命令、输出格式、退出码,避免 README 与实现漂移 |
|
|
107
|
+
|
|
108
|
+
### P1 — 应该完成
|
|
109
|
+
|
|
110
|
+
| # | 功能 | 说明 |
|
|
111
|
+
|---|------|------|
|
|
112
|
+
| 1 | 示例项目 / demo fixture | 最小可运行 demo,用于 README 和 E2E |
|
|
113
|
+
| 2 | CHANGELOG.md | 从 v0.1 到 v0.5 的用户可读版本记录 |
|
|
114
|
+
| 3 | Troubleshooting 扩展 | DB 损坏、FTS5 不可用、非 git 项目、空项目等诊断步骤 |
|
|
115
|
+
| 4 | `pmem doctor` 评估 | 先设计是否需要,默认不实现;若错误 UX 不足再考虑 |
|
|
116
|
+
| 5 | CLI help 文案打磨 | Commander description / option help 与 README 对齐 |
|
|
117
|
+
|
|
118
|
+
### P2 — 可推迟
|
|
119
|
+
|
|
120
|
+
| 功能 | 说明 |
|
|
121
|
+
|------|------|
|
|
122
|
+
| npm public publish | v0.5.0 可以先做到可发布;是否实际 publish 由发布策略决定 |
|
|
123
|
+
| GitHub issue templates | 外部公开后再补 |
|
|
124
|
+
| 网站 / landing page | README 足够承载 Beta |
|
|
125
|
+
| 性能专项优化 | 仅修 Beta E2E 暴露的明显性能问题 |
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 五、发布策略
|
|
130
|
+
|
|
131
|
+
v0.5 采用两层发布标准:
|
|
132
|
+
|
|
133
|
+
### Internal Beta Readiness
|
|
134
|
+
|
|
135
|
+
必须满足:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
npm test
|
|
139
|
+
npm run build
|
|
140
|
+
npm pack --dry-run
|
|
141
|
+
npm pack
|
|
142
|
+
npm install -g ./pmem-0.5.0.tgz
|
|
143
|
+
pmem --version
|
|
144
|
+
pmem init <project>
|
|
145
|
+
pmem rebuild
|
|
146
|
+
pmem recall
|
|
147
|
+
pmem verify
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Internal Beta 的目标是证明:**包产物可以被安装,安装后的二进制可以在真实目录工作。**
|
|
151
|
+
|
|
152
|
+
### Public Beta Readiness
|
|
153
|
+
|
|
154
|
+
在 Internal Beta 基础上增加:
|
|
155
|
+
|
|
156
|
+
1. README 以外部用户视角完整可读。
|
|
157
|
+
2. package metadata 可发布:name、version、description、license、bin、files、keywords、repository。
|
|
158
|
+
3. CHANGELOG 记录 v0.5 的用户价值和 breaking notes。
|
|
159
|
+
4. release checklist 逐项通过。
|
|
160
|
+
5. 明确是否执行 `npm publish`,以及包名是否可用。
|
|
161
|
+
|
|
162
|
+
v0.5.0 的开发目标是达到 **Public Beta Readiness**。是否真正公开发布,可在 release 前最后决定。
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 六、文档设计
|
|
167
|
+
|
|
168
|
+
### README.md 结构
|
|
169
|
+
|
|
170
|
+
README 是 v0.5 最重要的产品界面。建议结构:
|
|
171
|
+
|
|
172
|
+
```markdown
|
|
173
|
+
# pmem
|
|
174
|
+
|
|
175
|
+
One-line value proposition.
|
|
176
|
+
|
|
177
|
+
## Why pmem
|
|
178
|
+
## Who it is for
|
|
179
|
+
## Install
|
|
180
|
+
## 5-minute Quick Start
|
|
181
|
+
## Core Concepts
|
|
182
|
+
- Markdown cards
|
|
183
|
+
- SQLite runtime
|
|
184
|
+
- recall / ask
|
|
185
|
+
- dirty / update / distill
|
|
186
|
+
## Agent Workflow
|
|
187
|
+
## CLI Reference
|
|
188
|
+
## Exit Codes
|
|
189
|
+
## Project Layout
|
|
190
|
+
## Troubleshooting
|
|
191
|
+
## Roadmap
|
|
192
|
+
## License
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
文档原则:
|
|
196
|
+
|
|
197
|
+
1. 先告诉用户"为什么需要 pmem",再告诉用户命令。
|
|
198
|
+
2. 所有命令示例都必须能在 fresh clone + install 后运行。
|
|
199
|
+
3. 不把历史设计细节塞进 README;历史细节留在 `docs/`。
|
|
200
|
+
4. 对 agent 友好:给出可复制的 session start / session end 工作流。
|
|
201
|
+
|
|
202
|
+
### Agent 指令文档
|
|
203
|
+
|
|
204
|
+
需要同步的文件:
|
|
205
|
+
|
|
206
|
+
| 文件 | 目标 |
|
|
207
|
+
|------|------|
|
|
208
|
+
| `AGENTS.md` | Codex 入口指令,v0.5 产品口径 |
|
|
209
|
+
| `CLAUDE.md` | Claude Code 入口指令,不能继续停留在 v0.2 |
|
|
210
|
+
| `.pmem/integrations/*` 模板 | init 生成的新项目默认得到 v0.5 workflow |
|
|
211
|
+
|
|
212
|
+
要求:这些文件不能互相矛盾。命令列表、退出码、SQLite/Markdown 关系必须一致。
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 七、E2E 测试设计
|
|
217
|
+
|
|
218
|
+
v0.5 需要把"能安装并跑通"变成可重复验证。
|
|
219
|
+
|
|
220
|
+
### E2E 1:package install smoke
|
|
221
|
+
|
|
222
|
+
目的:验证 npm 包产物本身。
|
|
223
|
+
|
|
224
|
+
流程:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
npm run build
|
|
228
|
+
npm pack
|
|
229
|
+
npm install -g ./pmem-*.tgz
|
|
230
|
+
pmem --version
|
|
231
|
+
pmem --help
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
验收:
|
|
235
|
+
|
|
236
|
+
- 全局 `pmem` 可执行。
|
|
237
|
+
- 版本号与 `package.json` 一致。
|
|
238
|
+
- help 中列出 v0.5 支持命令。
|
|
239
|
+
|
|
240
|
+
### E2E 2:fresh project workflow
|
|
241
|
+
|
|
242
|
+
目的:验证新用户 5 分钟 quick start。
|
|
243
|
+
|
|
244
|
+
流程:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
mkdir temp/e2e-fresh-project
|
|
248
|
+
cd temp/e2e-fresh-project
|
|
249
|
+
pmem init e2e-fresh-project
|
|
250
|
+
pmem rebuild
|
|
251
|
+
pmem recall --budget 2000
|
|
252
|
+
pmem verify
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
验收:
|
|
256
|
+
|
|
257
|
+
- 空项目有清楚输出,不 crash。
|
|
258
|
+
- 如 verify 因缺少 card/DB 给 warning,README 必须解释下一步。
|
|
259
|
+
|
|
260
|
+
### E2E 3:real memory workflow
|
|
261
|
+
|
|
262
|
+
目的:验证真实 agent 使用闭环。
|
|
263
|
+
|
|
264
|
+
流程:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
pmem init e2e-real
|
|
268
|
+
mkdir -p src .pmem/modules .pmem/decisions .pmem/traces
|
|
269
|
+
echo "export const value = 1;" > src/index.ts
|
|
270
|
+
# 写入含 source_files 的 module card
|
|
271
|
+
pmem rebuild
|
|
272
|
+
pmem recall --format compact --budget 2000
|
|
273
|
+
pmem ask "core" --format json
|
|
274
|
+
echo "export const value = 2;" > src/index.ts
|
|
275
|
+
pmem status --format json
|
|
276
|
+
pmem mark-dirty --auto
|
|
277
|
+
pmem update --suggest --format json
|
|
278
|
+
pmem update --confirm -s "Updated core module" -n "Continue testing pmem workflow"
|
|
279
|
+
pmem verify
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
验收:
|
|
283
|
+
|
|
284
|
+
- `status` 能发现改动。
|
|
285
|
+
- `mark-dirty --auto` 能标记相关 card,或给出可理解的无匹配提示。
|
|
286
|
+
- `update --suggest` exit code 1 被视为"有建议",不是失败。
|
|
287
|
+
- `verify` 最终通过或给出可操作 warning。
|
|
288
|
+
|
|
289
|
+
### E2E 4:non-git fallback
|
|
290
|
+
|
|
291
|
+
目的:验证非 git 项目的 mtime fallback。
|
|
292
|
+
|
|
293
|
+
验收:
|
|
294
|
+
|
|
295
|
+
- `pmem status` 不依赖 git repo。
|
|
296
|
+
- `.pmem/.last-status` 行为可解释。
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 八、错误与退出码设计
|
|
301
|
+
|
|
302
|
+
v0.5 不必新增大量能力,但必须让失败变得可诊断。
|
|
303
|
+
|
|
304
|
+
### 保留退出码协议
|
|
305
|
+
|
|
306
|
+
| 命令 | 0 | 1 | 2 |
|
|
307
|
+
|------|---|---|---|
|
|
308
|
+
| `pmem status` | 有变更 | 无变更 | 错误 |
|
|
309
|
+
| `pmem update --suggest` | 无建议 | 有建议 | 错误 |
|
|
310
|
+
| `pmem distill --suggest` | 无需蒸馏 | 建议蒸馏 | 错误 |
|
|
311
|
+
| `pmem verify` | 通过 | warning | error |
|
|
312
|
+
|
|
313
|
+
### 错误信息原则
|
|
314
|
+
|
|
315
|
+
每个错误或 warning 应该回答:
|
|
316
|
+
|
|
317
|
+
1. 发生了什么。
|
|
318
|
+
2. 为什么这不是理想状态。
|
|
319
|
+
3. 用户或 agent 下一步该运行什么命令。
|
|
320
|
+
|
|
321
|
+
示例:
|
|
322
|
+
|
|
323
|
+
```txt
|
|
324
|
+
No .pmem directory found.
|
|
325
|
+
Run `pmem init <project-name>` in your project root.
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
```txt
|
|
329
|
+
.pmem/pmem.db not found.
|
|
330
|
+
Run `pmem rebuild` after adding at least one memory card.
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### 必查场景
|
|
334
|
+
|
|
335
|
+
| 场景 | 期望 |
|
|
336
|
+
|------|------|
|
|
337
|
+
| 无 `.pmem` | 提示 `pmem init` |
|
|
338
|
+
| 无 `pmem.db` | 提示 `pmem rebuild`,并解释空项目可能无法生成 DB |
|
|
339
|
+
| 损坏 DB | 提示备份 DB 后重新 `pmem rebuild --full` |
|
|
340
|
+
| FTS5 不可用 | 降级 LIKE 查询,不把它当错误 |
|
|
341
|
+
| 非 git 项目 | 使用 mtime fallback,并说明 source 是 `mtime` |
|
|
342
|
+
| `ask` 无结果 | 提示尝试 `pmem recall` 或检查 aliases/tags/source_files |
|
|
343
|
+
| dirty flags 未解决 | 提示 `pmem update --suggest` / `pmem update --confirm` |
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## 九、Package Readiness 设计
|
|
348
|
+
|
|
349
|
+
### package.json
|
|
350
|
+
|
|
351
|
+
必须确认:
|
|
352
|
+
|
|
353
|
+
| 字段 | 要求 |
|
|
354
|
+
|------|------|
|
|
355
|
+
| `name` | 发布前确认 npm 包名可用;若不可用,选择 scoped 包名 |
|
|
356
|
+
| `version` | v0.5.0 |
|
|
357
|
+
| `description` | 用户可读,不只技术描述 |
|
|
358
|
+
| `bin.pmem` | 指向 `dist/index.js` |
|
|
359
|
+
| `files` | 只包含 dist、README、LICENSE、docs 必要文件 |
|
|
360
|
+
| `repository` | 指向实际仓库 |
|
|
361
|
+
| `license` | 与 LICENSE 文件一致 |
|
|
362
|
+
| `engines.node` | `>=18` |
|
|
363
|
+
| `keywords` | agent, memory, cli, project-memory, codex, claude |
|
|
364
|
+
|
|
365
|
+
### package-lock.json
|
|
366
|
+
|
|
367
|
+
根版本必须与 `package.json` 一致。当前仓库曾出现 `package.json = 0.4.0`、`package-lock.json = 0.1.0` 的不一致,v0.5 必须修正。
|
|
368
|
+
|
|
369
|
+
### npm pack 验收
|
|
370
|
+
|
|
371
|
+
检查 tarball 内容:
|
|
372
|
+
|
|
373
|
+
- 包含 `dist/index.js`
|
|
374
|
+
- 包含 README
|
|
375
|
+
- 不包含 `src/`,除非决定发布源码
|
|
376
|
+
- 不包含 `temp/`
|
|
377
|
+
- 不包含 `.pmem/`
|
|
378
|
+
- 不包含 `node_modules/`
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## 十、实现顺序
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
Step 0: 冻结 v0.5 pre-design(本文档)
|
|
386
|
+
↓
|
|
387
|
+
Step 1: 产品入口文档
|
|
388
|
+
- README.md
|
|
389
|
+
- CLAUDE.md / AGENTS.md 同步
|
|
390
|
+
- integration templates 同步
|
|
391
|
+
↓
|
|
392
|
+
Step 2: package readiness
|
|
393
|
+
- package.json metadata
|
|
394
|
+
- package-lock version
|
|
395
|
+
- npm pack dry-run
|
|
396
|
+
↓
|
|
397
|
+
Step 3: E2E 脚本
|
|
398
|
+
- package install smoke
|
|
399
|
+
- fresh project workflow
|
|
400
|
+
- real memory workflow
|
|
401
|
+
- non-git fallback
|
|
402
|
+
↓
|
|
403
|
+
Step 4: Error UX pass
|
|
404
|
+
- 常见失败场景
|
|
405
|
+
- exit code 文档与实现一致性
|
|
406
|
+
↓
|
|
407
|
+
Step 5: Release checklist / changelog
|
|
408
|
+
- CHANGELOG.md
|
|
409
|
+
- docs/release-checklist-v0.5.md
|
|
410
|
+
↓
|
|
411
|
+
Step 6: Beta release validation
|
|
412
|
+
- npm test
|
|
413
|
+
- npm run build
|
|
414
|
+
- npm pack
|
|
415
|
+
- install smoke
|
|
416
|
+
- E2E 全通过
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## 十一、v0.5 验收清单
|
|
422
|
+
|
|
423
|
+
### 产品验收
|
|
424
|
+
|
|
425
|
+
- [ ] README 能让新用户独立完成 quick start
|
|
426
|
+
- [ ] Agent 文档明确 session start / work / session end 流程
|
|
427
|
+
- [ ] CLI help 与 README 命令一致
|
|
428
|
+
- [ ] exit code 语义完整记录
|
|
429
|
+
- [ ] 常见错误都有下一步建议
|
|
430
|
+
|
|
431
|
+
### 工程验收
|
|
432
|
+
|
|
433
|
+
- [ ] `npm test` 通过
|
|
434
|
+
- [ ] `npm run build` 通过
|
|
435
|
+
- [ ] `npm pack --dry-run` 内容正确
|
|
436
|
+
- [ ] tarball 安装后 `pmem --version` 正确
|
|
437
|
+
- [ ] install smoke E2E 通过
|
|
438
|
+
- [ ] real workflow E2E 通过
|
|
439
|
+
- [ ] package version / lockfile version 一致
|
|
440
|
+
|
|
441
|
+
### 发布验收
|
|
442
|
+
|
|
443
|
+
- [ ] CHANGELOG.md 包含 v0.5.0
|
|
444
|
+
- [ ] release checklist 全部通过
|
|
445
|
+
- [ ] package metadata 完整
|
|
446
|
+
- [ ] npm publish 前确认包名和发布权限
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## 十二、v0.5 最终决策表
|
|
451
|
+
|
|
452
|
+
| 问题 | 最终决策 |
|
|
453
|
+
|------|---------|
|
|
454
|
+
| v0.5 主线 | Productization Beta |
|
|
455
|
+
| 是否做 embedding | 不做 |
|
|
456
|
+
| 是否做 serve / MCP / REST | 不做 |
|
|
457
|
+
| 是否做 Graph UI | 不做 |
|
|
458
|
+
| 是否新增 backup/restore | 不做,继续依赖 Git 和迁移备份 |
|
|
459
|
+
| 是否做 telemetry | 不做 |
|
|
460
|
+
| 是否直接 public publish | 目标达到 Public Beta Readiness,是否 publish 发布前决定 |
|
|
461
|
+
| 最重要交付 | README + npm package readiness + install/real-workflow E2E |
|
|
462
|
+
| v0.5 成功定义 | 一个外部开发者或 agent 可以安装并跑通完整 memory workflow |
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
## 十三、v0.5 一句话定义
|
|
467
|
+
|
|
468
|
+
> **pmem v0.5 是把 v0.4 的 Agent Workflow Runtime 产品化成可安装、可理解、可验证、可发布的 Beta CLI。**
|
|
469
|
+
|
|
470
|
+
更工程化:
|
|
471
|
+
|
|
472
|
+
```txt
|
|
473
|
+
pmem v0.5 =
|
|
474
|
+
v0.4 workflow runtime
|
|
475
|
+
+ README / Quick Start / troubleshooting
|
|
476
|
+
+ npm package readiness
|
|
477
|
+
+ install smoke E2E
|
|
478
|
+
+ real project workflow E2E
|
|
479
|
+
+ agent instruction sync
|
|
480
|
+
+ release checklist
|
|
481
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pmem-ai",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Project Memory for AI Agents: a local CLI runtime for project context, recall, and memory updates",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"pmem": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "ts-node src/index.ts",
|
|
12
|
+
"start": "node dist/index.js",
|
|
13
|
+
"test": "node --require ts-node/register --test src/core/*.test.ts",
|
|
14
|
+
"test:e2e:install": "bash scripts/e2e-install-smoke.sh",
|
|
15
|
+
"test:e2e:workflow": "bash scripts/e2e-real-workflow.sh",
|
|
16
|
+
"test:e2e:non-git": "bash scripts/e2e-non-git-fallback.sh"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"agent",
|
|
20
|
+
"memory",
|
|
21
|
+
"project-memory",
|
|
22
|
+
"cli",
|
|
23
|
+
"ai",
|
|
24
|
+
"codex",
|
|
25
|
+
"claude",
|
|
26
|
+
"sqlite"
|
|
27
|
+
],
|
|
28
|
+
"author": "",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"type": "commonjs",
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/KkSss999/pmem.git"
|
|
34
|
+
},
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/KkSss999/pmem/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/KkSss999/pmem#readme",
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=18"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"dist/**/*.js",
|
|
44
|
+
"dist/**/*.d.ts",
|
|
45
|
+
"dist/**/*.map",
|
|
46
|
+
"!dist/**/*.test.js",
|
|
47
|
+
"!dist/**/*.test.js.map",
|
|
48
|
+
"!dist/**/*.test.d.ts",
|
|
49
|
+
"!dist/**/*.test.d.ts.map",
|
|
50
|
+
"README.md",
|
|
51
|
+
"CHANGELOG.md",
|
|
52
|
+
"LICENSE",
|
|
53
|
+
"docs/*.md"
|
|
54
|
+
],
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
57
|
+
"@types/js-yaml": "^4.0.9",
|
|
58
|
+
"@types/node": "^25.9.1",
|
|
59
|
+
"ts-node": "^10.9.2",
|
|
60
|
+
"typescript": "^6.0.3"
|
|
61
|
+
},
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"better-sqlite3": "^12.10.0",
|
|
64
|
+
"commander": "^14.0.3",
|
|
65
|
+
"js-yaml": "^4.1.1"
|
|
66
|
+
}
|
|
67
|
+
}
|