dsh-prime-memory 0.26.21 → 0.26.22
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 +8 -0
- package/dist/tools/index.js +10 -2
- package/dsh.plugin.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# 更新日志(Changelog)
|
|
2
2
|
|
|
3
|
+
## [0.26.22] — 2026-11-02
|
|
4
|
+
|
|
5
|
+
- **#27 真机通过**:用户在 desktop 上 `register(work/dsh-host)` → `list` 显示「**现有 59 条**」,与注册前自生长清单里的 `work/dsh-host(59)` 逐位一致;`?? 0` 分支也未被误伤(有绑定即显示真数)。
|
|
6
|
+
- **修掉这次验证顺带查出的口径缺陷**(`memory_room_admin` 的 `action=list`):`grownOnly` 原先用 `roomRegistry.list()`(**含 retired**)排除自生长项,而归类词表面(`room-review.ts`)用 `listActive()`。两侧口径不一致的后果是——**一个 slug 退役后,它既不在注册表活跃词表里、又被从「自生长未注册」清单排除,若它还挂着记录,那些记录的 Room 归属就在两个面上同时隐形**,且没有任何动作能把它找回来(工具面只有 `retire`,无 un-retire;恢复只能走 RPC `dsh-memory/room-admin` 的 `action=retire, active:true`,工具没暴露该参数)。现改为按 `activeSlugs` 排除,退役项回到自生长面继续可见可计数。
|
|
7
|
+
- **额度显示同步**:`注册表 N 条(上限 200)` 原先把 retired 条目也计入 N(占额度视觉位),现 N = 活跃条目数,并在存在退役项时追加「已退役 M 条(不占额度、可用面板「恢复」切回 active)」。退役条目本身仍列在明细里并标 `[source/retired]`,便于恢复。
|
|
8
|
+
- **测试**:新增 `tests/room-admin-list.test.ts` 3 例(注册项真计数 / 退役后两侧口径一致 / 零绑定仍显示 0)。**红绿已验**:把排除集退回修复前的 `registry.some(...)` 写法后 1 例转红,恢复即全绿。全量 **1901 例 / 190 文件**。
|
|
9
|
+
- **冒烟脚本去钉版**:`scripts/verify-desktop-smoke.mjs` 的版本断言从等值改为 `0.26.` 族前缀(上一版每发一次就得改脚本,是自我制造的维护债);同时清掉两个未使用变量使 lint 归零。
|
|
10
|
+
|
|
3
11
|
## [0.26.21] — 2026-11-02
|
|
4
12
|
|
|
5
13
|
- **#20 追加修复:DRSC 读面从 HTTP 改为进程内直调**。桌面宿主在**任何**注册路由之前有一道 pre-dispatch 鉴权(`isAuthenticated` 只认由 `requestAudience(Host)` 派生的签名 cookie,豁免分支仅 `GET /?token=` 与已认证的 `GET /`),而插件服务端 `fetch` 既无 cookie 也无可取用 launch token 的服务面(该字段是宿主 `BrowserAuth` 私有)。真机实测确认:基址修对后请求确实发出、参数形状正确,但仍被回 `401` —— 即上一版只解决了「打错端口」,没解决「打不通」。本版新增 `src/clients/drsc-inproc.ts`,直调 collector 导出的只读查询面(`resolveIndexDir` → `openProjectionStore` → `createQueryContext` → `search` / `sessionDetail` / `listSessions`),全程不碰 `ProjectionSync` 写侧引擎,故不会与 collector 自身的同步器抢水位、也不会多挂一个 interval;索引库为 WAL(实测同目录有 `-wal`/`-shm`),宿主持写连接时本侧只读句柄可并发读,且句柄只开一次(常驻 summaries 是内存 Map,每请求重开等于重扫全表)。
|
package/dist/tools/index.js
CHANGED
|
@@ -390,9 +390,17 @@ graphWrite) {
|
|
|
390
390
|
// 线性 find,上限 200 条注册表 × N 个 Room——语义相同、形状不同就是分叉位。
|
|
391
391
|
const countOf = mergeRoomCatalog(counts);
|
|
392
392
|
const regLines = registry.map((e) => `- ${e.slug}${e.label ? `(${e.label})` : ''} [${e.source}/${e.status}] 现有 ${countOf.get(e.slug) ?? 0} 条${e.description ? ` — ${e.description}` : ''}`);
|
|
393
|
-
|
|
393
|
+
// 口径必须跟词表一致(`room-review.ts` 用 listActive):已退役条目不再进归类词表,
|
|
394
|
+
// 那它的 slug 就应回到「自生长未注册」面。原先用全量 registry 排除,使退役后的
|
|
395
|
+
// slug 两边都不显示(带记录时那些记录在词表上隐形)——退役不可逆地捐掉可见性。
|
|
396
|
+
const activeSlugs = new Set(registry.filter((e) => e.status === 'active').map((e) => e.slug));
|
|
397
|
+
const grownOnly = counts.filter((r) => !activeSlugs.has(r.room));
|
|
398
|
+
const activeCount = activeSlugs.size;
|
|
399
|
+
const retiredCount = registry.length - activeCount;
|
|
394
400
|
return {
|
|
395
|
-
notice:
|
|
401
|
+
notice:
|
|
402
|
+
// 额度与词表同步:上限 200 算的是活跃条目,退役项不占额度(另计)。
|
|
403
|
+
`注册表 ${activeCount} 条(上限 200)${retiredCount > 0 ? `,已退役 ${retiredCount} 条(不占额度、可用面板「恢复」切回 active)` : ''},自生长未注册 ${grownOnly.length} 个。\n` +
|
|
396
404
|
(regLines.join('\n') || '(注册表为空——用 action=register 预注册)') +
|
|
397
405
|
`\n自生长未注册:${grownOnly.map((r) => `${r.room}(${r.count})`).join(", ") || "无"}`,
|
|
398
406
|
rooms: `${registry.length}+${grownOnly.length}`,
|
package/dsh.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-prime-memory",
|
|
3
3
|
"name": "dsh-prime-memory",
|
|
4
|
-
"version": "0.26.
|
|
4
|
+
"version": "0.26.22",
|
|
5
5
|
"description": {
|
|
6
6
|
"en": "Layered distilled memory plugin (L0 capture → L1 atomic memory → L2 scenes → L3 persona) with automatic recall injection before each model step.",
|
|
7
7
|
"zh": "L0~L3 分层蒸馏记忆插件:自动捕获对话、抽取原子记忆、整合场景块、蒸馏核心画像,并在模型步骤前自动召回注入。"
|