@zooique/memora 3.0.1 → 5.0.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 +161 -1033
- package/README.en.md +46 -39
- package/README.md +40 -35
- package/config.example.json +1 -8
- package/dist/agent/agent.d.ts +88 -80
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +272 -221
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +22 -21
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +120 -46
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/backgroundTasks.d.ts +194 -0
- package/dist/agent/backgroundTasks.d.ts.map +1 -0
- package/dist/agent/backgroundTasks.js +314 -0
- package/dist/agent/backgroundTasks.js.map +1 -0
- package/dist/agent/budget.d.ts +23 -5
- package/dist/agent/budget.d.ts.map +1 -1
- package/dist/agent/budget.js +8 -2
- package/dist/agent/budget.js.map +1 -1
- package/dist/agent/builtinToolHandlers.d.ts +29 -9
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +53 -13
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/builtinTools.d.ts +15 -1
- package/dist/agent/builtinTools.d.ts.map +1 -1
- package/dist/agent/builtinTools.js +111 -30
- package/dist/agent/builtinTools.js.map +1 -1
- package/dist/agent/constants.d.ts +31 -6
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +38 -8
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +8 -0
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +45 -3
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/contextPreparer.d.ts +1 -1
- package/dist/agent/contextPreparer.d.ts.map +1 -1
- package/dist/agent/contextPreparer.js +15 -10
- package/dist/agent/contextPreparer.js.map +1 -1
- package/dist/agent/guardRail.d.ts +12 -1
- package/dist/agent/guardRail.d.ts.map +1 -1
- package/dist/agent/guardRail.js +37 -2
- package/dist/agent/guardRail.js.map +1 -1
- package/dist/agent/loop.d.ts +319 -34
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +713 -110
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +19 -4
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +25 -4
- package/dist/agent/managers/archiveCoordinator.js.map +1 -1
- package/dist/agent/managers/chatLockManager.d.ts +3 -9
- package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
- package/dist/agent/managers/chatLockManager.js +7 -25
- package/dist/agent/managers/chatLockManager.js.map +1 -1
- package/dist/agent/managers/llmCaller.d.ts.map +1 -1
- package/dist/agent/managers/llmCaller.js +27 -1
- package/dist/agent/managers/llmCaller.js.map +1 -1
- package/dist/agent/managers/loopMetrics.d.ts +14 -0
- package/dist/agent/managers/loopMetrics.d.ts.map +1 -1
- package/dist/agent/managers/loopMetrics.js +15 -0
- package/dist/agent/managers/loopMetrics.js.map +1 -1
- package/dist/agent/managers/memoryInspector.d.ts +13 -15
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +38 -49
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/roundSummaryGenerator.d.ts +31 -1
- package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -1
- package/dist/agent/managers/roundSummaryGenerator.js +81 -6
- package/dist/agent/managers/roundSummaryGenerator.js.map +1 -1
- package/dist/agent/managers/sessionArchiver.d.ts +35 -3
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +34 -3
- package/dist/agent/managers/sessionArchiver.js.map +1 -1
- package/dist/agent/managers/sessionManager.d.ts +21 -88
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +94 -278
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/toolCallHelpers.d.ts +109 -28
- package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -1
- package/dist/agent/managers/toolCallHelpers.js +93 -37
- package/dist/agent/managers/toolCallHelpers.js.map +1 -1
- package/dist/agent/messageHistory.d.ts.map +1 -1
- package/dist/agent/messageHistory.js +9 -5
- package/dist/agent/messageHistory.js.map +1 -1
- package/dist/agent/seed/orchestrator.d.ts +12 -1
- package/dist/agent/seed/orchestrator.d.ts.map +1 -1
- package/dist/agent/seed/orchestrator.js +15 -4
- package/dist/agent/seed/orchestrator.js.map +1 -1
- package/dist/agent/seed/prepare.d.ts.map +1 -1
- package/dist/agent/seed/prepare.js +9 -4
- package/dist/agent/seed/prepare.js.map +1 -1
- package/dist/agent/seed/types.d.ts +11 -4
- package/dist/agent/seed/types.d.ts.map +1 -1
- package/dist/agent/seed/types.js +2 -2
- package/dist/agent/textSanitize.d.ts +36 -0
- package/dist/agent/textSanitize.d.ts.map +1 -0
- package/dist/agent/textSanitize.js +55 -0
- package/dist/agent/textSanitize.js.map +1 -0
- package/dist/agent/toolExecutor.d.ts +97 -26
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +444 -78
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/toolLedger.d.ts +93 -41
- package/dist/agent/toolLedger.d.ts.map +1 -1
- package/dist/agent/toolLedger.js +114 -42
- package/dist/agent/toolLedger.js.map +1 -1
- package/dist/agent/toolResultCache.js +1 -1
- package/dist/agent/toolResultOffload.d.ts +8 -0
- package/dist/agent/toolResultOffload.d.ts.map +1 -1
- package/dist/agent/toolResultOffload.js +10 -3
- package/dist/agent/toolResultOffload.js.map +1 -1
- package/dist/agent/toolRunner.d.ts +16 -7
- package/dist/agent/toolRunner.d.ts.map +1 -1
- package/dist/agent/toolRunner.js +74 -29
- package/dist/agent/toolRunner.js.map +1 -1
- package/dist/agent/tracer.d.ts +13 -1
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/types.d.ts +74 -30
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/code-exec/types.d.ts +9 -0
- package/dist/code-exec/types.d.ts.map +1 -1
- package/dist/index.d.ts +28 -41
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +65 -54
- package/dist/index.js.map +1 -1
- package/dist/logging/logger.d.ts +4 -1
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +5 -2
- package/dist/logging/logger.js.map +1 -1
- package/dist/memory/gcService.d.ts.map +1 -1
- package/dist/memory/gcService.js +3 -5
- package/dist/memory/gcService.js.map +1 -1
- package/dist/memory/inMemorySessionStore.d.ts +2 -2
- package/dist/memory/inMemorySessionStore.js +2 -2
- package/dist/memory/inMemoryStorage.d.ts +4 -3
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +2 -2
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/nodeSqliteStorage.d.ts +17 -0
- package/dist/memory/nodeSqliteStorage.d.ts.map +1 -0
- package/dist/memory/nodeSqliteStorage.js +393 -0
- package/dist/memory/nodeSqliteStorage.js.map +1 -0
- package/dist/memory/projectManager.d.ts +10 -20
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +27 -41
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/roundStore.d.ts +143 -82
- package/dist/memory/roundStore.d.ts.map +1 -1
- package/dist/memory/roundStore.js +4 -15
- package/dist/memory/roundStore.js.map +1 -1
- package/dist/memory/roundSummaryLookup.d.ts +26 -0
- package/dist/memory/roundSummaryLookup.d.ts.map +1 -0
- package/dist/memory/roundSummaryLookup.js +19 -0
- package/dist/memory/roundSummaryLookup.js.map +1 -0
- package/dist/memory/sessionStore.d.ts +19 -2
- package/dist/memory/sessionStore.d.ts.map +1 -1
- package/dist/memory/sessionStore.js.map +1 -1
- package/dist/memory/sourceValidation.d.ts +2 -13
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +5 -16
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +26 -16
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/supersedeResolve.d.ts +39 -0
- package/dist/memory/supersedeResolve.d.ts.map +1 -0
- package/dist/memory/supersedeResolve.js +16 -0
- package/dist/memory/supersedeResolve.js.map +1 -0
- package/dist/memory/types.d.ts +10 -2
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +6 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/role-pack/rolePackManager.d.ts +74 -33
- package/dist/role-pack/rolePackManager.d.ts.map +1 -1
- package/dist/role-pack/rolePackManager.js +112 -53
- package/dist/role-pack/rolePackManager.js.map +1 -1
- package/dist/role-pack/strategyKeys.d.ts +44 -0
- package/dist/role-pack/strategyKeys.d.ts.map +1 -1
- package/dist/role-pack/strategyKeys.js +55 -0
- package/dist/role-pack/strategyKeys.js.map +1 -1
- package/dist/role-pack/strategyResolver.d.ts +6 -1
- package/dist/role-pack/strategyResolver.d.ts.map +1 -1
- package/dist/role-pack/strategyResolver.js +20 -2
- package/dist/role-pack/strategyResolver.js.map +1 -1
- package/dist/role-pack/types.d.ts +5 -1
- package/dist/role-pack/types.d.ts.map +1 -1
- package/dist/security/confirmEntries.d.ts +44 -0
- package/dist/security/confirmEntries.d.ts.map +1 -0
- package/dist/security/confirmEntries.js +59 -0
- package/dist/security/confirmEntries.js.map +1 -0
- package/dist/security/pathGuard.d.ts +42 -6
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +126 -5
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillScriptRunner.d.ts +147 -15
- package/dist/skill/skillScriptRunner.d.ts.map +1 -1
- package/dist/skill/skillScriptRunner.js +479 -68
- package/dist/skill/skillScriptRunner.js.map +1 -1
- package/dist/utils/backgroundTask.d.ts +56 -34
- package/dist/utils/backgroundTask.d.ts.map +1 -1
- package/dist/utils/backgroundTask.js +130 -99
- package/dist/utils/backgroundTask.js.map +1 -1
- package/dist/utils/configResourceManager.d.ts +6 -2
- package/dist/utils/configResourceManager.d.ts.map +1 -1
- package/dist/utils/configResourceManager.js +8 -2
- package/dist/utils/configResourceManager.js.map +1 -1
- package/dist/utils/errors.d.ts +12 -2
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +12 -2
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +76 -23
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +23 -3
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/time.d.ts +8 -5
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +8 -5
- package/dist/utils/time.js.map +1 -1
- package/dist/utils/toError.d.ts +1 -1
- package/dist/utils/toError.js +1 -1
- package/dist/web-fetch/loginWall.d.ts +39 -0
- package/dist/web-fetch/loginWall.d.ts.map +1 -0
- package/dist/web-fetch/loginWall.js +78 -0
- package/dist/web-fetch/loginWall.js.map +1 -0
- package/dist/web-fetch/types.d.ts +8 -0
- package/dist/web-fetch/types.d.ts.map +1 -1
- package/dist/web-fetch/webFetchProvider.d.ts.map +1 -1
- package/dist/web-fetch/webFetchProvider.js +3 -1
- package/dist/web-fetch/webFetchProvider.js.map +1 -1
- package/dist/web-search/fetchWebSearchProvider.js +28 -23
- package/dist/web-search/fetchWebSearchProvider.js.map +1 -1
- package/docs/architecture/role-pack-authoring-guide.md +3 -1
- package/docs/architecture/role-pack-spec.md +2 -1
- package/docs/memora-api-reference.md +1349 -1175
- package/docs/memora-/345/215/207/347/272/247/346/214/207/345/215/227-4.x-/345/210/260-5.0.0.md +385 -0
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +91 -52
- package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -148
- package/package.json +9 -4
- package/role-packs/README.md +41 -40
- package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -4
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +1 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +1 -1
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +1 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +1 -1
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +1 -1
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +32 -5
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/scripts/init-novel-project.mjs +10 -6
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +3 -1
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/manifest.json +1 -0
- package/dist/agent/managers/dedupManager.d.ts +0 -85
- package/dist/agent/managers/dedupManager.d.ts.map +0 -1
- package/dist/agent/managers/dedupManager.js +0 -248
- package/dist/agent/managers/dedupManager.js.map +0 -1
- package/dist/agent/managers/goalConsistencyChecker.d.ts +0 -42
- package/dist/agent/managers/goalConsistencyChecker.d.ts.map +0 -1
- package/dist/agent/managers/goalConsistencyChecker.js +0 -178
- package/dist/agent/managers/goalConsistencyChecker.js.map +0 -1
- package/dist/agent/managers/llmJudgeHelper.d.ts +0 -21
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +0 -1
- package/dist/agent/managers/llmJudgeHelper.js +0 -32
- package/dist/agent/managers/llmJudgeHelper.js.map +0 -1
- package/dist/agent/managers/memoryAdvisor.d.ts +0 -105
- package/dist/agent/managers/memoryAdvisor.d.ts.map +0 -1
- package/dist/agent/managers/memoryAdvisor.js +0 -322
- package/dist/agent/managers/memoryAdvisor.js.map +0 -1
- package/dist/agent/managers/memoryGovernance.d.ts +0 -24
- package/dist/agent/managers/memoryGovernance.d.ts.map +0 -1
- package/dist/agent/managers/memoryGovernance.js +0 -46
- package/dist/agent/managers/memoryGovernance.js.map +0 -1
- package/dist/memory/governance.d.ts +0 -17
- package/dist/memory/governance.d.ts.map +0 -1
- package/dist/memory/governance.js +0 -17
- package/dist/memory/governance.js.map +0 -1
- package/dist/memory/projectRegistry.d.ts +0 -47
- package/dist/memory/projectRegistry.d.ts.map +0 -1
- package/dist/memory/projectRegistry.js +0 -151
- package/dist/memory/projectRegistry.js.map +0 -1
- package/dist/utils/recallDefaults.d.ts +0 -16
- package/dist/utils/recallDefaults.d.ts.map +0 -1
- package/dist/utils/recallDefaults.js +0 -16
- package/dist/utils/recallDefaults.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zooique/memora",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Node.js 专用 Agent 架构 — 本地、私有、领域无关,摘要即记忆(memory-as-summary;零第三方运行时依赖,依赖 Node.js 内置模块)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"role-packs",
|
|
16
16
|
"docs/memora-api-reference.md",
|
|
17
17
|
"docs/memora-接入指南.md",
|
|
18
|
+
"docs/memora-升级指南-4.x-到-5.0.0.md",
|
|
18
19
|
"docs/role-pack-开放键指南.md",
|
|
19
20
|
"docs/architecture/role-pack-spec.md",
|
|
20
21
|
"docs/architecture/role-pack-authoring-guide.md",
|
|
@@ -40,6 +41,7 @@
|
|
|
40
41
|
},
|
|
41
42
|
"scripts": {
|
|
42
43
|
"build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
44
|
+
"build:clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && npm run build",
|
|
43
45
|
"test": "vitest run",
|
|
44
46
|
"test:watch": "vitest",
|
|
45
47
|
"test:cov": "vitest run --coverage",
|
|
@@ -48,18 +50,21 @@
|
|
|
48
50
|
"lint:fix": "eslint . --fix",
|
|
49
51
|
"ci:local": "node scripts/local-ci.mjs",
|
|
50
52
|
"verify:dist-contract": "node scripts/verify-dist-contract.mjs",
|
|
51
|
-
"format": "prettier --write \"**/*.{ts,md,json}\"",
|
|
52
|
-
"format:check": "prettier --check \"**/*.{ts,md,json}\"",
|
|
53
|
+
"format": "prettier --write \"**/*.{ts,mjs,md,json}\"",
|
|
54
|
+
"format:check": "prettier --check \"**/*.{ts,mjs,md,json}\"",
|
|
53
55
|
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.scripts.json",
|
|
54
56
|
"eval:budget": "tsx scripts/eval-context-budget-snapshot.ts",
|
|
55
57
|
"eval:budget:check": "tsx scripts/eval-context-budget-snapshot.ts --check",
|
|
56
58
|
"terminology:report": "tsx scripts/terminology-carrier-snapshot.ts",
|
|
57
59
|
"terminology:check": "tsx scripts/terminology-carrier-snapshot.ts --check",
|
|
60
|
+
"terminology:changed": "tsx scripts/terminology-carrier-snapshot.ts --changed",
|
|
58
61
|
"docs:links": "tsx scripts/check-publish-links.ts",
|
|
59
62
|
"docs:links:repo": "tsx scripts/check-publish-links.ts --repo",
|
|
60
63
|
"rules:refs": "tsx scripts/check-rule-refs.ts",
|
|
64
|
+
"scan:phrase": "tsx scripts/scan-phrase-class.ts",
|
|
65
|
+
"scan:phrase:check": "tsx scripts/scan-phrase-class.ts --check",
|
|
61
66
|
"prepare": "lefthook install || true",
|
|
62
|
-
"
|
|
67
|
+
"prepack": "npm run build:clean"
|
|
63
68
|
},
|
|
64
69
|
"engines": {
|
|
65
70
|
"node": ">=22.0.0"
|
package/role-packs/README.md
CHANGED
|
@@ -1,41 +1,42 @@
|
|
|
1
|
-
# role-packs 角色包库
|
|
2
|
-
|
|
3
|
-
> **声明**:本目录是 memora 的角色包**唯一内容源**——既随 @zooique/memora npm 包发布供示例 / 参考,亦作 memora-vscode 宿主的**生产角色包源(构建期同步)**。内容在此维护、一处改处处生效,消除复制分叉漂移(2026-08-24 机制化单一真理源)。
|
|
4
|
-
|
|
5
|
-
## 身份
|
|
6
|
-
|
|
7
|
-
本目录归属 memora 内核仓库,随内核版本演进,**是角色包内容的单一真理源**:
|
|
8
|
-
|
|
9
|
-
| 项 | 说明 |
|
|
10
|
-
|----|------|
|
|
11
|
-
| 身份 | 唯一内容源(示例 / 参考 + memora-vscode 生产源) |
|
|
12
|
-
| 归属 | memora 内核仓库 |
|
|
13
|
-
| 分发 | 随 @zooique/memora npm 包发布(见 `package.json` files);memora-vscode 构建期经 esbuild `copyRolePacks()` 复制到 `dist/extension/role-packs/` 进 VSIX |
|
|
14
|
-
| 生命周期 | 随内核能力演进;已接入宿主不再自持副本,构建期全量同步 |
|
|
15
|
-
|
|
16
|
-
## 接入者指引
|
|
17
|
-
|
|
18
|
-
- 宿主(如 VS Code 插件)应将本目录作为**角色包唯一源**:构建期从 `role-packs/` 复制到自己的 `dist/<configDir>/role-packs/`,不要复制后再手工维护副本(否则重新引入分叉漂移)。参阅中立规范 [role-pack-spec.md](../docs/architecture/role-pack-spec.md) §9.1。
|
|
19
|
-
- 新增 / 修改角色包:直接改本目录 → npm 包更新 + 宿主构建期自动同步,一处改处处生效。
|
|
20
|
-
- 宿主如需 VS Code 专属角色包(非通用,需注入宿主专属工具),应明确约定归属;一旦进入共享范畴即移回本目录统一维护。
|
|
21
|
-
|
|
22
|
-
## 角色包清单
|
|
23
|
-
|
|
24
|
-
| 角色包 | 说明 | 覆盖能力面 |
|
|
25
|
-
|--------|------|-----------|
|
|
26
|
-
| **memora助手** | **兜底契约包**(非示例,名字由内核常量 `BUILTIN_FALLBACK_PACK` 锁定,改名须走 ADR;**宿主 UI 禁删 + 构建期 existsSync 硬校验**):领域无关的最小兜底角色,负责通用对话与任务执行 | 领域无关最小集:无 skills / 无 capabilities(省略 = 全部暴露)/ 无 strategy(走内核默认) |
|
|
27
|
-
| 共鸣小说家 | 示例:方法论型角色包——三层结构小说创作(**需求层**:社会热点→痛点→精神需求缺口;**内核层**:经典人性内核,跨时代稳定;**形式层**:题材文笔是内核与读者的纽带),先需求再内核后形式,直接产出完整成稿 | 真实 skills/ 文件(**技能清单以 `skills/` 目录为唯一源、使用时机见 `persona.md` 七阶段流水线与 `rules.md`,此处不枚举**)+ capabilities(web:search 特权)+ strategy(高温度 / askOn
|
|
28
|
-
| 白话方案设计师 | 示例:方法论型角色包——融合方案设计(单一真理源·最小单元·网络为土壤)与文档编排,先用白话把设计讲清楚,再落实为可开发的专业文档 | 真实 skills/ 文件(**技能清单以 `skills/` 目录为唯一源、使用时机见 `persona.md` / `rules.md`,此处不枚举**)+ capabilities(web:search 特权 / llm:summarize)+ strategy(白话优先 / askOn 含 confirm /
|
|
29
|
-
|
|
30
|
-
> 兜底契约包与示例包**同目录但性质不同**:示例可删,契约包不可删(宿主 UI 禁删 + 构建期校验);二者均随 `copyRolePacks()` 同步进宿主 `dist/extension/role-packs/`。
|
|
31
|
-
|
|
32
|
-
> **本表不枚举技能**:只描述包的能力定位,不列技能名、不复述工作流程。技能清单的 SSOT 是各包 `skills/` 目录,使用时机的 SSOT 是 `persona.md` / `rules.md`——在此复述会形成第三份副本,技能增删时静默过期。引用覆盖由 `src/role-pack/__tests__/builtinPackCoverage.test.ts` 守卫。
|
|
33
|
-
|
|
34
|
-
> **两包 strategy 参数差异是设计取向,不是疏漏**(勿当缺陷"对齐"):
|
|
35
|
-
>
|
|
36
|
-
>
|
|
37
|
-
>
|
|
38
|
-
>
|
|
39
|
-
>
|
|
40
|
-
|
|
1
|
+
# role-packs 角色包库
|
|
2
|
+
|
|
3
|
+
> **声明**:本目录是 memora 的角色包**唯一内容源**——既随 @zooique/memora npm 包发布供示例 / 参考,亦作 memora-vscode 宿主的**生产角色包源(构建期同步)**。内容在此维护、一处改处处生效,消除复制分叉漂移(2026-08-24 机制化单一真理源)。
|
|
4
|
+
|
|
5
|
+
## 身份
|
|
6
|
+
|
|
7
|
+
本目录归属 memora 内核仓库,随内核版本演进,**是角色包内容的单一真理源**:
|
|
8
|
+
|
|
9
|
+
| 项 | 说明 |
|
|
10
|
+
|----|------|
|
|
11
|
+
| 身份 | 唯一内容源(示例 / 参考 + memora-vscode 生产源) |
|
|
12
|
+
| 归属 | memora 内核仓库 |
|
|
13
|
+
| 分发 | 随 @zooique/memora npm 包发布(见 `package.json` files);memora-vscode 构建期经 esbuild `copyRolePacks()` 复制到 `dist/extension/role-packs/` 进 VSIX |
|
|
14
|
+
| 生命周期 | 随内核能力演进;已接入宿主不再自持副本,构建期全量同步 |
|
|
15
|
+
|
|
16
|
+
## 接入者指引
|
|
17
|
+
|
|
18
|
+
- 宿主(如 VS Code 插件)应将本目录作为**角色包唯一源**:构建期从 `role-packs/` 复制到自己的 `dist/<configDir>/role-packs/`,不要复制后再手工维护副本(否则重新引入分叉漂移)。参阅中立规范 [role-pack-spec.md](../docs/architecture/role-pack-spec.md) §9.1。
|
|
19
|
+
- 新增 / 修改角色包:直接改本目录 → npm 包更新 + 宿主构建期自动同步,一处改处处生效。
|
|
20
|
+
- 宿主如需 VS Code 专属角色包(非通用,需注入宿主专属工具),应明确约定归属;一旦进入共享范畴即移回本目录统一维护。
|
|
21
|
+
|
|
22
|
+
## 角色包清单
|
|
23
|
+
|
|
24
|
+
| 角色包 | 说明 | 覆盖能力面 |
|
|
25
|
+
|--------|------|-----------|
|
|
26
|
+
| **memora助手** | **兜底契约包**(非示例,名字由内核常量 `BUILTIN_FALLBACK_PACK` 锁定,改名须走 ADR;**宿主 UI 禁删 + 构建期 existsSync 硬校验**):领域无关的最小兜底角色,负责通用对话与任务执行 | 领域无关最小集:无 skills / 无 capabilities(省略 = 全部暴露)/ 无 strategy(走内核默认) |
|
|
27
|
+
| 共鸣小说家 | 示例:方法论型角色包——三层结构小说创作(**需求层**:社会热点→痛点→精神需求缺口;**内核层**:经典人性内核,跨时代稳定;**形式层**:题材文笔是内核与读者的纽带),先需求再内核后形式,直接产出完整成稿 | 真实 skills/ 文件(**技能清单以 `skills/` 目录为唯一源、使用时机见 `persona.md` 七阶段流水线与 `rules.md`,此处不枚举**)+ capabilities(web:search 特权)+ strategy(高温度 / askOn 主动提问 / 联网搜索上限 8 次)+ handoffPrompt |
|
|
28
|
+
| 白话方案设计师 | 示例:方法论型角色包——融合方案设计(单一真理源·最小单元·网络为土壤)与文档编排,先用白话把设计讲清楚,再落实为可开发的专业文档 | 真实 skills/ 文件(**技能清单以 `skills/` 目录为唯一源、使用时机见 `persona.md` / `rules.md`,此处不枚举**)+ capabilities(web:search 特权 / llm:summarize)+ strategy(白话优先 / askOn 含 confirm / 联网搜索上限 12 次)+ handoffPrompt |
|
|
29
|
+
|
|
30
|
+
> 兜底契约包与示例包**同目录但性质不同**:示例可删,契约包不可删(宿主 UI 禁删 + 构建期校验);二者均随 `copyRolePacks()` 同步进宿主 `dist/extension/role-packs/`。
|
|
31
|
+
|
|
32
|
+
> **本表不枚举技能**:只描述包的能力定位,不列技能名、不复述工作流程。技能清单的 SSOT 是各包 `skills/` 目录,使用时机的 SSOT 是 `persona.md` / `rules.md`——在此复述会形成第三份副本,技能增删时静默过期。引用覆盖由 `src/role-pack/__tests__/builtinPackCoverage.test.ts` 守卫。
|
|
33
|
+
|
|
34
|
+
> **两包 strategy 参数差异是设计取向,不是疏漏**(勿当缺陷"对齐"):
|
|
35
|
+
> **共鸣小说家**高温度(0.9)+ 出错降级继续(`degrade`)+ 自检领域化(`selfReview` 关闭,改由 `craft-review` 技能承担)+
|
|
36
|
+
> 联网搜索中度预算(`webSearchLimit: 8`——需求层热点扫描与映射阶段都可能搜,默认 6 偏紧)——把交付质量押在七阶段流水线与领域技能库。
|
|
37
|
+
> **白话方案设计师**低温度(0.4)+ 出错重试(`retry`)+ 内核终审(`selfReview` 开)+
|
|
38
|
+
> 联网搜索研究型预算(`webSearchLimit: 12`——每个非平凡子方案都要 3-5 个信息源)——设计收敛本身依赖模型推演。
|
|
39
|
+
> 推理深度(`multiStepReasoning: auto`)与单步输出(`outputLimit: 0` 不干预)两包同为默认、听服务端——2026-09-30 已对齐(manual 原动机随 outputLimit 放开弱化),**不再是差异点**(旧版本文档曾写 manual / 大单步输出,已订正)。
|
|
40
|
+
> 二者是同一哲学在两类任务上的不同落点,参数不可互抄。
|
|
41
|
+
|
|
41
42
|
> 两个示例包**全面覆盖当前角色包设计**:**内容文件零声明**(persona.md / rules.md 约定名 + skills/ 目录扫描,manifest 不含任何内容路径注册)、顶层 capabilities(能力面)、strategy 策略、handoffPrompt 衔接提示词。开放键使用与消费方说明见 [role-pack-开放键指南](../docs/role-pack-开放键指南.md);完整中立规范见 [role-pack-spec.md](../docs/architecture/role-pack-spec.md)(仓库内文档)。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
- 诚实回答:不编造事实、来源或数据
|
|
2
|
-
- 简洁优先:回答直奔主题,避免冗余与客套
|
|
3
|
-
- 工具优先:能通过工具完成的任务,先尝试工具再说明
|
|
4
|
-
- 安全边界:涉及删除、覆盖等破坏性操作时,先说明影响再执行
|
|
1
|
+
- 诚实回答:不编造事实、来源或数据
|
|
2
|
+
- 简洁优先:回答直奔主题,避免冗余与客套
|
|
3
|
+
- 工具优先:能通过工具完成的任务,先尝试工具再说明
|
|
4
|
+
- 安全边界:涉及删除、覆盖等破坏性操作时,先说明影响再执行
|
|
@@ -37,7 +37,7 @@ traits.speed: 0.6
|
|
|
37
37
|
2. **内核锁定**(`core-extractor`)——提炼经典人性内核,匹配需求缺口;
|
|
38
38
|
3. **一致性闸门**(`three-layer-check`)——内核↔需求↔题材↔情绪价值总检,过闸才继续;
|
|
39
39
|
4. **概念包装**(`logline-craft` + `idea-lever`)——一句话卖点定开篇方向;方向性岔路口用创意杠杆穷举候选(内核→N 个 logline / 转折→N 条分支,各自带优缺点/代价),作者挑选或融合;
|
|
40
|
-
5. **组织搭建**(`story-structure` + `relationship-web` + `character-sheet` + `world-builder` + `story-bible
|
|
40
|
+
5. **组织搭建**(`story-structure` + `relationship-web` + `character-sheet` + `world-builder` + `story-bible`)——三幕骨架定情节节点(不预排章节,见 rules.md「纲是骨架、章是装箱」)、人物关系网 + 单体人物卡、世界观、设定圣经四卷入册;
|
|
41
41
|
6. **大纲与成文**(`outline-expand` + `scene-craft` + `dialogue-craft` + `pacing-hook` + `emotion-wave` + `style-weaver` + `empathy-craft` + `pov-discipline`)——五级展开到场景成文,对白即行动、带潜台词;`style-weaver` 按情节切文风,`empathy-craft` 把情绪落进文字(含叙述者的犹豫与克制),`pov-discipline` 守住「这段是谁在经历」(一场景一视角、禁止视角乱跳,信息遮断的地基);
|
|
42
42
|
7. **打磨与体检**(`polish-method` + `longform-guard` + `craft-review`)——三轮打磨、长篇防崩、写后自检。
|
|
43
43
|
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
- 对白服务情节:每句对白要么推进情节、要么揭示人物,不做寒暄填充(落笔用 `dialogue-craft`:对白即行动、带潜台词、语气即身份)
|
|
10
10
|
- 伏笔必须回收:埋下就要规划回收点,未回收的悬置要标注(用 `foreshadow` 维护埋点清单:埋得轻、收得重、埋收必对)
|
|
11
11
|
- **三幕定骨架**:长篇先用 `story-structure` 规划激励事件/中点/高潮三节点;每一章自问"这章冲突是升级、反转还是收束",答不出即重写
|
|
12
|
+
- **纲是骨架、章是装箱**:任何纲(大纲/细纲/场景清单)只限定故事骨架——情节序列、事件、情绪走向;**正文落地前禁止预排章节**(不写"第N章"、不做逐章切分),章是成文时才存在的弹性容器,核心框架间随时可插支线/番外/表达段而章号不错位;成文后的章号回填(时间线/伏笔台账)与逐章写作纪律(章末钩子/单章篇幅)不受此限
|
|
12
13
|
- **岔路口先穷举**:方向性决策(内核/开头/转折)先用 `idea-lever` 展开 N 个异质候选(各带优缺点/代价),作者挑选或融合;穷举不替代作者判断,选择权归作者
|
|
13
14
|
- **目标产出完整成稿**:以完整成稿为交付目标;过程中遇到方向性问题(内核锁定/转折走向/主角命运)主动提问、有更好的建议直接提出,与用户讨论推进——不闷头写完也不每题必问;成稿是候选稿,由用户审阅定稿
|
|
14
15
|
- **情绪只展示不命名**:禁止"伤心/愤怒/开心"等直接情绪形容词,用动作/细节/他人反应表达(见 `empathy-craft`)
|
package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md
CHANGED
|
@@ -17,7 +17,7 @@ description: 伏笔与呼应:埋点、回收、可信度控制
|
|
|
17
17
|
|
|
18
18
|
## 实操
|
|
19
19
|
|
|
20
|
-
- 埋点清单(写作时维护):`伏笔 |
|
|
20
|
+
- 埋点清单(写作时维护):`伏笔 | 埋设点(事件/场景) | 计划回收点(事件/场景) | 状态`——未落正文前只标事件不标章,成文后回填章号(见 rules.md「纲是骨架、章是装箱」)
|
|
21
21
|
- 悬置管理:距离计划回收点太远时,在中途用轻微呼应「提气」,防读者遗忘;
|
|
22
22
|
- 假伏笔:**故意**引导错误预期的信息(误导读者),需在回收时明确这是误导而非漏洞。
|
|
23
23
|
|
|
@@ -16,31 +16,58 @@ description: 大纲→成文展开:骨架到章节/场景正文的分步生成
|
|
|
16
16
|
↓ 展开
|
|
17
17
|
② 大纲(卷/部级:每卷解决什么冲突、情绪主线、大高潮位置)
|
|
18
18
|
↓ 展开
|
|
19
|
-
③
|
|
19
|
+
③ 细纲(逐事件:激励/价值转变/钩子——只排事件序列,不排章节)
|
|
20
20
|
↓ 展开
|
|
21
21
|
④ 场景清单(每场景:人物目标/冲突/价值转变/情绪落点)
|
|
22
22
|
↓ 展开
|
|
23
|
-
⑤
|
|
23
|
+
⑤ 成文(场景→章→卷正文:装箱成章,此时章节才诞生)
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
**每一级都让作者确认再降级**——跑偏的成本随降级指数级上升,确认点是止损闸门。
|
|
27
27
|
|
|
28
28
|
## 展开纪律
|
|
29
29
|
|
|
30
|
+
- **细纲不排章节**:③ 是事件序列不是章节清单——预排章号会让后续插入支线/番外时章号错位;章在 ⑤ 装箱时才产生(见 rules.md「纲是骨架、章是装箱」);
|
|
30
31
|
- **大纲不写死细节**:大纲是"路线图"不是"剧本"——人物在写作中会"活"起来,允许偏离但要登记(为什么偏离、新方向是否更好);
|
|
31
|
-
-
|
|
32
|
+
- **开写前回读细纲**:防止"写着写着忘了这段要干嘛";
|
|
32
33
|
- **成文时只盯当前场景**:当前场景写透,全书大局交给大纲(防信息过载);
|
|
33
|
-
-
|
|
34
|
+
- **卡住时的回退**:卡在场景→回细纲找当前事件的目的;卡在章→回大纲找这卷任务;找不到任务 = 这章可能不该存在。
|
|
34
35
|
|
|
35
36
|
## 交付节奏
|
|
36
37
|
|
|
37
38
|
- 一次给 1-2 章成文(不是一整卷);
|
|
38
|
-
-
|
|
39
|
+
- 每章交付后问:**这章装箱的事件达到转变与钩子了吗?**——达到才继续,未达先修。
|
|
40
|
+
|
|
41
|
+
## 成文文件的分区纪律(正文与工程记录分离)
|
|
42
|
+
|
|
43
|
+
> **实锤依据**:2026-10-13 真机实测,`05-正文/卷一-日常与裂缝.md` 曾在同一文件里同时出现
|
|
44
|
+
> 小说正文 + 卷级元信息头 + `## 本批自检` 工程清单 + 卷末验收表。**机制本身是对的**
|
|
45
|
+
> (自检防文风退化),错的只是**落点**:读者与下游工具读到的应当是小说,不是工程表。
|
|
46
|
+
|
|
47
|
+
**一个成文文件按三段分区**(顺序固定):
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
# <卷/章标题>
|
|
51
|
+
<!-- ① 卷级元信息头(可选):POV / 基线文风 / 章号约定等工程约定,用引用块写 -->
|
|
52
|
+
## 场N|<场名> ← ② 正文主体:只有小说本身
|
|
53
|
+
...
|
|
54
|
+
(若干场次)
|
|
55
|
+
## 附:成文自检 ← ③ 工程记录:自检清单 / 伏笔登记 / 验收表全部收在这里
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
- **② 正文主体区只放小说**:不许插入自检清单、进度表、验收表、写作提示;
|
|
59
|
+
- **③ 工程记录区(文末「附:成文自检」)** 是自检清单与伏笔/验收表的**唯一合法落点**——
|
|
60
|
+
这些是**过程工件**,对作者有价值、对读者是噪声,与正文同层即造成污染;
|
|
61
|
+
- **① 卷级元信息头可选**:确有工程约定要声明才写(POV、文风卡指针),无则省略;
|
|
62
|
+
它是**约定**不是**自检**,留在卷首可接受,但不得混入正文段落之间;
|
|
63
|
+
- **跨卷/跨批**的自检统一累积到各卷文末该区,**不要**另起 `## 本批自检` 夹在两场正文中间。
|
|
39
64
|
|
|
40
65
|
## 校验清单
|
|
41
66
|
|
|
42
67
|
- [ ] 五级逐层展开、每级确认过?
|
|
43
68
|
- [ ] 大纲是路线图不写死?
|
|
69
|
+
- [ ] 细纲只有事件序列、无章号预排?
|
|
44
70
|
- [ ] 偏离有登记?
|
|
45
71
|
- [ ] 成文聚焦当前场景?
|
|
46
72
|
- [ ] 每次 1-2 章、章后验证转变与钩子?
|
|
73
|
+
- [ ] **正文主体区无工程记录**(自检/伏笔/验收表都在文末「附:成文自检」区)?
|
|
@@ -219,17 +219,17 @@ const T_BIBLE_3 = `# 卷 3 · 时间线
|
|
|
219
219
|
|
|
220
220
|
const T_BIBLE_4 = `# 卷 4 · 伏笔台账
|
|
221
221
|
|
|
222
|
-
> 来源技能:foreshadow
|
|
222
|
+
> 来源技能:foreshadow。埋得轻、收得重、埋收必对。未落正文前只标事件不标章,成文后回填章号。
|
|
223
223
|
|
|
224
|
-
| 伏笔 |
|
|
224
|
+
| 伏笔 | 埋设点(事件/场景) | 计划回收点(事件/场景) | 当前状态(待回收 / 已回收 / 悬置) |
|
|
225
225
|
| --- | --- | --- | --- |
|
|
226
226
|
`;
|
|
227
227
|
|
|
228
228
|
const T_OUTLINE = `# 大纲索引
|
|
229
229
|
|
|
230
|
-
> 来源技能:outline-expand
|
|
230
|
+
> 来源技能:outline-expand(五级展开:三层结构 → 大纲 → 细纲 → 场景清单 → 成文)。细纲只排事件序列,不排章节——章在成文装箱时才诞生。
|
|
231
231
|
|
|
232
|
-
| 卷 |
|
|
232
|
+
| 卷 | 事件 | 定位(升级 / 反转 / 收束) | 状态 |
|
|
233
233
|
| --- | --- | --- | --- |
|
|
234
234
|
`;
|
|
235
235
|
|
|
@@ -347,7 +347,9 @@ if (!bookName) {
|
|
|
347
347
|
|
|
348
348
|
// 安全校验:书名不含空格 / 路径分隔符(Windows + git 中文空格路径会乱码)
|
|
349
349
|
if (/\s/.test(bookName)) {
|
|
350
|
-
console.error(
|
|
350
|
+
console.error(
|
|
351
|
+
`✗ 书名不能含空格(Windows + git 处理含空格中文路径会乱码)→ 建议改用:${bookName.replace(/\s+/g, '-')}`,
|
|
352
|
+
);
|
|
351
353
|
process.exit(1);
|
|
352
354
|
}
|
|
353
355
|
if (bookName.includes('/') || bookName.includes('\\') || bookName === '.' || bookName === '..') {
|
|
@@ -362,7 +364,9 @@ const targetDir = join(parentDir, bookName);
|
|
|
362
364
|
if (existsSync(targetDir)) {
|
|
363
365
|
const existing = await readdir(targetDir);
|
|
364
366
|
if (existing.length > 0 && !flags.has('--force')) {
|
|
365
|
-
console.error(
|
|
367
|
+
console.error(
|
|
368
|
+
`✗ 目标目录已存在且非空:${targetDir}\n 加 --force 可继续(已存在文件会跳过,不覆盖)。`,
|
|
369
|
+
);
|
|
366
370
|
process.exit(1);
|
|
367
371
|
}
|
|
368
372
|
}
|
|
@@ -40,10 +40,12 @@ description: 设定圣经:长篇一致性档案——人物/世界观/时间
|
|
|
40
40
|
### 卷 4:伏笔台账
|
|
41
41
|
|
|
42
42
|
```markdown
|
|
43
|
-
| 伏笔 |
|
|
43
|
+
| 伏笔 | 埋设点(事件/场景) | 计划回收点(事件/场景) | 当前状态(待回收/已回收/悬置) |
|
|
44
44
|
|------|---------|------------|------------------------------|
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
+
未落正文前只标事件不标章,成文后回填章号(见 rules.md「纲是骨架、章是装箱」)。
|
|
48
|
+
|
|
47
49
|
## AI 协作纪律
|
|
48
50
|
|
|
49
51
|
1. **动笔前先读圣经**(read_file)——不靠对话记忆,承接前文以圣经为准;
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 记忆治理管理者(从 MemoryInspector 拆分,专责异步 LLM 语义去重)。
|
|
3
|
-
* 职责分离:MemoryInspector 纯存储读写,DedupManager 异步 LLM 治理。
|
|
4
|
-
* 设计原则:未注入 provider 时静默降级返回报告不抛错;不物理删除仅软删重复方保留可恢复性;不阻塞主对话热路径。
|
|
5
|
-
*/
|
|
6
|
-
import type { Memory } from '../../memory/types.js';
|
|
7
|
-
import type { IMemoryStorage } from '../../memory/storageInterface.js';
|
|
8
|
-
import type { LlmProvider } from '../../llm/provider.js';
|
|
9
|
-
/** 名称高度相似的候选记忆对(待 LLM 判断语义等价性) */
|
|
10
|
-
export interface DedupPair {
|
|
11
|
-
/** 记忆 A(保留候选) */
|
|
12
|
-
a: Memory;
|
|
13
|
-
/** 记忆 B(重复方,软删候选) */
|
|
14
|
-
b: Memory;
|
|
15
|
-
/** 名称归一化相似度(0-1,越小越相似) */
|
|
16
|
-
nameSimilarity: number;
|
|
17
|
-
}
|
|
18
|
-
/** LLM 对单对记忆的语义等价判断结果 */
|
|
19
|
-
export interface DedupVerdict {
|
|
20
|
-
/** 是否语义等价(true → 软删重复方) */
|
|
21
|
-
isDuplicate: boolean;
|
|
22
|
-
/** 合并后的内容(isDuplicate=true 时提供,保留更完整信息) */
|
|
23
|
-
mergedContent?: string;
|
|
24
|
-
/** LLM 判断理由(便于审计调试) */
|
|
25
|
-
reason: string;
|
|
26
|
-
}
|
|
27
|
-
/** 降级记忆审计详情(供 UI 展示"为什么降级" + 合并后内容) */
|
|
28
|
-
export interface DedupVerdictSummary {
|
|
29
|
-
/** 被降级记忆 ID(与 demotedIds 一一对应) */
|
|
30
|
-
demotedId: string;
|
|
31
|
-
/** LLM 判断理由(便于审计降级是否合理) */
|
|
32
|
-
reason: string;
|
|
33
|
-
/** 合并后完整内容(便于验证合并质量;缺失时渲染器负责截断展示) */
|
|
34
|
-
mergedContent?: string;
|
|
35
|
-
}
|
|
36
|
-
/** 语义去重报告(deduplicateMemories 返回值) */
|
|
37
|
-
export interface DedupReport {
|
|
38
|
-
/** 扫描的候选记忆总数 */
|
|
39
|
-
scannedCount: number;
|
|
40
|
-
/** 发现的名称相似对数 */
|
|
41
|
-
pairCount: number;
|
|
42
|
-
/** LLM 判定为语义等价并执行降级的对数 */
|
|
43
|
-
deduplicatedCount: number;
|
|
44
|
-
/** 被降级记忆 ID 列表(未物理删除) */
|
|
45
|
-
demotedIds: string[];
|
|
46
|
-
/** 降级审计详情(与 demotedIds 一一对应) */
|
|
47
|
-
verdicts?: DedupVerdictSummary[];
|
|
48
|
-
/** 跳过原因(LLM 不可用 / 无候选对) */
|
|
49
|
-
skippedReason?: string;
|
|
50
|
-
}
|
|
51
|
-
/** 语义去重管理器:扫描名称高度相似的记忆对,LLM 判断语义等价性,降级低分记忆。assembler 组合根创建,由 Agent 透传调用。 */
|
|
52
|
-
export declare class DedupManager {
|
|
53
|
-
private readonly index;
|
|
54
|
-
/** 去重完成回调(宿主据此发射事件通知用户) */
|
|
55
|
-
private readonly onCompleted?;
|
|
56
|
-
/** 后台 LLM Provider(可选,未注入时降级跳过) */
|
|
57
|
-
private readonly backgroundProvider;
|
|
58
|
-
/** 治理源列表(默认 GOVERNANCE_SOURCES;空治理源时去重空转,测试可显式注入) */
|
|
59
|
-
private readonly sources;
|
|
60
|
-
constructor(index: IMemoryStorage, backgroundProvider?: LlmProvider | null,
|
|
61
|
-
/** 去重完成回调(宿主据此发射事件通知用户) */
|
|
62
|
-
onCompleted?: ((report: DedupReport) => void) | undefined, sources?: readonly string[]);
|
|
63
|
-
/**
|
|
64
|
-
* 语义去重:加载候选(上限 50)→ 名称相似度筛选对(上限 10)→ LLM 判断语义等价 → 等价则软删重复方。
|
|
65
|
-
* 安全设计:不物理删除仅软删(可恢复);LLM 失败降级不阻塞;provider 未注入静默返回 skippedReason。
|
|
66
|
-
*/
|
|
67
|
-
deduplicateMemories(signal?: AbortSignal): Promise<DedupReport>;
|
|
68
|
-
/**
|
|
69
|
-
* 筛选名称高度相似的候选记忆对。判定:归一化 Levenshtein ≤0.3 或一方包含另一方。
|
|
70
|
-
* 已配对的记忆不再参与后续配对(避免三元组产生多对);按相似度升序(越相似越优先)取前 10 对。
|
|
71
|
-
*/
|
|
72
|
-
private findNameOverlapPairs;
|
|
73
|
-
/** 名称归一化相似度(0-1,越小越相似)。规则:包含关系=0;否则 Levenshtein 距离 / max(len)。 */
|
|
74
|
-
private static computeNameSimilarity;
|
|
75
|
-
/**
|
|
76
|
-
* 调用 LLM 判断单对记忆语义等价:结构化 JSON 输出(isDuplicate+mergedContent+reason)。
|
|
77
|
-
* 流式累积/解析/异常封装委托 llmJudgeHelper.judgeWithLlm;失败抛 MemoraError 由调用方捕获跳过。
|
|
78
|
-
*/
|
|
79
|
-
private judgeDuplicate;
|
|
80
|
-
/** 软删重复记忆(不物理删除保留可恢复;合并内容由 keepMerged 单独写回 a)。重复方以 delete 进入回收站。 */
|
|
81
|
-
private demoteMemory;
|
|
82
|
-
/** 将合并内容写回保留方 a:保持 id/source/name/createdAt 不变,仅刷新 content + accessedAt */
|
|
83
|
-
private keepMerged;
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=dedupManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dedupManager.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/dedupManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAW,MAAM,mBAAmB,CAAC;AAyB9D,kCAAkC;AAClC,MAAM,WAAW,SAAS;IACxB,iBAAiB;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,qBAAqB;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,yBAAyB;AACzB,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,4EAA4E;AAC5E,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEtB,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAT/B,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAGzB,KAAK,EAAE,cAAc,EACtC,kBAAkB,GAAE,WAAW,GAAG,IAAW;IAC7C,2BAA2B;IACV,WAAW,CAAC,GAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,aAAA,EAC5D,OAAO,GAAE,SAAS,MAAM,EAAuB;IAMjD;;;OAGG;IACG,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAmFrE;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAgC5B,kEAAkE;IAClE,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAkBpC;;;OAGG;YACW,cAAc;IAoB5B,oEAAoE;IACpE,OAAO,CAAC,YAAY;IAIpB,2EAA2E;IAC3E,OAAO,CAAC,UAAU;CASnB"}
|