common-memory-core 0.2.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/.env.sample +3 -0
- package/CHANGELOG.md +39 -0
- package/LICENSE +21 -0
- package/README.md +120 -0
- package/SECURITY.md +48 -0
- package/dist/cli/codex/transcript-0.153.4.d.ts +20 -0
- package/dist/cli/codex/transcript-0.153.4.d.ts.map +1 -0
- package/dist/cli/codex/transcript-0.153.4.js +78 -0
- package/dist/cli/codex/transcript-0.153.4.js.map +1 -0
- package/dist/cli/codex-config.d.ts +2 -0
- package/dist/cli/codex-config.d.ts.map +1 -0
- package/dist/cli/codex-config.js +5 -0
- package/dist/cli/codex-config.js.map +1 -0
- package/dist/cli/codex-hook.d.ts +18 -0
- package/dist/cli/codex-hook.d.ts.map +1 -0
- package/dist/cli/codex-hook.js +140 -0
- package/dist/cli/codex-hook.js.map +1 -0
- package/dist/cli/codex-session.d.ts +3 -0
- package/dist/cli/codex-session.d.ts.map +1 -0
- package/dist/cli/codex-session.js +3 -0
- package/dist/cli/codex-session.js.map +1 -0
- package/dist/cli/flush-command.d.ts +6 -0
- package/dist/cli/flush-command.d.ts.map +1 -0
- package/dist/cli/flush-command.js +30 -0
- package/dist/cli/flush-command.js.map +1 -0
- package/dist/cli/host-launch.d.ts +28 -0
- package/dist/cli/host-launch.d.ts.map +1 -0
- package/dist/cli/host-launch.js +16 -0
- package/dist/cli/host-launch.js.map +1 -0
- package/dist/cli/host-process.d.ts +3 -0
- package/dist/cli/host-process.d.ts.map +1 -0
- package/dist/cli/host-process.js +35 -0
- package/dist/cli/host-process.js.map +1 -0
- package/dist/cli/host-session.d.ts +22 -0
- package/dist/cli/host-session.d.ts.map +1 -0
- package/dist/cli/host-session.js +204 -0
- package/dist/cli/host-session.js.map +1 -0
- package/dist/cli/import-command.d.ts +20 -0
- package/dist/cli/import-command.d.ts.map +1 -0
- package/dist/cli/import-command.js +98 -0
- package/dist/cli/import-command.js.map +1 -0
- package/dist/cli/interactive-process.d.ts +3 -0
- package/dist/cli/interactive-process.d.ts.map +1 -0
- package/dist/cli/interactive-process.js +15 -0
- package/dist/cli/interactive-process.js.map +1 -0
- package/dist/cli/main.d.ts +3 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +151 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/mcp-config.d.ts +16 -0
- package/dist/cli/mcp-config.d.ts.map +1 -0
- package/dist/cli/mcp-config.js +108 -0
- package/dist/cli/mcp-config.js.map +1 -0
- package/dist/cli/network-test.d.ts +4 -0
- package/dist/cli/network-test.d.ts.map +1 -0
- package/dist/cli/network-test.js +28 -0
- package/dist/cli/network-test.js.map +1 -0
- package/dist/cli/operations.d.ts +26 -0
- package/dist/cli/operations.d.ts.map +1 -0
- package/dist/cli/operations.js +55 -0
- package/dist/cli/operations.js.map +1 -0
- package/dist/cli/session-drain.d.ts +3 -0
- package/dist/cli/session-drain.d.ts.map +1 -0
- package/dist/cli/session-drain.js +34 -0
- package/dist/cli/session-drain.js.map +1 -0
- package/dist/cli/storage-paths.d.ts +4 -0
- package/dist/cli/storage-paths.d.ts.map +1 -0
- package/dist/cli/storage-paths.js +15 -0
- package/dist/cli/storage-paths.js.map +1 -0
- package/dist/cli/tui-integrations.d.ts +4 -0
- package/dist/cli/tui-integrations.d.ts.map +1 -0
- package/dist/cli/tui-integrations.js +143 -0
- package/dist/cli/tui-integrations.js.map +1 -0
- package/dist/cli/tui-prompts.d.ts +22 -0
- package/dist/cli/tui-prompts.d.ts.map +1 -0
- package/dist/cli/tui-prompts.js +64 -0
- package/dist/cli/tui-prompts.js.map +1 -0
- package/dist/cli/tui-settings.d.ts +21 -0
- package/dist/cli/tui-settings.d.ts.map +1 -0
- package/dist/cli/tui-settings.js +198 -0
- package/dist/cli/tui-settings.js.map +1 -0
- package/dist/cli/tui.d.ts +4 -0
- package/dist/cli/tui.d.ts.map +1 -0
- package/dist/cli/tui.js +292 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/cli/work-config.d.ts +24 -0
- package/dist/cli/work-config.d.ts.map +1 -0
- package/dist/cli/work-config.js +147 -0
- package/dist/cli/work-config.js.map +1 -0
- package/dist/config/config.d.ts +41 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +193 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/private-env.d.ts +8 -0
- package/dist/config/private-env.d.ts.map +1 -0
- package/dist/config/private-env.js +38 -0
- package/dist/config/private-env.js.map +1 -0
- package/dist/config/runtime.d.ts +32 -0
- package/dist/config/runtime.d.ts.map +1 -0
- package/dist/config/runtime.js +85 -0
- package/dist/config/runtime.js.map +1 -0
- package/dist/core/contracts/errors.d.ts +10 -0
- package/dist/core/contracts/errors.d.ts.map +1 -0
- package/dist/core/contracts/errors.js +23 -0
- package/dist/core/contracts/errors.js.map +1 -0
- package/dist/core/safety/external-preflight.d.ts +7 -0
- package/dist/core/safety/external-preflight.d.ts.map +1 -0
- package/dist/core/safety/external-preflight.js +47 -0
- package/dist/core/safety/external-preflight.js.map +1 -0
- package/dist/core/safety/redaction.d.ts +2 -0
- package/dist/core/safety/redaction.d.ts.map +1 -0
- package/dist/core/safety/redaction.js +4 -0
- package/dist/core/safety/redaction.js.map +1 -0
- package/dist/core/safety/rules.d.ts +6 -0
- package/dist/core/safety/rules.d.ts.map +1 -0
- package/dist/core/safety/rules.js +14 -0
- package/dist/core/safety/rules.js.map +1 -0
- package/dist/core/safety/scanner.d.ts +11 -0
- package/dist/core/safety/scanner.d.ts.map +1 -0
- package/dist/core/safety/scanner.js +18 -0
- package/dist/core/safety/scanner.js.map +1 -0
- package/dist/core/transaction/fsync.d.ts +6 -0
- package/dist/core/transaction/fsync.d.ts.map +1 -0
- package/dist/core/transaction/fsync.js +41 -0
- package/dist/core/transaction/fsync.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/ingress.d.ts +61 -0
- package/dist/mcp/ingress.d.ts.map +1 -0
- package/dist/mcp/ingress.js +134 -0
- package/dist/mcp/ingress.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +92 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/stdio.d.ts +5 -0
- package/dist/mcp/stdio.d.ts.map +1 -0
- package/dist/mcp/stdio.js +115 -0
- package/dist/mcp/stdio.js.map +1 -0
- package/dist/memory-manager/contracts/diagnostic.d.ts +14 -0
- package/dist/memory-manager/contracts/diagnostic.d.ts.map +1 -0
- package/dist/memory-manager/contracts/diagnostic.js +17 -0
- package/dist/memory-manager/contracts/diagnostic.js.map +1 -0
- package/dist/memory-manager/contracts/disclosure.d.ts +12 -0
- package/dist/memory-manager/contracts/disclosure.d.ts.map +1 -0
- package/dist/memory-manager/contracts/disclosure.js +8 -0
- package/dist/memory-manager/contracts/disclosure.js.map +1 -0
- package/dist/memory-manager/contracts/errors.d.ts +15 -0
- package/dist/memory-manager/contracts/errors.d.ts.map +1 -0
- package/dist/memory-manager/contracts/errors.js +25 -0
- package/dist/memory-manager/contracts/errors.js.map +1 -0
- package/dist/memory-manager/contracts/model-port.d.ts +38 -0
- package/dist/memory-manager/contracts/model-port.d.ts.map +1 -0
- package/dist/memory-manager/contracts/model-port.js +2 -0
- package/dist/memory-manager/contracts/model-port.js.map +1 -0
- package/dist/memory-manager/network/client.d.ts +13 -0
- package/dist/memory-manager/network/client.d.ts.map +1 -0
- package/dist/memory-manager/network/client.js +122 -0
- package/dist/memory-manager/network/client.js.map +1 -0
- package/dist/memory-manager/network/route.d.ts +31 -0
- package/dist/memory-manager/network/route.d.ts.map +1 -0
- package/dist/memory-manager/network/route.js +148 -0
- package/dist/memory-manager/network/route.js.map +1 -0
- package/dist/memory-manager/openai/abort.d.ts +4 -0
- package/dist/memory-manager/openai/abort.d.ts.map +1 -0
- package/dist/memory-manager/openai/abort.js +19 -0
- package/dist/memory-manager/openai/abort.js.map +1 -0
- package/dist/memory-manager/openai/bounded-body.d.ts +2 -0
- package/dist/memory-manager/openai/bounded-body.d.ts.map +1 -0
- package/dist/memory-manager/openai/bounded-body.js +49 -0
- package/dist/memory-manager/openai/bounded-body.js.map +1 -0
- package/dist/memory-manager/openai/openai-chat-adapter.d.ts +16 -0
- package/dist/memory-manager/openai/openai-chat-adapter.d.ts.map +1 -0
- package/dist/memory-manager/openai/openai-chat-adapter.js +51 -0
- package/dist/memory-manager/openai/openai-chat-adapter.js.map +1 -0
- package/dist/memory-manager/openai/openai-responses-adapter.d.ts +15 -0
- package/dist/memory-manager/openai/openai-responses-adapter.d.ts.map +1 -0
- package/dist/memory-manager/openai/openai-responses-adapter.js +14 -0
- package/dist/memory-manager/openai/openai-responses-adapter.js.map +1 -0
- package/dist/memory-manager/openai/options.d.ts +14 -0
- package/dist/memory-manager/openai/options.d.ts.map +1 -0
- package/dist/memory-manager/openai/options.js +29 -0
- package/dist/memory-manager/openai/options.js.map +1 -0
- package/dist/memory-manager/openai/remote-http.d.ts +33 -0
- package/dist/memory-manager/openai/remote-http.d.ts.map +1 -0
- package/dist/memory-manager/openai/remote-http.js +207 -0
- package/dist/memory-manager/openai/remote-http.js.map +1 -0
- package/dist/memory-manager/openai/response-decoder.d.ts +3 -0
- package/dist/memory-manager/openai/response-decoder.d.ts.map +1 -0
- package/dist/memory-manager/openai/response-decoder.js +57 -0
- package/dist/memory-manager/openai/response-decoder.js.map +1 -0
- package/dist/memory-manager/openai/retry.d.ts +8 -0
- package/dist/memory-manager/openai/retry.d.ts.map +1 -0
- package/dist/memory-manager/openai/retry.js +18 -0
- package/dist/memory-manager/openai/retry.js.map +1 -0
- package/dist/pi-extension/extraction-runtime.d.ts +51 -0
- package/dist/pi-extension/extraction-runtime.d.ts.map +1 -0
- package/dist/pi-extension/extraction-runtime.js +87 -0
- package/dist/pi-extension/extraction-runtime.js.map +1 -0
- package/dist/pi-extension/index.d.ts +19 -0
- package/dist/pi-extension/index.d.ts.map +1 -0
- package/dist/pi-extension/index.js +172 -0
- package/dist/pi-extension/index.js.map +1 -0
- package/dist/v2/canonical.d.ts +53 -0
- package/dist/v2/canonical.d.ts.map +1 -0
- package/dist/v2/canonical.js +321 -0
- package/dist/v2/canonical.js.map +1 -0
- package/dist/v2/contract.d.ts +34 -0
- package/dist/v2/contract.d.ts.map +1 -0
- package/dist/v2/contract.js +53 -0
- package/dist/v2/contract.js.map +1 -0
- package/dist/v2/document-import.d.ts +100 -0
- package/dist/v2/document-import.d.ts.map +1 -0
- package/dist/v2/document-import.js +259 -0
- package/dist/v2/document-import.js.map +1 -0
- package/dist/v2/errors.d.ts +6 -0
- package/dist/v2/errors.d.ts.map +1 -0
- package/dist/v2/errors.js +29 -0
- package/dist/v2/errors.js.map +1 -0
- package/dist/v2/import.d.ts +26 -0
- package/dist/v2/import.d.ts.map +1 -0
- package/dist/v2/import.js +48 -0
- package/dist/v2/import.js.map +1 -0
- package/dist/v2/lock.d.ts +3 -0
- package/dist/v2/lock.d.ts.map +1 -0
- package/dist/v2/lock.js +47 -0
- package/dist/v2/lock.js.map +1 -0
- package/dist/v2/memory-maintainer.md +38 -0
- package/dist/v2/read-guidance.d.ts +3 -0
- package/dist/v2/read-guidance.d.ts.map +1 -0
- package/dist/v2/read-guidance.js +3 -0
- package/dist/v2/read-guidance.js.map +1 -0
- package/dist/v2/reader.d.ts +25 -0
- package/dist/v2/reader.d.ts.map +1 -0
- package/dist/v2/reader.js +38 -0
- package/dist/v2/reader.js.map +1 -0
- package/dist/v2/registry.d.ts +14 -0
- package/dist/v2/registry.d.ts.map +1 -0
- package/dist/v2/registry.js +46 -0
- package/dist/v2/registry.js.map +1 -0
- package/dist/v2/runtime.d.ts +133 -0
- package/dist/v2/runtime.d.ts.map +1 -0
- package/dist/v2/runtime.js +326 -0
- package/dist/v2/runtime.js.map +1 -0
- package/dist/v2/session-drain.d.ts +14 -0
- package/dist/v2/session-drain.d.ts.map +1 -0
- package/dist/v2/session-drain.js +16 -0
- package/dist/v2/session-drain.js.map +1 -0
- package/dist/v2/session.d.ts +54 -0
- package/dist/v2/session.d.ts.map +1 -0
- package/dist/v2/session.js +158 -0
- package/dist/v2/session.js.map +1 -0
- package/dist/v2/writer.d.ts +40 -0
- package/dist/v2/writer.d.ts.map +1 -0
- package/dist/v2/writer.js +327 -0
- package/dist/v2/writer.js.map +1 -0
- package/docs/00-index.md +19 -0
- package/docs/03-target-architecture.md +49 -0
- package/docs/init-v0.1-closeout.md +152 -0
- package/docs/init-v0.1-design.md +237 -0
- package/docs/init-v0.1-verification.md +303 -0
- package/docs/outbound-network-design.md +100 -0
- package/docs/outbound-network-verification.json +300 -0
- package/docs/provider-verification.md +94 -0
- package/docs/releasing.md +138 -0
- package/docs/session-integration.md +134 -0
- package/docs/tui-workbench.md +173 -0
- package/docs/usage.md +815 -0
- package/docs/v2-ablation-results.json +12035 -0
- package/docs/v2-ablation.md +117 -0
- package/docs/v2-evaluation-repeat-results.json +7 -0
- package/docs/v2-evaluation-scripted-results.json +67 -0
- package/docs/v2-evaluation.md +35 -0
- package/docs/v2-optimization-plan.md +23 -0
- package/docs/v2-performance-baseline-runtime.js.txt +231 -0
- package/docs/v2-performance-baseline.json +338 -0
- package/docs/v2-performance-behavior-equivalence.json +17 -0
- package/docs/v2-performance-results.json +585 -0
- package/docs/v2-performance.md +88 -0
- package/docs/v2-replacement-test-map.md +14 -0
- package/docs/v2-verification.md +49 -0
- package/package.json +87 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# V2 实现性能优化
|
|
2
|
+
|
|
3
|
+
## 结果与范围
|
|
4
|
+
|
|
5
|
+
保留五种触发和全部默认参数,仅修改 `src/v2/runtime.ts` 的 SQLite 访问路径。
|
|
6
|
+
真实模型、Prompt、Markdown/回执协议、Writer、Pi 来源判断均未修改。无新依赖或正文 schema 迁移。
|
|
7
|
+
|
|
8
|
+
本机配对微基准:
|
|
9
|
+
|
|
10
|
+
| 场景 | 修改前 median(ms) | 修改后 median(ms) | 修改后 P95(ms) | 前/后耗时比 |
|
|
11
|
+
|---|---:|---:|---:|---:|
|
|
12
|
+
| 空闲检查:20 条历史 | 0.018 | 0.024 | 0.036 | 0.77× |
|
|
13
|
+
| 空闲检查:20,000 条历史 | 6.942 | 0.032 | 0.045 | 214.00× |
|
|
14
|
+
| 强制领取:6 条待处理 | 0.096 | 0.159 | 0.187 | 0.60× |
|
|
15
|
+
| 自动领取:2,000 条积压 | 10.998 | 0.207 | 0.259 | 53.19× |
|
|
16
|
+
| 首次打开旧库:20,000 条历史 | 0.304 | 11.119 | 13.143 | 0.03× |
|
|
17
|
+
| 强制领取:2,000 条积压 | 12.419 | 0.241 | 0.331 | 51.48× |
|
|
18
|
+
| 重复恢复:2 份已确认回执 | 0.321 | 0.345 | 0.568 | 0.93× |
|
|
19
|
+
| 重复恢复:500 份已确认回执 | 16.893 | 17.998 | 20.593 | 0.94× |
|
|
20
|
+
|
|
21
|
+
比例大于 1 表示加快,小于 1 表示变慢。这里的比值是**SQLite/文件系统局部操作**,
|
|
22
|
+
不是端到端模型延迟、Token 成本或线上吞吐提升。
|
|
23
|
+
|
|
24
|
+
## 修改
|
|
25
|
+
|
|
26
|
+
1. 新增 `observations(state,id)`、非空 `jobId`、活跃 job 部分索引,避免历史记录拖慢队列查询。
|
|
27
|
+
2. 已处理正文清理增加 `text IS NOT NULL`,避免反复 UPDATE 已清空正文;配合只索引尚有正文的部分索引。
|
|
28
|
+
3. EXPLAIN 发现 SQLite 原先偏好 state 索引、仍扫描全部 processed;此条 UPDATE 现在显式指定 `observations_prunable`。
|
|
29
|
+
4. claim 只解码本批容量的队首,不再把全部待处理正文复制到 JavaScript。
|
|
30
|
+
5. 数量仍对全 pending 跨 Scope 判断;必要时用 SQLite UTF-8 BLOB 字节总和判断体积。
|
|
31
|
+
6. 首尾时间仍按 Entry 入队 ID 选取,不改成时间 MIN/MAX;领取后检查剩余 pending 保留 flush 尾批。
|
|
32
|
+
|
|
33
|
+
不缓存队列计数、不跳过 lease/CAS/权限/恢复校验。永久回执读取未优化,其波动不计作收益。
|
|
34
|
+
|
|
35
|
+
## 代价与限制
|
|
36
|
+
|
|
37
|
+
- 小库空闲检查约增加 **0.005 ms**,小批领取约增加 **0.063 ms**。新增索引维护和查询有固定成本,不隐瞒这个退化。
|
|
38
|
+
- 首次打开现有 20k 历史库建索引,本机约增加 **10.8 ms**;之后重开不重复重建。
|
|
39
|
+
- 索引占用额外空间并增加写入维护;本轮未测磁盘容量增长或大规模持续写入吞吐。
|
|
40
|
+
- 500 份永久回执重复恢复仍约 18 ms,线性扫描风险未解决。为保留恢复/隐私保证,本轮没有以跳过确认回执验证换取速度。
|
|
41
|
+
- 自动领取场景满足数量触发;不代表所有“未达到阈值”的小队列路径都同样加快。
|
|
42
|
+
- 微基准样本为本地合成数据,9 个样本的 nearest-rank P95 等于最大样本,不是生产 P95 估计或统计显著性证明。
|
|
43
|
+
|
|
44
|
+
## 方法
|
|
45
|
+
|
|
46
|
+
- 修改前先构建并冻结完整 dist,随后再修改实现。基线源码摘要与完整编译树 manifest 保存在结果 JSON。
|
|
47
|
+
- 每场景 2 次 warmup、9 个正式样本;基线/候选交替顺序,使用独立临时 dataRoot。
|
|
48
|
+
- 造数不计时。空闲场景 20k processed body 已为 NULL;积压场景 2k × 4 KiB 完整 Turn,另含 20k 已完成 jobs。
|
|
49
|
+
- 领取在外层事务中回滚,从同一初始队列反复测量;每次检查准确的前 6 个 ID、完整正文及剩余队列。
|
|
50
|
+
- 除“首次打开旧库”外,构造器和建索引不计时;首次打开病例用旧实现建库,再计时新实现的第一次构造。
|
|
51
|
+
- 恢复测量 constructor 之后的重复恢复,不是冷启动。模型 stub 在被调用时直接失败,实际网络调用为 0。
|
|
52
|
+
- 环境:Node v24.16.0,linux / x64,AMD Ryzen 7 7800X3D 8-Core Processor。完整 OS、样本与摘要见 [配对结果](v2-performance-results.json)。
|
|
53
|
+
|
|
54
|
+
## 行为与验证
|
|
55
|
+
|
|
56
|
+
- 编辑实现前,新增 10 项行为回归在旧实现全部通过;2 项性能性质回归先失败(重复 NULL 更新、全量 pending 物化),实现后转绿;再增加实际 SQL 的 EXPLAIN 索引回归。
|
|
57
|
+
- `npm run lint`:typecheck、静态边界通过。
|
|
58
|
+
- `npm test`:14 文件、117 项通过。
|
|
59
|
+
- `npm run build`、真实 tarball consumer、remote contract 测试通过。
|
|
60
|
+
- **新旧实现各 720 次消融执行,原始队列轨迹与汇总逐项相同**;只允许代码摘要改变,不接受触发或尾批语义漂移;[等价证据](v2-performance-behavior-equivalence.json) 保存双边摘要。
|
|
61
|
+
- 新回归覆盖中文、emoji、NUL、孤立 surrogate、跨 Scope 全局阈值、ID 首尾时钟回拨、flush 尾批、maxTurns 极值、重试批次冻结和精确清理截止。
|
|
62
|
+
- 独立 critic 对计划及实现审查:**OKAY,无阻断项**;独立跑 4 个测试文件、30 项测试通过。
|
|
63
|
+
|
|
64
|
+
## 复现
|
|
65
|
+
|
|
66
|
+
当前实现测量:
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
npm run benchmark:v2
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
配对测量(提供冻结的旧 dist):
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
npm run benchmark:v2 -- --baseline=/path/to/old/dist --output=docs/v2-performance-results.json
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
原始基线是未提交工作树快照,不能用本仓 HEAD 代替。
|
|
79
|
+
保留的 `docs/v2-performance-baseline-runtime.js.txt` 是该次运行实际执行的旧 Runtime 模块。
|
|
80
|
+
在本轮配套 dist 上复制整棵 dist、只替换 `v2/runtime.js`,并设置外层 package `type:module` 和
|
|
81
|
+
依赖解析路径即可重建执行基线;恢复前须对照结果 JSON 确认其他执行模块摘要仍一致。
|
|
82
|
+
源码映射并不用于此微基准,替换后它们不会自动退回旧版本;不能因此声称重建了逐字节相同编译树。
|
|
83
|
+
若将来 Writer/其他模块变化,请使用完整旧快照,不混用不同版本。
|
|
84
|
+
|
|
85
|
+
本轮附加文件:优化计划、基准脚本、基线/结果 JSON、旧 Runtime 文本快照、回归测试。
|
|
86
|
+
不自动清理或测量任何真实用户数据库。
|
|
87
|
+
|
|
88
|
+
最终证据复审:独立 critic 核对了新旧 Runtime 摘要、原始 JSON、报告数值及代价披露,结论 **OKAY,无阻断项**。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# V2 regression replacement map
|
|
2
|
+
|
|
3
|
+
Old Fact/Proposal/Review serialization, FTS/Recall/ranking/context pack, governance/Undo,
|
|
4
|
+
Fact compiler/policy and old extraction scheduler tests are intentionally retired with
|
|
5
|
+
their product surfaces, not interpreted as V2 successes.
|
|
6
|
+
|
|
7
|
+
Preserved invariants are re-established under `tests/v2`: source authentication and
|
|
8
|
+
ambiguous-delivery quarantine; durable delivered observations independent of assistant
|
|
9
|
+
success; FIFO/retry/lease fencing; atomic Markdown/receipt recovery and CAS; unchanged
|
|
10
|
+
Section bytes; invalid decisions produce zero canonical pollution; full-turn limits.
|
|
11
|
+
Provider request bounds, credential protection, refusal/timeout/cancellation and local
|
|
12
|
+
configuration privacy retain their dedicated existing adapter/config tests.
|
|
13
|
+
|
|
14
|
+
Mocked maintenance responses test the contract/executor only, not model semantic quality.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# V2 交付验证 — 2026-09-05
|
|
2
|
+
|
|
3
|
+
> 历史记录:Pi/Codex 读取频率、捕获、调度和退出行为已由 [会话接入](session-integration.md) 替代。下文旧验收不证明新会话链路。
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## 改动范围
|
|
7
|
+
|
|
8
|
+
- `src/v2/`:Markdown、可恢复文件事务、统一 SQLite、混合调度、协议、Writer、Project Registry、安全错误码和 repository lock。
|
|
9
|
+
- `src/pi-extension/`:durable delivery / stable entry 绑定、来源隔离、稳定边界和生命周期处理。
|
|
10
|
+
- `src/config/`、`src/cli/`、`src/index.ts`:V2 配置、注册/status/flush/retry、Write-only 公共面。
|
|
11
|
+
- `src/memory-manager/openai/`:复用 native fetch、超时/取消/有界响应,增加精确请求字节计算。
|
|
12
|
+
- 移除旧 Fact/Proposal/Review/Recall/FTS/Undo、旧测试/fixture/schema 和失效文档。移除 yaml、ajv-formats、直接 typebox peer;不新增运行时依赖。Pi peer 锁定 0.84.4。
|
|
13
|
+
|
|
14
|
+
## 新鲜执行证据
|
|
15
|
+
|
|
16
|
+
- `npm ci`:成功;审计 0 vulnerabilities。
|
|
17
|
+
- `npm run lint`:typecheck 与 27 个源文件边界检查通过。
|
|
18
|
+
- `npm test`:12 文件,101 测试通过。
|
|
19
|
+
- `npm run build`:通过。
|
|
20
|
+
- `npm run test:consumer`:真正生成/解压 tarball,验证 typed consumer、包内 Maintainer、Writer 空队列、Pi 加载、CLI 启动;不存在旧 Fact/Recall 打包产物。
|
|
21
|
+
- `npm run test:remote-contract`:4 文件,20 离线远程适配器协议测试通过;不是 live provider 调用。
|
|
22
|
+
- `node scripts/evaluate-v2.mjs`:30 合成轨迹,每 Turn / fixed-six / Hybrid 三策略均最终状态 30/30、Scope error 0、retry 0。调用次数 210 / 60 / 60。
|
|
23
|
+
- 重复三策略评测 10 次(900 个 trajectory-policy 执行),结果见 `v2-evaluation-repeat-results.json`。
|
|
24
|
+
- `git diff --check`:通过。
|
|
25
|
+
|
|
26
|
+
故障测试包括真实子进程在事务阶段强制退出、文件成功/DB回滚恢复、双进程同库竞争、过期旧 worker、人工编辑 CAS、暂存后修改、发布 marker 前 fencing、Project 注册撤销竞态、手工改名/删除后的遗忘/no-op、Section 来源继承隔离。
|
|
27
|
+
|
|
28
|
+
## 独立审查
|
|
29
|
+
|
|
30
|
+
- `code-reviewer` 独立 lane:APPROVE,最终增量复核包含注册重验、暂存后 CAS、snapshot journal.before、发布前 lease/取消校验;另复核银行卡扫描仅排除完整 UUID、中文邻接卡号和 UUID-shaped 凭据仍被保护;0 未解决问题,独立复跑 101 tests + lint 通过。
|
|
31
|
+
- `architect` 独立 lane:WATCH,无未解决架构 BLOCK。
|
|
32
|
+
- 合并审查结论:COMMENT(有已披露观察项,不宣称无风险 APPROVE)。
|
|
33
|
+
|
|
34
|
+
## 未验证与观察项
|
|
35
|
+
|
|
36
|
+
1. **真实模型语义质量未验证。** Scripted oracle 只证明协议/执行器与调度;Token 值 `tokensMeasured:false` 不是免费或真实用量。真实 provider 评测需显式 opt-in,未自动使用凭据或产生费用。
|
|
37
|
+
2. **Pi 原始输入溯源边界。** 公共 API 无端到端原始输入 token;更早执行的扩展必须属于可信宿主,README 说明扩展排序。自动化使用真实类型与源码事件契约、fake host 驱动;未进行真人交互的 live Pi/远程模型联调。
|
|
38
|
+
3. **长期规模。** 空队列不扫描历史回执;活跃恢复仍遍历永久回执,数据规模很大时需增量协调优化。
|
|
39
|
+
4. **人工 Markdown 改动。** 标题身份失效时,保守清理该文档短期 processed evidence 缓冲与旧关联,不删除当前 Markdown 或其他文档。此行为以同一 DB 或文件回执事务恢复。
|
|
40
|
+
5. 不迁移或自动清理任何旧用户 dataRoot;Forget 不等于删除 Pi transcript、介质安全擦除或永久禁止未来重述。
|
|
41
|
+
|
|
42
|
+
## 评测稳定性修复记录
|
|
43
|
+
|
|
44
|
+
最终复跑曾发现随机 UUID 数字段被旧 payment.card 规则误报,导致 scripted
|
|
45
|
+
评测间歇失败(10 次复跑中 7 次含失败)。已增加完整 UUID 识别,仅对银行卡
|
|
46
|
+
数字规则排除整个 UUID token,其余秘密规则仍检查原文;保留原卡号匹配规则,
|
|
47
|
+
避免中文/Markdown 邻接的漏检。新增 12 项安全回归覆盖 UUID、中文卡号、
|
|
48
|
+
空格/连字符卡号、UUID 与真实卡号混合、UUID-shaped API key。最终重复结果单独保存,
|
|
49
|
+
不将早期偶然通过当作稳定性证据。
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "common-memory-core",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"description": "User-owned Markdown memory with durable maintenance, Pi integration and local stdio MCP access.",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/Mr-remon219/common-memory.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/Mr-remon219/common-memory#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/Mr-remon219/common-memory/issues"
|
|
13
|
+
},
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public",
|
|
16
|
+
"tag": "latest",
|
|
17
|
+
"registry": "https://registry.npmjs.org/"
|
|
18
|
+
},
|
|
19
|
+
"type": "module",
|
|
20
|
+
"keywords": [
|
|
21
|
+
"pi-package",
|
|
22
|
+
"memory",
|
|
23
|
+
"agent-memory"
|
|
24
|
+
],
|
|
25
|
+
"bin": {
|
|
26
|
+
"common-memory": "./dist/cli/main.js"
|
|
27
|
+
},
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": "24.x"
|
|
30
|
+
},
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"import": "./dist/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
".env.sample",
|
|
40
|
+
"README.md",
|
|
41
|
+
"docs",
|
|
42
|
+
"CHANGELOG.md",
|
|
43
|
+
"SECURITY.md",
|
|
44
|
+
"LICENSE"
|
|
45
|
+
],
|
|
46
|
+
"pi": {
|
|
47
|
+
"extensions": [
|
|
48
|
+
"./dist/pi-extension/index.js"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "node scripts/build.mjs",
|
|
53
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
54
|
+
"lint": "npm run typecheck && node scripts/check-boundaries.mjs",
|
|
55
|
+
"test": "vitest run",
|
|
56
|
+
"test:fixtures": "vitest run tests/v2",
|
|
57
|
+
"test:recovery": "vitest run tests/v2",
|
|
58
|
+
"test:consumer": "node scripts/consumer-smoke.mjs",
|
|
59
|
+
"test:published": "node scripts/consumer-smoke.mjs --registry-version 0.2.0",
|
|
60
|
+
"test:remote-contract": "vitest run tests/memory-manager",
|
|
61
|
+
"prepack": "npm run build",
|
|
62
|
+
"release:check": "node scripts/check-release.mjs",
|
|
63
|
+
"prepublishOnly": "npm run release:check && npm run verify && npm run test:consumer",
|
|
64
|
+
"verify": "node scripts/verify.mjs",
|
|
65
|
+
"evaluate:v2": "npm run build && node scripts/evaluate-v2.mjs",
|
|
66
|
+
"ablate:v2": "npm run build && node scripts/ablate-v2.mjs --output=docs/v2-ablation-results.json",
|
|
67
|
+
"benchmark:v2": "npm run build && node scripts/benchmark-v2.mjs",
|
|
68
|
+
"test:provider-smoke": "node --test tests/scripts/provider-smoke.integration.mjs"
|
|
69
|
+
},
|
|
70
|
+
"dependencies": {
|
|
71
|
+
"@clack/prompts": "^1.7.0",
|
|
72
|
+
"@modelcontextprotocol/server": "2.0.0",
|
|
73
|
+
"ajv": "^8.17.1",
|
|
74
|
+
"typebox": "1.3.7",
|
|
75
|
+
"undici": "8.10.2",
|
|
76
|
+
"zod": "4.3.6"
|
|
77
|
+
},
|
|
78
|
+
"peerDependencies": {
|
|
79
|
+
"@earendil-works/pi-coding-agent": "0.84.4"
|
|
80
|
+
},
|
|
81
|
+
"devDependencies": {
|
|
82
|
+
"@modelcontextprotocol/client": "2.0.0",
|
|
83
|
+
"@types/node": "^24.10.1",
|
|
84
|
+
"typescript": "^5.9.3",
|
|
85
|
+
"vitest": "^4.0.18"
|
|
86
|
+
}
|
|
87
|
+
}
|