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,270 @@
|
|
|
1
|
+
# v0.2 前置路线图
|
|
2
|
+
|
|
3
|
+
本文档定义 v0.2 的目标架构、命令优先级和实现顺序。设计依据来自 `v0.2 pre-design.md`,不与 `Voorlopige projekidee.md` 中的长期愿景冲突。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 一、v0.2 主题
|
|
8
|
+
|
|
9
|
+
> **可信地长期使用** — 冷启动不空、并发不丢、卡片不乱、版本可迁、记忆可持续。
|
|
10
|
+
|
|
11
|
+
v0.1 证明了"能记"。v0.2 要证明"值得长期记"。
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 二、v0.2 目录结构
|
|
16
|
+
|
|
17
|
+
```txt
|
|
18
|
+
.pmem/
|
|
19
|
+
manifest.yml
|
|
20
|
+
|
|
21
|
+
index.md
|
|
22
|
+
state.md
|
|
23
|
+
next.md
|
|
24
|
+
|
|
25
|
+
modules/
|
|
26
|
+
features/
|
|
27
|
+
decisions/
|
|
28
|
+
tasks/
|
|
29
|
+
traces/
|
|
30
|
+
risks/
|
|
31
|
+
summaries/
|
|
32
|
+
|
|
33
|
+
candidates/ # 新增:冷启动扫描候选项
|
|
34
|
+
modules.generated.md
|
|
35
|
+
|
|
36
|
+
indexes/
|
|
37
|
+
graph.json
|
|
38
|
+
bm25.json
|
|
39
|
+
card_hashes.json # 新增:乐观锁快照
|
|
40
|
+
|
|
41
|
+
skills/
|
|
42
|
+
recall.md
|
|
43
|
+
update.md
|
|
44
|
+
distill.md # 新增
|
|
45
|
+
|
|
46
|
+
integrations/
|
|
47
|
+
claude-code/
|
|
48
|
+
cursor/
|
|
49
|
+
codex/
|
|
50
|
+
|
|
51
|
+
backups/ # 新增:迁移前自动备份
|
|
52
|
+
migrations/ # 新增:项目自定义迁移(预留)
|
|
53
|
+
|
|
54
|
+
AGENTS.md
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**变化点:**
|
|
58
|
+
- 新增 `risks/` — 风险卡片目录
|
|
59
|
+
- 新增 `candidates/` — 冷启动扫描产物,不直接进入 `modules/`
|
|
60
|
+
- 新增 `indexes/card_hashes.json` — 乐观锁快照
|
|
61
|
+
- 新增 `backups/`、`migrations/` — 迁移基础设施
|
|
62
|
+
- 新增 `skills/distill.md` — 蒸馏操作手册
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 三、v0.2 manifest 目标形态
|
|
67
|
+
|
|
68
|
+
```yml
|
|
69
|
+
pmem:
|
|
70
|
+
schema_version: "0.2"
|
|
71
|
+
protocol_version: "0.2"
|
|
72
|
+
created_by: "0.2.0"
|
|
73
|
+
last_migrated_by: null
|
|
74
|
+
|
|
75
|
+
project:
|
|
76
|
+
name: ""
|
|
77
|
+
language: "zh-CN"
|
|
78
|
+
status: "active"
|
|
79
|
+
|
|
80
|
+
memory_status:
|
|
81
|
+
completeness: "incomplete" # incomplete | partial | usable | mature
|
|
82
|
+
initialized_mode: "guided" # minimal | guided | from_manifest | imported
|
|
83
|
+
dirty: false
|
|
84
|
+
dirty_since: null
|
|
85
|
+
dirty_reason: null
|
|
86
|
+
|
|
87
|
+
source_of_truth:
|
|
88
|
+
type: markdown_cards
|
|
89
|
+
card_globs:
|
|
90
|
+
- ".pmem/modules/**/*.md"
|
|
91
|
+
- ".pmem/features/**/*.md"
|
|
92
|
+
- ".pmem/decisions/**/*.md"
|
|
93
|
+
- ".pmem/tasks/**/*.md"
|
|
94
|
+
- ".pmem/traces/**/*.md"
|
|
95
|
+
- ".pmem/risks/**/*.md"
|
|
96
|
+
|
|
97
|
+
indexes:
|
|
98
|
+
path: ".pmem/indexes"
|
|
99
|
+
generated: true
|
|
100
|
+
graph:
|
|
101
|
+
mode: single
|
|
102
|
+
path: ".pmem/indexes/graph.json"
|
|
103
|
+
keyword:
|
|
104
|
+
mode: bm25
|
|
105
|
+
path: ".pmem/indexes/bm25.json"
|
|
106
|
+
hashes:
|
|
107
|
+
path: ".pmem/indexes/card_hashes.json"
|
|
108
|
+
|
|
109
|
+
concurrency:
|
|
110
|
+
lock: file
|
|
111
|
+
lock_path: ".pmem/.lock"
|
|
112
|
+
timeout: "5s"
|
|
113
|
+
stale_after: "60s"
|
|
114
|
+
on_timeout: "abort"
|
|
115
|
+
optimistic_lock: true
|
|
116
|
+
atomic_write: true
|
|
117
|
+
|
|
118
|
+
auto_update:
|
|
119
|
+
enabled: true
|
|
120
|
+
on_code_change: mark_dirty
|
|
121
|
+
on_doc_change: mark_dirty
|
|
122
|
+
on_memory_change: rebuild_indexes
|
|
123
|
+
on_session_end: prompt
|
|
124
|
+
min_trace_interval: "30m"
|
|
125
|
+
max_auto_traces_per_day: 5
|
|
126
|
+
trace_policy:
|
|
127
|
+
require_meaningful_change: true
|
|
128
|
+
require_summary: true
|
|
129
|
+
require_related_node: true
|
|
130
|
+
|
|
131
|
+
card_policy:
|
|
132
|
+
id_pattern: "^(project|module|feature|task|decision|trace|risk|assumption|resource|integration)\\.[a-z0-9._-]+$"
|
|
133
|
+
max_tokens:
|
|
134
|
+
module: 1200
|
|
135
|
+
feature: 1000
|
|
136
|
+
decision: 800
|
|
137
|
+
task: 600
|
|
138
|
+
trace: 1000
|
|
139
|
+
max_sections:
|
|
140
|
+
module: 8
|
|
141
|
+
feature: 8
|
|
142
|
+
decision: 6
|
|
143
|
+
task: 6
|
|
144
|
+
warn_when_related_count_gt: 12
|
|
145
|
+
|
|
146
|
+
distill:
|
|
147
|
+
enabled: true
|
|
148
|
+
cadence: weekly
|
|
149
|
+
max_undistilled_traces: 20
|
|
150
|
+
require_confirmation: true
|
|
151
|
+
suggest_card_splits: true
|
|
152
|
+
|
|
153
|
+
freshness:
|
|
154
|
+
default_ttl: "14d"
|
|
155
|
+
stale_on_related_code_change: true
|
|
156
|
+
require_last_verified: true
|
|
157
|
+
|
|
158
|
+
integrations:
|
|
159
|
+
active: []
|
|
160
|
+
compatibility: {}
|
|
161
|
+
|
|
162
|
+
migrations:
|
|
163
|
+
applied: []
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 四、命令优先级
|
|
169
|
+
|
|
170
|
+
### P0 — 必须完成(工程底座)
|
|
171
|
+
|
|
172
|
+
| 命令 | 说明 |
|
|
173
|
+
|------|------|
|
|
174
|
+
| `pmem init --guided` | 交互式冷启动,v0.2 核心功能 |
|
|
175
|
+
| `pmem init` | 增强:生成 candidates、标记 memory_incomplete |
|
|
176
|
+
| `pmem verify` | 增强:检查 schema_version、card_policy 违规、card 过大 |
|
|
177
|
+
| `pmem rebuild` | 增强:生成 card_hashes.json、支持乐观锁快照 |
|
|
178
|
+
| `pmem migrate --dry-run` | 预览迁移变更 |
|
|
179
|
+
| `pmem migrate --to 0.2` | 执行迁移(带自动备份) |
|
|
180
|
+
| `pmem mark-dirty` | 增强:更新 memory_status.dirty |
|
|
181
|
+
|
|
182
|
+
### P1 — 应该完成(长期可用性)
|
|
183
|
+
|
|
184
|
+
| 命令 | 说明 |
|
|
185
|
+
|------|------|
|
|
186
|
+
| `pmem distill` | trace → card 蒸馏(建议模式,需确认) |
|
|
187
|
+
| `pmem distill --suggest-splits` | 建议拆分过大卡片 |
|
|
188
|
+
| `pmem lock status` | 查看锁状态 |
|
|
189
|
+
| `pmem update --auto --mode=suggest` | 增强:冲突检测、乐观锁检查 |
|
|
190
|
+
| `pmem update --confirm` | 增强:atomic write、锁保护 |
|
|
191
|
+
|
|
192
|
+
### P2 — 可延后
|
|
193
|
+
|
|
194
|
+
| 命令 | 说明 |
|
|
195
|
+
|------|------|
|
|
196
|
+
| `pmem split --interactive` | 交互式拆分卡片 |
|
|
197
|
+
| `pmem update --merge` | section-level 安全合并 |
|
|
198
|
+
| `pmem init --from <file>` | 声明式初始化 |
|
|
199
|
+
| `pmem bootstrap-scan --deep` | 深度学习项目结构 |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 五、实现顺序
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
Phase 1: 类型与 manifest 升级
|
|
207
|
+
├── 新增 v0.2 类型(CardPolicy, ConcurrencyConfig, MemoryStatus, MigrationRecord 等)
|
|
208
|
+
├── 升级 Manifest 类型
|
|
209
|
+
├── 升级 manifest 序列化/反序列化
|
|
210
|
+
└── 更新默认 manifest 模板
|
|
211
|
+
|
|
212
|
+
Phase 2: 迁移系统
|
|
213
|
+
├── pmem migrate --dry-run
|
|
214
|
+
├── pmem migrate --to 0.2(0.1→0.2 迁移规则)
|
|
215
|
+
├── 自动备份(.pmem/backups/)
|
|
216
|
+
└── pmem verify 版本检查
|
|
217
|
+
|
|
218
|
+
Phase 3: 并发保护
|
|
219
|
+
├── file lock(.pmem/.lock)
|
|
220
|
+
├── atomic write(.tmp → fsync → rename)
|
|
221
|
+
├── card_hashes.json 乐观锁
|
|
222
|
+
├── 冲突检测与报告
|
|
223
|
+
└── pmem lock status
|
|
224
|
+
|
|
225
|
+
Phase 4: 冷启动
|
|
226
|
+
├── pmem init --guided(交互式问答)
|
|
227
|
+
├── pmem init 增强(扫描、candidates/、memory_incomplete)
|
|
228
|
+
├── 降级 recall 输出
|
|
229
|
+
└── pmem init --from <file>(P2,可延后)
|
|
230
|
+
|
|
231
|
+
Phase 5: 卡片治理
|
|
232
|
+
├── card_policy 校验(ID 命名、大小阈值)
|
|
233
|
+
├── pmem verify 增强(card_policy 违规检测)
|
|
234
|
+
├── pmem distill(trace → card 蒸馏建议)
|
|
235
|
+
└── pmem distill --suggest-splits
|
|
236
|
+
|
|
237
|
+
Phase 6: 收尾
|
|
238
|
+
├── skills/distill.md
|
|
239
|
+
├── .pmem/integrations/ 模板更新
|
|
240
|
+
├── 端到端测试
|
|
241
|
+
└── 文档更新
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## 六、从 v0.1 到 v0.2 的关键架构变化
|
|
247
|
+
|
|
248
|
+
| 方面 | v0.1 | v0.2 |
|
|
249
|
+
|------|------|------|
|
|
250
|
+
| 主数据类型 | `CardFrontmatter` 8 字段 | 新增 `schema_version`, `version`, `content_hash` |
|
|
251
|
+
| 并发 | 无保护 | 文件锁 + 乐观锁 + 原子写 |
|
|
252
|
+
| init | 空骨架 | 三种模式 + candidates + memory_incomplete |
|
|
253
|
+
| verify | index 一致性 | + schema 版本 + card_policy 违规 + 过大卡片 |
|
|
254
|
+
| manifest | 无版本标识 | `pmem.schema_version` + `migrations.applied` |
|
|
255
|
+
| rebuild | graph.json 单一索引 | + card_hashes.json |
|
|
256
|
+
| update | 直接写入 | atomic write + 冲突检测 |
|
|
257
|
+
| 卡片粒度 | 无约束 | card_policy 强制校验 |
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## 七、不在此版本的内容
|
|
262
|
+
|
|
263
|
+
- embeddings / semantic search → v0.3
|
|
264
|
+
- SQLite 图索引 → v0.3
|
|
265
|
+
- `pmem serve` HTTP API / MCP Server → v0.3
|
|
266
|
+
- graph 分片存储 → v0.3
|
|
267
|
+
- 增量 rebuild → v0.3
|
|
268
|
+
- 记忆质量评分 → v0.3
|
|
269
|
+
- 自动拆分卡片 → v0.3
|
|
270
|
+
- section-level merge → v0.2 P2(可延后)
|