@zooique/memora 2.0.0 → 3.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 +1028 -0
- package/README.en.md +305 -0
- package/README.md +303 -148
- package/config.example.json +43 -0
- package/dist/agent/agent.d.ts +438 -295
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1368 -836
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +117 -39
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +574 -71
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/budget.d.ts +131 -0
- package/dist/agent/budget.d.ts.map +1 -0
- package/dist/agent/budget.js +128 -0
- package/dist/agent/budget.js.map +1 -0
- package/dist/agent/builtinToolHandlers.d.ts +229 -17
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +758 -70
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/builtinTools.d.ts +198 -7
- package/dist/agent/builtinTools.d.ts.map +1 -1
- package/dist/agent/builtinTools.js +646 -14
- package/dist/agent/builtinTools.js.map +1 -1
- package/dist/agent/compaction.d.ts +93 -0
- package/dist/agent/compaction.d.ts.map +1 -0
- package/dist/agent/compaction.js +192 -0
- package/dist/agent/compaction.js.map +1 -0
- package/dist/agent/constants.d.ts +139 -18
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +154 -18
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +126 -76
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +197 -135
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/contextPreparer.d.ts +78 -0
- package/dist/agent/contextPreparer.d.ts.map +1 -0
- package/dist/agent/contextPreparer.js +128 -0
- package/dist/agent/contextPreparer.js.map +1 -0
- package/dist/agent/duplicateInterceptor.d.ts +67 -0
- package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
- package/dist/agent/duplicateInterceptor.js +82 -0
- package/dist/agent/duplicateInterceptor.js.map +1 -0
- package/dist/agent/guardRail.d.ts +166 -0
- package/dist/agent/guardRail.d.ts.map +1 -0
- package/dist/agent/guardRail.js +333 -0
- package/dist/agent/guardRail.js.map +1 -0
- package/dist/agent/loop.d.ts +718 -253
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +2215 -648
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +21 -74
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +32 -105
- package/dist/agent/managers/archiveCoordinator.js.map +1 -1
- package/dist/agent/managers/chatLockManager.d.ts +20 -88
- package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
- package/dist/agent/managers/chatLockManager.js +31 -103
- package/dist/agent/managers/chatLockManager.js.map +1 -1
- package/dist/agent/managers/dedupManager.d.ts +85 -0
- package/dist/agent/managers/dedupManager.d.ts.map +1 -0
- package/dist/agent/managers/dedupManager.js +248 -0
- package/dist/agent/managers/dedupManager.js.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
- package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
- package/dist/agent/managers/goalConsistencyChecker.js +178 -0
- package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
- package/dist/agent/managers/llmCaller.d.ts +124 -0
- package/dist/agent/managers/llmCaller.d.ts.map +1 -0
- package/dist/agent/managers/llmCaller.js +417 -0
- package/dist/agent/managers/llmCaller.js.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts +21 -0
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -0
- package/dist/agent/managers/llmJudgeHelper.js +32 -0
- package/dist/agent/managers/llmJudgeHelper.js.map +1 -0
- package/dist/agent/managers/loopMetrics.d.ts +58 -0
- package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
- package/dist/agent/managers/loopMetrics.js +68 -0
- package/dist/agent/managers/loopMetrics.js.map +1 -0
- package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +56 -192
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryGovernance.d.ts +24 -0
- package/dist/agent/managers/memoryGovernance.d.ts.map +1 -0
- package/dist/agent/managers/memoryGovernance.js +46 -0
- package/dist/agent/managers/memoryGovernance.js.map +1 -0
- package/dist/agent/managers/memoryInspector.d.ts +59 -393
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +92 -736
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
- package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
- package/dist/agent/managers/roundSummaryGenerator.js +201 -0
- package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
- package/dist/agent/managers/sessionArchiver.d.ts +19 -63
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +83 -157
- package/dist/agent/managers/sessionArchiver.js.map +1 -1
- package/dist/agent/managers/sessionManager.d.ts +286 -57
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +846 -85
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/sessionNamer.d.ts +35 -0
- package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
- package/dist/agent/managers/sessionNamer.js +104 -0
- package/dist/agent/managers/sessionNamer.js.map +1 -0
- package/dist/agent/managers/streamAccumulator.d.ts +20 -0
- package/dist/agent/managers/streamAccumulator.d.ts.map +1 -0
- package/dist/agent/managers/streamAccumulator.js +15 -0
- package/dist/agent/managers/streamAccumulator.js.map +1 -0
- package/dist/agent/managers/textPolishManager.d.ts +8 -44
- package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
- package/dist/agent/managers/textPolishManager.js +12 -47
- package/dist/agent/managers/textPolishManager.js.map +1 -1
- package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
- package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
- package/dist/agent/managers/toolCallHelpers.js +161 -0
- package/dist/agent/managers/toolCallHelpers.js.map +1 -0
- package/dist/agent/managers/workProjection.d.ts +57 -87
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +166 -246
- package/dist/agent/managers/workProjection.js.map +1 -1
- package/dist/agent/messageHistory.d.ts +134 -84
- package/dist/agent/messageHistory.d.ts.map +1 -1
- package/dist/agent/messageHistory.js +419 -133
- package/dist/agent/messageHistory.js.map +1 -1
- package/dist/agent/needsPlanning.d.ts +28 -0
- package/dist/agent/needsPlanning.d.ts.map +1 -0
- package/dist/agent/needsPlanning.js +68 -0
- package/dist/agent/needsPlanning.js.map +1 -0
- package/dist/agent/seed/index.d.ts +11 -0
- package/dist/agent/seed/index.d.ts.map +1 -0
- package/dist/agent/seed/index.js +10 -0
- package/dist/agent/seed/index.js.map +1 -0
- package/dist/agent/seed/orchestrator.d.ts +83 -0
- package/dist/agent/seed/orchestrator.d.ts.map +1 -0
- package/dist/agent/seed/orchestrator.js +260 -0
- package/dist/agent/seed/orchestrator.js.map +1 -0
- package/dist/agent/seed/prepare.d.ts +49 -0
- package/dist/agent/seed/prepare.d.ts.map +1 -0
- package/dist/agent/seed/prepare.js +107 -0
- package/dist/agent/seed/prepare.js.map +1 -0
- package/dist/agent/seed/types.d.ts +115 -0
- package/dist/agent/seed/types.d.ts.map +1 -0
- package/dist/agent/seed/types.js +15 -0
- package/dist/agent/seed/types.js.map +1 -0
- package/dist/agent/sessionStateMachine.d.ts +78 -0
- package/dist/agent/sessionStateMachine.d.ts.map +1 -0
- package/dist/agent/sessionStateMachine.js +182 -0
- package/dist/agent/sessionStateMachine.js.map +1 -0
- package/dist/agent/taskTableRenderer.d.ts +51 -0
- package/dist/agent/taskTableRenderer.d.ts.map +1 -0
- package/dist/agent/taskTableRenderer.js +115 -0
- package/dist/agent/taskTableRenderer.js.map +1 -0
- package/dist/agent/toolExecutor.d.ts +255 -9
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +956 -20
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/toolLedger.d.ts +120 -0
- package/dist/agent/toolLedger.d.ts.map +1 -0
- package/dist/agent/toolLedger.js +149 -0
- package/dist/agent/toolLedger.js.map +1 -0
- package/dist/agent/toolResultCache.d.ts +134 -0
- package/dist/agent/toolResultCache.d.ts.map +1 -0
- package/dist/agent/toolResultCache.js +243 -0
- package/dist/agent/toolResultCache.js.map +1 -0
- package/dist/agent/toolResultOffload.d.ts +59 -0
- package/dist/agent/toolResultOffload.d.ts.map +1 -0
- package/dist/agent/toolResultOffload.js +70 -0
- package/dist/agent/toolResultOffload.js.map +1 -0
- package/dist/agent/toolRunner.d.ts +59 -0
- package/dist/agent/toolRunner.d.ts.map +1 -0
- package/dist/agent/toolRunner.js +147 -0
- package/dist/agent/toolRunner.js.map +1 -0
- package/dist/agent/tracer.d.ts +99 -107
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/tracer.js +24 -69
- package/dist/agent/tracer.js.map +1 -1
- package/dist/agent/types.d.ts +512 -162
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +2 -51
- package/dist/agent/types.js.map +1 -1
- package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
- package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
- package/dist/code-exec/codeExecutionProvider.js +57 -0
- package/dist/code-exec/codeExecutionProvider.js.map +1 -0
- package/dist/code-exec/types.d.ts +37 -0
- package/dist/code-exec/types.d.ts.map +1 -0
- package/dist/code-exec/types.js +12 -0
- package/dist/code-exec/types.js.map +1 -0
- package/dist/config/expandEnvVars.d.ts +22 -0
- package/dist/config/expandEnvVars.d.ts.map +1 -0
- package/dist/config/expandEnvVars.js +38 -0
- package/dist/config/expandEnvVars.js.map +1 -0
- package/dist/config/loader.d.ts +59 -242
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +237 -194
- package/dist/config/loader.js.map +1 -1
- package/dist/index.d.ts +69 -74
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -63
- package/dist/index.js.map +1 -1
- package/dist/llm/abortSignal.d.ts +2 -3
- package/dist/llm/abortSignal.d.ts.map +1 -1
- package/dist/llm/abortSignal.js +2 -3
- package/dist/llm/abortSignal.js.map +1 -1
- package/dist/llm/factory.d.ts +29 -25
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +34 -69
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts +25 -40
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +181 -129
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/llm/provider.d.ts +29 -42
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +11 -10
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/types.d.ts +54 -11
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +0 -5
- package/dist/llm/types.js.map +1 -1
- package/dist/logging/logger.d.ts +8 -29
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +43 -233
- package/dist/logging/logger.js.map +1 -1
- package/dist/logging/loggerInterface.d.ts +9 -8
- package/dist/logging/loggerInterface.d.ts.map +1 -1
- package/dist/memory/gcService.d.ts +164 -0
- package/dist/memory/gcService.d.ts.map +1 -0
- package/dist/memory/gcService.js +215 -0
- package/dist/memory/gcService.js.map +1 -0
- package/dist/memory/governance.d.ts +17 -0
- package/dist/memory/governance.d.ts.map +1 -0
- package/dist/memory/governance.js +17 -0
- package/dist/memory/governance.js.map +1 -0
- package/dist/memory/inMemoryRoundStore.d.ts +124 -0
- package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
- package/dist/memory/inMemoryRoundStore.js +216 -0
- package/dist/memory/inMemoryRoundStore.js.map +1 -0
- package/dist/memory/inMemorySessionStore.d.ts +92 -0
- package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
- package/dist/memory/inMemorySessionStore.js +219 -0
- package/dist/memory/inMemorySessionStore.js.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
- package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
- package/dist/memory/inMemorySessionViewLoader.js +183 -0
- package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
- package/dist/memory/inMemoryStorage.d.ts +26 -141
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +48 -187
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/keywordsTouch.d.ts +20 -0
- package/dist/memory/keywordsTouch.d.ts.map +1 -0
- package/dist/memory/keywordsTouch.js +25 -0
- package/dist/memory/keywordsTouch.js.map +1 -0
- package/dist/memory/lockManager.d.ts +7 -2
- package/dist/memory/lockManager.d.ts.map +1 -1
- package/dist/memory/lockManager.js +35 -11
- package/dist/memory/lockManager.js.map +1 -1
- package/dist/memory/projectManager.d.ts +30 -128
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +39 -171
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +22 -37
- package/dist/memory/projectRegistry.d.ts.map +1 -1
- package/dist/memory/projectRegistry.js +78 -85
- package/dist/memory/projectRegistry.js.map +1 -1
- package/dist/memory/roundStore.d.ts +629 -0
- package/dist/memory/roundStore.d.ts.map +1 -0
- package/dist/memory/roundStore.js +116 -0
- package/dist/memory/roundStore.js.map +1 -0
- package/dist/memory/sessionStore.d.ts +70 -61
- package/dist/memory/sessionStore.d.ts.map +1 -1
- package/dist/memory/sessionStore.js +23 -1
- package/dist/memory/sessionStore.js.map +1 -1
- package/dist/memory/sessionViewLoader.d.ts +141 -0
- package/dist/memory/sessionViewLoader.d.ts.map +1 -0
- package/dist/memory/sessionViewLoader.js +65 -0
- package/dist/memory/sessionViewLoader.js.map +1 -0
- package/dist/memory/sourceValidation.d.ts +18 -9
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +35 -29
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +45 -126
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/types.d.ts +82 -168
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +116 -79
- package/dist/memory/types.js.map +1 -1
- package/dist/project-search/projectSearchProvider.d.ts +29 -0
- package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
- package/dist/project-search/projectSearchProvider.js +57 -0
- package/dist/project-search/projectSearchProvider.js.map +1 -0
- package/dist/project-search/terms.d.ts +14 -0
- package/dist/project-search/terms.d.ts.map +1 -0
- package/dist/project-search/terms.js +68 -0
- package/dist/project-search/terms.js.map +1 -0
- package/dist/project-search/types.d.ts +139 -0
- package/dist/project-search/types.d.ts.map +1 -0
- package/dist/project-search/types.js +8 -0
- package/dist/project-search/types.js.map +1 -0
- package/dist/role-pack/capabilityMap.d.ts +28 -0
- package/dist/role-pack/capabilityMap.d.ts.map +1 -0
- package/dist/role-pack/capabilityMap.js +56 -0
- package/dist/role-pack/capabilityMap.js.map +1 -0
- package/dist/role-pack/constants.d.ts +21 -0
- package/dist/role-pack/constants.d.ts.map +1 -0
- package/dist/role-pack/constants.js +21 -0
- package/dist/role-pack/constants.js.map +1 -0
- package/dist/role-pack/rolePackManager.d.ts +269 -0
- package/dist/role-pack/rolePackManager.d.ts.map +1 -0
- package/dist/role-pack/rolePackManager.js +1082 -0
- package/dist/role-pack/rolePackManager.js.map +1 -0
- package/dist/role-pack/strategyKeys.d.ts +100 -0
- package/dist/role-pack/strategyKeys.d.ts.map +1 -0
- package/dist/role-pack/strategyKeys.js +184 -0
- package/dist/role-pack/strategyKeys.js.map +1 -0
- package/dist/role-pack/strategyResolver.d.ts +109 -0
- package/dist/role-pack/strategyResolver.d.ts.map +1 -0
- package/dist/role-pack/strategyResolver.js +304 -0
- package/dist/role-pack/strategyResolver.js.map +1 -0
- package/dist/role-pack/types.d.ts +237 -0
- package/dist/role-pack/types.d.ts.map +1 -0
- package/dist/role-pack/types.js +8 -0
- package/dist/role-pack/types.js.map +1 -0
- package/dist/role-pack/validator.d.ts +38 -0
- package/dist/role-pack/validator.d.ts.map +1 -0
- package/dist/role-pack/validator.js +436 -0
- package/dist/role-pack/validator.js.map +1 -0
- package/dist/security/pathGuard.d.ts +69 -72
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +151 -131
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillLayer3.d.ts +91 -0
- package/dist/skill/skillLayer3.d.ts.map +1 -0
- package/dist/skill/skillLayer3.js +104 -0
- package/dist/skill/skillLayer3.js.map +1 -0
- package/dist/skill/skillManager.d.ts +127 -56
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +318 -163
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/skill/skillScriptRunner.d.ts +97 -0
- package/dist/skill/skillScriptRunner.d.ts.map +1 -0
- package/dist/skill/skillScriptRunner.js +271 -0
- package/dist/skill/skillScriptRunner.js.map +1 -0
- package/dist/skill/types.d.ts +73 -17
- package/dist/skill/types.d.ts.map +1 -1
- package/dist/skill/types.js +5 -1
- package/dist/skill/types.js.map +1 -1
- package/dist/utils/array.d.ts +5 -6
- package/dist/utils/array.d.ts.map +1 -1
- package/dist/utils/array.js +6 -6
- package/dist/utils/array.js.map +1 -1
- package/dist/utils/atomicWrite.d.ts +8 -0
- package/dist/utils/atomicWrite.d.ts.map +1 -0
- package/dist/utils/atomicWrite.js +31 -0
- package/dist/utils/atomicWrite.js.map +1 -0
- package/dist/utils/backgroundTask.d.ts +38 -0
- package/dist/utils/backgroundTask.d.ts.map +1 -0
- package/dist/utils/backgroundTask.js +117 -0
- package/dist/utils/backgroundTask.js.map +1 -0
- package/dist/utils/configResourceManager.d.ts +79 -0
- package/dist/utils/configResourceManager.d.ts.map +1 -0
- package/dist/utils/configResourceManager.js +150 -0
- package/dist/utils/configResourceManager.js.map +1 -0
- package/dist/utils/errors.d.ts +48 -56
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +60 -58
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +141 -63
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +50 -35
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/fileSafe.d.ts +20 -0
- package/dist/utils/fileSafe.d.ts.map +1 -0
- package/dist/utils/fileSafe.js +56 -0
- package/dist/utils/fileSafe.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +2 -3
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +6 -5
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/hash.d.ts +12 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +27 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/http.d.ts +17 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +29 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/json.d.ts +1 -1
- package/dist/utils/json.js +1 -1
- package/dist/utils/math.d.ts +34 -1
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +47 -14
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/objects.d.ts +2 -3
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/objects.js +2 -3
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/recallDefaults.d.ts +16 -0
- package/dist/utils/recallDefaults.d.ts.map +1 -0
- package/dist/utils/recallDefaults.js +16 -0
- package/dist/utils/recallDefaults.js.map +1 -0
- package/dist/utils/safeTimer.d.ts +8 -36
- package/dist/utils/safeTimer.d.ts.map +1 -1
- package/dist/utils/safeTimer.js +9 -37
- package/dist/utils/safeTimer.js.map +1 -1
- package/dist/utils/scanner.d.ts +97 -17
- package/dist/utils/scanner.d.ts.map +1 -1
- package/dist/utils/scanner.js +269 -47
- package/dist/utils/scanner.js.map +1 -1
- package/dist/utils/segmenter.d.ts +20 -29
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +230 -88
- package/dist/utils/segmenter.js.map +1 -1
- package/dist/utils/strings.d.ts +15 -32
- package/dist/utils/strings.d.ts.map +1 -1
- package/dist/utils/strings.js +25 -44
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/time.d.ts +37 -0
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +56 -0
- package/dist/utils/time.js.map +1 -1
- package/dist/utils/toError.d.ts +13 -1
- package/dist/utils/toError.d.ts.map +1 -1
- package/dist/utils/toError.js +18 -1
- package/dist/utils/toError.js.map +1 -1
- package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
- package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
- package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
- package/dist/web-fetch/types.d.ts +30 -0
- package/dist/web-fetch/types.d.ts.map +1 -0
- package/dist/web-fetch/types.js +7 -0
- package/dist/web-fetch/types.js.map +1 -0
- package/dist/web-fetch/webFetchProvider.d.ts +10 -0
- package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
- package/dist/web-fetch/webFetchProvider.js +28 -0
- package/dist/web-fetch/webFetchProvider.js.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
- package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
- package/dist/web-search/fetchWebSearchProvider.js +199 -0
- package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
- package/dist/web-search/types.d.ts +46 -0
- package/dist/web-search/types.d.ts.map +1 -0
- package/dist/web-search/types.js +2 -0
- package/dist/{persona → web-search}/types.js.map +1 -1
- package/dist/web-search/webSearchProvider.d.ts +10 -0
- package/dist/web-search/webSearchProvider.d.ts.map +1 -0
- package/dist/web-search/webSearchProvider.js +30 -0
- package/dist/web-search/webSearchProvider.js.map +1 -0
- package/docs/architecture/role-pack-authoring-guide.md +243 -0
- package/docs/architecture/role-pack-spec.md +767 -0
- package/docs/memora-api-reference.md +1175 -0
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +843 -0
- package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
- package/package.json +105 -83
- package/role-packs/README.md +41 -0
- package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
- package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
- package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/project-init/SKILL.md +112 -0
- 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 +441 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/three-layer-check.md +27 -0
- package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
- 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 +48 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/persona.md +73 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/rules.md +19 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/api-doc-writer.md +40 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/doc-planner.md +42 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/nutrient-search.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/seed-finder.md +28 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/ssot-audit.md +34 -0
- package/role-packs//347/231/275/350/257/235/346/226/271/346/241/210/350/256/276/350/256/241/345/270/210/skills/style-guide.md +40 -0
- package/dist/agent/guardrail.d.ts +0 -47
- package/dist/agent/guardrail.d.ts.map +0 -1
- package/dist/agent/guardrail.js +0 -51
- package/dist/agent/guardrail.js.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
- package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
- package/dist/agent/managers/autoConfigRefiner.js +0 -150
- package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
- package/dist/agent/managers/configManager.d.ts +0 -125
- package/dist/agent/managers/configManager.d.ts.map +0 -1
- package/dist/agent/managers/configManager.js +0 -194
- package/dist/agent/managers/configManager.js.map +0 -1
- package/dist/agent/managers/insightExtractor.d.ts +0 -139
- package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
- package/dist/agent/managers/insightExtractor.js +0 -401
- package/dist/agent/managers/insightExtractor.js.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -198
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.js +0 -349
- package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
- package/dist/agent/managers/relationBuilder.d.ts +0 -131
- package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
- package/dist/agent/managers/relationBuilder.js +0 -192
- package/dist/agent/managers/relationBuilder.js.map +0 -1
- package/dist/agent/personaMatcher.d.ts +0 -29
- package/dist/agent/personaMatcher.d.ts.map +0 -1
- package/dist/agent/personaMatcher.js +0 -60
- package/dist/agent/personaMatcher.js.map +0 -1
- package/dist/agent/userFactExtractor.d.ts +0 -25
- package/dist/agent/userFactExtractor.d.ts.map +0 -1
- package/dist/agent/userFactExtractor.js +0 -81
- package/dist/agent/userFactExtractor.js.map +0 -1
- package/dist/eval/evalRunner.d.ts +0 -94
- package/dist/eval/evalRunner.d.ts.map +0 -1
- package/dist/eval/evalRunner.js +0 -141
- package/dist/eval/evalRunner.js.map +0 -1
- package/dist/eval/evalTypes.d.ts +0 -148
- package/dist/eval/evalTypes.d.ts.map +0 -1
- package/dist/eval/evalTypes.js +0 -118
- package/dist/eval/evalTypes.js.map +0 -1
- package/dist/eval/scenarios.d.ts +0 -33
- package/dist/eval/scenarios.d.ts.map +0 -1
- package/dist/eval/scenarios.js +0 -109
- package/dist/eval/scenarios.js.map +0 -1
- package/dist/llm/embedding.d.ts +0 -67
- package/dist/llm/embedding.d.ts.map +0 -1
- package/dist/llm/embedding.js +0 -184
- package/dist/llm/embedding.js.map +0 -1
- package/dist/memory/hybridMerge.d.ts +0 -54
- package/dist/memory/hybridMerge.d.ts.map +0 -1
- package/dist/memory/hybridMerge.js +0 -36
- package/dist/memory/hybridMerge.js.map +0 -1
- package/dist/memory/inMemoryRelationStore.d.ts +0 -51
- package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
- package/dist/memory/inMemoryRelationStore.js +0 -65
- package/dist/memory/inMemoryRelationStore.js.map +0 -1
- package/dist/memory/loader.d.ts +0 -49
- package/dist/memory/loader.d.ts.map +0 -1
- package/dist/memory/loader.js +0 -93
- package/dist/memory/loader.js.map +0 -1
- package/dist/memory/recall.d.ts +0 -66
- package/dist/memory/recall.d.ts.map +0 -1
- package/dist/memory/recall.js +0 -142
- package/dist/memory/recall.js.map +0 -1
- package/dist/memory/relationStore.d.ts +0 -78
- package/dist/memory/relationStore.d.ts.map +0 -1
- package/dist/memory/relationStore.js +0 -2
- package/dist/memory/relationStore.js.map +0 -1
- package/dist/memory/store.d.ts +0 -50
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js +0 -161
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/userProfile.d.ts +0 -156
- package/dist/memory/userProfile.d.ts.map +0 -1
- package/dist/memory/userProfile.js +0 -320
- package/dist/memory/userProfile.js.map +0 -1
- package/dist/memory/vectorStore.d.ts +0 -185
- package/dist/memory/vectorStore.d.ts.map +0 -1
- package/dist/memory/vectorStore.js +0 -257
- package/dist/memory/vectorStore.js.map +0 -1
- package/dist/persona/personaManager.d.ts +0 -160
- package/dist/persona/personaManager.d.ts.map +0 -1
- package/dist/persona/personaManager.js +0 -414
- package/dist/persona/personaManager.js.map +0 -1
- package/dist/persona/types.d.ts +0 -32
- package/dist/persona/types.d.ts.map +0 -1
- package/dist/persona/types.js +0 -5
package/dist/eval/evalRunner.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EvalRunner — Agent 行为评估执行器
|
|
3
|
-
*
|
|
4
|
-
* 职责:通过 createAgent 工厂构造测试条件 → 执行场景 →
|
|
5
|
-
* 收集 AgentChunk → 评估结果 → 汇总报告
|
|
6
|
-
*
|
|
7
|
-
* 设计要点:
|
|
8
|
-
* - 每个场景创建独立 Agent(通过工厂函数),避免状态污染
|
|
9
|
-
* - 场景执行后 close(),避免资源泄漏
|
|
10
|
-
* - 错误隔离:单个场景失败不中断其他场景
|
|
11
|
-
* - 超时保护:scenarioTimeoutMs 防止卡死(Promise.race + AbortController)
|
|
12
|
-
*
|
|
13
|
-
* 内核零依赖约束:仅使用 memora 内部模块,不引入新依赖。
|
|
14
|
-
*/
|
|
15
|
-
import { collectAgentChunks, evaluateResult } from './evalTypes.js';
|
|
16
|
-
/** 默认场景超时_ms */
|
|
17
|
-
const DEFAULT_SCENARIO_TIMEOUT_MS = 10_000;
|
|
18
|
-
/**
|
|
19
|
-
* Agent 行为评估执行器
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* const runner = new EvalRunner({
|
|
24
|
-
* createAgent: () => new Agent({ projectPath, provider, configDir, dataDir, ... }),
|
|
25
|
-
* scenarioTimeoutMs: 15000,
|
|
26
|
-
* });
|
|
27
|
-
* const summary = await runner.runScenarios(EVAL_SCENARIOS);
|
|
28
|
-
* console.log(`通过 ${summary.passed}/${summary.total},耗时 ${summary.durationMs}ms`);
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
export class EvalRunner {
|
|
32
|
-
/** Agent 工厂函数 */
|
|
33
|
-
#createAgent;
|
|
34
|
-
/** 单场景超时_ms */
|
|
35
|
-
#scenarioTimeoutMs;
|
|
36
|
-
constructor(opts) {
|
|
37
|
-
this.#createAgent = opts.createAgent;
|
|
38
|
-
this.#scenarioTimeoutMs = opts.scenarioTimeoutMs ?? DEFAULT_SCENARIO_TIMEOUT_MS;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* 执行单个评估场景
|
|
42
|
-
*
|
|
43
|
-
* 流程:创建 Agent → init() → chat(input) → collectAgentChunks → evaluateResult
|
|
44
|
-
*
|
|
45
|
-
* 错误隔离:任何异常(超时、Agent 抛错)都返回 passed=false 的 EvalResult,
|
|
46
|
-
* 不向上抛出,确保 runScenarios 批量执行时单个失败不中断其他场景。
|
|
47
|
-
*
|
|
48
|
-
* Agent 生命周期:每个场景执行后 close(),避免资源泄漏(try/finally 保证)。
|
|
49
|
-
*
|
|
50
|
-
* @param scenario 评估场景定义
|
|
51
|
-
* @returns 评估结果(始终返回,不抛异常)
|
|
52
|
-
*/
|
|
53
|
-
async runScenario(scenario) {
|
|
54
|
-
const agent = this.#createAgent();
|
|
55
|
-
try {
|
|
56
|
-
await agent.init();
|
|
57
|
-
const collected = await this.#runWithTimeout(agent, scenario.input);
|
|
58
|
-
return evaluateResult(scenario.name, collected, scenario.expect);
|
|
59
|
-
}
|
|
60
|
-
catch (err) {
|
|
61
|
-
// 错误隔离:返回 passed=false 的 EvalResult,不向上抛出
|
|
62
|
-
return {
|
|
63
|
-
name: scenario.name,
|
|
64
|
-
passed: false,
|
|
65
|
-
collected: {
|
|
66
|
-
toolsCalled: [],
|
|
67
|
-
recallCount: 0,
|
|
68
|
-
guardrailBlocked: false,
|
|
69
|
-
done: false,
|
|
70
|
-
},
|
|
71
|
-
failures: [
|
|
72
|
-
`场景执行异常:${err instanceof Error ? err.message : String(err)}`,
|
|
73
|
-
],
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
finally {
|
|
77
|
-
await agent.close();
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* 批量执行评估场景并汇总报告
|
|
82
|
-
*
|
|
83
|
-
* 顺序执行(非并行),每个场景创建独立 Agent,避免状态污染。
|
|
84
|
-
* 错误隔离:单个场景失败不中断其他场景(由 runScenario 保证)。
|
|
85
|
-
*
|
|
86
|
-
* @param scenarios 场景列表
|
|
87
|
-
* @returns 汇总报告
|
|
88
|
-
*/
|
|
89
|
-
async runScenarios(scenarios) {
|
|
90
|
-
const start = Date.now();
|
|
91
|
-
const results = [];
|
|
92
|
-
for (const scenario of scenarios) {
|
|
93
|
-
const result = await this.runScenario(scenario);
|
|
94
|
-
results.push(result);
|
|
95
|
-
}
|
|
96
|
-
const passed = results.filter((r) => r.passed).length;
|
|
97
|
-
const failed = results.length - passed;
|
|
98
|
-
return {
|
|
99
|
-
results,
|
|
100
|
-
passed,
|
|
101
|
-
failed,
|
|
102
|
-
total: results.length,
|
|
103
|
-
durationMs: Date.now() - start,
|
|
104
|
-
failedScenarios: results.filter((r) => !r.passed).map((r) => r.name),
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* 带超时执行单个场景的 chat
|
|
109
|
-
*
|
|
110
|
-
* 使用 Promise.race 实现超时:
|
|
111
|
-
* - 正常完成 → 返回 collected 行为数据
|
|
112
|
-
* - 超时 → reject Error(被 runScenario 的 catch 捕获)
|
|
113
|
-
*
|
|
114
|
-
* 超时后通过 AbortController.abort() 中断 agent.chat,
|
|
115
|
-
* 避免后台 generator 无限挂起。agent.close() 在 runScenario 的 finally 中调用,
|
|
116
|
-
* 确保即使超时后资源也被正确清理。
|
|
117
|
-
*/
|
|
118
|
-
async #runWithTimeout(agent, input) {
|
|
119
|
-
const controller = new AbortController();
|
|
120
|
-
let timer;
|
|
121
|
-
const timeoutPromise = new Promise((_, reject) => {
|
|
122
|
-
timer = setTimeout(() => {
|
|
123
|
-
controller.abort();
|
|
124
|
-
reject(new Error(`场景超时(${this.#scenarioTimeoutMs}ms)`));
|
|
125
|
-
}, this.#scenarioTimeoutMs);
|
|
126
|
-
});
|
|
127
|
-
const runPromise = collectAgentChunks(agent.chat(input, controller.signal));
|
|
128
|
-
// 抑制超时后 runPromise 可能产生的 unhandled rejection
|
|
129
|
-
// (超时后 agent.chat 被 abort,collectAgentChunks 可能在后台 resolve/reject,
|
|
130
|
-
// 但 Promise.race 已通过 timeoutPromise 返回,runPromise 的结果被丢弃)
|
|
131
|
-
void runPromise.catch(() => { });
|
|
132
|
-
try {
|
|
133
|
-
return await Promise.race([runPromise, timeoutPromise]);
|
|
134
|
-
}
|
|
135
|
-
finally {
|
|
136
|
-
if (timer)
|
|
137
|
-
clearTimeout(timer);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=evalRunner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evalRunner.js","sourceRoot":"","sources":["../../src/eval/evalRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/eval/evalTypes.d.ts
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent 行为评估类型定义
|
|
3
|
-
*
|
|
4
|
-
* 定义 EvalScenario 类型,用于 Agent 行为回归测试。
|
|
5
|
-
* 评估验证的是 Agent 的**行为决策**(工具调用、召回来源),
|
|
6
|
-
* 而非文本质量(文本质量由宿主项目用真实 LLM 评估)。
|
|
7
|
-
*
|
|
8
|
-
* 设计约束(详见 docs/agent-harness-增强方案-v1.0.md §3.5):
|
|
9
|
-
* - 仅使用 Mock LLM(MSW),不发起真实 API 调用
|
|
10
|
-
* - 评估运行在 CI 中,作为测试套件的一部分
|
|
11
|
-
* - 场景定义通用,不耦合任何领域逻辑
|
|
12
|
-
*/
|
|
13
|
-
import type { AgentChunk } from '../agent/types.js';
|
|
14
|
-
/**
|
|
15
|
-
* 评估场景定义
|
|
16
|
-
*
|
|
17
|
-
* 每个场景描述一个输入 + 期望的 Agent 行为,
|
|
18
|
-
* 验证召回管线、工具调用决策、护栏效果等维度。
|
|
19
|
-
*/
|
|
20
|
-
export interface EvalScenario {
|
|
21
|
-
/** 场景名称(用于测试报告) */
|
|
22
|
-
name: string;
|
|
23
|
-
/** 场景描述 */
|
|
24
|
-
description: string;
|
|
25
|
-
/** 用户输入 */
|
|
26
|
-
input: string;
|
|
27
|
-
/** 预设的召回记忆(模拟召回结果) */
|
|
28
|
-
recalledMemories?: Array<{
|
|
29
|
-
name: string;
|
|
30
|
-
content: string;
|
|
31
|
-
source: string;
|
|
32
|
-
}>;
|
|
33
|
-
/**
|
|
34
|
-
* 期望的行为特征
|
|
35
|
-
*
|
|
36
|
-
* 至少定义一项。所有检查项都通过才算场景通过。
|
|
37
|
-
*/
|
|
38
|
-
expect: EvalExpectation;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* 评估期望
|
|
42
|
-
*
|
|
43
|
-
* 定义 Agent 应该(或不应该)表现出的行为。
|
|
44
|
-
* 所有字段都是可选的——只检查有定义的字段。
|
|
45
|
-
*/
|
|
46
|
-
export interface EvalExpectation {
|
|
47
|
-
/**
|
|
48
|
-
* 期望的工具调用名列表
|
|
49
|
-
*
|
|
50
|
-
* 如果定义,Agent 在对话过程中必须至少调用这些工具。
|
|
51
|
-
* 例如:['read_file', 'search_memories']
|
|
52
|
-
*/
|
|
53
|
-
toolsCalled?: string[];
|
|
54
|
-
/**
|
|
55
|
-
* 不应调用的工具名列表
|
|
56
|
-
*
|
|
57
|
-
* 例如:不应调用 write_file 的只读场景
|
|
58
|
-
*/
|
|
59
|
-
toolsNotCalled?: string[];
|
|
60
|
-
/**
|
|
61
|
-
* 期望的召回 source 分布
|
|
62
|
-
*
|
|
63
|
-
* 验证召回管线是否排除了应排除的 source 类型。
|
|
64
|
-
* 例如:{ 'rule': 0 } 表示不应召回 rule 类型的记忆
|
|
65
|
-
*
|
|
66
|
-
* 注意:当前 collectAgentChunks 只收集 recallCount(数量),
|
|
67
|
-
* 不收集 source 分布。此字段为未来扩展预留,当前 evaluateResult 不检查。
|
|
68
|
-
* 若需验证 source 分布,请在宿主层自行实现。
|
|
69
|
-
*/
|
|
70
|
-
recallSources?: Record<string, number>;
|
|
71
|
-
/**
|
|
72
|
-
* 期望的召回记忆数量范围
|
|
73
|
-
*
|
|
74
|
-
* 验证召回管线是否返回了预期数量的记忆。
|
|
75
|
-
* 例如:{ min: 1 } 表示应至少召回 1 条记忆;
|
|
76
|
-
* { max: 0 } 表示不应召回任何记忆(空召回降级场景)。
|
|
77
|
-
*/
|
|
78
|
-
recallCount?: {
|
|
79
|
-
min?: number;
|
|
80
|
-
max?: number;
|
|
81
|
-
};
|
|
82
|
-
/**
|
|
83
|
-
* 工具调用次数范围
|
|
84
|
-
*/
|
|
85
|
-
toolCallCount?: {
|
|
86
|
-
min?: number;
|
|
87
|
-
max?: number;
|
|
88
|
-
};
|
|
89
|
-
/**
|
|
90
|
-
* 期望护栏是否阻断
|
|
91
|
-
*
|
|
92
|
-
* true 表示期望护栏触发阻断(输入或输出被 block);
|
|
93
|
-
* false 表示期望护栏不阻断;
|
|
94
|
-
* undefined 表示不检查(默认)。
|
|
95
|
-
*
|
|
96
|
-
* 与 collected.guardrailBlocked 比对,后者通过结构化标志
|
|
97
|
-
* AgentChunk.guardrailBlocked 收集,而非中文文案匹配。
|
|
98
|
-
*/
|
|
99
|
-
guardrailBlocked?: boolean;
|
|
100
|
-
/**
|
|
101
|
-
* 期望对话是否正常完成
|
|
102
|
-
*
|
|
103
|
-
* true 表示期望对话正常完成(收到 done chunk);
|
|
104
|
-
* false 表示期望对话未正常完成(如被中断、出错);
|
|
105
|
-
* undefined 表示不检查(默认)。
|
|
106
|
-
*
|
|
107
|
-
* 与 collected.done 比对。
|
|
108
|
-
*/
|
|
109
|
-
done?: boolean;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* 评估结果
|
|
113
|
-
*/
|
|
114
|
-
export interface EvalResult {
|
|
115
|
-
/** 场景名称 */
|
|
116
|
-
name: string;
|
|
117
|
-
/** 是否通过 */
|
|
118
|
-
passed: boolean;
|
|
119
|
-
/** 收集到的 Agent 行为数据 */
|
|
120
|
-
collected: {
|
|
121
|
-
toolsCalled: string[];
|
|
122
|
-
recallCount: number;
|
|
123
|
-
guardrailBlocked: boolean;
|
|
124
|
-
done: boolean;
|
|
125
|
-
};
|
|
126
|
-
/** 失败原因(如果未通过) */
|
|
127
|
-
failures: string[];
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* 从 AgentChunk 流中收集行为数据
|
|
131
|
-
*
|
|
132
|
-
* 消费 AgentLoop 的 AsyncGenerator 输出,
|
|
133
|
-
* 提取工具调用名、召回数量、护栏状态等关键信息。
|
|
134
|
-
*
|
|
135
|
-
* @param chunks AgentChunk 异步迭代器
|
|
136
|
-
* @returns 收集到的行为数据
|
|
137
|
-
*/
|
|
138
|
-
export declare function collectAgentChunks(chunks: AsyncGenerator<AgentChunk, void, unknown>): Promise<EvalResult['collected']>;
|
|
139
|
-
/**
|
|
140
|
-
* 将收集到的行为数据与期望进行比对
|
|
141
|
-
*
|
|
142
|
-
* @param name 场景名称
|
|
143
|
-
* @param collected 收集到的行为数据
|
|
144
|
-
* @param expect 期望的行为特征
|
|
145
|
-
* @returns 评估结果
|
|
146
|
-
*/
|
|
147
|
-
export declare function evaluateResult(name: string, collected: EvalResult['collected'], expect: EvalExpectation): EvalResult;
|
|
148
|
-
//# sourceMappingURL=evalTypes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evalTypes.d.ts","sourceRoot":"","sources":["../../src/eval/evalTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,gBAAgB,CAAC,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH;;;;OAIG;IACH,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE7C;;OAEG;IACH,aAAa,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAE/C;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;IACF,kBAAkB;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,GAChD,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAiClC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,EAClC,MAAM,EAAE,eAAe,GACtB,UAAU,CAgEZ"}
|
package/dist/eval/evalTypes.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent 行为评估类型定义
|
|
3
|
-
*
|
|
4
|
-
* 定义 EvalScenario 类型,用于 Agent 行为回归测试。
|
|
5
|
-
* 评估验证的是 Agent 的**行为决策**(工具调用、召回来源),
|
|
6
|
-
* 而非文本质量(文本质量由宿主项目用真实 LLM 评估)。
|
|
7
|
-
*
|
|
8
|
-
* 设计约束(详见 docs/agent-harness-增强方案-v1.0.md §3.5):
|
|
9
|
-
* - 仅使用 Mock LLM(MSW),不发起真实 API 调用
|
|
10
|
-
* - 评估运行在 CI 中,作为测试套件的一部分
|
|
11
|
-
* - 场景定义通用,不耦合任何领域逻辑
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* 从 AgentChunk 流中收集行为数据
|
|
15
|
-
*
|
|
16
|
-
* 消费 AgentLoop 的 AsyncGenerator 输出,
|
|
17
|
-
* 提取工具调用名、召回数量、护栏状态等关键信息。
|
|
18
|
-
*
|
|
19
|
-
* @param chunks AgentChunk 异步迭代器
|
|
20
|
-
* @returns 收集到的行为数据
|
|
21
|
-
*/
|
|
22
|
-
export async function collectAgentChunks(chunks) {
|
|
23
|
-
const collected = {
|
|
24
|
-
toolsCalled: [],
|
|
25
|
-
recallCount: 0,
|
|
26
|
-
guardrailBlocked: false,
|
|
27
|
-
done: false,
|
|
28
|
-
};
|
|
29
|
-
for await (const chunk of chunks) {
|
|
30
|
-
switch (chunk.type) {
|
|
31
|
-
case 'recall':
|
|
32
|
-
// recall chunk 携带 memories 数组,count 由数组长度得出
|
|
33
|
-
collected.recallCount = chunk.memories.length;
|
|
34
|
-
break;
|
|
35
|
-
case 'tool_start':
|
|
36
|
-
if (!collected.toolsCalled.includes(chunk.name)) {
|
|
37
|
-
collected.toolsCalled.push(chunk.name);
|
|
38
|
-
}
|
|
39
|
-
break;
|
|
40
|
-
case 'text':
|
|
41
|
-
// 通过结构化标志判断护栏阻断(替代中文文案子串匹配)
|
|
42
|
-
// AgentChunk.text.guardrailBlocked 由 AgentLoop 在护栏 block 时显式置 true
|
|
43
|
-
if (chunk.guardrailBlocked) {
|
|
44
|
-
collected.guardrailBlocked = true;
|
|
45
|
-
}
|
|
46
|
-
break;
|
|
47
|
-
case 'done':
|
|
48
|
-
collected.done = true;
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return collected;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 将收集到的行为数据与期望进行比对
|
|
56
|
-
*
|
|
57
|
-
* @param name 场景名称
|
|
58
|
-
* @param collected 收集到的行为数据
|
|
59
|
-
* @param expect 期望的行为特征
|
|
60
|
-
* @returns 评估结果
|
|
61
|
-
*/
|
|
62
|
-
export function evaluateResult(name, collected, expect) {
|
|
63
|
-
const failures = [];
|
|
64
|
-
// 检查工具调用
|
|
65
|
-
if (expect.toolsCalled) {
|
|
66
|
-
for (const tool of expect.toolsCalled) {
|
|
67
|
-
if (!collected.toolsCalled.includes(tool)) {
|
|
68
|
-
failures.push(`期望调用工具 "${tool}",但未调用(已调用:${collected.toolsCalled.join(', ') || '无'})`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// 检查不应调用的工具
|
|
73
|
-
if (expect.toolsNotCalled) {
|
|
74
|
-
for (const tool of expect.toolsNotCalled) {
|
|
75
|
-
if (collected.toolsCalled.includes(tool)) {
|
|
76
|
-
failures.push(`不应调用工具 "${tool}",但实际调用了`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// 检查工具调用次数
|
|
81
|
-
if (expect.toolCallCount) {
|
|
82
|
-
const count = collected.toolsCalled.length;
|
|
83
|
-
if (expect.toolCallCount.min !== undefined && count < expect.toolCallCount.min) {
|
|
84
|
-
failures.push(`工具调用次数 ${count} < 期望最小值 ${expect.toolCallCount.min}`);
|
|
85
|
-
}
|
|
86
|
-
if (expect.toolCallCount.max !== undefined && count > expect.toolCallCount.max) {
|
|
87
|
-
failures.push(`工具调用次数 ${count} > 期望最大值 ${expect.toolCallCount.max}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// 检查召回数量
|
|
91
|
-
if (expect.recallCount) {
|
|
92
|
-
if (expect.recallCount.min !== undefined && collected.recallCount < expect.recallCount.min) {
|
|
93
|
-
failures.push(`召回数量 ${collected.recallCount} < 期望最小值 ${expect.recallCount.min}`);
|
|
94
|
-
}
|
|
95
|
-
if (expect.recallCount.max !== undefined && collected.recallCount > expect.recallCount.max) {
|
|
96
|
-
failures.push(`召回数量 ${collected.recallCount} > 期望最大值 ${expect.recallCount.max}`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// 检查护栏阻断
|
|
100
|
-
if (expect.guardrailBlocked !== undefined) {
|
|
101
|
-
if (expect.guardrailBlocked !== collected.guardrailBlocked) {
|
|
102
|
-
failures.push(`期望护栏阻断=${expect.guardrailBlocked},实际=${collected.guardrailBlocked}`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// 检查完成状态
|
|
106
|
-
if (expect.done !== undefined) {
|
|
107
|
-
if (expect.done !== collected.done) {
|
|
108
|
-
failures.push(`期望完成状态=${expect.done},实际=${collected.done}`);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return {
|
|
112
|
-
name,
|
|
113
|
-
passed: failures.length === 0,
|
|
114
|
-
collected,
|
|
115
|
-
failures,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=evalTypes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evalTypes.js","sourceRoot":"","sources":["../../src/eval/evalTypes.ts"],"names":[],"mappings":"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"}
|
package/dist/eval/scenarios.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent 行为评估场景库
|
|
3
|
-
*
|
|
4
|
-
* 定义标准 EvalScenario,用于 Agent 行为回归测试。
|
|
5
|
-
* 场景定义是"期望契约"——描述 Agent 在特定输入下应有的行为特征,
|
|
6
|
-
* 由 EvalRunner 负责构造条件(MockProvider 返回值 + guardrail 规则配置)执行验证。
|
|
7
|
-
*
|
|
8
|
-
* 设计原则:
|
|
9
|
-
* - 场景通用,不耦合任何领域逻辑
|
|
10
|
-
* - 每个场景聚焦一个验证维度,失败原因可定位
|
|
11
|
-
* - input 是真实用户输入风格,非人造测试桩
|
|
12
|
-
* - expect 至少定义一项检查
|
|
13
|
-
*
|
|
14
|
-
* 当前覆盖的 EvalExpectation 维度(8 个场景):
|
|
15
|
-
* - guardrailBlocked(场景 1, 5, 7)
|
|
16
|
-
* - toolsCalled + toolsNotCalled(场景 2, 5)
|
|
17
|
-
* - toolCallCount(场景 3)
|
|
18
|
-
* - recallCount(场景 4, 8)
|
|
19
|
-
* - done(场景 6, 7, 8)
|
|
20
|
-
* - recalledMemories 预设(场景 4)
|
|
21
|
-
*
|
|
22
|
-
* 未覆盖 recallSources:当前 evaluateResult 不检查该字段(见 evalTypes.ts 注释),
|
|
23
|
-
* 待宿主层按需扩展。
|
|
24
|
-
*/
|
|
25
|
-
import type { EvalScenario } from './evalTypes.js';
|
|
26
|
-
/**
|
|
27
|
-
* 评估场景集(8 个场景)
|
|
28
|
-
*
|
|
29
|
-
* 覆盖护栏阻断 / 工具调用决策 / 调用次数范围 / 召回数量 / 完成状态 / 长输入处理六个维度。
|
|
30
|
-
* EvalRunner 实现后可在 CI 中运行这些场景作为回归基线。
|
|
31
|
-
*/
|
|
32
|
-
export declare const EVAL_SCENARIOS: readonly EvalScenario[];
|
|
33
|
-
//# sourceMappingURL=scenarios.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scenarios.d.ts","sourceRoot":"","sources":["../../src/eval/scenarios.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EA8EjD,CAAC"}
|
package/dist/eval/scenarios.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent 行为评估场景库
|
|
3
|
-
*
|
|
4
|
-
* 定义标准 EvalScenario,用于 Agent 行为回归测试。
|
|
5
|
-
* 场景定义是"期望契约"——描述 Agent 在特定输入下应有的行为特征,
|
|
6
|
-
* 由 EvalRunner 负责构造条件(MockProvider 返回值 + guardrail 规则配置)执行验证。
|
|
7
|
-
*
|
|
8
|
-
* 设计原则:
|
|
9
|
-
* - 场景通用,不耦合任何领域逻辑
|
|
10
|
-
* - 每个场景聚焦一个验证维度,失败原因可定位
|
|
11
|
-
* - input 是真实用户输入风格,非人造测试桩
|
|
12
|
-
* - expect 至少定义一项检查
|
|
13
|
-
*
|
|
14
|
-
* 当前覆盖的 EvalExpectation 维度(8 个场景):
|
|
15
|
-
* - guardrailBlocked(场景 1, 5, 7)
|
|
16
|
-
* - toolsCalled + toolsNotCalled(场景 2, 5)
|
|
17
|
-
* - toolCallCount(场景 3)
|
|
18
|
-
* - recallCount(场景 4, 8)
|
|
19
|
-
* - done(场景 6, 7, 8)
|
|
20
|
-
* - recalledMemories 预设(场景 4)
|
|
21
|
-
*
|
|
22
|
-
* 未覆盖 recallSources:当前 evaluateResult 不检查该字段(见 evalTypes.ts 注释),
|
|
23
|
-
* 待宿主层按需扩展。
|
|
24
|
-
*/
|
|
25
|
-
/**
|
|
26
|
-
* 评估场景集(8 个场景)
|
|
27
|
-
*
|
|
28
|
-
* 覆盖护栏阻断 / 工具调用决策 / 调用次数范围 / 召回数量 / 完成状态 / 长输入处理六个维度。
|
|
29
|
-
* EvalRunner 实现后可在 CI 中运行这些场景作为回归基线。
|
|
30
|
-
*/
|
|
31
|
-
export const EVAL_SCENARIOS = [
|
|
32
|
-
{
|
|
33
|
-
name: 'empty-input-guardrail',
|
|
34
|
-
description: '空输入应被输入护栏阻断(需配置匹配空白输入的 guardrail 规则)',
|
|
35
|
-
input: '',
|
|
36
|
-
expect: {
|
|
37
|
-
guardrailBlocked: true,
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
name: 'read-file-tool-call',
|
|
42
|
-
description: '用户请求读取文件时,Agent 应调用 read_file 且不调用 write_file',
|
|
43
|
-
input: '请读取 README.md 文件',
|
|
44
|
-
expect: {
|
|
45
|
-
toolsCalled: ['read_file'],
|
|
46
|
-
toolsNotCalled: ['write_file'],
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'multi-tool-call-count',
|
|
51
|
-
description: '复合请求应触发多个工具调用(读取文件 + 搜索记忆)',
|
|
52
|
-
input: '读取项目配置并搜索相关记忆',
|
|
53
|
-
expect: {
|
|
54
|
-
toolCallCount: { min: 2 },
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
name: 'recall-memory-present',
|
|
59
|
-
description: '用户提问时应有记忆召回(需预写入匹配记忆到存储)',
|
|
60
|
-
input: '根据之前的记忆,帮我回忆上次讨论的架构设计内容',
|
|
61
|
-
recalledMemories: [
|
|
62
|
-
{
|
|
63
|
-
name: '架构设计讨论',
|
|
64
|
-
content: '上次讨论了分层架构和模块解耦方案',
|
|
65
|
-
source: 'insight',
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
expect: {
|
|
69
|
-
recallCount: { min: 1 },
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: 'readonly-query-guardrail',
|
|
74
|
-
description: '只读查询场景不应调用 write_file(防止误写),且不被护栏阻断',
|
|
75
|
-
input: '查询当前项目的目录结构,列出所有文件',
|
|
76
|
-
expect: {
|
|
77
|
-
toolsNotCalled: ['write_file'],
|
|
78
|
-
guardrailBlocked: false,
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
name: 'normal-completion',
|
|
83
|
-
description: '正常对话应正常完成(收到 done 事件)',
|
|
84
|
-
input: '你好,请介绍一下自己',
|
|
85
|
-
expect: {
|
|
86
|
-
done: true,
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
name: 'long-input-handling',
|
|
91
|
-
description: '较长输入应被正常处理(不触发长度限制,不崩溃,正常完成)',
|
|
92
|
-
input: '请分析以下需求文档的可行性并给出技术方案建议:\n' +
|
|
93
|
-
'系统需要支持高并发、低延迟的实时数据处理,同时保证数据一致性。'.repeat(200),
|
|
94
|
-
expect: {
|
|
95
|
-
done: true,
|
|
96
|
-
guardrailBlocked: false,
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
name: 'empty-recall-degrade',
|
|
101
|
-
description: '无匹配记忆时不应崩溃,正常完成对话(空召回降级)',
|
|
102
|
-
input: 'asdfqwerty 无意义输入不匹配任何记忆',
|
|
103
|
-
expect: {
|
|
104
|
-
recallCount: { max: 0 },
|
|
105
|
-
done: true,
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
];
|
|
109
|
-
//# sourceMappingURL=scenarios.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scenarios.js","sourceRoot":"","sources":["../../src/eval/scenarios.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,sCAAsC;QACnD,KAAK,EAAE,EAAE;QACT,MAAM,EAAE;YACN,gBAAgB,EAAE,IAAI;SACvB;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,+CAA+C;QAC5D,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE;YACN,WAAW,EAAE,CAAC,WAAW,CAAC;YAC1B,cAAc,EAAE,CAAC,YAAY,CAAC;SAC/B;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,4BAA4B;QACzC,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE;YACN,aAAa,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;SAC1B;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,0BAA0B;QACvC,KAAK,EAAE,yBAAyB;QAChC,gBAAgB,EAAE;YAChB;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kBAAkB;gBAC3B,MAAM,EAAE,SAAS;aAClB;SACF;QACD,MAAM,EAAE;YACN,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;SACxB;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,qCAAqC;QAClD,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE;YACN,cAAc,EAAE,CAAC,YAAY,CAAC;YAC9B,gBAAgB,EAAE,KAAK;SACxB;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;SACX;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,8BAA8B;QAC3C,KAAK,EACH,2BAA2B;YAC3B,iCAAiC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/C,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,KAAK;SACxB;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,0BAA0B;QACvC,KAAK,EAAE,yBAAyB;QAChC,MAAM,EAAE;YACN,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACvB,IAAI,EAAE,IAAI;SACX;KACF;CACF,CAAC"}
|
package/dist/llm/embedding.d.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import type { EmbeddingOptions } from '../memory/vectorStore.js';
|
|
2
|
-
/**
|
|
3
|
-
* Embedding 配置(与 OpenAICompatibleConfig 共用 baseUrl/apiKey)
|
|
4
|
-
*/
|
|
5
|
-
export interface EmbeddingConfig {
|
|
6
|
-
baseUrl: string;
|
|
7
|
-
apiKey: string;
|
|
8
|
-
model: string;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* 单条 embedding 结果
|
|
12
|
-
*/
|
|
13
|
-
export interface EmbeddingResult {
|
|
14
|
-
/** 原始文本 */
|
|
15
|
-
text: string;
|
|
16
|
-
/** 向量(浮点数组,维度由模型决定) */
|
|
17
|
-
vector: number[];
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Embedding Provider
|
|
21
|
-
*
|
|
22
|
-
* 调用 /embeddings 端点将文本转为向量
|
|
23
|
-
* 支持批量嵌入和本地缓存
|
|
24
|
-
*/
|
|
25
|
-
export declare class EmbeddingProvider {
|
|
26
|
-
private readonly config;
|
|
27
|
-
/** 缓存最大条目数(LRU 上限,防止无界增长导致内存泄漏) */
|
|
28
|
-
private static readonly CACHE_MAX_SIZE;
|
|
29
|
-
/** 默认请求超时:60 秒(embedding 无流式推理,比 chat 的 120s 更短) */
|
|
30
|
-
private static readonly DEFAULT_TIMEOUT_MS;
|
|
31
|
-
/** 本地缓存:text → vector(LRU,Map 迭代顺序 = 最近访问顺序) */
|
|
32
|
-
private readonly cache;
|
|
33
|
-
constructor(config: EmbeddingConfig);
|
|
34
|
-
/**
|
|
35
|
-
* LRU 读取:命中时把条目移到末尾,标记为最近访问
|
|
36
|
-
* Map 保持插入顺序,末尾即最近访问,首部即最久未访问(淘汰候选)
|
|
37
|
-
*/
|
|
38
|
-
private getCached;
|
|
39
|
-
/**
|
|
40
|
-
* LRU 写入:超过容量时淘汰最旧条目(首部)
|
|
41
|
-
*/
|
|
42
|
-
private setCache;
|
|
43
|
-
/**
|
|
44
|
-
* 嵌入单条文本
|
|
45
|
-
* @param text 待嵌入的文本
|
|
46
|
-
* @param options 调用选项(signal 外部取消 + timeoutMs 超时)
|
|
47
|
-
* @returns 向量
|
|
48
|
-
*/
|
|
49
|
-
embed(text: string, options?: EmbeddingOptions): Promise<number[]>;
|
|
50
|
-
/**
|
|
51
|
-
* 批量嵌入多条文本
|
|
52
|
-
* OpenAI 兼容 API 支持一次请求嵌入多条文本,减少 API 调用
|
|
53
|
-
* @param texts 待嵌入的文本数组
|
|
54
|
-
* @param options 调用选项(signal 外部取消 + timeoutMs 超时)
|
|
55
|
-
* @returns 嵌入结果数组(顺序与输入一致)
|
|
56
|
-
*/
|
|
57
|
-
batchEmbed(texts: string[], options?: EmbeddingOptions): Promise<EmbeddingResult[]>;
|
|
58
|
-
/**
|
|
59
|
-
* 获取缓存大小(调试用)
|
|
60
|
-
*/
|
|
61
|
-
get cacheSize(): number;
|
|
62
|
-
/**
|
|
63
|
-
* 清空缓存
|
|
64
|
-
*/
|
|
65
|
-
clearCache(): void;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=embedding.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/llm/embedding.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAUhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAQ;IAE9C,oDAAoD;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAEpD,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;gBAExB,MAAM,EAAE,eAAe;IAEpD;;;OAGG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBxE;;;;;;OAMG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAuGzF;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB"}
|