@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
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* 小说工程目录初始化(共鸣小说家 · project-init 技能 · L3 scripts)
|
|
4
|
+
*
|
|
5
|
+
* 目录规范:编号目录 = 角色包七阶段流水线(00-需求 … 07-归档)。
|
|
6
|
+
* 设定权威源 = 03-组织/设定圣经/(承接 story-bible 四卷;正文与圣经冲突时,正文是错的)。
|
|
7
|
+
*
|
|
8
|
+
* 用法:
|
|
9
|
+
* node init-novel-project.mjs <书名> [--dir <父目录>] [--minimal] [--force]
|
|
10
|
+
*
|
|
11
|
+
* 参数:
|
|
12
|
+
* <书名> 必填。项目目录名(同时写入 README)。
|
|
13
|
+
* --dir 父目录,默认当前工作目录。
|
|
14
|
+
* --minimal 精简子集(短篇/中篇):只建 README + 设定圣经四卷 + 人物卡 + 大纲 + 正文。
|
|
15
|
+
* --force 目标目录已存在且非空时仍继续(默认中止,防覆盖已有工程)。
|
|
16
|
+
*
|
|
17
|
+
* 约定:
|
|
18
|
+
* - 中文路径一律无空格 —— Windows + git 处理含空格中文路径会乱码(血训)。
|
|
19
|
+
* - 纯 Node 内置模块,零第三方依赖(与内核同哲学)。
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { mkdir, writeFile, readdir } from 'node:fs/promises';
|
|
23
|
+
import { join, resolve, dirname } from 'node:path';
|
|
24
|
+
import { existsSync } from 'node:fs';
|
|
25
|
+
|
|
26
|
+
// ─────────────────────────────────────────────────────────────
|
|
27
|
+
// 模板(SSOT:与 story-bible / craft-review / hotspot-mapping 等技能字段对齐)
|
|
28
|
+
// 约定:模板内不使用反引号,避免与 JS 模板字面量冲突。
|
|
29
|
+
// ─────────────────────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
const T_README = (name) => `# 《${name}》
|
|
32
|
+
|
|
33
|
+
> 由「共鸣小说家」角色包的 project-init 技能初始化。
|
|
34
|
+
|
|
35
|
+
## 一句话 logline
|
|
36
|
+
|
|
37
|
+
(待填:谁 + 想要什么 + 障碍 + 代价)
|
|
38
|
+
|
|
39
|
+
## 三层定位
|
|
40
|
+
|
|
41
|
+
- **需求层**:回应什么痛点 / 读者的什么精神缺口 →
|
|
42
|
+
- **内核层**:经典人性内核(不随时代变)→
|
|
43
|
+
- **形式层**:题材 / 设定 / 文风 →
|
|
44
|
+
|
|
45
|
+
## 当前进度
|
|
46
|
+
|
|
47
|
+
- [ ] 阶段1 需求洞察与事件转换(need-finder + hotspot-mapping)
|
|
48
|
+
- [ ] 阶段2 内核锁定(core-extractor)
|
|
49
|
+
- [ ] 阶段3 一致性闸门(three-layer-check)
|
|
50
|
+
- [ ] 阶段4 概念包装(logline-craft + idea-lever)
|
|
51
|
+
- [ ] 阶段5 组织搭建(story-structure / relationship-web / character-sheet / world-builder / story-bible)
|
|
52
|
+
- [ ] 阶段6 大纲与成文(outline-expand → scene-craft)
|
|
53
|
+
- [ ] 阶段7 打磨与体检(polish-method / longform-guard / craft-review)
|
|
54
|
+
|
|
55
|
+
## 目录约定
|
|
56
|
+
|
|
57
|
+
编号目录 = 角色包七阶段流水线。设定权威源 = 03-组织/设定圣经/ —— 正文与圣经冲突时,正文是错的。
|
|
58
|
+
`;
|
|
59
|
+
|
|
60
|
+
const T_HOTSPOT = `# 热点与情绪内核
|
|
61
|
+
|
|
62
|
+
> 来源技能:need-finder + hotspot-mapping。AI 不想象共鸣——只搬运事件里已经存在的情绪。
|
|
63
|
+
|
|
64
|
+
## 热点现象
|
|
65
|
+
|
|
66
|
+
- 事件:
|
|
67
|
+
- 时间范围(须最近一周到一个月,过时热点不用):
|
|
68
|
+
- 来源平台(微博 / 知乎 / 小红书 / B 站…):
|
|
69
|
+
|
|
70
|
+
## 情绪内核(一句话感受,不是事件描述)
|
|
71
|
+
|
|
72
|
+
- 事件是壳,壳下面的情绪才带走 →
|
|
73
|
+
- 判据:是读者也在感受的(是「老实人总吃亏」,不是「某案判错了」)→
|
|
74
|
+
|
|
75
|
+
## 映射到小说世界(换事件、留内核)
|
|
76
|
+
|
|
77
|
+
- 原事件外壳 → 换成的虚构设定:
|
|
78
|
+
- 保留的人的属性(贪婪 / 恐惧 / 被看见的渴望 / 守护 / 不甘…):
|
|
79
|
+
|
|
80
|
+
## 验证三问
|
|
81
|
+
|
|
82
|
+
- [ ] 读者感到「这种情绪我熟悉」?
|
|
83
|
+
- [ ] 读者认不出原新闻(外壳换干净)?
|
|
84
|
+
- [ ] 删掉映射故事仍完整(非喧宾夺主)?
|
|
85
|
+
`;
|
|
86
|
+
|
|
87
|
+
const T_READER = `# 读者画像
|
|
88
|
+
|
|
89
|
+
- 痛点属于谁(Z世代 / 中老年 / 女性 / 男性 / 下沉市场…):
|
|
90
|
+
- 精神需求缺口(解压 / 治愈 / 共鸣 / 代偿 / 爽感):
|
|
91
|
+
- 读者在什么场景读(通勤 / 睡前 / 碎片):
|
|
92
|
+
- 验证依据(榜单 / 评论 / 标签热度):
|
|
93
|
+
- 时效性:当下红利 / 长期底色
|
|
94
|
+
`;
|
|
95
|
+
|
|
96
|
+
const T_CORE = `# 人性内核卡
|
|
97
|
+
|
|
98
|
+
> 来源技能:core-extractor。内核不随时代变——从经典提炼骨架,不抄故事。
|
|
99
|
+
|
|
100
|
+
- 内核(一句话人性命题):
|
|
101
|
+
- 经典出处与提炼方式(换时代 / 换人物 / 换冲突具象):
|
|
102
|
+
- 与需求层痛点的匹配理由:
|
|
103
|
+
- 情绪价值承诺(读者读完得到什么):
|
|
104
|
+
`;
|
|
105
|
+
|
|
106
|
+
const T_GATE = `# 三层一致性检查(闸门)
|
|
107
|
+
|
|
108
|
+
> 来源技能:three-layer-check。**硬关卡**——不过闸不进入大纲成文。
|
|
109
|
+
|
|
110
|
+
| 检查 | 判定 |
|
|
111
|
+
| --- | --- |
|
|
112
|
+
| 内核 ↔ 需求(内核回应的就是这个痛点?) | |
|
|
113
|
+
| 题材 ↔ 内核(形式由内核决定,不反过来) | |
|
|
114
|
+
| 形式 ↔ 读者(这个形式这个读者群吃得下?) | |
|
|
115
|
+
| 情绪价值 ↔ 需求缺口(交付的就是承诺的?) | |
|
|
116
|
+
|
|
117
|
+
- 结论:通过 / 不通过(不通过则回需求层或内核层重来,不许硬写)
|
|
118
|
+
`;
|
|
119
|
+
|
|
120
|
+
const T_LOGLINE = `# logline
|
|
121
|
+
|
|
122
|
+
- 一句话卖点(谁 + 想要什么 + 障碍 + 代价):
|
|
123
|
+
- 开篇方向:
|
|
124
|
+
- 候选版本(A / B / C,用 idea-lever 展开后挑):
|
|
125
|
+
`;
|
|
126
|
+
|
|
127
|
+
const T_LEVER = `# 创意杠杆候选
|
|
128
|
+
|
|
129
|
+
> 来源技能:idea-lever。方向性岔路口先穷举,作者挑选或融合——穷举不替代判断。
|
|
130
|
+
|
|
131
|
+
## 岔路口
|
|
132
|
+
|
|
133
|
+
(写明是哪一处:内核 / 开头 / 转折)
|
|
134
|
+
|
|
135
|
+
## 候选(≥3 个异质候选,各带优缺点与代价)
|
|
136
|
+
|
|
137
|
+
1. 方向:
|
|
138
|
+
- 优点:
|
|
139
|
+
- 代价:
|
|
140
|
+
2. 方向:
|
|
141
|
+
- 优点:
|
|
142
|
+
- 代价:
|
|
143
|
+
3. 方向:
|
|
144
|
+
- 优点:
|
|
145
|
+
- 代价:
|
|
146
|
+
`;
|
|
147
|
+
|
|
148
|
+
const T_STRUCTURE = `# 三幕骨架
|
|
149
|
+
|
|
150
|
+
> 来源技能:story-structure。
|
|
151
|
+
|
|
152
|
+
- **激励事件**(第一幕末,打破平衡):
|
|
153
|
+
- **中点**(第二幕中,真假胜负 / 认知反转):
|
|
154
|
+
- **高潮**(第三幕,代价最大的抉择):
|
|
155
|
+
- 纪律:每一章自问「这章冲突是升级、反转还是收束」,答不出即重写。
|
|
156
|
+
`;
|
|
157
|
+
|
|
158
|
+
const T_RELATION = `# 人物关系网
|
|
159
|
+
|
|
160
|
+
> 来源技能:relationship-web。
|
|
161
|
+
|
|
162
|
+
- 主角 ↔ 对手:价值观镜像(对手是主角的另一种可能):
|
|
163
|
+
- 关系张力清单(谁对谁有未清的账):
|
|
164
|
+
- 阵营与利益流向:
|
|
165
|
+
`;
|
|
166
|
+
|
|
167
|
+
const T_WORLD = `# 世界观
|
|
168
|
+
|
|
169
|
+
> 来源技能:world-builder。设计期工作稿——定稿后并入 03-组织/设定圣经/卷2-世界观设定.md;正文一致性以设定圣经为准。
|
|
170
|
+
|
|
171
|
+
- 时代 / 期限 / 地点 / 冲突层面(四维):
|
|
172
|
+
- 规则清单(每条规则 + 它产生的冲突):
|
|
173
|
+
- 修订记录(何时改了什么):
|
|
174
|
+
`;
|
|
175
|
+
|
|
176
|
+
const T_CHAR_TEMPLATE = `# 人物卡模板
|
|
177
|
+
|
|
178
|
+
> 来源技能:character-sheet。复制本文件为每个角色新建一份。设计期工作稿——定稿后并入 03-组织/设定圣经/卷1-人物档案.md;正文一致性以设定圣经为准。
|
|
179
|
+
|
|
180
|
+
## 人物:<名字>
|
|
181
|
+
|
|
182
|
+
- **目标(想要什么)**:
|
|
183
|
+
- **需求(真正需要什么,与目标冲突)**:
|
|
184
|
+
- **障碍(什么挡着)**:
|
|
185
|
+
- **代价(得到要付出什么)**:
|
|
186
|
+
- **缺陷(具体化,不是形容词)**:
|
|
187
|
+
- **压力下的反应方式**(幽默 / 照顾 / 外化 / 内化 / 沉默):
|
|
188
|
+
- **语言指纹**(遮住名字能认出是谁):
|
|
189
|
+
- **弧光事件**(哪几件事让他变了):
|
|
190
|
+
`;
|
|
191
|
+
|
|
192
|
+
const T_BIBLE_1 = `# 卷 1 · 人物档案
|
|
193
|
+
|
|
194
|
+
> 来源技能:story-bible。**一致性权威源**——正文与圣经冲突时,正文是错的。(设计期人物卡在 ../人物卡/,定稿后并入本卷)
|
|
195
|
+
|
|
196
|
+
## <人物名>
|
|
197
|
+
|
|
198
|
+
- 目标(当前):
|
|
199
|
+
- 动机(深层):
|
|
200
|
+
- 压力下的反应方式:
|
|
201
|
+
- 关系:<谁>(连接 / 张力 / 弧线)
|
|
202
|
+
- 状态变化:<章节> 发生了什么 → 状态如何变
|
|
203
|
+
`;
|
|
204
|
+
|
|
205
|
+
const T_BIBLE_2 = `# 卷 2 · 世界观设定
|
|
206
|
+
|
|
207
|
+
> 来源技能:story-bible。**一致性权威源**。(设计期世界观稿在 ../../世界观.md,定稿后并入本卷)
|
|
208
|
+
|
|
209
|
+
- 时代 / 期限 / 地点 / 冲突层面(四维):
|
|
210
|
+
- 规则清单:每条规则 + 它产生的冲突
|
|
211
|
+
- 修订记录:何时改了什么(防设定漂移后读者对不上)
|
|
212
|
+
`;
|
|
213
|
+
|
|
214
|
+
const T_BIBLE_3 = `# 卷 3 · 时间线
|
|
215
|
+
|
|
216
|
+
| 章节 | 关键事件 | 人物状态 | 伏笔 |
|
|
217
|
+
| --- | --- | --- | --- |
|
|
218
|
+
`;
|
|
219
|
+
|
|
220
|
+
const T_BIBLE_4 = `# 卷 4 · 伏笔台账
|
|
221
|
+
|
|
222
|
+
> 来源技能:foreshadow。埋得轻、收得重、埋收必对。
|
|
223
|
+
|
|
224
|
+
| 伏笔 | 埋设章节 | 计划回收章节 | 当前状态(待回收 / 已回收 / 悬置) |
|
|
225
|
+
| --- | --- | --- | --- |
|
|
226
|
+
`;
|
|
227
|
+
|
|
228
|
+
const T_OUTLINE = `# 大纲索引
|
|
229
|
+
|
|
230
|
+
> 来源技能:outline-expand(五级展开:一句话 → 一段 → 一幕 → 一场 → 成文)。
|
|
231
|
+
|
|
232
|
+
| 卷 | 章 | 定位(升级 / 反转 / 收束) | 状态 |
|
|
233
|
+
| --- | --- | --- | --- |
|
|
234
|
+
`;
|
|
235
|
+
|
|
236
|
+
const T_CHAPTERS = `# 正文
|
|
237
|
+
|
|
238
|
+
- 命名:第001章-标题.md(三位数补零、标题无空格)。
|
|
239
|
+
- 动笔前先读 ../03-组织/设定圣经/ 四卷 —— 不靠对话记忆,承接前文以圣经为准。
|
|
240
|
+
- 新增设定先入册再写;矛盾以圣经为准,改正文。
|
|
241
|
+
- 长篇每 5 章复盘一次:时间线 / 伏笔台账对一遍,防漂移。
|
|
242
|
+
`;
|
|
243
|
+
|
|
244
|
+
const T_REVIEW = `# 体检报告
|
|
245
|
+
|
|
246
|
+
> 来源技能:craft-review / polish-method / longform-guard。
|
|
247
|
+
|
|
248
|
+
## 四道自检
|
|
249
|
+
|
|
250
|
+
- [ ] 价值转变(每场景有好→坏 / 坏→好 / 信息揭晓)
|
|
251
|
+
- [ ] 情绪价值达成(对照需求层承诺)
|
|
252
|
+
- [ ] 留存思维(开头 3 章留人、章末有钩)
|
|
253
|
+
- [ ] 三层一致性在正文中维持
|
|
254
|
+
|
|
255
|
+
## 反 AI 叙事特征(结构层)
|
|
256
|
+
|
|
257
|
+
- [ ] 无说教点题句
|
|
258
|
+
- [ ] 有留白与支线(非闭环单线)
|
|
259
|
+
- [ ] 句长有参差(非节拍器)
|
|
260
|
+
- [ ] 主角非全能(配角 / 环境 / 巧合偶尔主导)
|
|
261
|
+
|
|
262
|
+
## 微层去AI味(字句级)
|
|
263
|
+
|
|
264
|
+
- [ ] 无「然而 / 因此 / 与此同时 / 值得注意的是」等过渡词套路
|
|
265
|
+
- [ ] 无「首先…其次…最后」规整句式
|
|
266
|
+
- [ ] 无 ≥3 个形容词堆砌
|
|
267
|
+
- [ ] 对话标签不规整(无「他微微一笑,开口说道」)
|
|
268
|
+
- [ ] 叙述者留有犹豫(结论没给满、承认不确定、克制收尾)
|
|
269
|
+
|
|
270
|
+
## 问题清单(按严重度)
|
|
271
|
+
|
|
272
|
+
1.
|
|
273
|
+
`;
|
|
274
|
+
|
|
275
|
+
const T_ARCHIVE = `# 归档
|
|
276
|
+
|
|
277
|
+
废稿与旧版本放这里,不删 —— 写作的退路。
|
|
278
|
+
`;
|
|
279
|
+
|
|
280
|
+
// ─────────────────────────────────────────────────────────────
|
|
281
|
+
// 目录规范(唯一可执行真源;SKILL.md 为其说明文档)
|
|
282
|
+
// min=true 表示 --minimal 精简子集也包含
|
|
283
|
+
// ─────────────────────────────────────────────────────────────
|
|
284
|
+
|
|
285
|
+
const STRUCTURE = [
|
|
286
|
+
{ p: '00-需求', dir: true },
|
|
287
|
+
{ p: '00-需求/热点与情绪内核.md', c: T_HOTSPOT },
|
|
288
|
+
{ p: '00-需求/读者画像.md', c: T_READER },
|
|
289
|
+
{ p: '01-内核', dir: true },
|
|
290
|
+
{ p: '01-内核/人性内核卡.md', c: T_CORE },
|
|
291
|
+
{ p: '01-内核/三层一致性检查.md', c: T_GATE },
|
|
292
|
+
{ p: '02-概念', dir: true },
|
|
293
|
+
{ p: '02-概念/logline.md', c: T_LOGLINE },
|
|
294
|
+
{ p: '02-概念/创意杠杆候选.md', c: T_LEVER },
|
|
295
|
+
{ p: '03-组织', dir: true, min: true },
|
|
296
|
+
{ p: '03-组织/三幕骨架.md', c: T_STRUCTURE },
|
|
297
|
+
{ p: '03-组织/人物关系网.md', c: T_RELATION },
|
|
298
|
+
{ p: '03-组织/世界观.md', c: T_WORLD },
|
|
299
|
+
{ p: '03-组织/人物卡', dir: true, min: true },
|
|
300
|
+
{ p: '03-组织/人物卡/人物卡模板.md', c: T_CHAR_TEMPLATE, min: true },
|
|
301
|
+
{ p: '03-组织/设定圣经', dir: true, min: true },
|
|
302
|
+
{ p: '03-组织/设定圣经/卷1-人物档案.md', c: T_BIBLE_1, min: true },
|
|
303
|
+
{ p: '03-组织/设定圣经/卷2-世界观设定.md', c: T_BIBLE_2, min: true },
|
|
304
|
+
{ p: '03-组织/设定圣经/卷3-时间线.md', c: T_BIBLE_3, min: true },
|
|
305
|
+
{ p: '03-组织/设定圣经/卷4-伏笔台账.md', c: T_BIBLE_4, min: true },
|
|
306
|
+
{ p: '04-大纲', dir: true, min: true },
|
|
307
|
+
{ p: '04-大纲/大纲索引.md', c: T_OUTLINE, min: true },
|
|
308
|
+
{ p: '05-正文', dir: true, min: true },
|
|
309
|
+
{ p: '05-正文/README.md', c: T_CHAPTERS, min: true },
|
|
310
|
+
{ p: '06-体检', dir: true },
|
|
311
|
+
{ p: '06-体检/体检报告模板.md', c: T_REVIEW },
|
|
312
|
+
{ p: '07-归档', dir: true },
|
|
313
|
+
{ p: '07-归档/README.md', c: T_ARCHIVE },
|
|
314
|
+
];
|
|
315
|
+
|
|
316
|
+
// ─────────────────────────────────────────────────────────────
|
|
317
|
+
// 参数解析
|
|
318
|
+
// ─────────────────────────────────────────────────────────────
|
|
319
|
+
|
|
320
|
+
const argv = process.argv.slice(2);
|
|
321
|
+
|
|
322
|
+
if (argv.length === 0 || argv.includes('--help') || argv.includes('-h')) {
|
|
323
|
+
printUsage();
|
|
324
|
+
process.exit(argv.length === 0 ? 1 : 0);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
const flags = new Set();
|
|
328
|
+
const options = {};
|
|
329
|
+
const positional = [];
|
|
330
|
+
|
|
331
|
+
for (let i = 0; i < argv.length; i++) {
|
|
332
|
+
const arg = argv[i];
|
|
333
|
+
if (arg === '--minimal' || arg === '--force') {
|
|
334
|
+
flags.add(arg);
|
|
335
|
+
} else if (arg === '--dir') {
|
|
336
|
+
options.dir = argv[++i];
|
|
337
|
+
} else {
|
|
338
|
+
positional.push(arg);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
const bookName = positional[0];
|
|
343
|
+
if (!bookName) {
|
|
344
|
+
console.error('✗ 缺少书名。用法见 --help');
|
|
345
|
+
process.exit(1);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// 安全校验:书名不含空格 / 路径分隔符(Windows + git 中文空格路径会乱码)
|
|
349
|
+
if (/\s/.test(bookName)) {
|
|
350
|
+
console.error(`✗ 书名不能含空格(Windows + git 处理含空格中文路径会乱码)→ 建议改用:${bookName.replace(/\s+/g, '-')}`);
|
|
351
|
+
process.exit(1);
|
|
352
|
+
}
|
|
353
|
+
if (bookName.includes('/') || bookName.includes('\\') || bookName === '.' || bookName === '..') {
|
|
354
|
+
console.error('✗ 书名不能含路径分隔符或为 . / ..');
|
|
355
|
+
process.exit(1);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
const parentDir = options.dir ? resolve(options.dir) : process.cwd();
|
|
359
|
+
const targetDir = join(parentDir, bookName);
|
|
360
|
+
|
|
361
|
+
// 目标目录非空保护
|
|
362
|
+
if (existsSync(targetDir)) {
|
|
363
|
+
const existing = await readdir(targetDir);
|
|
364
|
+
if (existing.length > 0 && !flags.has('--force')) {
|
|
365
|
+
console.error(`✗ 目标目录已存在且非空:${targetDir}\n 加 --force 可继续(已存在文件会跳过,不覆盖)。`);
|
|
366
|
+
process.exit(1);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
// ─────────────────────────────────────────────────────────────
|
|
371
|
+
// 生成
|
|
372
|
+
// ─────────────────────────────────────────────────────────────
|
|
373
|
+
|
|
374
|
+
const minimal = flags.has('--minimal');
|
|
375
|
+
const plan = minimal ? STRUCTURE.filter((e) => e.min) : STRUCTURE;
|
|
376
|
+
|
|
377
|
+
const created = [];
|
|
378
|
+
const skipped = [];
|
|
379
|
+
|
|
380
|
+
// 项目根目录
|
|
381
|
+
await mkdir(targetDir, { recursive: true });
|
|
382
|
+
|
|
383
|
+
// README(门面,两种模式都要)
|
|
384
|
+
const readmePath = join(targetDir, 'README.md');
|
|
385
|
+
if (existsSync(readmePath) && !flags.has('--force')) {
|
|
386
|
+
skipped.push('README.md');
|
|
387
|
+
} else {
|
|
388
|
+
await writeFile(readmePath, T_README(bookName), 'utf-8');
|
|
389
|
+
created.push('README.md');
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
for (const entry of plan) {
|
|
393
|
+
const full = join(targetDir, entry.p);
|
|
394
|
+
if (entry.dir) {
|
|
395
|
+
await mkdir(full, { recursive: true });
|
|
396
|
+
created.push(entry.p + '/');
|
|
397
|
+
continue;
|
|
398
|
+
}
|
|
399
|
+
await mkdir(dirname(full), { recursive: true });
|
|
400
|
+
if (existsSync(full) && !flags.has('--force')) {
|
|
401
|
+
skipped.push(entry.p);
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
404
|
+
await writeFile(full, entry.c, 'utf-8');
|
|
405
|
+
created.push(entry.p);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// ─────────────────────────────────────────────────────────────
|
|
409
|
+
// 输出
|
|
410
|
+
// ─────────────────────────────────────────────────────────────
|
|
411
|
+
|
|
412
|
+
console.log(`\n✓ 小说工程已初始化:${targetDir}`);
|
|
413
|
+
console.log(` 模式:${minimal ? '精简(--minimal)' : '完整(七阶段)'}`);
|
|
414
|
+
console.log(`\n 已创建 ${created.length} 项:`);
|
|
415
|
+
for (const c of created) console.log(` + ${c}`);
|
|
416
|
+
if (skipped.length > 0) {
|
|
417
|
+
console.log(`\n 跳过 ${skipped.length} 项(已存在,未覆盖):`);
|
|
418
|
+
for (const s of skipped) console.log(` - ${s}`);
|
|
419
|
+
}
|
|
420
|
+
const nextStep = minimal
|
|
421
|
+
? '先填 03-组织/设定圣经/ 四卷(人物档案 / 世界观 / 时间线 / 伏笔台账),再进 04-大纲 与 05-正文。'
|
|
422
|
+
: '先填 00-需求/热点与情绪内核.md(搜热点 → 提情绪内核 → 映射进小说世界)。';
|
|
423
|
+
console.log(`\n 下一步:${nextStep}\n`);
|
|
424
|
+
|
|
425
|
+
function printUsage() {
|
|
426
|
+
console.log(`小说工程目录初始化(共鸣小说家 · project-init)
|
|
427
|
+
|
|
428
|
+
用法:
|
|
429
|
+
node init-novel-project.mjs <书名> [--dir <父目录>] [--minimal] [--force]
|
|
430
|
+
|
|
431
|
+
参数:
|
|
432
|
+
<书名> 必填。项目目录名,不得含空格(Windows + git 中文空格路径会乱码)。
|
|
433
|
+
--dir 父目录,默认当前工作目录。
|
|
434
|
+
--minimal 精简子集(短篇/中篇):README + 人物卡 + 设定圣经四卷 + 大纲 + 正文。
|
|
435
|
+
--force 目标目录非空时仍继续(已存在文件跳过,不覆盖)。
|
|
436
|
+
|
|
437
|
+
示例:
|
|
438
|
+
node init-novel-project.mjs 长夜将尽 --dir ./novels
|
|
439
|
+
node init-novel-project.mjs 春雨 --minimal
|
|
440
|
+
`);
|
|
441
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: relationship-web
|
|
3
|
+
description: 人物关系网与对手设计:关系=冲突容器,每条关系有连接/张力/弧线,对手是主角的价值观镜像
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# relationship-web:人物关系网与对手
|
|
7
|
+
|
|
8
|
+
## 用途
|
|
9
|
+
|
|
10
|
+
人物单卡(character-sheet)回答"这个人是谁",关系网回答"**这些人的冲突从哪来**"——关系就是冲突的容器,没有关系网的人物是散沙。
|
|
11
|
+
|
|
12
|
+
## 每条关系的三要素
|
|
13
|
+
|
|
14
|
+
对关系网中的**每一条连接**(主角↔某人)都定义三件事:
|
|
15
|
+
|
|
16
|
+
1. **连接**:这两个人彼此要什么?(利益/情感/亏欠/秘密)
|
|
17
|
+
2. **张力**:什么让他们摩擦?(价值观冲突 / 立场对立 / 旧账未清 / 想靠近又怕)
|
|
18
|
+
3. **弧线**:关系怎么变?(敌对→并肩 / 亲密→背叛 / 敬重→祛魅 / 依赖→独立)
|
|
19
|
+
|
|
20
|
+
**没有张力或弧线的连接 = 删掉**——它只是通讯录,不是故事。
|
|
21
|
+
|
|
22
|
+
## 关系网构图
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
中心人物:<主角>
|
|
26
|
+
| 关系对象 | 连接(要什么) | 张力(磨什么) | 弧线(怎么变) |
|
|
27
|
+
|---------|--------------|--------------|--------------|
|
|
28
|
+
| <对手> | | | |
|
|
29
|
+
| <盟友> | | | |
|
|
30
|
+
| <家人> | | | |
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
关系网密度原则:**主角身边 3-5 条有效关系**——过密是编剧室,过疏是独角戏。
|
|
34
|
+
|
|
35
|
+
## 对手/压力源设计
|
|
36
|
+
|
|
37
|
+
- **对手不是反派**:反派是"作恶的",对手是"**最该拦路的人**"——他拦路有他的理由,读者能理解甚至共情;
|
|
38
|
+
- **价值观镜像**:对手是主角的"另一种可能"——同样的起点、相反的答案(主角选择相信,对手选择算计)——冲突因此是价值观之战,不是正邪之战;
|
|
39
|
+
- 每条主线冲突都应该能追到一个"**站在对面的具体的人**",而不是"命运/社会/系统"——系统做背景,人做对手。
|
|
40
|
+
|
|
41
|
+
## 校验清单
|
|
42
|
+
|
|
43
|
+
- [ ] 每条关系都有连接、张力、弧线三要素?
|
|
44
|
+
- [ ] 无张力/弧线的连接已删?
|
|
45
|
+
- [ ] 主角身边 3-5 条有效关系?
|
|
46
|
+
- [ ] 对手是"最该拦路的人"且读者能理解他的理由?
|
|
47
|
+
- [ ] 对手与主角是价值观镜像?
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scene-craft
|
|
3
|
+
description: 场景写作方法论:每场景价值转变、进入/退出时机、无转变场景即删
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# scene-craft:场景写作
|
|
7
|
+
|
|
8
|
+
## 用途
|
|
9
|
+
|
|
10
|
+
故事的最小构成单位是**场景**,不是章节。场景是"价值在某时某地发生变化"——写场景就是管理价值转变。
|
|
11
|
+
|
|
12
|
+
## 场景公式
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
[人物] 在 [地点/时间] 想要 [目标],发生 [冲突],价值从 A 转到 B
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**价值转变**:好→坏 / 坏→好 / 知晓→困惑 / 信任→怀疑 / 亲密→疏远……每场景结束,至少一个价值**变了**。没变的场景是"发生了事",不是场景。
|
|
19
|
+
|
|
20
|
+
## 写场景五问(动笔前)
|
|
21
|
+
|
|
22
|
+
1. 这个场景从什么价值开始?(起点)
|
|
23
|
+
2. 人物在此**想要什么**?(目标,与全局目标有关联)
|
|
24
|
+
3. 冲突是什么?(对目标的反作用力,必须来自"对面的具体的人")
|
|
25
|
+
4. 结束时价值**转到哪**?(终点,且比起点更极端或反转)
|
|
26
|
+
5. 如果删掉这个场景,读者会**丢失什么**?(答"什么也不丢" = 删)
|
|
27
|
+
|
|
28
|
+
## 进入/退出时机
|
|
29
|
+
|
|
30
|
+
- **进入要晚**:从冲突即将爆发处进入,不写铺垫(太阳落山→人物坐到窗前→叹气→……全砍,直接从"门被踹开"进入);
|
|
31
|
+
- **退出要早**:价值转变完成就收尾,不留余味句("她望着远方,若有所思" = 废话,砍);
|
|
32
|
+
- 场景间的**因果衔接**:退出处的"转变结果"就是下一场景的"进入原因"。
|
|
33
|
+
|
|
34
|
+
## 无转变场景处理
|
|
35
|
+
|
|
36
|
+
- **信息传递**:把信息压缩进有转变的场景(角色一边冲突一边说),不单独开场景播报;
|
|
37
|
+
- **世界观展示**:世界观的展示必须有"人物在场景里使用它"(不是旁白介绍);
|
|
38
|
+
- **过渡场景**:用一句话衔接替代整段("三个月后,他回来了")。
|
|
39
|
+
|
|
40
|
+
## 校验清单
|
|
41
|
+
|
|
42
|
+
- [ ] 场景有价值转变(好↔坏/知↔惑/信↔疑)?
|
|
43
|
+
- [ ] 人物目标与冲突明确?
|
|
44
|
+
- [ ] 进入晚、退出早?
|
|
45
|
+
- [ ] 删掉会丢失东西?
|
|
46
|
+
- [ ] 场景间因果衔接?
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: story-bible
|
|
3
|
+
description: 设定圣经:长篇一致性档案——人物/世界观/时间线/伏笔统一存档,AI 协作刚需
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# story-bible:设定圣经
|
|
7
|
+
|
|
8
|
+
## 用途
|
|
9
|
+
|
|
10
|
+
长篇小说的**一致性总账**。写 50 章后,前文的设定/人物状态/伏笔必须还能查得到、对得上——尤其 AI 协作时,圣经是"前文"的唯一权威来源,不靠模型记忆。
|
|
11
|
+
|
|
12
|
+
## 四卷圣经
|
|
13
|
+
|
|
14
|
+
### 卷 1:人物档案
|
|
15
|
+
|
|
16
|
+
```markdown
|
|
17
|
+
<人物名>
|
|
18
|
+
- 目标(当前):
|
|
19
|
+
- 动机(深层):
|
|
20
|
+
- 压力下的反应方式:
|
|
21
|
+
- 关系:<谁>(连接/张力/弧线)
|
|
22
|
+
- 状态变化:<章节> 发生了什么 → 状态如何变
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 卷 2:世界观设定
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
- 时代 / 期限 / 地点 / 冲突层面(四维)
|
|
29
|
+
- 规则清单:每条规则 + 它产生的冲突
|
|
30
|
+
- 修订记录:何时改了什么(防止设定漂移后读者对不上)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 卷 3:时间线
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
| 章节 | 关键事件 | 人物状态 | 伏笔 |
|
|
37
|
+
|------|---------|---------|------|
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 卷 4:伏笔台账
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
| 伏笔 | 埋设章节 | 计划回收章节 | 当前状态(待回收/已回收/悬置) |
|
|
44
|
+
|------|---------|------------|------------------------------|
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## AI 协作纪律
|
|
48
|
+
|
|
49
|
+
1. **动笔前先读圣经**(read_file)——不靠对话记忆,承接前文以圣经为准;
|
|
50
|
+
2. **新增设定先入册再写**——正文写到新设定,先补进对应卷再落笔;
|
|
51
|
+
3. **矛盾以圣经为准**——正文与圣经冲突时,正文是错的,改正文;
|
|
52
|
+
4. **每 5 章复盘一次**:时间线/伏笔台账对一遍,防漂移。
|
|
53
|
+
|
|
54
|
+
## 校验清单
|
|
55
|
+
|
|
56
|
+
- [ ] 四卷齐全且最新?
|
|
57
|
+
- [ ] 新增设定已入册?
|
|
58
|
+
- [ ] 伏笔台账无遗漏(埋了没登记)?
|
|
59
|
+
- [ ] 时间线无矛盾?
|
|
60
|
+
- [ ] 动笔前读了圣经?
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: story-structure
|
|
3
|
+
description: 三幕结构与情节点规划:起承转合、激励事件、中点、高潮
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# story-structure:三幕结构与情节点规划
|
|
7
|
+
|
|
8
|
+
## 用途
|
|
9
|
+
|
|
10
|
+
把「一个想法」变成「有起承转合的故事骨架」。用于长篇规划与单章定位。
|
|
11
|
+
|
|
12
|
+
## 三幕骨架
|
|
13
|
+
|
|
14
|
+
| 幕 | 内容 | 关键节点 |
|
|
15
|
+
|----|------|---------|
|
|
16
|
+
| 第一幕(开头 25%) | 建立世界、引出主角、抛出「想要什么」 | **激励事件**:打破日常的那件事 |
|
|
17
|
+
| 第二幕(中间 50%) | 主角为达成目标行动,遭遇升级的阻碍 | **中点**:一次不可逆的转变 |
|
|
18
|
+
| 第三幕(结尾 25%) | 冲突收束、代价清算、主题落地 | **高潮**:主角必须做出抉择 |
|
|
19
|
+
|
|
20
|
+
## 情节点设计流程
|
|
21
|
+
|
|
22
|
+
1. **主角目标**:一句话——「他想要__,因为__」;
|
|
23
|
+
2. **激励事件**:哪件事让目标无法再拖延?
|
|
24
|
+
3. **中点反转**:主角在中间得到/失去什么,让后半程不可逆?
|
|
25
|
+
4. **高潮抉择**:主角被迫在「两个都想要但只能选一个」之间选什么?
|
|
26
|
+
5. **代价**:选择后失去什么?(无代价的选择 = 无张力)
|
|
27
|
+
|
|
28
|
+
## 单章定位
|
|
29
|
+
|
|
30
|
+
每一章回答:这一章,冲突是**升级**、**反转**还是**收束**?答不出就重写该章。
|
|
31
|
+
|
|
32
|
+
## 校验清单
|
|
33
|
+
|
|
34
|
+
- [ ] 激励事件足够「打破日常」?
|
|
35
|
+
- [ ] 中点是否不可逆?
|
|
36
|
+
- [ ] 高潮是抉择而非巧合?
|