dsh-layered-memory 0.8.4 → 0.8.6

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 (52) hide show
  1. package/README.en.md +43 -13
  2. package/README.md +28 -13
  3. package/assets/img/ui-dark.jpg +0 -0
  4. package/assets/img/ui-light.jpg +0 -0
  5. package/assets/readme/bench-dialog.svg +49 -55
  6. package/dist/bench-control.d.ts +35 -0
  7. package/dist/bench-control.js +16 -0
  8. package/dist/client.js +173 -0
  9. package/dist/config.d.ts +12 -0
  10. package/dist/config.js +4 -0
  11. package/dist/embedding-worker.cjs +176 -0
  12. package/dist/hooks/recall.d.ts +28 -1
  13. package/dist/hooks/recall.js +72 -13
  14. package/dist/index.d.ts +6 -0
  15. package/dist/index.js +18 -3
  16. package/dist/llm-usage.d.ts +27 -0
  17. package/dist/llm-usage.js +39 -0
  18. package/dist/llm.d.ts +3 -0
  19. package/dist/llm.js +6 -0
  20. package/dist/pipeline/l1.js +4 -2
  21. package/dist/pipeline/l2.js +1 -0
  22. package/dist/pipeline/l3.js +1 -0
  23. package/dist/pipeline/runner.d.ts +21 -0
  24. package/dist/pipeline/runner.js +83 -4
  25. package/dist/pipeline/trigger.d.ts +2 -0
  26. package/dist/pipeline/trigger.js +11 -0
  27. package/dist/prompts/l1-extraction.d.ts +7 -1
  28. package/dist/prompts/l1-extraction.js +12 -3
  29. package/dist/stats.d.ts +27 -1
  30. package/dist/stats.js +37 -2
  31. package/dist/store/embedding-source.d.ts +2 -1
  32. package/dist/store/embedding-source.js +7 -2
  33. package/dist/store/embedding.d.ts +2 -1
  34. package/dist/store/l0.d.ts +2 -0
  35. package/dist/store/l0.js +14 -4
  36. package/dist/store/l1.d.ts +11 -1
  37. package/dist/store/l1.js +26 -6
  38. package/dist/store/local-embedding.d.ts +69 -46
  39. package/dist/store/local-embedding.js +179 -75
  40. package/dist/store/recall-dedupe.d.ts +26 -0
  41. package/dist/store/recall-dedupe.js +138 -0
  42. package/dist/store/runtime-installer.d.ts +0 -2
  43. package/dist/store/runtime-installer.js +0 -6
  44. package/dist/store/search-utils.d.ts +17 -0
  45. package/dist/store/search-utils.js +29 -0
  46. package/dist/store/sqlite.d.ts +2 -0
  47. package/dist/store/sqlite.js +37 -9
  48. package/dist/types.d.ts +8 -0
  49. package/dist/types.js +8 -0
  50. package/dist/util/recall-budget.d.ts +2 -2
  51. package/dist/util/recall-budget.js +2 -2
  52. package/package.json +1 -1
package/dist/types.d.ts CHANGED
@@ -43,7 +43,15 @@ export interface ExtractedMemory {
43
43
  metadata: Record<string, unknown>;
44
44
  /** 所属情境名(L1 抽取的情境切分结果)。 */
45
45
  scene_name: string;
46
+ /** auto 档抽取输出的显式族判定(chat|work;纯档 Prompt 无此字段)。
47
+ * 语境归族、形状不归族——修复"个人计划性事实被 work_* 形状吸走"的族错标
48
+ * (2026-08-23 lifecycle 赛道实测发现)。 */
49
+ family?: string;
46
50
  }
51
+ /** 抽取输出的 family 字段归一:只认 chat|work,其余(缺省/非法值)交由调用方回落。 */
52
+ export declare function normExtractedFamily(raw: unknown): MemoryFamily | undefined;
53
+ /** 记录族三级兜底链:会话档位强制(纯档)→ 抽取显式判定(auto)→ type 前缀推导(旧输出兜底)。 */
54
+ export declare function resolveRecordFamily(forced: MemoryFamily | undefined, extracted: unknown, type: string): MemoryFamily;
47
55
  /** L1 持久化记录(字段对齐 MemoryCore;version/source_message_ids/metadata 由写入侧补默认)。 */
48
56
  export interface MemoryRecord {
49
57
  id: string;
package/dist/types.js CHANGED
@@ -5,3 +5,11 @@
5
5
  export function familyForType(type) {
6
6
  return type.startsWith('work') ? 'work' : 'chat';
7
7
  }
8
+ /** 抽取输出的 family 字段归一:只认 chat|work,其余(缺省/非法值)交由调用方回落。 */
9
+ export function normExtractedFamily(raw) {
10
+ return raw === 'chat' || raw === 'work' ? raw : undefined;
11
+ }
12
+ /** 记录族三级兜底链:会话档位强制(纯档)→ 抽取显式判定(auto)→ type 前缀推导(旧输出兜底)。 */
13
+ export function resolveRecordFamily(forced, extracted, type) {
14
+ return forced ?? normExtractedFamily(extracted) ?? familyForType(type);
15
+ }
@@ -27,6 +27,6 @@ export declare function applyRecallBudget(lines: string[], limits: RecallBudgetL
27
27
  * resolve 为空结果(空数组)与超时(undefined)语义不同,调用方据此区分日志。
28
28
  */
29
29
  export declare function raceRecallTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T | undefined>;
30
- /** 召回路径远程嵌入 fetch 的内层钳制(固定值):给 FTS 降级留出总预算内的时间。
31
- * 仅作用于远程 HTTP 调用;本地推理不受钳制(进程内 CPU 推理无挂起风险)。 */
30
+ /** 召回路径嵌入调用的内层钳制(固定值):给 FTS 降级留出总预算内的时间。
31
+ * 远程作用于 HTTP fetch;本地作用于 worker 代理的等待(race 放弃、迟到回复丢弃)。 */
32
32
  export declare const RECALL_EMBED_CAP_MS = 3000;
@@ -80,6 +80,6 @@ export async function raceRecallTimeout(promise, timeoutMs) {
80
80
  clearTimeout(timer);
81
81
  }
82
82
  }
83
- /** 召回路径远程嵌入 fetch 的内层钳制(固定值):给 FTS 降级留出总预算内的时间。
84
- * 仅作用于远程 HTTP 调用;本地推理不受钳制(进程内 CPU 推理无挂起风险)。 */
83
+ /** 召回路径嵌入调用的内层钳制(固定值):给 FTS 降级留出总预算内的时间。
84
+ * 远程作用于 HTTP fetch;本地作用于 worker 代理的等待(race 放弃、迟到回复丢弃)。 */
85
85
  export const RECALL_EMBED_CAP_MS = 3_000;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-layered-memory",
3
- "version": "0.8.4",
3
+ "version": "0.8.6",
4
4
  "description": "L0~L3 分层蒸馏记忆插件 for DeepSeek Harness:自动捕获对话(L0)、抽取原子记忆(L1)、整合场景块(L2)、蒸馏核心画像/团队方法论(L3),并在模型步骤前自动召回注入。移植自 MemoryCore (TencentDB Agent Memory) 的管线设计。",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",