dsh-engramory-recall 0.4.0 → 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 +48 -0
- package/README.md +352 -274
- package/bm25.js +50 -3
- package/guard.js +1 -1
- package/index.js +139 -1
- package/llm.js +466 -0
- package/package.json +7 -2
- package/store.js +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,54 @@
|
|
|
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.5.0] — 2026-10-15
|
|
7
|
+
|
|
8
|
+
### 新增
|
|
9
|
+
|
|
10
|
+
- **可选的语义增强**(`llm.js`,466 行,默认关闭):`semanticConflicts` 注册
|
|
11
|
+
`engramory_conflicts` 工具(让宿主模型找出互相矛盾的笔记对),`semanticSummary` 注册
|
|
12
|
+
`engramory_summarize`(把一篇长笔记压成一段话)。两个开关默认 false,关着时**连工具都不注册**;
|
|
13
|
+
开着时也只在工具被调用那一刻 `await import('./llm.js')`,静态依赖图里没有它 ——
|
|
14
|
+
自动召回、面板、体检、写入闸门在任何情况下都不会顺带发模型请求。
|
|
15
|
+
模块零 import(不引宿主包,实测本机 profile 里的 `@deepseek-ai/dsh-llm` 会解析到另一个
|
|
16
|
+
应用的旧副本 0.1.6-alpha.1,而宿主自带 0.2.0-rc.2),消息用普通对象,文本自己从
|
|
17
|
+
`text-delta` 累加。失败一律带 code 上抛;给体检用的那条路永不抛,降级成一条
|
|
18
|
+
`semantic-unavailable`。模型编造的文件名一律丢弃并报出丢弃数。
|
|
19
|
+
- **接线测试**(`test/llm-wiring.test.mjs`,6 例):钉住「默认只注册一个工具」
|
|
20
|
+
「`index.js` 不许静态 import `llm.js`」「开关打开后模型指认能变成 findings、编造的文件名被丢弃」
|
|
21
|
+
「宿主没有 LLM 服务时降级成 warn 而不抛」。
|
|
22
|
+
- **合成召回基准**(`bench/`,只在仓库里,不随 npm 包发布):224 篇程序生成的笔记、
|
|
23
|
+
683 条查询、固定随机种子,查询按「口语改写 / 关键词 / 逐字 / 桥」四类分开记分,
|
|
24
|
+
并带消融与参数扫描(`node bench/run.mjs`)。它的用途是让「每个机制值多少」可复算,
|
|
25
|
+
而不是只在一份私有库上量。当前总分 hit@1 49.5%,桥组 100%。
|
|
26
|
+
|
|
27
|
+
### 修复
|
|
28
|
+
|
|
29
|
+
- **桥被查询自己的字面碎片压住**:查询命中同义键时,该键自身的字面碎片此前按满权重计分,
|
|
30
|
+
而桥到的技术词只算 0.5,于是「崩了」里的「了」在别的笔记里到处都是,
|
|
31
|
+
真正靠同义桥才连上的笔记被挤下去。现在命中同义键时,桥到的词按 `BRIDGE_WEIGHT = 1`
|
|
32
|
+
计入、该键自身的碎片降到 `BRIDGED_FRAGMENT_WEIGHT = 0.5`。
|
|
33
|
+
合成基准的桥组(查询里的词在目标笔记里一个字都没有)从 27.3% 升到 100%。
|
|
34
|
+
代价是总分少 1 个点(50.5% → 49.5%),因为合成语料里大多数查询本来就有字面落点 ——
|
|
35
|
+
这个取舍写在 README 的消融表里,包括「不这么做能多拿 0.5 个点但桥组掉到 90.9%」那条。
|
|
36
|
+
试过的另一条路(直接把同义键的字面碎片剔掉)打红了真实存在的测试:查询 `代理节点与部署`
|
|
37
|
+
里的 `代理`、`部署` 既是同义键也是笔记正文的原词,剔掉等于把真证据扔了。
|
|
38
|
+
所以是降权而不是剔除。
|
|
39
|
+
|
|
40
|
+
### 文档
|
|
41
|
+
|
|
42
|
+
- README 重写:去掉真实记忆库的文件名、路径、篇数与带日期的私人事故,改用中性示例;
|
|
43
|
+
补「召回质量:两把可复算的尺子」与「跟同类插件对照」两节,后者如实写明
|
|
44
|
+
**哪些能力不是本插件独有的**(零模型调用、中文词法检索各有四家同类在做)与
|
|
45
|
+
五条短板,避免把「我没读到」写成「别人没有」。
|
|
46
|
+
|
|
47
|
+
## [0.4.1] — 2026-10-15
|
|
48
|
+
|
|
49
|
+
### 变更
|
|
50
|
+
|
|
51
|
+
- `index.js` 的注释里去掉一处个人用户名 —— 发布包里唯一带私人痕迹的地方。
|
|
52
|
+
**没有任何行为变化**,纯粹是让别人打开源码时不看见作者的本机名。
|
|
53
|
+
|
|
6
54
|
## [0.4.0] — 2026-10-15
|
|
7
55
|
|
|
8
56
|
**本插件从此是一个完整的记忆系统 —— 不再依赖 `dsh-engramory`。**
|