dsh-engramory-recall 0.5.0 → 0.5.2
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 +27 -0
- package/README.md +23 -7
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
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.2] — 2026-10-15
|
|
7
|
+
|
|
8
|
+
### 文档
|
|
9
|
+
|
|
10
|
+
- README 加一节「不用信这段话,两分钟自己验一遍」:把写入闸门的四条实地探针(索引超限、库外同名文件、文件名不合规、含凭据)连预期原话和实测结论一起写进去。唯一卖点值得一个能当场复现的验法。
|
|
11
|
+
|
|
12
|
+
## [0.5.1] — 2026-10-15
|
|
13
|
+
|
|
14
|
+
### 修复
|
|
15
|
+
|
|
16
|
+
- **接线自检脚本重写成真的能红的那种**(`scripts/check-recall-wiring.mjs`)。
|
|
17
|
+
旧脚本还在检查 `dsh-engramory` 这个上游插件 —— 它的功能 0.4.0 就并进来了,
|
|
18
|
+
于是这个脚本从那时起必然失败:一道永远报错的门等于没有门。新脚本盯的是本插件的五种
|
|
19
|
+
**静默失效**:配置键打错字(宿主忽略未知键 ⇒ 退回空 `storePath` ⇒ 一个 token 都不再注入)、
|
|
20
|
+
库路径指空、profile 里跑的不是你正在改的那份、`files` 白名单漏文件、
|
|
21
|
+
这一行被 `enabled: false` 关掉;另加 `node --check` 语法门(客户端 bundle 写坏时,
|
|
22
|
+
宿主会静默丢掉整个客户端半侧)。它自己也有 6 例测试(`test/wiring-check.test.mjs`):
|
|
23
|
+
故意把配置改坏,断言它**真的以退出码 1 结束** —— 门坏了比没门更糟。
|
|
24
|
+
- 索引上限的数值不再靠文档转述:自检脚本直接 `import` `index-guard.js` 的常量来比余量。
|
|
25
|
+
|
|
26
|
+
### 文档
|
|
27
|
+
|
|
28
|
+
- 首屏那句「零模型调用」改成**默认零模型调用**,并注明只有显式开启可选语义增强才会走宿主模型 ——
|
|
29
|
+
0.5.0 加了 `llm.js` 之后,原来那句话在字面上已经不准确了。
|
|
30
|
+
- 删掉 README 里对 `verify-panel.mjs` 的引用:那个文件早已不在仓库里;它承诺的
|
|
31
|
+
「加载客户端 bundle」这部分,现在由 `npm run check` 的语法门真实执行。
|
|
32
|
+
|
|
6
33
|
## [0.5.0] — 2026-10-15
|
|
7
34
|
|
|
8
35
|
### 新增
|
package/README.md
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
3. **自动归档**:把追加式的「第 N 批」章节整段搬进 `<笔记>-history.md`,主文件只留结论与现状;
|
|
8
8
|
4. **可观测性**:GUI 里一个「记忆」标签页,看得到库里有什么、这轮召回了什么、写得干不干净。
|
|
9
9
|
|
|
10
|
-
全部用 `node:`
|
|
10
|
+
全部用 `node:` 内置模块实现:零第三方依赖、零网络、**默认零模型调用**、零常驻进程
|
|
11
|
+
(只有你显式开启可选的语义增强时,才会走宿主的模型服务)。
|
|
11
12
|
|
|
12
13
|
## 底线
|
|
13
14
|
|
|
@@ -244,6 +245,21 @@
|
|
|
244
245
|
**边界**:`guard` 只拦 `write` / `edit` 工具调用,`bash` 重定向它看不见。它是正路守卫,
|
|
245
246
|
不是沙箱;兜底靠体检器定时扫(真实抓到过两篇绕过闸门的裸 markdown)。
|
|
246
247
|
|
|
248
|
+
#### 不用信这段话,两分钟自己验一遍
|
|
249
|
+
|
|
250
|
+
闸门跑在宿主进程里,验法就是在你的 agent 会话里让它做下面四件事 —— 全部走普通的 `write` / `edit` 工具,不需要装任何东西:
|
|
251
|
+
|
|
252
|
+
| 让它做 | 你会看到 |
|
|
253
|
+
|---|---|
|
|
254
|
+
| 往 `MEMORY.md` 追加 130 行(凑到 203 行) | 拒绝:**「这次写入会把索引 MEMORY.md 顶过上限(203 行 > 200)」** |
|
|
255
|
+
| 在记忆库外(比如项目目录里)写一份同名、同样 203 行的 `MEMORY.md` | 放行(闸门只认配置的那一个库) |
|
|
256
|
+
| 往库里写 `bad-name.md` | 拒绝:**「文件名不合规。必须是 \<user\|feedback\|project\|reference\>-\<小写slug\>.md」** |
|
|
257
|
+
| 写一篇带 `api_key: sk-…` 的笔记 | 拒绝:**「疑似含真实凭据(OpenAI 风格密钥)」** |
|
|
258
|
+
|
|
259
|
+
作者实测(0.5.1 / 2026-10-15 / 库 63 篇、索引 73 行):四条全中,两次被拒的写入**磁盘上零字节变化** —— 被拒后索引与操作前逐字一致。
|
|
260
|
+
|
|
261
|
+
这就是它跟别家最本质的一处不同:别人的记忆预算卡在**注入**上(超了就少喂几段给模型),这里卡在**写入**上 —— 索引文件本身长不到超限,所以「超限的部分静默不再被召回」在这个库里不会发生。
|
|
262
|
+
|
|
247
263
|
### 体检器(`doctor.js`)
|
|
248
264
|
|
|
249
265
|
纯静态、只报告不动手。12 项检查:库不可读、索引指向不存在的文件、孤儿笔记、索引重复、
|
|
@@ -486,7 +502,7 @@ dsh plugin --profile <profile> remove dsh-engramory-recall
|
|
|
486
502
|
|
|
487
503
|
```bash
|
|
488
504
|
npm test # 分词 / BM25 / 切桶 / 门控 / 闸门 / 索引闸门 / 技能注册 / 体检 / 审计 / 沉淀提醒 / 归档 / 打包 / 路由
|
|
489
|
-
npm run check #
|
|
505
|
+
npm run check # 接线自检:配置键认不认、库路径对不对、装的是哪一份、包清单漏没漏文件
|
|
490
506
|
npm run probe # 召回质量探针:3 组 query + 三道对照,跑在真实记忆库上
|
|
491
507
|
npm run probe -- --save # 把这次结果存成基线,之后每次跑自动比对
|
|
492
508
|
node bench/run.mjs # 合成基准(含消融与参数扫描)
|
|
@@ -498,11 +514,11 @@ node bench/run.mjs # 合成基准(含消融与参数扫描)
|
|
|
498
514
|
这个检查已经抓到过两次真事故(漏 `audit.js`、漏 `archive.js`),两次的后果都是
|
|
499
515
|
别人装上一装就 `ERR_MODULE_NOT_FOUND`、整个插件加载失败。
|
|
500
516
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
517
|
+
`npm run check` 覆盖的五种**静默失效**(不报错、只是从此不干活):配置键打错字、
|
|
518
|
+
库路径指空、profile 里跑的不是你改的那份、`files` 白名单漏文件、这一行被 `enabled: false` 关掉。
|
|
519
|
+
它顺带跑一遍 `node --check` 校验客户端 bundle 的语法(面板写坏了不会连累宿主加载)。
|
|
520
|
+
唯一做不了的是活体守卫测试:守卫只拦 `write`/`edit` 工具调用,脚本写盘会绕过去,
|
|
521
|
+
所以脚本最后打印的是要由 agent 亲手执行的两个方向探针。
|
|
506
522
|
|
|
507
523
|
## 集百家之长
|
|
508
524
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-engramory-recall",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
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",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
"scripts": {
|
|
72
72
|
"test": "node --test test/*.test.mjs",
|
|
73
|
-
"check": "node scripts/check-
|
|
73
|
+
"check": "node scripts/check-recall-wiring.mjs",
|
|
74
74
|
"probe": "node scripts/recall-probe.mjs"
|
|
75
75
|
}
|
|
76
76
|
}
|