dsh-engramory-recall 0.12.0 → 0.12.1

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.
Files changed (3) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +23 -0
  3. package/package.json +2 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,21 @@
3
3
  本项目的所有重要变更都记在这里。格式参照 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),
4
4
  版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
5
5
 
6
+ ## [0.12.1] — 2026-10-15
7
+
8
+ ### 新增
9
+
10
+ - **池宽天花板尺子**(`npm run bench:ceiling`):把「候选池放宽到 N 条时,任何提供方最多能拿到几分」
11
+ 单独量出来,含按题型拆分与「每查询要发给提供方多少东西」(条数 / 片段字符数 → token 估算,离线可算)。
12
+
13
+ ### 说明
14
+
15
+ - 量出一个反直觉的事实并写进 README:**公开数据集上池宽买不到分数** —— LongMemEval-S 每题的 haystack
16
+ 只有 30~50 个 session,池内召回 top-5 就已经 98.2%、top-20 99.6%;池宽的价值在「库比窗口大得多」时
17
+ (合成 704 条 70.3% → 97.3%)。所以默认 50 是给大库留的余量,不是公共基准上的分数。
18
+ - `bench/longmemeval.mjs` 的 session→笔记映射抽到 `bench/sessions.mjs`(与尺子共用一份,避免口径漂移),
19
+ 20 题输出逐字未变。
20
+
6
21
  ## [0.12.0] — 2026-10-15
7
22
 
8
23
  ### 新增
package/README.md CHANGED
@@ -670,6 +670,28 @@ RRF 只能在池内重排,所以 hit@4 一动都不动(67.5%),坏的提
670
670
  2. **`rrf` 是安全档**:提供方不靠谱时,`trust` 会一路砸到底(倒排 1.0%),`rrf` 至少保住词面的一部分(26.0%)。拿不准就用它。
671
671
  3. **「只投一票」两种融合同分**:稀释来自提供方**自己的低名次**,不是来自「它参与了融合」。所以问题不在「要不要融合」,而在「按谁的顺序」。
672
672
 
673
+ #### 池宽在公开数据集上量不出差别(`npm run bench:ceiling`)
674
+
675
+ LongMemEval-S 500 题,每题自带的 haystack 只有 30~50 个 session(数据 `sha256_12 = d6f21ea9d60a`):
676
+
677
+ | 候选池 | 5 | 20 | 50 | 100 |
678
+ |---|---|---|---|---|
679
+ | 池内召回 | 98.2% | 99.6% | 99.8% | 99.8% |
680
+
681
+ 按题型看,唯一在 top-5 有明显缺口的是偏好题(90.0%),它在 top-20 就补满。所以这份公开卷子上
682
+ **top-5 已经够了,池宽放宽买不到分数**——它的意义在库比窗口大得多的时候(合成 704 条 70.3% → 97.3%;
683
+ 真库 66 篇 / 200 chunk 从池 5 起就是 36/36)。一句话:**池宽是给大库留的余量,不是公共基准上的分数。**
684
+
685
+ 代价(离线估算,按池 100 算,即最坏情况):
686
+
687
+ | 项 | 中位 | p90 | 最大 |
688
+ |---|---|---|---|
689
+ | 候选条数 | 27 | 41 | 48 |
690
+ | 片段字符数 | 1916 | 2921 | 3425 |
691
+
692
+ 按英文 ≈4 字符/token 粗估:一条查询约 479 token(中位)、730 token(p90)。提供方按文本缓存,
693
+ 同一篇笔记反复出现只付一次;**真延迟要在有端点时量**(`npm run embed:check` 会报一次往返耗时)。
694
+
673
695
  #### 内置参考提供方:OpenAI 兼容的 embeddings(`providers/openai-embeddings.mjs`)
674
696
 
675
697
  填两个环境变量就能试;密钥只从环境变量或一个 0600 的小文件进,**不进仓库、不进日志**:
@@ -931,6 +953,7 @@ npm run probe -- --save # 把这次结果存成基线,之后每次跑自动
931
953
  npm run bench:check # 合成基准 + 和 bench/expectations.json 对账(CI 跑的就是它)
932
954
  npm run bench:bridges # 同义表覆盖率尺子:死值、覆盖、使用面、逐键消融(--ablate / --json / --store)
933
955
  npm run bench:seam # 语义接缝的代价与天花板(四种坏提供方 + 作弊上界 + 融合模式对照)
956
+ npm run bench:ceiling # 池宽天花板:任一提供方在公开数据集上的上界 + 每查询要发多少东西
934
957
  npm run embed:check # 参考提供方自检:探一次 embeddings 接口,报维度与耗时(不打印密钥)
935
958
  npm run bench:rewrite # 宿主模型当改写提供方:真调用量代价与收益(要本机有 dsh;--offline 只重算)
936
959
  npm run bench:mcp # MCP 这一层:冷启动、每步往返、协议帧字节数
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-engramory-recall",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "Local BM25 auto-recall, fail-closed write guard, static doctor and a memory panel for the Engramory markdown store — no network, no model, no daemon.",
5
5
  "keywords": [
6
6
  "dsh",
@@ -81,6 +81,7 @@
81
81
  "bench": "node bench/run.mjs",
82
82
  "bench:check": "node bench/run.mjs --check",
83
83
  "bench:seam": "node bench/semantic-seam.mjs",
84
+ "bench:ceiling": "node bench/pool-ceiling.mjs",
84
85
  "bench:rewrite": "node bench/host-rewrite.mjs",
85
86
  "bench:bridges": "node bench/bridge-coverage.mjs",
86
87
  "bench:mcp": "node bench/mcp-overhead.mjs",