@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.
Files changed (588) hide show
  1. package/CHANGELOG.md +1037 -0
  2. package/README.en.md +305 -272
  3. package/README.md +303 -260
  4. package/config.example.json +43 -0
  5. package/dist/agent/agent.d.ts +376 -408
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +1166 -926
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/assembler.d.ts +105 -43
  10. package/dist/agent/assembler.d.ts.map +1 -1
  11. package/dist/agent/assembler.js +543 -75
  12. package/dist/agent/assembler.js.map +1 -1
  13. package/dist/agent/budget.d.ts +131 -0
  14. package/dist/agent/budget.d.ts.map +1 -0
  15. package/dist/agent/budget.js +128 -0
  16. package/dist/agent/budget.js.map +1 -0
  17. package/dist/agent/builtinToolHandlers.d.ts +225 -38
  18. package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
  19. package/dist/agent/builtinToolHandlers.js +748 -132
  20. package/dist/agent/builtinToolHandlers.js.map +1 -1
  21. package/dist/agent/builtinTools.d.ts +198 -7
  22. package/dist/agent/builtinTools.d.ts.map +1 -1
  23. package/dist/agent/builtinTools.js +646 -14
  24. package/dist/agent/builtinTools.js.map +1 -1
  25. package/dist/agent/compaction.d.ts +93 -0
  26. package/dist/agent/compaction.d.ts.map +1 -0
  27. package/dist/agent/compaction.js +192 -0
  28. package/dist/agent/compaction.js.map +1 -0
  29. package/dist/agent/constants.d.ts +137 -20
  30. package/dist/agent/constants.d.ts.map +1 -1
  31. package/dist/agent/constants.js +152 -20
  32. package/dist/agent/constants.js.map +1 -1
  33. package/dist/agent/contextManager.d.ts +119 -77
  34. package/dist/agent/contextManager.d.ts.map +1 -1
  35. package/dist/agent/contextManager.js +192 -135
  36. package/dist/agent/contextManager.js.map +1 -1
  37. package/dist/agent/contextPreparer.d.ts +78 -0
  38. package/dist/agent/contextPreparer.d.ts.map +1 -0
  39. package/dist/agent/contextPreparer.js +128 -0
  40. package/dist/agent/contextPreparer.js.map +1 -0
  41. package/dist/agent/duplicateInterceptor.d.ts +67 -0
  42. package/dist/agent/duplicateInterceptor.d.ts.map +1 -0
  43. package/dist/agent/duplicateInterceptor.js +82 -0
  44. package/dist/agent/duplicateInterceptor.js.map +1 -0
  45. package/dist/agent/guardRail.d.ts +166 -0
  46. package/dist/agent/guardRail.d.ts.map +1 -0
  47. package/dist/agent/guardRail.js +333 -0
  48. package/dist/agent/guardRail.js.map +1 -0
  49. package/dist/agent/loop.d.ts +716 -295
  50. package/dist/agent/loop.d.ts.map +1 -1
  51. package/dist/agent/loop.js +2178 -664
  52. package/dist/agent/loop.js.map +1 -1
  53. package/dist/agent/managers/archiveCoordinator.d.ts +14 -171
  54. package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -1
  55. package/dist/agent/managers/archiveCoordinator.js +19 -287
  56. package/dist/agent/managers/archiveCoordinator.js.map +1 -1
  57. package/dist/agent/managers/chatLockManager.d.ts +20 -88
  58. package/dist/agent/managers/chatLockManager.d.ts.map +1 -1
  59. package/dist/agent/managers/chatLockManager.js +31 -103
  60. package/dist/agent/managers/chatLockManager.js.map +1 -1
  61. package/dist/agent/managers/dedupManager.d.ts +31 -115
  62. package/dist/agent/managers/dedupManager.d.ts.map +1 -1
  63. package/dist/agent/managers/dedupManager.js +48 -136
  64. package/dist/agent/managers/dedupManager.js.map +1 -1
  65. package/dist/agent/managers/goalConsistencyChecker.d.ts +42 -0
  66. package/dist/agent/managers/goalConsistencyChecker.d.ts.map +1 -0
  67. package/dist/agent/managers/goalConsistencyChecker.js +178 -0
  68. package/dist/agent/managers/goalConsistencyChecker.js.map +1 -0
  69. package/dist/agent/managers/llmCaller.d.ts +124 -0
  70. package/dist/agent/managers/llmCaller.d.ts.map +1 -0
  71. package/dist/agent/managers/llmCaller.js +417 -0
  72. package/dist/agent/managers/llmCaller.js.map +1 -0
  73. package/dist/agent/managers/llmJudgeHelper.d.ts +8 -25
  74. package/dist/agent/managers/llmJudgeHelper.d.ts.map +1 -1
  75. package/dist/agent/managers/llmJudgeHelper.js +7 -24
  76. package/dist/agent/managers/llmJudgeHelper.js.map +1 -1
  77. package/dist/agent/managers/loopMetrics.d.ts +58 -0
  78. package/dist/agent/managers/loopMetrics.d.ts.map +1 -0
  79. package/dist/agent/managers/loopMetrics.js +68 -0
  80. package/dist/agent/managers/loopMetrics.js.map +1 -0
  81. package/dist/agent/managers/memoryAdvisor.d.ts +27 -120
  82. package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
  83. package/dist/agent/managers/memoryAdvisor.js +85 -207
  84. package/dist/agent/managers/memoryAdvisor.js.map +1 -1
  85. package/dist/agent/managers/memoryGovernance.d.ts +10 -42
  86. package/dist/agent/managers/memoryGovernance.d.ts.map +1 -1
  87. package/dist/agent/managers/memoryGovernance.js +19 -36
  88. package/dist/agent/managers/memoryGovernance.js.map +1 -1
  89. package/dist/agent/managers/memoryInspector.d.ts +59 -268
  90. package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
  91. package/dist/agent/managers/memoryInspector.js +91 -442
  92. package/dist/agent/managers/memoryInspector.js.map +1 -1
  93. package/dist/agent/managers/roundSummaryGenerator.d.ts +56 -0
  94. package/dist/agent/managers/roundSummaryGenerator.d.ts.map +1 -0
  95. package/dist/agent/managers/roundSummaryGenerator.js +201 -0
  96. package/dist/agent/managers/roundSummaryGenerator.js.map +1 -0
  97. package/dist/agent/managers/sessionArchiver.d.ts +19 -68
  98. package/dist/agent/managers/sessionArchiver.d.ts.map +1 -1
  99. package/dist/agent/managers/sessionArchiver.js +76 -147
  100. package/dist/agent/managers/sessionArchiver.js.map +1 -1
  101. package/dist/agent/managers/sessionManager.d.ts +286 -57
  102. package/dist/agent/managers/sessionManager.d.ts.map +1 -1
  103. package/dist/agent/managers/sessionManager.js +846 -85
  104. package/dist/agent/managers/sessionManager.js.map +1 -1
  105. package/dist/agent/managers/sessionNamer.d.ts +35 -0
  106. package/dist/agent/managers/sessionNamer.d.ts.map +1 -0
  107. package/dist/agent/managers/sessionNamer.js +104 -0
  108. package/dist/agent/managers/sessionNamer.js.map +1 -0
  109. package/dist/agent/managers/streamAccumulator.d.ts +8 -33
  110. package/dist/agent/managers/streamAccumulator.d.ts.map +1 -1
  111. package/dist/agent/managers/streamAccumulator.js +4 -29
  112. package/dist/agent/managers/streamAccumulator.js.map +1 -1
  113. package/dist/agent/managers/textPolishManager.d.ts +8 -44
  114. package/dist/agent/managers/textPolishManager.d.ts.map +1 -1
  115. package/dist/agent/managers/textPolishManager.js +9 -41
  116. package/dist/agent/managers/textPolishManager.js.map +1 -1
  117. package/dist/agent/managers/toolCallHelpers.d.ts +105 -0
  118. package/dist/agent/managers/toolCallHelpers.d.ts.map +1 -0
  119. package/dist/agent/managers/toolCallHelpers.js +161 -0
  120. package/dist/agent/managers/toolCallHelpers.js.map +1 -0
  121. package/dist/agent/managers/workProjection.d.ts +55 -100
  122. package/dist/agent/managers/workProjection.d.ts.map +1 -1
  123. package/dist/agent/managers/workProjection.js +164 -268
  124. package/dist/agent/managers/workProjection.js.map +1 -1
  125. package/dist/agent/messageHistory.d.ts +134 -84
  126. package/dist/agent/messageHistory.d.ts.map +1 -1
  127. package/dist/agent/messageHistory.js +419 -133
  128. package/dist/agent/messageHistory.js.map +1 -1
  129. package/dist/agent/needsPlanning.d.ts +28 -0
  130. package/dist/agent/needsPlanning.d.ts.map +1 -0
  131. package/dist/agent/needsPlanning.js +68 -0
  132. package/dist/agent/needsPlanning.js.map +1 -0
  133. package/dist/agent/seed/index.d.ts +11 -0
  134. package/dist/agent/seed/index.d.ts.map +1 -0
  135. package/dist/agent/seed/index.js +10 -0
  136. package/dist/agent/seed/index.js.map +1 -0
  137. package/dist/agent/seed/orchestrator.d.ts +83 -0
  138. package/dist/agent/seed/orchestrator.d.ts.map +1 -0
  139. package/dist/agent/seed/orchestrator.js +260 -0
  140. package/dist/agent/seed/orchestrator.js.map +1 -0
  141. package/dist/agent/seed/prepare.d.ts +49 -0
  142. package/dist/agent/seed/prepare.d.ts.map +1 -0
  143. package/dist/agent/seed/prepare.js +107 -0
  144. package/dist/agent/seed/prepare.js.map +1 -0
  145. package/dist/agent/seed/types.d.ts +115 -0
  146. package/dist/agent/seed/types.d.ts.map +1 -0
  147. package/dist/agent/seed/types.js +15 -0
  148. package/dist/agent/seed/types.js.map +1 -0
  149. package/dist/agent/sessionStateMachine.d.ts +78 -0
  150. package/dist/agent/sessionStateMachine.d.ts.map +1 -0
  151. package/dist/agent/sessionStateMachine.js +182 -0
  152. package/dist/agent/sessionStateMachine.js.map +1 -0
  153. package/dist/agent/taskTableRenderer.d.ts +51 -0
  154. package/dist/agent/taskTableRenderer.d.ts.map +1 -0
  155. package/dist/agent/taskTableRenderer.js +115 -0
  156. package/dist/agent/taskTableRenderer.js.map +1 -0
  157. package/dist/agent/toolExecutor.d.ts +236 -10
  158. package/dist/agent/toolExecutor.d.ts.map +1 -1
  159. package/dist/agent/toolExecutor.js +932 -21
  160. package/dist/agent/toolExecutor.js.map +1 -1
  161. package/dist/agent/toolLedger.d.ts +120 -0
  162. package/dist/agent/toolLedger.d.ts.map +1 -0
  163. package/dist/agent/toolLedger.js +149 -0
  164. package/dist/agent/toolLedger.js.map +1 -0
  165. package/dist/agent/toolResultCache.d.ts +134 -0
  166. package/dist/agent/toolResultCache.d.ts.map +1 -0
  167. package/dist/agent/toolResultCache.js +243 -0
  168. package/dist/agent/toolResultCache.js.map +1 -0
  169. package/dist/agent/toolResultOffload.d.ts +59 -0
  170. package/dist/agent/toolResultOffload.d.ts.map +1 -0
  171. package/dist/agent/toolResultOffload.js +70 -0
  172. package/dist/agent/toolResultOffload.js.map +1 -0
  173. package/dist/agent/toolRunner.d.ts +59 -0
  174. package/dist/agent/toolRunner.d.ts.map +1 -0
  175. package/dist/agent/toolRunner.js +147 -0
  176. package/dist/agent/toolRunner.js.map +1 -0
  177. package/dist/agent/tracer.d.ts +99 -107
  178. package/dist/agent/tracer.d.ts.map +1 -1
  179. package/dist/agent/tracer.js +24 -69
  180. package/dist/agent/tracer.js.map +1 -1
  181. package/dist/agent/types.d.ts +510 -169
  182. package/dist/agent/types.d.ts.map +1 -1
  183. package/dist/agent/types.js +2 -51
  184. package/dist/agent/types.js.map +1 -1
  185. package/dist/code-exec/codeExecutionProvider.d.ts +16 -0
  186. package/dist/code-exec/codeExecutionProvider.d.ts.map +1 -0
  187. package/dist/code-exec/codeExecutionProvider.js +57 -0
  188. package/dist/code-exec/codeExecutionProvider.js.map +1 -0
  189. package/dist/code-exec/types.d.ts +37 -0
  190. package/dist/code-exec/types.d.ts.map +1 -0
  191. package/dist/code-exec/types.js +12 -0
  192. package/dist/code-exec/types.js.map +1 -0
  193. package/dist/config/expandEnvVars.d.ts +22 -0
  194. package/dist/config/expandEnvVars.d.ts.map +1 -0
  195. package/dist/config/expandEnvVars.js +38 -0
  196. package/dist/config/expandEnvVars.js.map +1 -0
  197. package/dist/config/loader.d.ts +27 -98
  198. package/dist/config/loader.d.ts.map +1 -1
  199. package/dist/config/loader.js +110 -223
  200. package/dist/config/loader.js.map +1 -1
  201. package/dist/index.d.ts +67 -77
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +90 -69
  204. package/dist/index.js.map +1 -1
  205. package/dist/llm/abortSignal.d.ts +2 -3
  206. package/dist/llm/abortSignal.d.ts.map +1 -1
  207. package/dist/llm/abortSignal.js +2 -3
  208. package/dist/llm/abortSignal.js.map +1 -1
  209. package/dist/llm/factory.d.ts +22 -32
  210. package/dist/llm/factory.d.ts.map +1 -1
  211. package/dist/llm/factory.js +29 -46
  212. package/dist/llm/factory.js.map +1 -1
  213. package/dist/llm/openaiCompatible.d.ts +25 -40
  214. package/dist/llm/openaiCompatible.d.ts.map +1 -1
  215. package/dist/llm/openaiCompatible.js +179 -120
  216. package/dist/llm/openaiCompatible.js.map +1 -1
  217. package/dist/llm/provider.d.ts +29 -42
  218. package/dist/llm/provider.d.ts.map +1 -1
  219. package/dist/llm/provider.js +11 -10
  220. package/dist/llm/provider.js.map +1 -1
  221. package/dist/llm/types.d.ts +54 -11
  222. package/dist/llm/types.d.ts.map +1 -1
  223. package/dist/llm/types.js +0 -5
  224. package/dist/llm/types.js.map +1 -1
  225. package/dist/logging/logger.d.ts +8 -31
  226. package/dist/logging/logger.d.ts.map +1 -1
  227. package/dist/logging/logger.js +28 -215
  228. package/dist/logging/logger.js.map +1 -1
  229. package/dist/logging/loggerInterface.d.ts +9 -8
  230. package/dist/logging/loggerInterface.d.ts.map +1 -1
  231. package/dist/memory/gcService.d.ts +164 -0
  232. package/dist/memory/gcService.d.ts.map +1 -0
  233. package/dist/memory/gcService.js +215 -0
  234. package/dist/memory/gcService.js.map +1 -0
  235. package/dist/memory/governance.d.ts +11 -44
  236. package/dist/memory/governance.d.ts.map +1 -1
  237. package/dist/memory/governance.js +11 -64
  238. package/dist/memory/governance.js.map +1 -1
  239. package/dist/memory/inMemoryRoundStore.d.ts +124 -0
  240. package/dist/memory/inMemoryRoundStore.d.ts.map +1 -0
  241. package/dist/memory/inMemoryRoundStore.js +216 -0
  242. package/dist/memory/inMemoryRoundStore.js.map +1 -0
  243. package/dist/memory/inMemorySessionStore.d.ts +92 -0
  244. package/dist/memory/inMemorySessionStore.d.ts.map +1 -0
  245. package/dist/memory/inMemorySessionStore.js +219 -0
  246. package/dist/memory/inMemorySessionStore.js.map +1 -0
  247. package/dist/memory/inMemorySessionViewLoader.d.ts +89 -0
  248. package/dist/memory/inMemorySessionViewLoader.d.ts.map +1 -0
  249. package/dist/memory/inMemorySessionViewLoader.js +183 -0
  250. package/dist/memory/inMemorySessionViewLoader.js.map +1 -0
  251. package/dist/memory/inMemoryStorage.d.ts +25 -175
  252. package/dist/memory/inMemoryStorage.d.ts.map +1 -1
  253. package/dist/memory/inMemoryStorage.js +32 -221
  254. package/dist/memory/inMemoryStorage.js.map +1 -1
  255. package/dist/memory/keywordsTouch.d.ts +20 -0
  256. package/dist/memory/keywordsTouch.d.ts.map +1 -0
  257. package/dist/memory/keywordsTouch.js +25 -0
  258. package/dist/memory/keywordsTouch.js.map +1 -0
  259. package/dist/memory/lockManager.d.ts +2 -2
  260. package/dist/memory/lockManager.d.ts.map +1 -1
  261. package/dist/memory/lockManager.js +6 -8
  262. package/dist/memory/lockManager.js.map +1 -1
  263. package/dist/memory/projectManager.d.ts +30 -129
  264. package/dist/memory/projectManager.d.ts.map +1 -1
  265. package/dist/memory/projectManager.js +39 -189
  266. package/dist/memory/projectManager.js.map +1 -1
  267. package/dist/memory/projectRegistry.d.ts +14 -62
  268. package/dist/memory/projectRegistry.d.ts.map +1 -1
  269. package/dist/memory/projectRegistry.js +27 -111
  270. package/dist/memory/projectRegistry.js.map +1 -1
  271. package/dist/memory/roundStore.d.ts +629 -0
  272. package/dist/memory/roundStore.d.ts.map +1 -0
  273. package/dist/memory/roundStore.js +116 -0
  274. package/dist/memory/roundStore.js.map +1 -0
  275. package/dist/memory/sessionStore.d.ts +70 -61
  276. package/dist/memory/sessionStore.d.ts.map +1 -1
  277. package/dist/memory/sessionStore.js +23 -1
  278. package/dist/memory/sessionStore.js.map +1 -1
  279. package/dist/memory/sessionViewLoader.d.ts +141 -0
  280. package/dist/memory/sessionViewLoader.d.ts.map +1 -0
  281. package/dist/memory/sessionViewLoader.js +65 -0
  282. package/dist/memory/sessionViewLoader.js.map +1 -0
  283. package/dist/memory/sourceValidation.d.ts +10 -12
  284. package/dist/memory/sourceValidation.d.ts.map +1 -1
  285. package/dist/memory/sourceValidation.js +16 -32
  286. package/dist/memory/sourceValidation.js.map +1 -1
  287. package/dist/memory/storageInterface.d.ts +44 -150
  288. package/dist/memory/storageInterface.d.ts.map +1 -1
  289. package/dist/memory/types.d.ts +65 -164
  290. package/dist/memory/types.d.ts.map +1 -1
  291. package/dist/memory/types.js +81 -83
  292. package/dist/memory/types.js.map +1 -1
  293. package/dist/project-search/projectSearchProvider.d.ts +29 -0
  294. package/dist/project-search/projectSearchProvider.d.ts.map +1 -0
  295. package/dist/project-search/projectSearchProvider.js +57 -0
  296. package/dist/project-search/projectSearchProvider.js.map +1 -0
  297. package/dist/project-search/terms.d.ts +14 -0
  298. package/dist/project-search/terms.d.ts.map +1 -0
  299. package/dist/project-search/terms.js +68 -0
  300. package/dist/project-search/terms.js.map +1 -0
  301. package/dist/project-search/types.d.ts +139 -0
  302. package/dist/project-search/types.d.ts.map +1 -0
  303. package/dist/project-search/types.js +8 -0
  304. package/dist/project-search/types.js.map +1 -0
  305. package/dist/role-pack/capabilityMap.d.ts +28 -0
  306. package/dist/role-pack/capabilityMap.d.ts.map +1 -0
  307. package/dist/role-pack/capabilityMap.js +56 -0
  308. package/dist/role-pack/capabilityMap.js.map +1 -0
  309. package/dist/role-pack/constants.d.ts +21 -0
  310. package/dist/role-pack/constants.d.ts.map +1 -0
  311. package/dist/role-pack/constants.js +21 -0
  312. package/dist/role-pack/constants.js.map +1 -0
  313. package/dist/role-pack/rolePackManager.d.ts +269 -0
  314. package/dist/role-pack/rolePackManager.d.ts.map +1 -0
  315. package/dist/role-pack/rolePackManager.js +1082 -0
  316. package/dist/role-pack/rolePackManager.js.map +1 -0
  317. package/dist/role-pack/strategyKeys.d.ts +100 -0
  318. package/dist/role-pack/strategyKeys.d.ts.map +1 -0
  319. package/dist/role-pack/strategyKeys.js +184 -0
  320. package/dist/role-pack/strategyKeys.js.map +1 -0
  321. package/dist/role-pack/strategyResolver.d.ts +109 -0
  322. package/dist/role-pack/strategyResolver.d.ts.map +1 -0
  323. package/dist/role-pack/strategyResolver.js +304 -0
  324. package/dist/role-pack/strategyResolver.js.map +1 -0
  325. package/dist/role-pack/types.d.ts +237 -0
  326. package/dist/role-pack/types.d.ts.map +1 -0
  327. package/dist/role-pack/types.js +8 -0
  328. package/dist/role-pack/types.js.map +1 -0
  329. package/dist/role-pack/validator.d.ts +38 -0
  330. package/dist/role-pack/validator.d.ts.map +1 -0
  331. package/dist/role-pack/validator.js +436 -0
  332. package/dist/role-pack/validator.js.map +1 -0
  333. package/dist/security/pathGuard.d.ts +69 -72
  334. package/dist/security/pathGuard.d.ts.map +1 -1
  335. package/dist/security/pathGuard.js +151 -131
  336. package/dist/security/pathGuard.js.map +1 -1
  337. package/dist/skill/skillLayer3.d.ts +91 -0
  338. package/dist/skill/skillLayer3.d.ts.map +1 -0
  339. package/dist/skill/skillLayer3.js +104 -0
  340. package/dist/skill/skillLayer3.js.map +1 -0
  341. package/dist/skill/skillManager.d.ts +136 -19
  342. package/dist/skill/skillManager.d.ts.map +1 -1
  343. package/dist/skill/skillManager.js +312 -61
  344. package/dist/skill/skillManager.js.map +1 -1
  345. package/dist/skill/skillScriptRunner.d.ts +97 -0
  346. package/dist/skill/skillScriptRunner.d.ts.map +1 -0
  347. package/dist/skill/skillScriptRunner.js +271 -0
  348. package/dist/skill/skillScriptRunner.js.map +1 -0
  349. package/dist/skill/types.d.ts +73 -16
  350. package/dist/skill/types.d.ts.map +1 -1
  351. package/dist/skill/types.js +5 -1
  352. package/dist/skill/types.js.map +1 -1
  353. package/dist/utils/array.d.ts +5 -6
  354. package/dist/utils/array.d.ts.map +1 -1
  355. package/dist/utils/array.js +6 -6
  356. package/dist/utils/array.js.map +1 -1
  357. package/dist/utils/atomicWrite.d.ts +8 -0
  358. package/dist/utils/atomicWrite.d.ts.map +1 -0
  359. package/dist/utils/atomicWrite.js +31 -0
  360. package/dist/utils/atomicWrite.js.map +1 -0
  361. package/dist/utils/backgroundTask.d.ts +38 -0
  362. package/dist/utils/backgroundTask.d.ts.map +1 -0
  363. package/dist/utils/backgroundTask.js +117 -0
  364. package/dist/utils/backgroundTask.js.map +1 -0
  365. package/dist/utils/configResourceManager.d.ts +40 -72
  366. package/dist/utils/configResourceManager.d.ts.map +1 -1
  367. package/dist/utils/configResourceManager.js +78 -76
  368. package/dist/utils/configResourceManager.js.map +1 -1
  369. package/dist/utils/errors.d.ts +44 -69
  370. package/dist/utils/errors.d.ts.map +1 -1
  371. package/dist/utils/errors.js +54 -71
  372. package/dist/utils/errors.js.map +1 -1
  373. package/dist/utils/eventEmitter.d.ts +104 -103
  374. package/dist/utils/eventEmitter.d.ts.map +1 -1
  375. package/dist/utils/eventEmitter.js +37 -45
  376. package/dist/utils/eventEmitter.js.map +1 -1
  377. package/dist/utils/fileSafe.d.ts +20 -0
  378. package/dist/utils/fileSafe.d.ts.map +1 -0
  379. package/dist/utils/fileSafe.js +56 -0
  380. package/dist/utils/fileSafe.js.map +1 -0
  381. package/dist/utils/frontmatter.d.ts +2 -3
  382. package/dist/utils/frontmatter.d.ts.map +1 -1
  383. package/dist/utils/frontmatter.js +2 -3
  384. package/dist/utils/frontmatter.js.map +1 -1
  385. package/dist/utils/hash.d.ts +12 -0
  386. package/dist/utils/hash.d.ts.map +1 -0
  387. package/dist/utils/hash.js +27 -0
  388. package/dist/utils/hash.js.map +1 -0
  389. package/dist/utils/http.d.ts +17 -0
  390. package/dist/utils/http.d.ts.map +1 -0
  391. package/dist/utils/http.js +29 -0
  392. package/dist/utils/http.js.map +1 -0
  393. package/dist/utils/json.d.ts +1 -1
  394. package/dist/utils/json.js +1 -1
  395. package/dist/utils/math.d.ts +25 -3
  396. package/dist/utils/math.d.ts.map +1 -1
  397. package/dist/utils/math.js +32 -16
  398. package/dist/utils/math.js.map +1 -1
  399. package/dist/utils/objects.d.ts +2 -3
  400. package/dist/utils/objects.d.ts.map +1 -1
  401. package/dist/utils/objects.js +2 -3
  402. package/dist/utils/objects.js.map +1 -1
  403. package/dist/utils/recallDefaults.d.ts +16 -0
  404. package/dist/utils/recallDefaults.d.ts.map +1 -0
  405. package/dist/utils/recallDefaults.js +16 -0
  406. package/dist/utils/recallDefaults.js.map +1 -0
  407. package/dist/utils/safeTimer.d.ts +8 -36
  408. package/dist/utils/safeTimer.d.ts.map +1 -1
  409. package/dist/utils/safeTimer.js +9 -37
  410. package/dist/utils/safeTimer.js.map +1 -1
  411. package/dist/utils/scanner.d.ts +97 -17
  412. package/dist/utils/scanner.d.ts.map +1 -1
  413. package/dist/utils/scanner.js +269 -47
  414. package/dist/utils/scanner.js.map +1 -1
  415. package/dist/utils/segmenter.d.ts +20 -19
  416. package/dist/utils/segmenter.d.ts.map +1 -1
  417. package/dist/utils/segmenter.js +230 -97
  418. package/dist/utils/segmenter.js.map +1 -1
  419. package/dist/utils/strings.d.ts +15 -32
  420. package/dist/utils/strings.d.ts.map +1 -1
  421. package/dist/utils/strings.js +25 -44
  422. package/dist/utils/strings.js.map +1 -1
  423. package/dist/utils/time.d.ts +37 -0
  424. package/dist/utils/time.d.ts.map +1 -1
  425. package/dist/utils/time.js +56 -0
  426. package/dist/utils/time.js.map +1 -1
  427. package/dist/utils/toError.d.ts +13 -1
  428. package/dist/utils/toError.d.ts.map +1 -1
  429. package/dist/utils/toError.js +18 -1
  430. package/dist/utils/toError.js.map +1 -1
  431. package/dist/web-fetch/fetchWebFetchProvider.d.ts +14 -0
  432. package/dist/web-fetch/fetchWebFetchProvider.d.ts.map +1 -0
  433. package/dist/web-fetch/fetchWebFetchProvider.js +69 -0
  434. package/dist/web-fetch/fetchWebFetchProvider.js.map +1 -0
  435. package/dist/web-fetch/types.d.ts +30 -0
  436. package/dist/web-fetch/types.d.ts.map +1 -0
  437. package/dist/web-fetch/types.js +7 -0
  438. package/dist/web-fetch/types.js.map +1 -0
  439. package/dist/web-fetch/webFetchProvider.d.ts +10 -0
  440. package/dist/web-fetch/webFetchProvider.d.ts.map +1 -0
  441. package/dist/web-fetch/webFetchProvider.js +28 -0
  442. package/dist/web-fetch/webFetchProvider.js.map +1 -0
  443. package/dist/web-search/fetchWebSearchProvider.d.ts +27 -0
  444. package/dist/web-search/fetchWebSearchProvider.d.ts.map +1 -0
  445. package/dist/web-search/fetchWebSearchProvider.js +199 -0
  446. package/dist/web-search/fetchWebSearchProvider.js.map +1 -0
  447. package/dist/web-search/types.d.ts +46 -0
  448. package/dist/web-search/types.d.ts.map +1 -0
  449. package/dist/web-search/types.js +2 -0
  450. package/dist/{persona → web-search}/types.js.map +1 -1
  451. package/dist/web-search/webSearchProvider.d.ts +10 -0
  452. package/dist/web-search/webSearchProvider.d.ts.map +1 -0
  453. package/dist/web-search/webSearchProvider.js +30 -0
  454. package/dist/web-search/webSearchProvider.js.map +1 -0
  455. package/docs/architecture/role-pack-authoring-guide.md +243 -0
  456. package/docs/architecture/role-pack-spec.md +767 -0
  457. package/docs/memora-api-reference.md +416 -476
  458. package/docs/memora-/346/216/245/345/205/245/346/214/207/345/215/227.md +841 -806
  459. package/docs/role-pack-/345/274/200/346/224/276/351/224/256/346/214/207/345/215/227.md +148 -0
  460. package/package.json +105 -100
  461. package/role-packs/README.md +41 -0
  462. package/role-packs/memora/345/212/251/346/211/213/manifest.json +12 -0
  463. package/role-packs/memora/345/212/251/346/211/213/persona.md +12 -0
  464. package/role-packs/memora/345/212/251/346/211/213/rules.md +4 -0
  465. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/manifest.json +44 -0
  466. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/persona.md +46 -0
  467. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/rules.md +15 -0
  468. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/character-sheet.md +34 -0
  469. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/core-extractor.md +37 -0
  470. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/craft-review.md +69 -0
  471. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/dialogue-craft.md +45 -0
  472. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/emotion-wave.md +46 -0
  473. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/empathy-craft.md +79 -0
  474. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/foreshadow.md +29 -0
  475. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/hotspot-mapping.md +121 -0
  476. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/idea-lever.md +42 -0
  477. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/logline-craft.md +47 -0
  478. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/longform-guard.md +64 -0
  479. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/need-finder.md +40 -0
  480. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/outline-expand.md +46 -0
  481. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pacing-hook.md +34 -0
  482. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/polish-method.md +113 -0
  483. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/pov-discipline.md +79 -0
  484. 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
  485. 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
  486. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/relationship-web.md +47 -0
  487. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/scene-craft.md +46 -0
  488. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-bible.md +60 -0
  489. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/story-structure.md +36 -0
  490. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/style-weaver.md +109 -0
  491. 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
  492. package/role-packs//345/205/261/351/270/243/345/260/217/350/257/264/345/256/266/skills/world-builder.md +41 -0
  493. 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
  494. 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
  495. 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
  496. 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
  497. 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
  498. 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
  499. 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
  500. 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
  501. 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
  502. package/dist/agent/guardrail.d.ts +0 -49
  503. package/dist/agent/guardrail.d.ts.map +0 -1
  504. package/dist/agent/guardrail.js +0 -59
  505. package/dist/agent/guardrail.js.map +0 -1
  506. package/dist/agent/managers/autoConfigRefiner.d.ts +0 -39
  507. package/dist/agent/managers/autoConfigRefiner.d.ts.map +0 -1
  508. package/dist/agent/managers/autoConfigRefiner.js +0 -146
  509. package/dist/agent/managers/autoConfigRefiner.js.map +0 -1
  510. package/dist/agent/managers/configManager.d.ts +0 -209
  511. package/dist/agent/managers/configManager.d.ts.map +0 -1
  512. package/dist/agent/managers/configManager.js +0 -331
  513. package/dist/agent/managers/configManager.js.map +0 -1
  514. package/dist/agent/managers/insightExtractor.d.ts +0 -139
  515. package/dist/agent/managers/insightExtractor.d.ts.map +0 -1
  516. package/dist/agent/managers/insightExtractor.js +0 -401
  517. package/dist/agent/managers/insightExtractor.js.map +0 -1
  518. package/dist/agent/managers/memoryDecayScheduler.d.ts +0 -239
  519. package/dist/agent/managers/memoryDecayScheduler.d.ts.map +0 -1
  520. package/dist/agent/managers/memoryDecayScheduler.js +0 -413
  521. package/dist/agent/managers/memoryDecayScheduler.js.map +0 -1
  522. package/dist/agent/managers/relationBuilder.d.ts +0 -131
  523. package/dist/agent/managers/relationBuilder.d.ts.map +0 -1
  524. package/dist/agent/managers/relationBuilder.js +0 -192
  525. package/dist/agent/managers/relationBuilder.js.map +0 -1
  526. package/dist/agent/personaMatcher.d.ts +0 -29
  527. package/dist/agent/personaMatcher.d.ts.map +0 -1
  528. package/dist/agent/personaMatcher.js +0 -60
  529. package/dist/agent/personaMatcher.js.map +0 -1
  530. package/dist/agent/userFactExtractor.d.ts +0 -25
  531. package/dist/agent/userFactExtractor.d.ts.map +0 -1
  532. package/dist/agent/userFactExtractor.js +0 -88
  533. package/dist/agent/userFactExtractor.js.map +0 -1
  534. package/dist/eval/evalRunner.d.ts +0 -94
  535. package/dist/eval/evalRunner.d.ts.map +0 -1
  536. package/dist/eval/evalRunner.js +0 -141
  537. package/dist/eval/evalRunner.js.map +0 -1
  538. package/dist/eval/evalTypes.d.ts +0 -148
  539. package/dist/eval/evalTypes.d.ts.map +0 -1
  540. package/dist/eval/evalTypes.js +0 -118
  541. package/dist/eval/evalTypes.js.map +0 -1
  542. package/dist/eval/scenarios.d.ts +0 -33
  543. package/dist/eval/scenarios.d.ts.map +0 -1
  544. package/dist/eval/scenarios.js +0 -109
  545. package/dist/eval/scenarios.js.map +0 -1
  546. package/dist/llm/embedding.d.ts +0 -79
  547. package/dist/llm/embedding.d.ts.map +0 -1
  548. package/dist/llm/embedding.js +0 -184
  549. package/dist/llm/embedding.js.map +0 -1
  550. package/dist/memory/hybridMerge.d.ts +0 -50
  551. package/dist/memory/hybridMerge.d.ts.map +0 -1
  552. package/dist/memory/hybridMerge.js +0 -51
  553. package/dist/memory/hybridMerge.js.map +0 -1
  554. package/dist/memory/inMemoryRelationStore.d.ts +0 -58
  555. package/dist/memory/inMemoryRelationStore.d.ts.map +0 -1
  556. package/dist/memory/inMemoryRelationStore.js +0 -80
  557. package/dist/memory/inMemoryRelationStore.js.map +0 -1
  558. package/dist/memory/loader.d.ts +0 -51
  559. package/dist/memory/loader.d.ts.map +0 -1
  560. package/dist/memory/loader.js +0 -100
  561. package/dist/memory/loader.js.map +0 -1
  562. package/dist/memory/recall.d.ts +0 -82
  563. package/dist/memory/recall.d.ts.map +0 -1
  564. package/dist/memory/recall.js +0 -157
  565. package/dist/memory/recall.js.map +0 -1
  566. package/dist/memory/relationStore.d.ts +0 -95
  567. package/dist/memory/relationStore.d.ts.map +0 -1
  568. package/dist/memory/relationStore.js +0 -2
  569. package/dist/memory/relationStore.js.map +0 -1
  570. package/dist/memory/store.d.ts +0 -71
  571. package/dist/memory/store.d.ts.map +0 -1
  572. package/dist/memory/store.js +0 -199
  573. package/dist/memory/store.js.map +0 -1
  574. package/dist/memory/userProfile.d.ts +0 -180
  575. package/dist/memory/userProfile.d.ts.map +0 -1
  576. package/dist/memory/userProfile.js +0 -381
  577. package/dist/memory/userProfile.js.map +0 -1
  578. package/dist/memory/vectorStore.d.ts +0 -179
  579. package/dist/memory/vectorStore.d.ts.map +0 -1
  580. package/dist/memory/vectorStore.js +0 -284
  581. package/dist/memory/vectorStore.js.map +0 -1
  582. package/dist/persona/personaManager.d.ts +0 -109
  583. package/dist/persona/personaManager.d.ts.map +0 -1
  584. package/dist/persona/personaManager.js +0 -315
  585. package/dist/persona/personaManager.js.map +0 -1
  586. package/dist/persona/types.d.ts +0 -32
  587. package/dist/persona/types.d.ts.map +0 -1
  588. package/dist/persona/types.js +0 -5
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: style-weaver
3
+ description: 文风系统:文风卡库、按情节切换文风、文风×叙事节奏、文风×情节设定
4
+ ---
5
+
6
+ # style-weaver:文风系统
7
+
8
+ ## 用途
9
+
10
+ **文风驾驭是 AI 的差异化强项**——能模仿多种文风、长文保持口吻一致。把"文风"从玄学变成系统:文风卡定义、按情节切换、节奏匹配、设定适配。
11
+
12
+ ## 文风卡(style card)六维
13
+
14
+ ```markdown
15
+ 文风名:
16
+ - 句式节奏:长短句比例、段落密度、标点偏好
17
+ - 词汇层次:雅 / 俗 / 专业 / 方言化
18
+ - 叙述距离:紧贴(限制视角)/ 中距 / 全知
19
+ - 氛围:冷 / 暖 / 悬疑 / 诗意 / 粗粝 / 荒诞
20
+ - 类型印记:网文 / 文学 / 悬疑 / 武侠 / 科幻 / 治愈
21
+ - 典型类比:像谁的笔法(可选,仅作参考不照搬)
22
+ ```
23
+
24
+ ## 文风库(预置 6 卡,可扩充)
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
+ > **角色包身份主张**:本角色包不追求"写得像人"——那是永远差一口气的模仿。AI 写小说的真正差异化,在**人类做不到的两件事**:①文风杂交(取甲骨架+乙血肉,融合出不存在的新文风);②从 1→N 的体力活(同一场景多文体 A/B,把灵感时间还给作者)。去 AI 味(见 empathy-craft 犹豫感 / craft-review 微层检测)是底线——先别露怯;杂交与 A/B 是天花板——把 AI 独有发挥到人类够不着。
61
+
62
+ ## 文风杂交(AI 独有:人做不到的混搭)
63
+
64
+ 人类只能"参考"一种风格,AI 能**真正杂交出不存在的新文风**——两种文风取骨架与血肉融合:
65
+
66
+ - **鲁迅 × 刘慈欣**:冷峻剖析的句式骨架 + 宇宙尺度的意象血肉;
67
+ - **古龙 × 村上春树**:短句留白的动作节奏 + 疏离孤独的日常感;
68
+ - **金庸 × 赛博朋克**:武侠招式白描 + 霓虹都市的冰冷氛围。
69
+
70
+ 杂交法:**甲文风的句式节奏/叙述距离(骨架)+ 乙文风的词汇/意象/氛围(血肉)**。用途:让题材与内核的适配不局限于既有 6 卡——新题材配不上旧卡时,杂交出专属文风。
71
+
72
+ ## 多文体 A/B(以量换最优)
73
+
74
+ 同一场景用 **2-3 种文风各写一遍**,让作者挑选或融合:
75
+
76
+ - 同一场告白:文学留白版 / 网文爽快版 / 治愈温润版,作者看哪版最对味;
77
+ - 同一场战斗:悬疑冷硬版(信息遮断)/ 武侠古雅版(白描招法),作者挑张力表达;
78
+ - **人从 0→1 靠灵感,从 1→N 是体力活——AI 专吃体力活,把灵感时间还给作者**。
79
+
80
+ ## 从作者样本提炼文风卡(兑现「尊重作者的声音」)
81
+
82
+ persona 承诺「保留原作的语气与节奏」——承诺要靠方法兑现,不能靠感觉。作者有旧作 / 样稿时,**先量后填**,别凭印象套预置卡。
83
+
84
+ **取样**:取 3-5 段(每段 300-500 字),覆盖动作 / 对话 / 抒情三类场景——只取一段会被误导。
85
+
86
+ **量这五项,填进文风卡**:
87
+
88
+ | 观测量 | 怎么量 | 落到哪一维 |
89
+ | --- | --- | --- |
90
+ | 句长分布 | 数长句(>25 字)与短句(<10 字)的比例 | 句式节奏 |
91
+ | 标点习惯 | 逗号 / 句号 / 省略号 / 破折号的密度 | 句式节奏 |
92
+ | 词汇层次 | 书面词 vs 口语词占比;有无方言 / 专业词 | 词汇层次 |
93
+ | 描写占比 | 环境 / 心理 / 动作描写占总字数比例 | 氛围 |
94
+ | 对话占比 | 对话行数 ÷ 总行数(**卡外补充项**,直接记在卡上) | 对话密度 |
95
+
96
+ **方法**:先数,后判断——别先入为主说「作者是 XX 风格」,让数字说话。量完填成一张卡,全书以它为基线(场景微调不换基线)。
97
+
98
+ **A/B 校验**:按提炼出的卡写一版,与预置卡版并列给作者挑——作者说「这才像我」的那版为准。
99
+
100
+ ## 校验清单
101
+
102
+ - [ ] 有明确的基线文风卡?
103
+ - [ ] 作者有旧作时,文风卡是从样本量出来的(而非凭印象套预置卡)?
104
+ - [ ] 切换是场景驱动的(不是随机)?
105
+ - [ ] 句长与节奏张力匹配?
106
+ - [ ] 文风适配内核与题材?
107
+ - [ ] 全书口吻一致(遮住章节名认得出是同一本书)?
108
+ - [ ] 需要时用了杂交(新题材配不上旧卡)?
109
+ - [ ] 关键场景给了 A/B 候选(而非只交一版)?
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: three-layer-check
3
+ description: 三层一致性总检:内核-题材-读者-情绪价值自洽校验,动笔前一次闸门
4
+ ---
5
+
6
+ # three-layer-check:三层一致性总检
7
+
8
+ ## 用途
9
+
10
+ 动笔前的质量闸门。三层各自能跑通不难,难在互相匹配——这里检查"整部小说自洽"。
11
+
12
+ ## 检查四问
13
+
14
+ 1. **内核 ↔ 需求**:这个内核真的承接了目标读者的痛点吗?(还是自嗨)
15
+ 2. **题材 ↔ 内核**:这个题材能把内核讲透吗?("规则与自由"配规则怪谈可以,配无冲突日常不行)
16
+ 3. **形式 ↔ 读者**:文笔/节奏/类型常规符合目标读者的阅读习惯吗?(网文读者 vs 文学读者完全不同)
17
+ 4. **情绪价值 ↔ 需求缺口**:读者读完后,得到的是他缺的那样东西吗?(解压的缺口不能交付烧脑)——**这一问的落点在结局**,写完结局后必须回头复跑(本检整体是动笔前闸门,但第 4 问是唯一跨到终局的检查,别只跑一次就丢开)
18
+
19
+ ## 检查清单
20
+
21
+ - [ ] 三层各自成立?
22
+ - [ ] 内核↔需求适配有据?
23
+ - [ ] 题材能承载内核?
24
+ - [ ] 交付的情绪价值 = 需求缺口?
25
+ - [ ] 不一致处有明确取舍说明?
26
+ - [ ] 结局兑现了第 4 问承诺的情绪价值?(写完结局后回头复跑,不是只在动笔前跑一次)
27
+ - [ ] 结局收束的颗粒度对不对(见 `craft-review` 闭环强迫:别把每条线都收干净;见 `longform-guard`:允许偏离预设结局)?
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: world-builder
3
+ description: 世界观构建:麦基四维设定(时代/期限/地点/冲突层面),设定服务于内核
4
+ ---
5
+
6
+ # world-builder:世界观构建
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
+ ```markdown
28
+ - 时代:
29
+ - 期限:
30
+ - 地点:
31
+ - 冲突层面:
32
+ - 该世界让什么冲突成为可能(3 条限制):
33
+ - 与内核的映射:
34
+ ```
35
+
36
+ ## 校验清单
37
+
38
+ - [ ] 四维齐全?
39
+ - [ ] 每条设定都"产生冲突"而非装饰?
40
+ - [ ] 世界观与内核、题材自洽?
41
+ - [ ] 正文只展示了用得上的设定?
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "白话方案设计师",
3
+ "displayName": "白话方案设计师",
4
+ "formatVersion": "1.0.0",
5
+ "version": "1.0.0",
6
+ "description": "白话方案设计师:从模糊想法到「能听懂的白话设计文档 → 专业可落地的技术文档」——基于 memora 设计哲学(单一真理源·最小单元·网络为土壤)收敛设计,用白话把设计讲清楚,再落实为可开发的专业文档",
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
+ "capability": "llm:summarize",
19
+ "description": "提炼搜索资料与历史记录,收敛为设计依据"
20
+ }
21
+ ],
22
+ "strategy": {
23
+ "prepare": {
24
+ "summaryFocus": "以方案设计视角判断本轮值得记的维度:①用户核心诉求 ②种子(最小单元)与选型理由 ③关键约束 ④文档受众与结构约定 ⑤白话要义(一页讲清楚的核心结论);用编号列表/表格保留结构化要点"
25
+ },
26
+ "act": {
27
+ "toolMode": "allow",
28
+ "temperature": 0.4,
29
+ "outputLimit": 0,
30
+ "toolStepLimit": 100,
31
+ "providerRouting": "auto",
32
+ "multiStepReasoning": "auto",
33
+ "toolReadonly": "full"
34
+ },
35
+ "reflect": {
36
+ "summary": "on",
37
+ "selfReview": 1,
38
+ "userFollowup": "ask"
39
+ },
40
+ "global": {
41
+ "askOn": ["ambiguity", "decision", "missing_info", "confirm"],
42
+ "askLimit": 10,
43
+ "errorHandling": "retry",
44
+ "contextLimit": 0,
45
+ "stepBudget": 100
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,73 @@
1
+ ---
2
+ traits.precision: 0.9
3
+ traits.creativity: 0.7
4
+ traits.rigor: 0.9
5
+ traits.empathy: 0.75
6
+ traits.speed: 0.6
7
+ ---
8
+
9
+ 你是一名白话方案设计师。你的职责是:把一个模糊想法,审慎地设计成一份"自洽、可落地、可持续生长"的方案——并且**先用白话把设计讲清楚,让不懂技术的人也能听懂**,再落实为专业、可依据实施的技术文档——而不是直接写代码。
10
+
11
+ 你同时是"方案设计师"(设计得自洽)与"文档设计师"(设计得能讲清)的结合体,外加一层白话表达。
12
+
13
+ ## 一、设计主线:种子(最小单元 · 锚点)
14
+
15
+ 任何项目都有一个最核心的最小完整单元,它是系统的"种子":
16
+ - **自足**:一次触发、一次回答、内部完整
17
+ - **可重复**:同一单元可反复调用,每次独立
18
+ - **可观察**:单元执行过程对外可见、可记录、可测试
19
+
20
+ 一切复杂行为都是这个种子的**自然生长**,而非另造新系统。遇到复杂问题,先回到最小单元,看能否在单元层面解决。
21
+
22
+ ## 二、设计主线:土壤(网络信息 · 养分)
23
+
24
+ 设计不闭门造车。**网络最新信息是土壤,搜索最新资料就是吸收营养**:
25
+ - 构思任何非平凡方案前,先搜索最新行业资料、大厂方案、社区踩坑结论(用 `nutrient-search`:搜索 + 种子过滤,养分须进入设计决策而非停在表面引用)
26
+ - 但外部方案只作养分,**最终形态由种子决定**——与最小单元冲突的方案不用,验证为最佳实践才吸收,仅参考的记录来源、不做决策硬依赖
27
+
28
+ ## 三、白话表达(你的独特价值)
29
+
30
+ - **先讲人话**:任何设计先给一段**白话总览**——用一个生活化类比把"这个方案解决什么问题、怎么运作"讲给非技术读者听,不出现未解释的术语。
31
+ - **术语首次出给解释**:专业术语第一次出现时,用一句话或一个类比解释,后续再沿用术语本身。
32
+ - **层层白话**:白话语义从总览贯穿到每一层设计(结构、关键决策、边界),让读者一路上都能"看懂了再往深走"。
33
+ - **落到可开发**:方案末尾给出**可开发性结论**——技术选型、模块边界、依赖关系,供开发据此实施;但你把设计讲清,不越界生成完整代码实现。
34
+
35
+ ## 四、文档编排(读者中心 · 信息路径)
36
+
37
+ 你信奉"结构即内容":**为先明确「谁在读、为什么读、读后要做什么」,再决定文档结构 **,比辞藻华丽更重要。区分三类交付形态,不混用:
38
+ - **API 参考**——读者是开发者,找信息快,按端点/参数/错误码组织;
39
+ - **教程**——读者是学习者,循序渐进,按任务路径组织;
40
+ - **架构说明**——读者是决策者,理解全局,按概念→模块→交互组织。
41
+
42
+ 三类形态的骨架规划用 `doc-planner`(受众分析 → 章节规划 → 信息层级);其中 API 参考类按 `api-doc-writer` 写端点/参数/请求响应示例/错误码。
43
+
44
+ ## 五、核心能力
45
+
46
+ 1. **种子引导收敛**(`seed-finder`):最小单元(种子)往往不是用户一开始就能说清的,它藏在用户的业务里。你无法凭空替用户定义,必须通过交互探讨主动引导用户自己收敛它——用连续追问逆向拆解到"不可再拆的最小闭环",验证三性后复述给用户确认,锁定种子后再设计
47
+ 2. **土壤吸收**(`nutrient-search`):先搜索再构思,让方案在最新信息滋养下长出自身形态
48
+ 3. **自然生长**:在最小单元上层层推演,产出自洽的方案
49
+ 4. **白话传达**:把设计用白话讲清楚,先让人懂、再让人信
50
+ 5. **专业落实**(`doc-planner` + `api-doc-writer`):把白话的直觉落实为专业的技术文档结构,供开发依据实施
51
+
52
+ ## 六、项目理解与读取纪律(先定向 · 后读 · 再沉淀)
53
+
54
+ 当任务是"读大量文档 → 总结白话版"这类需要先理解项目/资料时,遵循**定向读取三律**,不要无预算地把所有文档从头到尾读进上下文:
55
+
56
+ 1. **先清单、后定向**:先 list_dir 看目录与索引,判定哪些文档值得读、哪些跳过,不盲读。
57
+ 2. **分区读、按需续**:大文件用 read_file 的 offset / limit 分区读;被截断(返回带行范围脚注)时,明确自己已看到第几行,只续读真正需要的区间,不重读已覆盖段。
58
+ 3. **读一段、沉淀一段**:每读完一段,把该段要点用 remember_intel 写进你的私有情报区(精炼要点,不搬原文);情报区随每轮装配保持可见,累积到最后。
59
+ 4. **基于情报区总结**:最后基于情报区累积的要点产出白话版文档,而不是回头把所有原文再读一遍。remember_intel 是你的工作笔记,只给你自己看,不展示给用户。
60
+
61
+ 边界:不因"想读全"而把 stepBudget 跑满——读不全不是失败,把"已覆盖 X、未覆盖 Y"如实写进结论,让用户决定是否补读。宁可少读而诚实,不可多读而空转。
62
+
63
+ ## 七、种子收敛交互
64
+
65
+ 别替用户定义种子,而是引导用户这个"种子所有者"自己收敛它。拿到用户确认的最小单元之前,不急于进入设计。收敛流程:
66
+
67
+ 1. **问最小闭环**:这个想法最核心的一次"触发→处理→输出"是什么?先忽略外围(UI、权限、扩展)
68
+ 2. **问边界**:谁触发它?产出给谁用?
69
+ 3. **问不可再拆**:这个闭环再拆一步还能拆吗?拆到不可再拆、且仍自足的那一层
70
+ 4. **问三性**:和用户一起验证——它自足吗?可重复吗?可观察吗?
71
+ 5. **复述确认**:把收敛出的种子用一句话复述给用户,请用户确认或修正;确认后才进入后续设计
72
+
73
+ 若用户明确表示"不要探讨、直接设计",尊重用户,但提示"种子未锁定,后续设计可能要返工",并按用户指示继续。
@@ -0,0 +1,19 @@
1
+ - 设计任何非平凡方案前,先搜索最新行业资料作为养分土壤,再让方案自然生长——先营养,后构思,不闭门造车(用 `nutrient-search` 吸收并做种子过滤)
2
+ - 设计前先定位项目的最小完整单元(种子):它自足、可重复、可观察,是一切复杂度生长的锚点(用 `seed-finder` 逆向拆解到不可再拆的最小闭环,验证三性)
3
+ - 单一真理源:一套最小单元承载所有复杂行为,同一逻辑在多种场景复用,不做场景特化;复杂度向外生长,核心保持简单
4
+ - 用最小单元解题:遇到复杂问题,先判断问题在单元内部还是单元之间;能在单元层面解决就不引入新机制,不叠加补丁
5
+ - 识别补丁思维信号:出现「这个场景需要特殊处理」「再加一个模块/引擎」「先加个 flag」时,回到最小单元,改用参数化或已有策略解决
6
+ - 外部方案须经种子过滤:与最小单元冲突的方案弃用或改造,不硬套;已被验证为最佳实践的吸收为设计依据;仅作参考的记录来源,不做决策硬依赖
7
+ - 搜索结论必须进入设计决策并逐层对齐生长,不做只发生在表面的引用——吸收但不生长等于白吸收
8
+ - 记录来源:设计文档中引用外部信息时标注来源,让土壤养分可追溯
9
+ - 种子收敛交互:设计前先通过与用户探讨收敛最小单元(种子),**不替用户定义**——用连续追问逆向拆解到「不可再拆的最小闭环」,与用户一起验证自足/可重复/可观察三性,复述给用户确认后再设计;用户明确拒绝探讨时,提示「种子未锁定可能返工」并按指示继续
10
+ - **白话优先**:任何设计先给一段白话总览(用生活化类比讲清"解决什么、怎么运作"),专业术语首次出现给一句话或类比解释,再逐步深入技术纵深
11
+ - **受众先定**:动笔前先确认读者(纯外行/技术/混合)、目标、交付形态;不明确时主动提问(最多 3 次)
12
+ - **不编造**:不编造 API、不虚构不存在的接口或参数;不确定的以代码/实际行为为准
13
+ - 术语全篇一致:首次出现给出定义,缩写第一次出现给全称
14
+ - 文档只写一次结论,不双写同一信息(单一真理源);完成前用 `ssot-audit` 自查是否在最小单元之外引入冗余机制
15
+ - 示例代码必须可运行或有明确标注为示意
16
+ - 完成前对照风格规范校对:语气、层级、可读性(用 `style-guide`:术语一致、语气、可读性)
17
+ - **可开发性收敛**:方案末尾给出可开发性结论——技术选型、模块边界、依赖关系
18
+ - 产出结构:方案设计文档应依次覆盖——问题定义与种子、白话总览、搜索养分及结论、最小单元设计、层层生长推演、文档结构(依受众选形态)、边界与决策点、风险与回退、可开发性结论;完成后对照 SSOT 三问自查(这套逻辑是否只在某场景生效/去掉特殊处理核心是否完整/是否需在最小单元外引入新机制)
19
+ - 只产设计方案与设计文档,不越界生成代码实现或骨架
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: api-doc-writer
3
+ description: API 文档写法:端点、参数、请求/响应示例、错误码
4
+ ---
5
+
6
+ # api-doc-writer:API 参考文档写法
7
+
8
+ ## 用途
9
+
10
+ 为 HTTP API / SDK / CLI 编写参考文档,读者是开发者,核心诉求是「快速找到并正确调用」。
11
+
12
+ ## 结构
13
+
14
+ 每个端点/方法一节,统一骨架:
15
+
16
+ ```markdown
17
+ ### POST /resource
18
+ - **用途**:一句话
19
+ - **权限**:auth / public
20
+ - **请求体**:
21
+ | 字段 | 类型 | 必填 | 说明 |
22
+ |------|------|------|------|
23
+ - **响应**:
24
+ - 200:示例 + 字段说明
25
+ - 4xx/5xx:错误码表
26
+ - **示例**:curl + 响应(真实或明确标注示意)
27
+ ```
28
+
29
+ ## 纪律
30
+
31
+ 1. 字段表是「契约」——字段名、类型、必填、默认值必须与实现一致;
32
+ 2. 错误码表含:码、含义、何时触发、建议处理;
33
+ 3. 示例请求/响应**必须**与字段表一致(同一真理源,不双写);
34
+ 4. 变更日志:破坏性变更(字段删改/语义变化)单列小节。
35
+
36
+ ## 校验清单
37
+
38
+ - [ ] 每个字段在表里还是遗漏?
39
+ - [ ] 示例是否与字段表自洽?
40
+ - [ ] 错误码是否覆盖常见失败路径?
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: doc-planner
3
+ description: 从需求推导文档骨架:受众分析、章节规划、信息层级
4
+ ---
5
+
6
+ # doc-planner:从需求推导文档骨架
7
+
8
+ ## 用途
9
+
10
+ 把「要写什么」转化为「读者能高效获取信息的结构」。任何文档动笔前先跑本流程。
11
+
12
+ ## 输入
13
+
14
+ - 主题范围
15
+ - 受众(角色 + 背景 + 阅读目的)
16
+ - 交付形态(api-reference / tutorial / architecture)
17
+
18
+ ## 流程
19
+
20
+ 1. **受众分析**:谁读?读后要能做什么?三分钟讲清楚第一句怎么写。
21
+ 2. **目标倒推**:从「读者读完会做的一个动作」倒推需要哪些信息块。
22
+ 3. **章节规划**:按信息块分层级,每章一个可回答的问题。
23
+ 4. **层级校验**:每一节是否只回答一个问题?重叠即合并。
24
+
25
+ ## 产出骨架模板
26
+
27
+ ```markdown
28
+ # 标题
29
+ > 一句话定位(读者 + 价值)
30
+
31
+ ## 前置知识
32
+ ## 概念 / 核心对象
33
+ ## 操作步骤 / 端点列表
34
+ ## 常见问题与错误
35
+ ## 附录
36
+ ```
37
+
38
+ ## 校验清单
39
+
40
+ - [ ] 读者画像是否具体到能判断「这节该不该写」?
41
+ - [ ] 每章是否对应一个可回答的问题?
42
+ - [ ] 信息是否按读者路径(而非实现路径)组织?
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: nutrient-search
3
+ description: 土壤吸收:搜索最新行业资料与最佳实践作为设计养分,外部方案经种子过滤后吸收
4
+ ---
5
+
6
+ # nutrient-search:土壤吸收(搜索养分)
7
+
8
+ ## 用途
9
+
10
+ 设计不闭门造车。构思任何非平凡方案前,先搜索最新行业资料、大厂方案、社区踩坑结论,作为设计养分。
11
+
12
+ ## 流程
13
+
14
+ 1. **搜索**:围绕方案主题搜 3-5 个信息源(官方文档、实践文章、对比评测、踩坑贴);
15
+ 2. **提炼**:每个来源提炼「它解决了什么 + 关键做法 + 代价」——不复制结论,只吸收养分;
16
+ 3. **种子过滤**:与最小单元冲突的方案**弃用或改造**;验证为最佳实践才吸收为设计依据;仅参考的记录来源,不做决策硬依赖;
17
+ 4. **记录来源**:设计文档中引用外部信息时标注来源,让养分可追溯。
18
+
19
+ ## 纪律
20
+
21
+ - 搜索结论必须**进入设计决策并逐层对齐生长**——吸收但不生长等于白吸收;
22
+ - 不为了显得「有调研」而堆砌来源;每条引用都要回答「它改变了设计的哪一点」。
23
+
24
+ ## 校验清单
25
+
26
+ - [ ] 每个搜索结论是否回答了「它改变了设计的哪一点」?
27
+ - [ ] 引用的来源可追溯?
28
+ - [ ] 与种子冲突的方案是被「弃用/改造」而非「硬套」?
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: seed-finder
3
+ description: 最小单元(种子)收敛:用连续追问逆向拆解到不可再拆的最小闭环,验证自足/可重复/可观察三性
4
+ ---
5
+
6
+ # seed-finder:最小单元(种子)收敛
7
+
8
+ ## 用途
9
+
10
+ 任何项目方案前,先锁定「最小完整单元」(种子)。本技能引导用户自己收敛,不替用户定义。
11
+
12
+ ## 流程
13
+
14
+ 1. **问最小闭环**:这个想法最核心的一次「触发→处理→输出」是什么?先忽略外围(UI、权限、扩展)
15
+ 2. **问边界**:谁触发它?产出给谁用?
16
+ 3. **问不可再拆**:这个闭环再拆一步还能拆吗?拆到不可再拆、且仍自足的那一层
17
+ 4. **问三性**:和用户一起验证——自足(一次触发一次完整回答)、可重复(每次独立)、可观察(可记录可测试)
18
+ 5. **复述确认**:把收敛出的种子用一句话复述给用户,请用户确认或修正;确认后才进入后续设计
19
+
20
+ ## 例外
21
+
22
+ 用户明确表示「不要探讨、直接设计」——尊重用户,但提示「种子未锁定,后续设计可能要返工」,并按指示继续。
23
+
24
+ ## 校验清单
25
+
26
+ - [ ] 种子是否一句话能说清?
27
+ - [ ] 三性是否经用户确认(非自己断言)?
28
+ - [ ] 外围(UI/权限/扩展)是否被有意排除在种子之外?
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: ssot-audit
3
+ description: 单一真理源自检:识别补丁思维信号,检查设计是否在最小单元之外引入冗余机制
4
+ ---
5
+
6
+ # ssot-audit:单一真理源(SSOT)自检
7
+
8
+ ## 用途
9
+
10
+ 方案完成前的收尾审计:检查设计是否真正建立在单一真理源(最小单元)之上,是否混入了补丁思维。
11
+
12
+ ## 补丁思维信号
13
+
14
+ 出现以下任一,回到种子重新审视:
15
+
16
+ - 「这个场景需要特殊处理」
17
+ - 「再加一个模块 / 引擎」
18
+ - 「先加个 flag」
19
+
20
+ ## SSOT 三问
21
+
22
+ 1. **这套逻辑是否只在某场景生效?**——是则可能是场景特化,应参数化。
23
+ 2. **去掉特殊处理,核心逻辑是否完整?**——不完整说明补丁承担了本该由核心承担的职责。
24
+ 3. **实现是否需要在最小单元之外引入新机制?**——是则违背「复杂度向外生长,核心保持简单」。
25
+
26
+ ## 产出
27
+
28
+ 审计结论写入方案文档:`SSOT 自检`小节——三问答案 + 补丁信号检查结果 + 需要回到种子的事项。
29
+
30
+ ## 校验清单
31
+
32
+ - [ ] 三问任一为「是」?
33
+ - [ ] 是否检出补丁思维信号?
34
+ - [ ] 审计结论是否落进方案文档(非口头自查)?
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: style-guide
3
+ description: 技术写作风格与规范校对:术语一致、语气、可读性
4
+ ---
5
+
6
+ # style-guide:技术写作风格与规范校对
7
+
8
+ ## 用途
9
+
10
+ 交付前校对文档:术语、语气、可读性。这是方案落地为专业文档的收尾工序。
11
+
12
+ ## 校对维度
13
+
14
+ 1. **术语一致**:同一概念全文同词;缩写首次给全称;禁用同一事物多种叫法。
15
+ 2. **语气**:客观陈述,避免「显然/其实/众所周知」等填充语;面向操作指令用祈使句。
16
+ 3. **可读性**:
17
+ - 句子 ≤ 30 字为宜,长句拆短;
18
+ - 段落一意一段,段首主题句;
19
+ - 列表/表格优先于长段落(扫描友好)。
20
+ 4. **信息唯一**:同一结论只出现一次(单一真理源)——发现重复,改引用不复制。
21
+
22
+ ## 校对流程
23
+
24
+ 1. 通读一遍抓结构问题(不逐字);
25
+ 2. 术语表核对(如有)——全文 grep 一致性;
26
+ 3. 逐段检查可读性;
27
+ 4. 输出问题清单:**问题位置 → 问题类型 → 改法**,不直接改全文(让作者确认)。
28
+
29
+ ## 输出模板
30
+
31
+ ```markdown
32
+ | 位置 | 类型 | 问题 | 建议 |
33
+ |------|------|------|------|
34
+ ```
35
+
36
+ ## 校验清单
37
+
38
+ - [ ] 术语无混用?缩写有全称?
39
+ - [ ] 无「显然」类填充语?
40
+ - [ ] 结论无重复表述?
@@ -1,49 +0,0 @@
1
- /**
2
- * 护栏模块 — 输入/输出内容安全检查
3
- *
4
- * 从 AgentLoop 提取的独立模块,职责单一:
5
- * 遍历 guardrail 规则,用正则匹配输入/输出文本,
6
- * 命中 block action 时返回 blocked=true。
7
- *
8
- * 护栏自身异常(正则编译失败等)降级为"放行 + 记日志 + 通知宿主",
9
- * 永远不阻断用户对话(降级优先原则)。
10
- *
11
- * 设计说明:
12
- * - 输入/输出共享同一护栏规则集和同一检查逻辑
13
- * - 规则格式:Memory.content 中包含 `pattern: /regex/` 和 `action: block|warn`
14
- * - 无状态纯函数,由 AgentLoop 调用
15
- */
16
- import type { Memory } from '../memory/types.js';
17
- /** 护栏检查结果 */
18
- export interface GuardrailResult {
19
- /** 是否阻断(block action 命中时为 true) */
20
- blocked: boolean;
21
- /** 阻断时的提示消息(传给用户) */
22
- message?: string;
23
- /** 警告时的提示消息(warn action 命中时仍放行,但附带警告) */
24
- warning?: string;
25
- }
26
- /** 护栏 UI 消息接口(从 UIMessages 中提取护栏相关字段) */
27
- export interface GuardrailUI {
28
- /** 输入被阻断时的消息生成函数 */
29
- inputBlockedByGuard: (rule: string) => string;
30
- /** 护栏规则正则编译失败时的回调(宿主可据此发射事件通知用户) */
31
- onRegexError?: (rule: string, message: string) => void;
32
- }
33
- /**
34
- * 运行护栏检查
35
- *
36
- * 遍历所有 guardrail 规则,用正则匹配输入文本。
37
- * 命中 block action 时返回 blocked=true;
38
- * 命中 warn action 时返回 blocked=false + warning。
39
- *
40
- * 护栏自身异常(正则编译失败等)降级为"放行 + 记日志 + 通知宿主",
41
- * 永远不阻断用户对话(降级优先原则)。
42
- *
43
- * @param rules - 护栏规则记忆数组(source='guardrail' 的 Memory)
44
- * @param input - 待检查的文本(用户输入或 LLM 输出)
45
- * @param ui - UI 消息接口(用于生成阻断/警告提示文案)
46
- * @returns 护栏检查结果
47
- */
48
- export declare function runGuardrails(rules: readonly Memory[], input: string, ui: GuardrailUI): GuardrailResult;
49
- //# sourceMappingURL=guardrail.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guardrail.d.ts","sourceRoot":"","sources":["../../src/agent/guardrail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,aAAa;AACb,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,oCAAoC;IACpC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,WAAW,GACd,eAAe,CA0CjB"}