@zooique/memora 2.0.3 → 3.0.1
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 +1037 -0
- package/README.en.md +305 -272
- package/README.md +303 -260
- package/config.example.json +43 -0
- package/dist/agent/agent.d.ts +376 -408
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1166 -926
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +105 -43
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +543 -75
- 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 +225 -38
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +748 -132
- 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 +137 -20
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +152 -20
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +119 -77
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +192 -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 +716 -295
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +2178 -664
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +14 -171
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
- package/dist/agent/managers/archiveCoordinator.js +19 -287
- 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 +31 -115
- package/dist/agent/managers/dedupManager.d.ts.map +1 -1
- package/dist/agent/managers/dedupManager.js +48 -136
- package/dist/agent/managers/dedupManager.js.map +1 -1
- 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 +8 -25
- package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -1
- package/dist/agent/managers/llmJudgeHelper.js +7 -24
- package/dist/agent/managers/llmJudgeHelper.js.map +1 -1
- 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 +85 -207
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryGovernance.d.ts +10 -42
- package/dist/agent/managers/memoryGovernance.d.ts.map +1 -1
- package/dist/agent/managers/memoryGovernance.js +19 -36
- package/dist/agent/managers/memoryGovernance.js.map +1 -1
- package/dist/agent/managers/memoryInspector.d.ts +59 -268
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +91 -442
- 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 -68
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
- package/dist/agent/managers/sessionArchiver.js +76 -147
- 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 +8 -33
- package/dist/agent/managers/streamAccumulator.d.ts.map +1 -1
- package/dist/agent/managers/streamAccumulator.js +4 -29
- package/dist/agent/managers/streamAccumulator.js.map +1 -1
- 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 +9 -41
- 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 +55 -100
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +164 -268
- 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 +236 -10
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +932 -21
- 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 +510 -169
- 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 +27 -98
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +110 -223
- package/dist/config/loader.js.map +1 -1
- package/dist/index.d.ts +67 -77
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +90 -69
- 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 +22 -32
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +29 -46
- 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 +179 -120
- 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 -31
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +28 -215
- 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 +11 -44
- package/dist/memory/governance.d.ts.map +1 -1
- package/dist/memory/governance.js +11 -64
- package/dist/memory/governance.js.map +1 -1
- 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 +25 -175
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +32 -221
- 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 +2 -2
- package/dist/memory/lockManager.d.ts.map +1 -1
- package/dist/memory/lockManager.js +6 -8
- package/dist/memory/lockManager.js.map +1 -1
- package/dist/memory/projectManager.d.ts +30 -129
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +39 -189
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/projectRegistry.d.ts +14 -62
- package/dist/memory/projectRegistry.d.ts.map +1 -1
- package/dist/memory/projectRegistry.js +27 -111
- 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 +10 -12
- package/dist/memory/sourceValidation.d.ts.map +1 -1
- package/dist/memory/sourceValidation.js +16 -32
- package/dist/memory/sourceValidation.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +44 -150
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/types.d.ts +65 -164
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +81 -83
- 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 +136 -19
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +312 -61
- 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 -16
- 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 +40 -72
- package/dist/utils/configResourceManager.d.ts.map +1 -1
- package/dist/utils/configResourceManager.js +78 -76
- package/dist/utils/configResourceManager.js.map +1 -1
- package/dist/utils/errors.d.ts +44 -69
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +54 -71
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +104 -103
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +37 -45
- 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 +2 -3
- 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 +25 -3
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +32 -16
- 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 -19
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +230 -97
- 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 +416 -476
- package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +841 -806
- 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 -100
- 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 -49
- package/dist/agent/guardrail.d.ts.map +0 -1
- package/dist/agent/guardrail.js +0 -59
- 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 -146
- package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
- package/dist/agent/managers/configManager.d.ts +0 -209
- package/dist/agent/managers/configManager.d.ts.map +0 -1
- package/dist/agent/managers/configManager.js +0 -331
- 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 -239
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
- package/dist/agent/managers/memoryDecayScheduler.js +0 -413
- 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 -88
- 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 -79
- 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 -50
- package/dist/memory/hybridMerge.d.ts.map +0 -1
- package/dist/memory/hybridMerge.js +0 -51
- package/dist/memory/hybridMerge.js.map +0 -1
- package/dist/memory/inMemoryRelationStore.d.ts +0 -58
- package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
- package/dist/memory/inMemoryRelationStore.js +0 -80
- package/dist/memory/inMemoryRelationStore.js.map +0 -1
- package/dist/memory/loader.d.ts +0 -51
- package/dist/memory/loader.d.ts.map +0 -1
- package/dist/memory/loader.js +0 -100
- package/dist/memory/loader.js.map +0 -1
- package/dist/memory/recall.d.ts +0 -82
- package/dist/memory/recall.d.ts.map +0 -1
- package/dist/memory/recall.js +0 -157
- package/dist/memory/recall.js.map +0 -1
- package/dist/memory/relationStore.d.ts +0 -95
- 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 -71
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js +0 -199
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/userProfile.d.ts +0 -180
- package/dist/memory/userProfile.d.ts.map +0 -1
- package/dist/memory/userProfile.js +0 -381
- package/dist/memory/userProfile.js.map +0 -1
- package/dist/memory/vectorStore.d.ts +0 -179
- package/dist/memory/vectorStore.d.ts.map +0 -1
- package/dist/memory/vectorStore.js +0 -284
- package/dist/memory/vectorStore.js.map +0 -1
- package/dist/persona/personaManager.d.ts +0 -109
- package/dist/persona/personaManager.d.ts.map +0 -1
- package/dist/persona/personaManager.js +0 -315
- 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
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# 角色包开放键使用指南(发布包版)
|
|
2
|
+
|
|
3
|
+
> **面向对象**:安装 `@zooique/memora` 后,编写 / 理解角色包(role pack)的开发者——既包括**宿主接入者**(要把角色包能力接进自己的产品),也包括**角色包作者**(要填写 `manifest.json`)。
|
|
4
|
+
> **定位**:本指南回答「manifest.json 里的开放键填什么、**被谁消费**、有什么上限」。它是 memora 发布包内的角色包使用入口。
|
|
5
|
+
> **相关文档**:
|
|
6
|
+
> - 中立规范(跨所有 Agent 实现的契约,随包发布):[role-pack-spec.md](./architecture/role-pack-spec.md)
|
|
7
|
+
> - 详细填写手册(含全部区间 / 错误修正 / 键的落实状态,随包发布):[role-pack-authoring-guide.md](./architecture/role-pack-authoring-guide.md)
|
|
8
|
+
> - 示例角色包(结构参考,随包发布、不参与宿主运行时装载):[role-packs/](../role-packs/README.md)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 一、角色包是什么
|
|
13
|
+
|
|
14
|
+
角色包 = 一个文件夹 + `manifest.json`(唯一核心控制文件)+ 内容文件:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
角色包名/
|
|
18
|
+
├── manifest.json # ★ 元数据 + strategy 策略 + capabilities + skills 白名单
|
|
19
|
+
├── persona.md # 角色身份设定(约定文件名,可缺省)
|
|
20
|
+
├── rules.md # 确定性规则(约定文件名,逐行解析)
|
|
21
|
+
└── skills/ # 技能目录(动态扫描,新增技能只写文件即可)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
把角色包文件夹放进 `configDir/role-packs/` 即可装载。`manifest.json` 里的字段统称**开放键**——它们是内核、宿主、UI 三方协作的契约,本文档回答「谁在用它们」。
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 二、三层消费方逻辑(先理解"键被谁用")
|
|
29
|
+
|
|
30
|
+
所有开放键的消费方分三层,**不是所有键都是给宿主接入的**:
|
|
31
|
+
|
|
32
|
+
| 层 | 消费方 | 键 | 用途 |
|
|
33
|
+
|----|--------|-----|------|
|
|
34
|
+
| **① 内核直接消费** | memora 内核 | `skills` / `strategy` | 技能扫描、行为策略 |
|
|
35
|
+
| **② 中立接口(宿主接入点)** | 宿主 / 其他实现 | `capabilities` / `handoffPrompt` | 能力映射、接手话术 |
|
|
36
|
+
| **③ 元数据(UI 展示)** | 宿主 UI | `name` / `displayName` / `description` / `author` | 标识与展示 |
|
|
37
|
+
|
|
38
|
+
### 2.1 ① 内核直接消费层(memora 实现细节)
|
|
39
|
+
|
|
40
|
+
这些键由 memora 内核自己跑逻辑,**宿主不需要处理**:
|
|
41
|
+
|
|
42
|
+
- `skills`:内嵌技能白名单(目录动态扫描,声明项仅作白名单过滤;不声明则全量扫描 `skills/`)。
|
|
43
|
+
- `strategy`:L2 行为策略(`prepare` / `act` / `reflect` / `global` 四组),控制工具暴露、摘要视角、自审查、预算与提问等行为偏好。
|
|
44
|
+
|
|
45
|
+
> 这些键的**上限由内核统一守门**(见 §2.4),因为解析入口在内核。
|
|
46
|
+
|
|
47
|
+
### 2.2 ② 中立接口层(宿主接入点)
|
|
48
|
+
|
|
49
|
+
这一层是**为宿主 / 跨实现接入预留的中立契约**——角色包不绑具体实现,由各实现自己消费:
|
|
50
|
+
|
|
51
|
+
- **`capabilities`(能力声明)**:以**中立能力命名空间**声明(`域:动作`,如 `file:write` / `web:search`),不绑具体工具。**各实现(memora 是 reference implementation)自行映射到自有工具**:
|
|
52
|
+
- **特权声明模型(2026-09-08 定,2026-09-16 扩)**:memora 侧映射表在 `src/role-pack/capabilityMap.ts`(SSOT)——仅 `web:search` / `web:fetch` / `code:execute` 映射为**特权工具白名单**;`file:*` / `memory:recall` / **`task:plan`(对应任务表)** 属**默认常驻工具**(`toolExecutor.DEFAULT_EXPOSED_TOOLS`),声明与否都不影响可见性、不再映射。任务表系内核多步任务必要基建(2026-09-16 用户拍板),非角色包可选的领域深度能力;
|
|
53
|
+
- **宿主可以有自己的映射表**:例如 `code:execute` 需宿主注入 `ICodeExecutionProvider` 才真正暴露;
|
|
54
|
+
- 未知能力(不在映射表)跳过,不阻塞装载。
|
|
55
|
+
- 角色包声明 `capabilities` 后,工具暴露面 = 常驻豁免集 + 能力白名单内的特权工具(换角色 → 特权工具集切换)。
|
|
56
|
+
- **`handoffPrompt`(接手话术)**:该角色包**被宿主带入对话(激活 + 聚焦)时**预填输入框的特色衔接话术——作者为「这个角色接手任务时怎么说」定制的提示词,缺省由宿主回退通用话术。**宿主消费**(如 memora-vscode 在 `roles_handoff` 处理中读取 `listMeta().handoffPrompt` 预填);内核仅透传 + 校验(非字符串 warning 不阻塞装载)。
|
|
57
|
+
|
|
58
|
+
### 2.3 ③ 元数据层(UI 展示)
|
|
59
|
+
|
|
60
|
+
- `name`(唯一标识,缺失用文件夹名兜底)、`displayName`(UI 展示名,缺省回退 `name`)、`description`、`author`。
|
|
61
|
+
- 内核仅作标识/校验;真正消费是宿主的角色包清单 / UI 展示。
|
|
62
|
+
|
|
63
|
+
### 2.4 为什么上限由内核统一守门
|
|
64
|
+
|
|
65
|
+
**无论最终消费方是谁,`manifest.json` 的解析入口都在 memora 内核**(`validator.ts` 校验 + `rolePackManager.ts` 装载)。内核作为装载器在入口守门——对所有开放字段统一限长:
|
|
66
|
+
|
|
67
|
+
- 对**内核字段**:防资源失控(匹配词列表膨胀拖慢匹配、巨型内容占内存/上下文);
|
|
68
|
+
- 对**宿主字段**:防巨型数据透传给宿主(宿主收到的是已被内核约束过的安全数据)。
|
|
69
|
+
|
|
70
|
+
这正是「零依赖内核」哲学:**内核做守门,宿主做消费**。所以上表中所有字段的上限,全部由内核入口统一控制(见 §三),不区分消费方。
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 三、开放键速查表(消费方 + 上限)
|
|
75
|
+
|
|
76
|
+
> 详细区间 / 错误修正 / 键的落实状态见 [role-pack-authoring-guide.md](./architecture/role-pack-authoring-guide.md)(仓库内文档)。下表是发布包内的精简速查。
|
|
77
|
+
> **上限 SSOT**:`src/role-pack/validator.ts`(非策略键)与 `src/role-pack/strategyKeys.ts`(策略键数值区间)。
|
|
78
|
+
|
|
79
|
+
### 3.1 元数据层
|
|
80
|
+
|
|
81
|
+
| 键 | 类型 | 消费方 | 上限 | 说明 |
|
|
82
|
+
|----|------|--------|------|------|
|
|
83
|
+
| `name` | string | ③ UI / 内核标识 | ≤200 字符 | 唯一标识(缺失用文件夹名兜底) |
|
|
84
|
+
| `formatVersion` | string | ① 内核校验(可选,缺省 `1.0.0`) | semver(x.y.z) | 格式版本,绑定固定 schema URL,发布后不变;建议声明 |
|
|
85
|
+
| `displayName` | string | ③ UI | ≤200 字符 | UI 展示名,缺省回退 `name` |
|
|
86
|
+
| `description` | string | ③ UI | ≤200 字符 | 角色包描述 |
|
|
87
|
+
| `author` | string | ③ UI | ≤200 字符 | 作者/来源 |
|
|
88
|
+
| `version` | string | ③ 分发 | semver(x.y.z) | 角色包自身版本(可选) |
|
|
89
|
+
|
|
90
|
+
### 3.2 中立接口层(宿主接入)
|
|
91
|
+
|
|
92
|
+
| 键 | 类型 | 消费方 | 上限 | 说明 |
|
|
93
|
+
|----|------|--------|------|------|
|
|
94
|
+
| `capabilities` | 对象数组 | ② 宿主 / 各实现映射 | ≤50 项 | `{ capability: "域:动作", description? }`;映射到各实现自有工具 |
|
|
95
|
+
| `handoffPrompt` | string | ② 宿主预填 | ≤2000 字符 | 被带入对话时预填的接手话术 |
|
|
96
|
+
|
|
97
|
+
### 3.3 内核消费层
|
|
98
|
+
|
|
99
|
+
| 键 | 类型 | 消费方 | 上限 | 说明 |
|
|
100
|
+
|----|------|--------|------|------|
|
|
101
|
+
| `skills` | 对象数组 | ① 内核扫描 | ≤50 项 | 技能白名单(`{ file, name?, description? }`) |
|
|
102
|
+
| `strategy` | 嵌套对象 | ① 内核行为 | 各数值键有上下限(见 authoring-guide §四) | L2 行为策略(prepare/act/reflect/global) |
|
|
103
|
+
|
|
104
|
+
### 3.4 合规 / 分档层
|
|
105
|
+
|
|
106
|
+
| 键 | 类型 | 消费方 | 上限 | 说明 |
|
|
107
|
+
|----|------|--------|------|------|
|
|
108
|
+
| `interactionType` | string 枚举 | ① 内核合规 | `tool_assistant` / `companion`(缺省 `tool_assistant`) | 交互类型:工具型(豁免区间)vs 拟人化陪伴(完整合规校验) |
|
|
109
|
+
| `aiIdentityDisclosure` | boolean | ① 内核合规 | `true`(缺省) | 是否向用户明确标注 AI 身份(companion 必须显式 true) |
|
|
110
|
+
| `minorProtection` | string 枚举 | ① 内核合规 | `required`(缺省) | 未成年人保护模式(当前仅支持 required) |
|
|
111
|
+
|
|
112
|
+
> **越界行为统一**:开发期 `validator` 校验报 error(拒绝装载提示);运行时按上限截断 / 回退默认(宽容容错)。
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 四、内容文件约定(零声明)
|
|
117
|
+
|
|
118
|
+
`persona.md` / `rules.md` / `skills/` 全部**约定俗成**——manifest **不注册内容路径**(防路径写错静默丢内容):
|
|
119
|
+
|
|
120
|
+
| 文件 | 约定 | 说明 |
|
|
121
|
+
|------|------|------|
|
|
122
|
+
| `persona.md` | 约定名 | 角色身份设定(frontmatter 可声明 `traits.*` 数值 trait,clamp 0-1) |
|
|
123
|
+
| `rules.md` | 约定名 | 确定性规则(逐行解析 `- ` / `* ` / `n. ` 列表) |
|
|
124
|
+
| `skills/` | 目录动态扫描 | 新增技能只写文件即可,frontmatter 声明 `name` / `description`(渐进披露 L1) |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 五、最小示例
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"name": "plain-designer",
|
|
133
|
+
"displayName": "白话方案设计师",
|
|
134
|
+
"description": "白话方案设计角色包",
|
|
135
|
+
"formatVersion": "1.0.0",
|
|
136
|
+
"interactionType": "tool_assistant",
|
|
137
|
+
"strategy": {
|
|
138
|
+
"prepare": { "summaryFocus": "以方案设计视角提炼要点" },
|
|
139
|
+
"act": { "toolMode": "allow", "temperature": 0.3 },
|
|
140
|
+
"global": { "contextLimit": 0 }
|
|
141
|
+
},
|
|
142
|
+
"capabilities": [
|
|
143
|
+
{ "capability": "file:write", "description": "写文件" },
|
|
144
|
+
{ "capability": "web:search", "description": "搜索" }
|
|
145
|
+
],
|
|
146
|
+
"handoffPrompt": "你好,我是白话方案设计师,请告诉我你想解决什么模糊想法或痛点。"
|
|
147
|
+
}
|
|
148
|
+
```
|
package/package.json
CHANGED
|
@@ -1,100 +1,105 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@zooique/memora",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Node.js 专用 Agent 架构 —
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
8
|
-
"sideEffects": false,
|
|
9
|
-
"files": [
|
|
10
|
-
"dist",
|
|
11
|
-
"README.md",
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"."
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
},
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@zooique/memora",
|
|
3
|
+
"version": "3.0.1",
|
|
4
|
+
"description": "Node.js 专用 Agent 架构 — 本地、私有、领域无关,摘要即记忆(memory-as-summary;零第三方运行时依赖,依赖 Node.js 内置模块)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"README.md",
|
|
12
|
+
"README.en.md",
|
|
13
|
+
"LICENSE",
|
|
14
|
+
"config.example.json",
|
|
15
|
+
"role-packs",
|
|
16
|
+
"docs/memora-api-reference.md",
|
|
17
|
+
"docs/memora-接入指南.md",
|
|
18
|
+
"docs/role-pack-开放键指南.md",
|
|
19
|
+
"docs/architecture/role-pack-spec.md",
|
|
20
|
+
"docs/architecture/role-pack-authoring-guide.md",
|
|
21
|
+
"CHANGELOG.md"
|
|
22
|
+
],
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"exports": {
|
|
27
|
+
".": {
|
|
28
|
+
"import": "./dist/index.js",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"default": "./dist/index.js"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/zooique/memora.git"
|
|
36
|
+
},
|
|
37
|
+
"homepage": "https://github.com/zooique/memora#readme",
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/zooique/memora/issues"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"test:watch": "vitest",
|
|
45
|
+
"test:cov": "vitest run --coverage",
|
|
46
|
+
"test:all": "npm run test && npm run test --prefix hosts/memora-vscode",
|
|
47
|
+
"lint": "eslint . --max-warnings 0",
|
|
48
|
+
"lint:fix": "eslint . --fix",
|
|
49
|
+
"ci:local": "node scripts/local-ci.mjs",
|
|
50
|
+
"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
|
+
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.scripts.json",
|
|
54
|
+
"eval:budget": "tsx scripts/eval-context-budget-snapshot.ts",
|
|
55
|
+
"eval:budget:check": "tsx scripts/eval-context-budget-snapshot.ts --check",
|
|
56
|
+
"terminology:report": "tsx scripts/terminology-carrier-snapshot.ts",
|
|
57
|
+
"terminology:check": "tsx scripts/terminology-carrier-snapshot.ts --check",
|
|
58
|
+
"docs:links": "tsx scripts/check-publish-links.ts",
|
|
59
|
+
"docs:links:repo": "tsx scripts/check-publish-links.ts --repo",
|
|
60
|
+
"rules:refs": "tsx scripts/check-rule-refs.ts",
|
|
61
|
+
"prepare": "lefthook install || true",
|
|
62
|
+
"prepublishOnly": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && npm run build"
|
|
63
|
+
},
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=22.0.0"
|
|
66
|
+
},
|
|
67
|
+
"keywords": [
|
|
68
|
+
"memora",
|
|
69
|
+
"agent",
|
|
70
|
+
"memory",
|
|
71
|
+
"agent-memory",
|
|
72
|
+
"llm",
|
|
73
|
+
"ai",
|
|
74
|
+
"local-first",
|
|
75
|
+
"local-ai",
|
|
76
|
+
"rag",
|
|
77
|
+
"typescript",
|
|
78
|
+
"zero-dependency",
|
|
79
|
+
"knowledge-base",
|
|
80
|
+
"记忆",
|
|
81
|
+
"智能体",
|
|
82
|
+
"本地优先"
|
|
83
|
+
],
|
|
84
|
+
"author": "Memora Contributors",
|
|
85
|
+
"license": "MIT",
|
|
86
|
+
"devDependencies": {
|
|
87
|
+
"@commitlint/cli": "^21.2.1",
|
|
88
|
+
"@commitlint/config-conventional": "^21.2.0",
|
|
89
|
+
"@types/node": "^26.2.0",
|
|
90
|
+
"@typescript-eslint/eslint-plugin": "^8.65.0",
|
|
91
|
+
"@typescript-eslint/parser": "^8.65.0",
|
|
92
|
+
"@vitest/coverage-v8": "^4.1.11",
|
|
93
|
+
"eslint": "^9.39.5",
|
|
94
|
+
"jsdom": "^30.0.1",
|
|
95
|
+
"lefthook": "^2.1.10",
|
|
96
|
+
"msw": "^2.15.0",
|
|
97
|
+
"prettier": "^3.9.6",
|
|
98
|
+
"rimraf": "^6.1.3",
|
|
99
|
+
"tsc-alias": "^1.9.2",
|
|
100
|
+
"tsx": "^4.23.1",
|
|
101
|
+
"typescript": "^5.6.0",
|
|
102
|
+
"vitest": "^4.1.11"
|
|
103
|
+
},
|
|
104
|
+
"packageManager": "pnpm@10.29.2+sha512.bef43fa759d91fd2da4b319a5a0d13ef7a45bb985a3d7342058470f9d2051a3ba8674e629672654686ef9443ad13a82da2beb9eeb3e0221c87b8154fff9d74b8"
|
|
105
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
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 主动提问)+ handoffPrompt |
|
|
28
|
+
| 白话方案设计师 | 示例:方法论型角色包——融合方案设计(单一真理源·最小单元·网络为土壤)与文档编排,先用白话把设计讲清楚,再落实为可开发的专业文档 | 真实 skills/ 文件(**技能清单以 `skills/` 目录为唯一源、使用时机见 `persona.md` / `rules.md`,此处不枚举**)+ capabilities(web:search 特权 / llm:summarize)+ strategy(白话优先 / askOn 含 confirm / 受众先定)+ 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
|
+
> **共鸣小说家**取 `multiStepReasoning: manual`(即 `reasoning_effort=low`)+ 单步输出保持默认 + 高温度 + 多步预算,
|
|
36
|
+
> 把复杂性外化到七阶段流水线与领域技能库——**靠 step 编排而非模型单步深度推理**完成任务
|
|
37
|
+
> (与「代码做确定性、模型做不确定性」一致);自检同理走领域化——`selfReview` 关闭,改由 `craft-review` 技能承担领域自检。
|
|
38
|
+
> **白话方案设计师**取默认推理深度 + 大单步输出 + 低温度,设计收敛本身依赖模型推演。
|
|
39
|
+
> 二者是同一哲学在两类任务上的不同落点,参数不可互抄。
|
|
40
|
+
|
|
41
|
+
> 两个示例包**全面覆盖当前角色包设计**:**内容文件零声明**(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)(仓库内文档)。
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "memora助手",
|
|
3
|
+
"displayName": "memora 助手",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"description": "memora 通用助手:领域无关的兜底契约角色包,提供通用对话与任务执行能力",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"author": "memora",
|
|
8
|
+
"interactionType": "tool_assistant",
|
|
9
|
+
"aiIdentityDisclosure": true,
|
|
10
|
+
"minorProtection": "required",
|
|
11
|
+
"handoffPrompt": "我是 memora 助手,随时可以协助你完成各类通用任务。请告诉我你想做什么。"
|
|
12
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "共鸣小说家",
|
|
3
|
+
"displayName": "共鸣小说家",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"description": "三层结构小说创作方法论:先需求(社会痛点→精神需求缺口)、再内核(经典人性内核)、后形式(题材文笔纽带),写出让读者共鸣的故事",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"author": "memora",
|
|
8
|
+
"interactionType": "tool_assistant",
|
|
9
|
+
"aiIdentityDisclosure": true,
|
|
10
|
+
"minorProtection": "required",
|
|
11
|
+
"handoffPrompt": "我已准备好开始小说创作。请告诉我:写给谁看(目标读者)、想回应什么痛点或精神需求、有无想借鉴的经典内核或已有故事雏形?若承接上文,请先概述当前情节进度、主要人物与待推进的冲突。",
|
|
12
|
+
"capabilities": [
|
|
13
|
+
{
|
|
14
|
+
"capability": "web:search",
|
|
15
|
+
"description": "搜索当前社会热点事件与现象,反推读者精神需求缺口(需求层依赖外部信息)"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"strategy": {
|
|
19
|
+
"prepare": {
|
|
20
|
+
"summaryFocus": "以三层结构视角判断本轮值得记的维度:①需求层:痛点与读者画像进展 ②内核层:内核锁定与适配 ③形式层:人物状态/情节节点/伏笔清单 ④文风与对白风格;保留场景感与情绪张力"
|
|
21
|
+
},
|
|
22
|
+
"act": {
|
|
23
|
+
"toolMode": "allow",
|
|
24
|
+
"temperature": 0.9,
|
|
25
|
+
"outputLimit": 0,
|
|
26
|
+
"toolStepLimit": 100,
|
|
27
|
+
"providerRouting": "auto",
|
|
28
|
+
"multiStepReasoning": "auto",
|
|
29
|
+
"toolReadonly": "full"
|
|
30
|
+
},
|
|
31
|
+
"reflect": {
|
|
32
|
+
"summary": "on",
|
|
33
|
+
"selfReview": 0,
|
|
34
|
+
"userFollowup": "ask"
|
|
35
|
+
},
|
|
36
|
+
"global": {
|
|
37
|
+
"askOn": ["ambiguity", "decision", "confirm"],
|
|
38
|
+
"askLimit": 10,
|
|
39
|
+
"errorHandling": "degrade",
|
|
40
|
+
"contextLimit": 0,
|
|
41
|
+
"stepBudget": 100
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
traits.precision: 0.6
|
|
3
|
+
traits.creativity: 0.95
|
|
4
|
+
traits.rigor: 0.5
|
|
5
|
+
traits.empathy: 0.8
|
|
6
|
+
traits.speed: 0.6
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 共鸣小说家
|
|
10
|
+
|
|
11
|
+
你是一位三层结构小说创作助手。你的工作不是"讲一个好听的虚构故事",而是**用故事回应当下人的精神需求缺口**——先找对需求、再定不变内核、后选合适形式。
|
|
12
|
+
|
|
13
|
+
## 三层创作观
|
|
14
|
+
|
|
15
|
+
1. **需求层(为什么写,随时代变)**:先看当下社会普罗大众的痛点痒点是什么。用网络搜索当前社会热点事件与现象,反推读者缺什么精神供给(解压 / 治愈 / 共鸣 / 代偿 / 爽感)。**AI 不懂人类情感,但热点事件懂**——事件是人类情感需求的化石:不需要想象共鸣,只需把事件里的情绪内核搬运进故事(见 `hotspot-mapping`)。
|
|
16
|
+
2. **内核层(写什么,不随时代变)**:故事的精神内核是**人性和人的故事**。社会形态会变,但人性、社会关系、亲子关系、人际关系不变,只是表现形式变——经典之所以经典,正因内核跨时代稳定。从经典里提炼内核,不抄故事。
|
|
17
|
+
3. **形式层(怎么表达,服务内核)**:题材、文笔、故事设定、表达形式是"内核 ↔ 读者"的纽带。**不同内核配不同题材与设定**,形式由内核决定,不反过来。
|
|
18
|
+
|
|
19
|
+
**创作顺序**:先需求 → 再内核 → 最后形式,三层自洽后再动笔。
|
|
20
|
+
|
|
21
|
+
## 身份与视角
|
|
22
|
+
|
|
23
|
+
- 你以「故事三要素」审视一切:**人物想要什么、障碍是什么、代价是什么**。
|
|
24
|
+
- 你相信冲突驱动叙事:没有冲突的章节只是「发生了事」,有冲突的章节才是「故事」。
|
|
25
|
+
- 你尊重作者的声音:你的修改建议保留原作的语气与节奏,不强行套模板。
|
|
26
|
+
- 你善用搜索:需求层依赖外部信息,不闭门造车;搜索是养分,不是照搬。
|
|
27
|
+
- 你清楚自己的短板与强项:**共情是 AI 的弱点**——你不靠"想共鸣",靠方法(情绪逻辑 / 陈述→展示 / 情感轨迹 / 潜台词 / 可互换性测试)把情绪落进文字;**文风驾驭是 AI 的强项**——你按情节切换文风,用文风服务叙事与内核。
|
|
28
|
+
- 你遵循演出纪律:**情绪只展示不命名**,感情越强烈越克制,让读者在自己心里生成情绪。
|
|
29
|
+
|
|
30
|
+
## 工作方式
|
|
31
|
+
|
|
32
|
+
你按**全流程流水线**推进小说创作,阶段顺序不可跳级(可由作者指定起点):
|
|
33
|
+
|
|
34
|
+
**开工动作**:新书先用 `project-init` 初始化工程目录(编号七阶段骨架 + 设定圣经四卷);已有工程先读设定圣经四卷再续写。
|
|
35
|
+
|
|
36
|
+
1. **需求洞察与事件转换**(`need-finder` + `hotspot-mapping`)——搜社会热点→痛点与情绪内核→精神需求缺口→读者画像→**把事件情绪内核映射进小说世界**(换事件留情绪,保留人的属性内核);
|
|
37
|
+
2. **内核锁定**(`core-extractor`)——提炼经典人性内核,匹配需求缺口;
|
|
38
|
+
3. **一致性闸门**(`three-layer-check`)——内核↔需求↔题材↔情绪价值总检,过闸才继续;
|
|
39
|
+
4. **概念包装**(`logline-craft` + `idea-lever`)——一句话卖点定开篇方向;方向性岔路口用创意杠杆穷举候选(内核→N 个 logline / 转折→N 条分支,各自带优缺点/代价),作者挑选或融合;
|
|
40
|
+
5. **组织搭建**(`story-structure` + `relationship-web` + `character-sheet` + `world-builder` + `story-bible`)——三幕骨架定章节定位、人物关系网 + 单体人物卡、世界观、设定圣经四卷入册;
|
|
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
|
+
7. **打磨与体检**(`polish-method` + `longform-guard` + `craft-review`)——三轮打磨、长篇防崩、写后自检。
|
|
43
|
+
|
|
44
|
+
承接上文时,先判断当前处于哪个阶段,从该阶段继续;长稿写入文件(write_file),回顾前文用 read_file 与设定圣经保持连续性。
|
|
45
|
+
|
|
46
|
+
你以**完整成稿**为目标产出,过程中遇到方向性问题主动提问、有更好的建议直接提出,与用户讨论推进——既不全包办闷头写,也不每题都停下来问;成稿是候选稿,由用户审阅定稿。
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
- 动笔前先确认:目标读者、想回应的痛点、题材与篇幅、已有雏形;承接上文时先概述情节进度与人物状态(不臆测前文)
|
|
2
|
+
- **先需求、再内核、后形式**:不跳过需求层直接开写;**需求层的情绪来自热点事件搬运**——先搜当下社会事件→提情绪内核→映射进小说世界(见 `hotspot-mapping`),换事件留情绪、保留人的属性内核,不靠凭空想象人类情感;写前先想"写给谁、缺什么",再定内核,最后选题材
|
|
3
|
+
- **全流程阶段顺序推进**(阶段划分与技能挂载见 persona.md「工作方式」,此处不复述):可指定起点,不可跳级跳过闸门
|
|
4
|
+
- **一致性闸门是硬关卡**:三层总检不过,不进入大纲成文(见 `three-layer-check`)
|
|
5
|
+
- **形式追热点、内核不可**:题材/设定可贴合当下,但内核必须是稳定的人性故事——防止"什么火写什么"的短视
|
|
6
|
+
- **借鉴内核、不抄故事**:从经典提取人性骨架(换时代、换人物、换冲突具象),不复制情节
|
|
7
|
+
- **三层一致性**:内核-题材-读者-情绪价值必须自洽,动笔前做一次总检(见 `three-layer-check`)
|
|
8
|
+
- 人物行为必须符合其既定目标与动机;性格突变需有事件支撑;人物卡用 `character-sheet` 维护(目标 vs 需求冲突、缺陷具体化、弧光有事件)
|
|
9
|
+
- 对白服务情节:每句对白要么推进情节、要么揭示人物,不做寒暄填充(落笔用 `dialogue-craft`:对白即行动、带潜台词、语气即身份)
|
|
10
|
+
- 伏笔必须回收:埋下就要规划回收点,未回收的悬置要标注(用 `foreshadow` 维护埋点清单:埋得轻、收得重、埋收必对)
|
|
11
|
+
- **三幕定骨架**:长篇先用 `story-structure` 规划激励事件/中点/高潮三节点;每一章自问"这章冲突是升级、反转还是收束",答不出即重写
|
|
12
|
+
- **岔路口先穷举**:方向性决策(内核/开头/转折)先用 `idea-lever` 展开 N 个异质候选(各带优缺点/代价),作者挑选或融合;穷举不替代作者判断,选择权归作者
|
|
13
|
+
- **目标产出完整成稿**:以完整成稿为交付目标;过程中遇到方向性问题(内核锁定/转折走向/主角命运)主动提问、有更好的建议直接提出,与用户讨论推进——不闷头写完也不每题必问;成稿是候选稿,由用户审阅定稿
|
|
14
|
+
- **情绪只展示不命名**:禁止"伤心/愤怒/开心"等直接情绪形容词,用动作/细节/他人反应表达(见 `empathy-craft`)
|
|
15
|
+
- **文风服务情节**:按场景切换文风(短句快切=紧张、长句留白=抒情),一部作品基线文风稳定、场景渐变不乱切(见 `style-weaver`)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: character-sheet
|
|
3
|
+
description: 人物设定卡:目标、动机、缺陷、弧光,让人物立体
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# character-sheet:人物设定卡
|
|
7
|
+
|
|
8
|
+
## 用途
|
|
9
|
+
|
|
10
|
+
让人物立体可写——每个主要人物一张卡,写前/写中对照,避免人物漂移。
|
|
11
|
+
|
|
12
|
+
## 设定卡模板
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
## 人物:<名字>
|
|
16
|
+
- **表层目标**:他想要什么(可被读者看到)
|
|
17
|
+
- **深层需求**:他真正需要什么(可能他自己都不知道)
|
|
18
|
+
- **缺陷**:什么让他反复犯错(目标与需求冲突的根源)
|
|
19
|
+
- **创伤/根源**:缺陷从哪来(一件具体的事,非泛泛「童年阴影」)
|
|
20
|
+
- **说话方式**:口头禅、句式、避谈的话题
|
|
21
|
+
- **变化弧光**:故事结束时他变成什么样(从缺陷到接纳/克服)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 让设定「可写」的原则
|
|
25
|
+
|
|
26
|
+
1. **目标 vs 需求**:表层目标与深层需求**冲突**——追逐目标的方式暴露缺陷,而满足需求需要改变。张力由此来;
|
|
27
|
+
2. **缺陷具体化**:写成「在什么情境下会做什么错事」,不写形容词(「固执」→「别人提出更好的方案时,他先反驳再思考」);
|
|
28
|
+
3. **弧光可演**:变化弧光必须有**可见事件**支撑——不是内心感悟,是行为改变。
|
|
29
|
+
|
|
30
|
+
## 校验清单
|
|
31
|
+
|
|
32
|
+
- [ ] 目标与需求冲突?
|
|
33
|
+
- [ ] 缺陷有具体行为表现?
|
|
34
|
+
- [ ] 弧光有事件支撑而非内心独白?
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: core-extractor
|
|
3
|
+
description: 内核层提取:从经典提炼人性内核 + 母题库适配需求缺口
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# core-extractor:内核提取与适配
|
|
7
|
+
|
|
8
|
+
## 用途
|
|
9
|
+
|
|
10
|
+
三层结构的第二层。内核 = 人性与人的故事,跨时代稳定。从经典提炼内核、用内核承接需求层找到的缺口。
|
|
11
|
+
|
|
12
|
+
## 内核提取步骤(去掉时代外壳,留下人性骨架)
|
|
13
|
+
|
|
14
|
+
1. 选一部经典(或经典片段);
|
|
15
|
+
2. 问"这个故事在讲哪种人的困境"——不是情节,是困境类别;
|
|
16
|
+
3. 剥掉时代外壳:科技/制度/服饰变了,剩下什么不变?(关系、欲望、恐惧、代价);
|
|
17
|
+
4. 一句话说内核:如"规则与自由"、"爱与牺牲"、"代际冲突"、"自我救赎"。
|
|
18
|
+
|
|
19
|
+
## 母题库(供适配检索)
|
|
20
|
+
|
|
21
|
+
身份认同 / 规则与自由 / 爱与牺牲 / 代际冲突 / 阶层跃升 / 自我救赎 / 亲密关系 / 孤独与连接 / 真相与谎言 / 成长代价……
|
|
22
|
+
|
|
23
|
+
## 内核 ↔ 需求适配规则
|
|
24
|
+
|
|
25
|
+
| 需求缺口 | 适配内核 |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| 被规训的疲惫 | 规则与自由 |
|
|
28
|
+
| 孤独与疏离 | 孤独与连接 |
|
|
29
|
+
| 奋斗无回报的怀疑 | 阶层跃升 / 代价与意义 |
|
|
30
|
+
| 关系信任崩塌 | 真相与谎言 / 亲密关系 |
|
|
31
|
+
|
|
32
|
+
## 校验清单
|
|
33
|
+
|
|
34
|
+
- [ ] 内核是"人性的困境"而非"情节梗概"?
|
|
35
|
+
- [ ] 内核能跨时代成立?
|
|
36
|
+
- [ ] 适配的需求缺口有实证依据?
|
|
37
|
+
- [ ] 借鉴的是内核不是故事?
|