kevlar-4u 1.2.0 → 1.3.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.
Files changed (243) hide show
  1. package/README.md +131 -58
  2. package/dist/__tests__/createPersonaTool.test.js +47 -28
  3. package/dist/__tests__/createPersonaTool.test.js.map +1 -1
  4. package/dist/__tests__/createPersonaWizard.test.js +3 -3
  5. package/dist/__tests__/createPersonaWizard.test.js.map +1 -1
  6. package/dist/__tests__/deletePersonaWizard.test.js +16 -23
  7. package/dist/__tests__/deletePersonaWizard.test.js.map +1 -1
  8. package/dist/__tests__/e2e.test.js +20 -36
  9. package/dist/__tests__/e2e.test.js.map +1 -1
  10. package/dist/__tests__/execution.test.js +16 -23
  11. package/dist/__tests__/execution.test.js.map +1 -1
  12. package/dist/__tests__/focusTopicTransform.test.d.ts +2 -0
  13. package/dist/__tests__/focusTopicTransform.test.d.ts.map +1 -0
  14. package/dist/__tests__/focusTopicTransform.test.js +48 -0
  15. package/dist/__tests__/focusTopicTransform.test.js.map +1 -0
  16. package/dist/__tests__/kevlarPrd.test.d.ts +2 -0
  17. package/dist/__tests__/kevlarPrd.test.d.ts.map +1 -0
  18. package/dist/__tests__/kevlarPrd.test.js +108 -0
  19. package/dist/__tests__/kevlarPrd.test.js.map +1 -0
  20. package/dist/__tests__/listPersonasTool.test.js +21 -30
  21. package/dist/__tests__/listPersonasTool.test.js.map +1 -1
  22. package/dist/__tests__/parser.test.js +116 -122
  23. package/dist/__tests__/parser.test.js.map +1 -1
  24. package/dist/__tests__/reviewContentWizard.test.js +195 -24
  25. package/dist/__tests__/reviewContentWizard.test.js.map +1 -1
  26. package/dist/dao/IRuleRepository.d.ts +37 -0
  27. package/dist/dao/IRuleRepository.d.ts.map +1 -0
  28. package/dist/dao/IRuleRepository.js +2 -0
  29. package/dist/dao/IRuleRepository.js.map +1 -0
  30. package/dist/dao/LocalJsonRuleRepository.d.ts +28 -0
  31. package/dist/dao/LocalJsonRuleRepository.d.ts.map +1 -0
  32. package/dist/dao/LocalJsonRuleRepository.js +195 -0
  33. package/dist/dao/LocalJsonRuleRepository.js.map +1 -0
  34. package/dist/dao/index.d.ts +4 -0
  35. package/dist/dao/index.d.ts.map +1 -0
  36. package/dist/dao/index.js +2 -0
  37. package/dist/dao/index.js.map +1 -0
  38. package/dist/dao/types.d.ts +68 -0
  39. package/dist/dao/types.d.ts.map +1 -0
  40. package/dist/dao/types.js +2 -0
  41. package/dist/dao/types.js.map +1 -0
  42. package/dist/execution/aggregator.d.ts +3 -0
  43. package/dist/execution/aggregator.d.ts.map +1 -1
  44. package/dist/execution/aggregator.js +46 -17
  45. package/dist/execution/aggregator.js.map +1 -1
  46. package/dist/execution/base.d.ts +3 -0
  47. package/dist/execution/base.d.ts.map +1 -1
  48. package/dist/execution/config.d.ts +8 -0
  49. package/dist/execution/config.d.ts.map +1 -1
  50. package/dist/execution/config.js +2 -0
  51. package/dist/execution/config.js.map +1 -1
  52. package/dist/execution/dimensions.d.ts +155 -0
  53. package/dist/execution/dimensions.d.ts.map +1 -0
  54. package/dist/execution/dimensions.js +1194 -0
  55. package/dist/execution/dimensions.js.map +1 -0
  56. package/dist/execution/focusTopicTransform.d.ts +32 -0
  57. package/dist/execution/focusTopicTransform.d.ts.map +1 -0
  58. package/dist/execution/focusTopicTransform.js +208 -0
  59. package/dist/execution/focusTopicTransform.js.map +1 -0
  60. package/dist/execution/index.d.ts.map +1 -1
  61. package/dist/execution/index.js +3 -0
  62. package/dist/execution/index.js.map +1 -1
  63. package/dist/execution/modes/direct_api.d.ts +19 -0
  64. package/dist/execution/modes/direct_api.d.ts.map +1 -1
  65. package/dist/execution/modes/direct_api.js +16 -7
  66. package/dist/execution/modes/direct_api.js.map +1 -1
  67. package/dist/execution/modes/orchestration.d.ts.map +1 -1
  68. package/dist/execution/modes/orchestration.js +126 -15
  69. package/dist/execution/modes/orchestration.js.map +1 -1
  70. package/dist/execution/modes/sampling.d.ts.map +1 -1
  71. package/dist/execution/modes/sampling.js +8 -6
  72. package/dist/execution/modes/sampling.js.map +1 -1
  73. package/dist/execution/parallel.d.ts +14 -1
  74. package/dist/execution/parallel.d.ts.map +1 -1
  75. package/dist/execution/parallel.js +91 -6
  76. package/dist/execution/parallel.js.map +1 -1
  77. package/dist/execution/riskPrompt.d.ts +4 -0
  78. package/dist/execution/riskPrompt.d.ts.map +1 -0
  79. package/dist/execution/riskPrompt.js +50 -0
  80. package/dist/execution/riskPrompt.js.map +1 -0
  81. package/dist/execution/rstParser.d.ts +47 -0
  82. package/dist/execution/rstParser.d.ts.map +1 -0
  83. package/dist/execution/rstParser.js +367 -0
  84. package/dist/execution/rstParser.js.map +1 -0
  85. package/dist/execution/rstRecommender.d.ts +48 -0
  86. package/dist/execution/rstRecommender.d.ts.map +1 -0
  87. package/dist/execution/rstRecommender.js +277 -0
  88. package/dist/execution/rstRecommender.js.map +1 -0
  89. package/dist/i18n/create-persona-wizard-i18n.d.ts +31 -0
  90. package/dist/i18n/create-persona-wizard-i18n.d.ts.map +1 -0
  91. package/dist/i18n/create-persona-wizard-i18n.js +265 -0
  92. package/dist/i18n/create-persona-wizard-i18n.js.map +1 -0
  93. package/dist/i18n/dimensions-i18n.d.ts +14 -0
  94. package/dist/i18n/dimensions-i18n.d.ts.map +1 -0
  95. package/dist/i18n/dimensions-i18n.js +56 -0
  96. package/dist/i18n/dimensions-i18n.js.map +1 -0
  97. package/dist/i18n/errors-i18n.d.ts +10 -0
  98. package/dist/i18n/errors-i18n.d.ts.map +1 -0
  99. package/dist/i18n/errors-i18n.js +34 -0
  100. package/dist/i18n/errors-i18n.js.map +1 -0
  101. package/dist/i18n/index.d.ts +16 -0
  102. package/dist/i18n/index.d.ts.map +1 -0
  103. package/dist/i18n/index.js +58 -0
  104. package/dist/i18n/index.js.map +1 -0
  105. package/dist/i18n/tools-i18n.d.ts +14 -0
  106. package/dist/i18n/tools-i18n.d.ts.map +1 -0
  107. package/dist/i18n/tools-i18n.js +45 -0
  108. package/dist/i18n/tools-i18n.js.map +1 -0
  109. package/dist/i18n/wizard-i18n.d.ts +32 -0
  110. package/dist/i18n/wizard-i18n.d.ts.map +1 -0
  111. package/dist/i18n/wizard-i18n.js +99 -0
  112. package/dist/i18n/wizard-i18n.js.map +1 -0
  113. package/dist/renderers/buildStructuredPreAuditSummary.d.ts +8 -0
  114. package/dist/renderers/buildStructuredPreAuditSummary.d.ts.map +1 -0
  115. package/dist/renderers/buildStructuredPreAuditSummary.js +27 -0
  116. package/dist/renderers/buildStructuredPreAuditSummary.js.map +1 -0
  117. package/dist/renderers/index.d.ts +5 -0
  118. package/dist/renderers/index.d.ts.map +1 -0
  119. package/dist/renderers/index.js +4 -0
  120. package/dist/renderers/index.js.map +1 -0
  121. package/dist/renderers/normalizeRiskFinding.d.ts +3 -0
  122. package/dist/renderers/normalizeRiskFinding.d.ts.map +1 -0
  123. package/dist/renderers/normalizeRiskFinding.js +14 -0
  124. package/dist/renderers/normalizeRiskFinding.js.map +1 -0
  125. package/dist/renderers/renderPreAuditSummary.d.ts +3 -0
  126. package/dist/renderers/renderPreAuditSummary.d.ts.map +1 -0
  127. package/dist/renderers/renderPreAuditSummary.js +42 -0
  128. package/dist/renderers/renderPreAuditSummary.js.map +1 -0
  129. package/dist/renderers/types.d.ts +34 -0
  130. package/dist/renderers/types.d.ts.map +1 -0
  131. package/dist/renderers/types.js +2 -0
  132. package/dist/renderers/types.js.map +1 -0
  133. package/dist/tools/createPersonaTool.d.ts +5 -2
  134. package/dist/tools/createPersonaTool.d.ts.map +1 -1
  135. package/dist/tools/createPersonaTool.js +51 -26
  136. package/dist/tools/createPersonaTool.js.map +1 -1
  137. package/dist/tools/createPersonaWizardTool.d.ts.map +1 -1
  138. package/dist/tools/createPersonaWizardTool.js +698 -235
  139. package/dist/tools/createPersonaWizardTool.js.map +1 -1
  140. package/dist/tools/deletePersonaTool.d.ts.map +1 -1
  141. package/dist/tools/deletePersonaTool.js +8 -17
  142. package/dist/tools/deletePersonaTool.js.map +1 -1
  143. package/dist/tools/helpTool.d.ts.map +1 -1
  144. package/dist/tools/helpTool.js +3 -41
  145. package/dist/tools/helpTool.js.map +1 -1
  146. package/dist/tools/index.d.ts.map +1 -1
  147. package/dist/tools/index.js +2 -0
  148. package/dist/tools/index.js.map +1 -1
  149. package/dist/tools/languageTool.d.ts +7 -0
  150. package/dist/tools/languageTool.d.ts.map +1 -0
  151. package/dist/tools/languageTool.js +54 -0
  152. package/dist/tools/languageTool.js.map +1 -0
  153. package/dist/tools/listPersonasTool.d.ts.map +1 -1
  154. package/dist/tools/listPersonasTool.js +26 -17
  155. package/dist/tools/listPersonasTool.js.map +1 -1
  156. package/dist/tools/reviewContentWizardTool.d.ts.map +1 -1
  157. package/dist/tools/reviewContentWizardTool.js +865 -222
  158. package/dist/tools/reviewContentWizardTool.js.map +1 -1
  159. package/dist/tools/reviewTool.d.ts +3 -0
  160. package/dist/tools/reviewTool.d.ts.map +1 -1
  161. package/dist/tools/reviewTool.js +4 -1
  162. package/dist/tools/reviewTool.js.map +1 -1
  163. package/dist/utils/errors.d.ts.map +1 -1
  164. package/dist/utils/errors.js +2 -1
  165. package/dist/utils/errors.js.map +1 -1
  166. package/dist/utils/parser.d.ts +48 -2
  167. package/dist/utils/parser.d.ts.map +1 -1
  168. package/dist/utils/parser.js +272 -130
  169. package/dist/utils/parser.js.map +1 -1
  170. package/package.json +22 -7
  171. package/skills/auditors.json +91 -0
  172. package/skills/rules.json +16 -0
  173. package/skills/tmp/wizard-review-06cyfy55_review_wizard.json +71 -0
  174. package/skills/tmp/wizard-review-0bp8nsap_review_wizard.json +21 -0
  175. package/skills/tmp/wizard-review-0f9fl4yg_review_wizard.json +71 -0
  176. package/skills/tmp/wizard-review-0ogx1wb0_review_wizard.json +117 -0
  177. package/skills/tmp/wizard-review-0syhetgl_review_wizard.json +83 -0
  178. package/skills/tmp/wizard-review-1hrqvy6m_review_wizard.json +21 -0
  179. package/skills/tmp/wizard-review-1rjya1oi_review_wizard.json +83 -0
  180. package/skills/tmp/wizard-review-2598m0v6_review_wizard.json +83 -0
  181. package/skills/tmp/wizard-review-2f8iwkkt_review_wizard.json +21 -0
  182. package/skills/tmp/wizard-review-30gqoa6k_review_wizard.json +83 -0
  183. package/skills/tmp/wizard-review-42hj1eim_review_wizard.json +83 -0
  184. package/skills/tmp/wizard-review-51f4jqtz_review_wizard.json +21 -0
  185. package/skills/tmp/wizard-review-5ffz7zvj_review_wizard.json +83 -0
  186. package/skills/tmp/wizard-review-5mgwzmzu_review_wizard.json +21 -0
  187. package/skills/tmp/wizard-review-69oc4sih_review_wizard.json +21 -0
  188. package/skills/tmp/wizard-review-6e6snpcg_review_wizard.json +71 -0
  189. package/skills/tmp/wizard-review-6rcfso7c_review_wizard.json +83 -0
  190. package/skills/tmp/wizard-review-7boabjwe_review_wizard.json +21 -0
  191. package/skills/tmp/wizard-review-7feoy82w_review_wizard.json +89 -0
  192. package/skills/tmp/wizard-review-7z7gokd8_review_wizard.json +21 -0
  193. package/skills/tmp/wizard-review-899k8jw3_review_wizard.json +21 -0
  194. package/skills/tmp/wizard-review-8p55cbhg_review_wizard.json +83 -0
  195. package/skills/tmp/wizard-review-9d57e5d4_review_wizard.json +71 -0
  196. package/skills/tmp/wizard-review-9kga57z5_review_wizard.json +83 -0
  197. package/skills/tmp/wizard-review-akhvy50k_review_wizard.json +83 -0
  198. package/skills/tmp/wizard-review-amg123hp_review_wizard.json +83 -0
  199. package/skills/tmp/wizard-review-biiovl7d_review_wizard.json +161 -0
  200. package/skills/tmp/wizard-review-bqlhhr7t_review_wizard.json +71 -0
  201. package/skills/tmp/wizard-review-cz6py1tj_review_wizard.json +21 -0
  202. package/skills/tmp/wizard-review-djqawy2u_review_wizard.json +21 -0
  203. package/skills/tmp/wizard-review-e6dz0vss_review_wizard.json +83 -0
  204. package/skills/tmp/wizard-review-eavox37t_review_wizard.json +21 -0
  205. package/skills/tmp/wizard-review-ei2vvb15_review_wizard.json +71 -0
  206. package/skills/tmp/wizard-review-ek0iioha_review_wizard.json +21 -0
  207. package/skills/tmp/wizard-review-epvji0l8_review_wizard.json +83 -0
  208. package/skills/tmp/wizard-review-f21aajoy_review_wizard.json +89 -0
  209. package/skills/tmp/wizard-review-gfi260z3_review_wizard.json +89 -0
  210. package/skills/tmp/wizard-review-lrolkvl2_review_wizard.json +92 -0
  211. package/skills/tmp/wizard-review-mpx4hahp_review_wizard.json +71 -0
  212. package/skills/tmp/wizard-review-o0ec25eu_review_wizard.json +21 -0
  213. package/skills/tmp/wizard-review-o4ghwnen_review_wizard.json +89 -0
  214. package/skills/tmp/wizard-review-o7b4jrvw_review_wizard.json +83 -0
  215. package/skills/tmp/wizard-review-odt3xr9f_review_wizard.json +89 -0
  216. package/skills/tmp/wizard-review-ozf7vava_review_wizard.json +103 -0
  217. package/skills/tmp/wizard-review-pdwnw57x_review_wizard.json +21 -0
  218. package/skills/tmp/wizard-review-qbtwnipl_review_wizard.json +21 -0
  219. package/skills/tmp/wizard-review-r4aun0um_review_wizard.json +71 -0
  220. package/skills/tmp/wizard-review-rhrx9nkc_review_wizard.json +71 -0
  221. package/skills/tmp/wizard-review-rs4u8iod_review_wizard.json +153 -0
  222. package/skills/tmp/wizard-review-se76fipi_review_wizard.json +83 -0
  223. package/skills/tmp/wizard-review-tefpu26m_review_wizard.json +21 -0
  224. package/skills/tmp/wizard-review-u0mxjjbj_review_wizard.json +125 -0
  225. package/skills/tmp/wizard-review-v9ptn2at_review_wizard.json +21 -0
  226. package/skills/tmp/wizard-review-z09wonpe_review_wizard.json +83 -0
  227. package/skills/wechat_official.json +61 -0
  228. package/skills/xiaohongshu.json +116 -0
  229. package/skills/zhihu.json +34 -0
  230. package/README.ja.md +0 -348
  231. package/README.ko.md +0 -348
  232. package/README.zh.md +0 -348
  233. package/skills/tmp/wizard-create-3mk79v9g_draft.json +0 -35
  234. package/skills/tmp/wizard-create-3mk79v9g_wizard.json +0 -35
  235. package/skills/tmp/wizard-create-yilbwzz6_draft.json +0 -35
  236. package/skills/tmp/wizard-create-yilbwzz6_wizard.json +0 -35
  237. package/skills/wechat_official/wechat_official.md +0 -26
  238. package/skills/wechat_official/wechat_official_1.md +0 -31
  239. package/skills/xiaohongshu/xiaohongshu.md +0 -26
  240. package/skills/xiaohongshu/xiaohongshu_1.md +0 -29
  241. package/skills/xiaohongshu/xiaohongshu_2.md +0 -34
  242. package/skills/xiaohongshu/xiaohongshu_3.md +0 -30
  243. package/skills/zhihu/zhihu.md +0 -34
package/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Kevlar-4u — Comment Section Simulator
2
2
 
3
3
  ![Release](https://img.shields.io/github/actions/workflow/status/9Churze/kevlar-4u/release.yml?label=Release&logo=github)
4
- ![License](https://img.shields.io/badge/license-MIT-blue)
4
+ ![License](https://img.shields.io/badge/license-AGPLv3-blue)
5
5
  ![Version](https://img.shields.io/badge/version-1.0.0-blue)
6
6
  ![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen)
7
7
 
8
- 🌐 [English](README.md) · [中文](README.zh.md) · [日本語](README.ja.md) · [한국어](README.ko.md)
8
+ 🌐 [English](README.md) · [中文](docs/README.zh.md) · [日本語](docs/README.ja.md) · [한국어](docs/README.ko.md)
9
9
 
10
10
  ---
11
11
 
@@ -23,6 +23,16 @@ And most platforms don't offer a real **A/B test**. Once content goes live, by t
23
23
 
24
24
  **Kevlar-4u helps you surface these problems before you hit publish.**
25
25
 
26
+ ---
27
+
28
+ ## License
29
+
30
+ Kevlar-4u's core local features are open-sourced under the **AGPLv3** license.
31
+
32
+ Cloud-based risk word cloud services, paid rule synchronization, and advanced features are **proprietary commercial services**.
33
+
34
+ ---
35
+
26
36
  ## Who needs Kevlar
27
37
 
28
38
  **Indie developers** / **Content creators** / **Product teams** / **PR teams** / Heavy users of X, Reddit, V2EX, Hacker News / Anyone who wants to improve content quality and reach
@@ -35,15 +45,15 @@ And most platforms don't offer a real **A/B test**. Once content goes live, by t
35
45
 
36
46
  Break out of the single-AI perspective with comprehensive persona customization:
37
47
 
38
- - **Core attributes**: Age, interests, personality, stance.
48
+ - **Core attributes**: Age, interests, personality, tone of voice.
49
+ - **RST (Reaction Simulation Taxonomy)**: Four-layer internet reaction simulation — choose an archetype (e.g., "Anti-Marketing Detector"), content sensitivity triggers, regional cultural context, and platform culture. The system simulates how real internet users react, not just how reviewers evaluate.
39
50
  - **Cognition & relationship**: Define blind spots (e.g., domain-specific biases) and social relationship with the author (e.g., a strict mentor, a radical opponent).
40
- - **Cultural adaptation**: The system automatically detects the language of input content and infers a matching localized cultural context.
51
+ - **Natural language creation**: Describe your ideal reviewer in plain text (e.g., "a cynical HN user who hates buzzwords"), and the system auto-parses it into a full RST configuration.
41
52
 
42
- ### 2. Fully Automated Feedback Pipeline
53
+ ### 2. Two-Stage Review Pipeline
43
54
 
44
- - **Smart dispatch**: Paste your work and the AI dispatcher automatically analyzes the content's characteristics.
45
- - **Precise matching**: Dynamically filters and schedules the most relevant reviewers.
46
- - **Multi-dimensional collision**: Triggers differentiated comments and feedback from diverse stances and professional perspectives.
55
+ - **Stage 1 — System Pre-audit**: Five specialized system auditors scan content for compliance, context distortion, network culture risks, factual errors, and social risk producing a structured findings report.
56
+ - **Stage 2 — RST Review**: User-created reviewers with RST personalities receive **Focus Topics** (filtered + translated from pre-audit findings) and produce authentic user reactions, not dimension-scored reports.
47
57
 
48
58
  ---
49
59
 
@@ -103,43 +113,45 @@ Low-level direct tools (suitable for automation scripts):
103
113
 
104
114
  ### Content Review Flow
105
115
 
106
- `review_content_wizard` chains "save content, select reviewers, confirm execution" into a stable flow.
116
+ `review_content_wizard` chains "pre-audit, reviewer selection, Focus Topic transformation, RST review" into a stable flow.
107
117
 
108
118
  ```mermaid
109
119
  flowchart TD
110
- A["Submit content for review"] --> B{"Any personas?"}
111
- B -->|No| C["Prompt to create persona, save state"]
112
- C -.->|"Same sessionId"| B
113
- B -->|Yes| D["Collect target platform"]
114
- D --> E["Filter personas by platform"]
115
- E --> F{"Count matched"}
116
- F -->|"≤2"| G["Show matched personas"]
117
- F -->|"3+"| H["AI recommend 1-3 personas"]
118
- G --> I["Confirm selection"]
119
- H --> I
120
- I --> J["Token cost estimate"]
121
- J --> K{"Confirm?"}
122
- K -->|Yes| L["Execute review"]
123
- K -->|No| I
120
+ A["Submit content"] --> B["Stage 1: System Pre-audit"]
121
+ B --> C["5 system auditors scan in parallel"]
122
+ C --> D["Raw findings report"]
123
+ D --> E{"Any user personas?"}
124
+ E -->|No| F["Prompt to create persona, save state"]
125
+ F -.->|"Same sessionId"| E
126
+ E -->|Yes| G["Select reviewers (RST recommended or manual)"]
127
+ G --> H["Focus Topic transformation"]
128
+ H --> I["Filter findings by reviewer's RST triggers"]
129
+ I --> J["Translate to natural-language prompts"]
130
+ J --> K["Stage 2: RST Review"]
131
+ K --> L["Each reviewer produces authentic user reaction"]
132
+ L --> M["Aggregated report"]
124
133
  ```
125
134
 
126
135
  ### Creating a Reviewer Persona
127
136
 
128
- `create_persona_wizard` guides you through persona creation step by step.
137
+ `create_persona_wizard` guides you through persona creation with RST support.
129
138
 
130
139
  ```mermaid
131
140
  flowchart LR
132
141
  A["Age range"] --> B["Interests"]
133
142
  B --> C["Personality traits"]
134
143
  C --> D["Tone of voice"]
135
- D --> E["Platforms"]
144
+ D --> E["Platform"]
136
145
  E --> F["Author relation"]
137
- F --> G["Final confirmation & preview"]
138
- G -->|Confirm| H["Save persona"]
139
- G -->|Edit| G
146
+ F --> G["Perspective / RST archetype"]
147
+ G --> H["Final confirmation & preview"]
148
+ H -->|Confirm| I["Save persona"]
149
+ H -->|Edit| G
140
150
  ```
141
151
 
142
- After creation, Kevlar-4u automatically infers the cultural background, relationship with author, stance, and blind spots, saving them to `skills/*.md`.
152
+ You can select a traditional perspective preset (9 options) or an **RST archetype** (8 options). RST archetypes auto-configure triggers, regional context, and platform culture. You can also describe your ideal reviewer in natural language (e.g., "a skeptical tech user on HN") and the system will parse it into a full RST config.
153
+
154
+ After creation, Kevlar-4u automatically infers the cultural background, blind spots, and behavior hints, saving them to `skills/*.json` (routed by platform tag — see [Architecture](#architecture-overview)).
143
155
 
144
156
  ---
145
157
 
@@ -246,7 +258,7 @@ flowchart TD
246
258
  Tools --> Wizards["Server-side State Machine Wizards"]
247
259
  Tools --> Execution["Multi-mode Execution Layer"]
248
260
  Wizards --> Tmp["skills/tmp Session State"]
249
- Execution --> Personas["skills/*.md Reviewer Personas"]
261
+ Execution --> Personas["skills/*.json Personas & Rules"]
250
262
  Execution --> Report["Structured Review Report"]
251
263
  ```
252
264
 
@@ -263,13 +275,22 @@ Design principles:
263
275
  kevlar-4u/
264
276
  ├── config/
265
277
  │ └── mcp-config.json # MCP client config template
266
- ├── docs/ # Architecture design, audit reports
278
+ ├── docs/ # Architecture decisions, ADRs, audit reports
279
+ ├── schedule/ # RST design docs & phase logs
280
+ │ ├── RST-ARCHITECTURE.md # RST four-layer architecture
281
+ │ ├── RST-需求文档.md # RST requirements
282
+ │ └── RST-PHASE-LOG.md # RST implementation phase log
267
283
  ├── scripts/ # Install & config scripts
268
284
  │ ├── cli.ts # Interactive install CLI
269
285
  │ ├── registry.ts # MCP client detection
270
286
  │ └── setup.ts # Zero-config setup script
271
287
  ├── skills/ # Reviewer persona library
272
- │ ├── _template.md # Persona template
288
+ │ ├── auditors.json # System auditors (pre-screening)
289
+ │ ├── xiaohongshu.json # Platform: 小红书
290
+ │ ├── zhihu.json # Platform: 知乎
291
+ │ ├── wechat_official.json # Platform: 微信公众号
292
+ │ ├── rules.json # Semantic risk rules (DAO layer)
293
+ │ ├── _template.md # (Legacy) Persona reference template
273
294
  │ └── tmp/ # Runtime wizard session state
274
295
  ├── src/
275
296
  │ ├── index.ts # stdio server entry
@@ -283,7 +304,11 @@ kevlar-4u/
283
304
  │ │ ├── aggregator.ts # Review report aggregation
284
305
  │ │ ├── limiter.ts # Concurrency limiting & retry
285
306
  │ │ ├── lock.ts # Review lock
286
- │ │ ├── parallel.ts # Shared parallel execution
307
+ │ │ ├── parallel.ts # Shared parallel execution + RST prompt builder
308
+ │ │ ├── dimensions.ts # Review dimensions + RST four-layer definitions
309
+ │ │ ├── focusTopicTransform.ts # Focus Topic filter + translate pipeline
310
+ │ │ ├── rstParser.ts # Natural language → RST config parser
311
+ │ │ ├── rstRecommender.ts # RST-based persona recommendation engine
287
312
  │ │ └── modes/
288
313
  │ │ ├── orchestration.ts
289
314
  │ │ ├── sampling.ts
@@ -292,7 +317,7 @@ kevlar-4u/
292
317
  │ │ ├── index.ts # Tool registry
293
318
  │ │ ├── listPersonasTool.ts
294
319
  │ │ ├── createPersonaTool.ts # Create persona + draft management
295
- │ │ ├── createPersonaWizardTool.ts
320
+ │ │ ├── createPersonaWizardTool.ts # Wizard with RST archetype selection
296
321
  │ │ ├── deletePersonaTool.ts
297
322
  │ │ ├── deletePersonaWizardTool.ts
298
323
  │ │ ├── reviewTool.ts
@@ -301,12 +326,17 @@ kevlar-4u/
301
326
  │ │ ├── configureWizardTool.ts
302
327
  │ │ ├── getModesTool.ts
303
328
  │ │ └── helpTool.ts
329
+ │ ├── dao/ # Data Access Layer
330
+ │ │ ├── IRuleRepository.ts # Rule repository interface
331
+ │ │ ├── LocalJsonRuleRepository.ts # Local JSON implementation
332
+ │ │ ├── index.ts # DAO entry point
333
+ │ │ └── types.ts # Rule data types
304
334
  │ ├── prompts/
305
335
  │ │ └── reviewDispatcherPrompt.ts # Internal design reference
306
336
  │ └── utils/
307
337
  │ ├── errors.ts # Error codes & formatting
308
338
  │ ├── logger.ts # Structured logging
309
- │ ├── parser.ts # Persona file parsing & writing
339
+ │ ├── parser.ts # Multi-file JSON persona parsing & writing
310
340
  │ ├── sanitize.ts # Credential scanning, prompt boundary handling
311
341
  │ └── ...
312
342
  └── package.json
@@ -314,36 +344,79 @@ kevlar-4u/
314
344
 
315
345
  ---
316
346
 
317
- ## Contributing Reviewer Personas
347
+ ## Data Storage
318
348
 
319
- Add a subdirectory and `.md` file under `skills/` by platform (or place it directly in the `skills/` root). Custom persona files are excluded by `.gitignore` by default and will not be committed to the repository.
349
+ ### Personas
320
350
 
321
- Refer to the template `skills/_template.md`:
351
+ Personas are stored in **multi-file JSON** format under `skills/`. Each persona file contains a `version`, `last_updated`, and `personas` map:
322
352
 
323
- ```markdown
324
- ---
325
- id: your_persona_id
326
- name: Display name
327
- description: One-line description of what this reviewer focuses on
328
- tags:
329
- - Platform
330
- - Interest
331
- author: custom
332
- ---
353
+ ```json
354
+ {
355
+ "version": "1.0.0",
356
+ "last_updated": "2026-05-28",
357
+ "personas": {
358
+ "analytical_zhihu": {
359
+ "meta": {
360
+ "id": "analytical_zhihu",
361
+ "name": "理性知乎人",
362
+ "tags": ["知乎", "理性分析"],
363
+ "tone": ["专业", "严谨"],
364
+ "dimensionBias": {
365
+ "entries": [
366
+ { "dimension": "information_gap", "weight": "focus" },
367
+ { "dimension": "differentiation", "weight": "focus" }
368
+ ]
369
+ },
370
+ "rst": {
371
+ "archetypes": ["technical_reviewer"],
372
+ "triggers": ["ai_writing", "overhyped", "data_credibility"],
373
+ "regionalPack": "china",
374
+ "platformCulture": "zhihu"
375
+ }
376
+ },
377
+ "systemPrompt": "你是一位活跃在知乎的用户..."
378
+ }
379
+ }
380
+ }
381
+ ```
382
+
383
+ Files are routed by tag:
384
+
385
+ | Tag | Target File | Purpose |
386
+ | --- | --- | --- |
387
+ | `system_auditor` | `auditors.json` | System pre-screening auditors |
388
+ | `"小红书"` | `xiaohongshu.json` | Platform-specific user personas |
389
+ | `"知乎"` | `zhihu.json` | Platform-specific user personas |
390
+ | *(unknown)* | `fallback.json` | Catch-all for unrecognised platforms |
391
+
392
+ New persona files are auto-detected at startup via content sniffing (presence of a `personas` key). Adding a new platform requires only placing a JSON file in `skills/`.
393
+
394
+ ### Rules
333
395
 
334
- Age range:
335
- Interests:
336
- Platforms:
337
- Personality traits:
338
- - Trait → Behavior
396
+ Semantic risk rules live in `skills/rules.json` and are accessed through the DAO layer (`src/dao/`):
339
397
 
340
- Cultural background:
341
- Relationship with author:
342
- Stance:
343
- Blind spots:
398
+ ```json
399
+ {
400
+ "version": "1.0.0",
401
+ "categories": {
402
+ "food": {
403
+ "enabled": true,
404
+ "associative_map": [
405
+ {
406
+ "root": "不新鲜",
407
+ "variants": ["食材不新鲜", "东西不新鲜"],
408
+ "misinterpret_direction": "可能被误解为食品安全问题",
409
+ "severity": "medium"
410
+ }
411
+ ]
412
+ }
413
+ }
414
+ }
344
415
  ```
345
416
 
346
- Custom personas undergo field completeness validation before participating in reviews. At minimum, platforms, personality traits, blind spots, and similar information must be parseable or present in the description.
417
+ ### Creating Personas
418
+
419
+ Use the `create_persona_wizard` tool — it guides you through age, interests, traits, tone, platform, author relation, and **RST archetype selection**. You can also describe your ideal reviewer in natural language (e.g., "a sarcastic tech user on Hacker News who hates marketing fluff") and the system will auto-parse it into a full RST configuration. The persona is automatically saved to the correct platform JSON file. No manual file editing is needed.
347
420
 
348
421
  ---
349
422
 
@@ -4,7 +4,7 @@ import * as fs from "fs";
4
4
  import * as path from "path";
5
5
  import * as os from "os";
6
6
  import { generateIdFromDraft, getSubDirFromDraft, applyDedup, handleSaveDraft, handleUpdatePersonaDraft, handleDeletePersonaDraft, handleCreatePersona, } from "../tools/createPersonaTool.js";
7
- import { invalidatePersonasCache } from "../utils/parser.js";
7
+ import { loadAllPersonas, invalidatePersonasCache } from "../utils/parser.js";
8
8
  let tmpDir;
9
9
  let skillsDir;
10
10
  beforeEach(() => {
@@ -74,20 +74,25 @@ describe("getSubDirFromDraft", () => {
74
74
  });
75
75
  // ── applyDedup ───────────────────────────────────────────────────────────
76
76
  describe("applyDedup", () => {
77
- it("returns baseId when no conflict", () => {
78
- assert.equal(applyDedup(skillsDir, "my_persona"), "my_persona");
79
- });
80
- it("appends _1, _2 when conflicts exist", () => {
81
- fs.writeFileSync(path.join(skillsDir, "my_persona.md"), "", "utf-8");
82
- fs.writeFileSync(path.join(skillsDir, "my_persona_1.md"), "", "utf-8");
83
- const id = applyDedup(skillsDir, "my_persona");
77
+ it("returns baseId when no conflict", async () => {
78
+ assert.equal(await applyDedup(skillsDir, "my_persona"), "my_persona");
79
+ });
80
+ it("appends _1, _2 when conflicts exist in persona files", async () => {
81
+ // Create fallback.json with existing IDs
82
+ const personasPath = path.join(skillsDir, "fallback.json");
83
+ fs.writeFileSync(personasPath, JSON.stringify({
84
+ version: "1.0.0",
85
+ last_updated: "2026-05-28",
86
+ personas: {
87
+ my_persona: { meta: { id: "my_persona" }, systemPrompt: "" },
88
+ my_persona_1: { meta: { id: "my_persona_1" }, systemPrompt: "" },
89
+ },
90
+ }), "utf-8");
91
+ const id = await applyDedup(skillsDir, "my_persona");
84
92
  assert.equal(id, "my_persona_2");
85
93
  });
86
- it("works with subDir", () => {
87
- fs.mkdirSync(path.join(skillsDir, "testdir"), { recursive: true });
88
- fs.writeFileSync(path.join(skillsDir, "testdir", "foo.md"), "", "utf-8");
89
- const id = applyDedup(skillsDir, "foo", "testdir");
90
- assert.equal(id, "foo_1");
94
+ it("handles empty persona files gracefully", async () => {
95
+ assert.equal(await applyDedup(skillsDir, "foo"), "foo");
91
96
  });
92
97
  });
93
98
  // ── handleSaveDraft ─────────────────────────────────────────────────────
@@ -190,7 +195,7 @@ describe("handleDeletePersonaDraft", () => {
190
195
  });
191
196
  // ── handleCreatePersona ─────────────────────────────────────────────────
192
197
  describe("handleCreatePersona", () => {
193
- it("creates persona with provided id", async () => {
198
+ it("creates persona with provided id in platform file", async () => {
194
199
  const result = await handleCreatePersona(skillsDir, tmpDir, {
195
200
  name: "测试读者",
196
201
  id: "test_reader",
@@ -198,7 +203,11 @@ describe("handleCreatePersona", () => {
198
203
  tags: ["小红书"],
199
204
  });
200
205
  assert.ok(result.content[0].text.includes("测试读者"));
201
- assert.ok(fs.existsSync(path.join(skillsDir, "test_reader.md")));
206
+ const personas = await loadAllPersonas(skillsDir);
207
+ assert.ok(personas.some(p => p.meta.id === "test_reader"));
208
+ // Verify it's stored in the correct platform file, not as .md
209
+ assert.ok(fs.existsSync(path.join(skillsDir, "xiaohongshu.json")));
210
+ assert.ok(!fs.existsSync(path.join(skillsDir, "test_reader.md")));
202
211
  });
203
212
  it("generates id from draft when no id provided", async () => {
204
213
  const filePath = path.join(tmpDir, "my-session_draft.json");
@@ -217,10 +226,11 @@ describe("handleCreatePersona", () => {
217
226
  sessionId: "my-session",
218
227
  });
219
228
  assert.ok(result.content[0].text.includes("理性知乎人"));
220
- const zhihuDir = path.join(skillsDir, "zhihu");
221
- assert.ok(fs.existsSync(zhihuDir));
222
- const files = fs.readdirSync(zhihuDir);
223
- assert.ok(files.some(f => f.endsWith(".md")));
229
+ // Verifies it's stored in platform file (no subdirectory)
230
+ const personas = await loadAllPersonas(skillsDir);
231
+ const persona = personas.find(p => p.meta.name === "理性知乎人");
232
+ assert.ok(persona);
233
+ assert.equal(persona.meta.tags.includes("知乎"), true);
224
234
  });
225
235
  it("returns error when draft is incomplete", async () => {
226
236
  const filePath = path.join(tmpDir, "bad-session_draft.json");
@@ -245,8 +255,16 @@ describe("handleCreatePersona", () => {
245
255
  assert.ok(result.isError);
246
256
  assert.ok(result.content[0].text.includes("名称格式不合法"));
247
257
  });
248
- it("applies dedup when id conflicts", async () => {
249
- fs.writeFileSync(path.join(skillsDir, "my_persona.md"), "existing", "utf-8");
258
+ it("applies dedup when id conflicts in persona files", async () => {
259
+ // Pre-create a persona in fallback.json
260
+ const personasPath = path.join(skillsDir, "fallback.json");
261
+ fs.writeFileSync(personasPath, JSON.stringify({
262
+ version: "1.0.0",
263
+ last_updated: "2026-05-28",
264
+ personas: {
265
+ my_persona: { meta: { id: "my_persona", name: "existing" }, systemPrompt: "" },
266
+ },
267
+ }), "utf-8");
250
268
  const result = await handleCreatePersona(skillsDir, tmpDir, {
251
269
  name: "my_persona",
252
270
  description: "dedup test",
@@ -254,8 +272,6 @@ describe("handleCreatePersona", () => {
254
272
  });
255
273
  const text = result.content.map(c => c.text).join("\n");
256
274
  assert.ok(text.includes("my_persona"));
257
- const files = fs.readdirSync(skillsDir);
258
- assert.equal(files.filter(f => f.startsWith("my_persona")).length, 2);
259
275
  });
260
276
  it("falls back to random id when name is empty", async () => {
261
277
  const result = await handleCreatePersona(skillsDir, tmpDir, {
@@ -266,7 +282,7 @@ describe("handleCreatePersona", () => {
266
282
  const text = result.content.map(c => c.text).join("\n");
267
283
  assert.ok(text.includes("已成功创建"));
268
284
  });
269
- it("creates persona from draft with subdirectory", async () => {
285
+ it("creates persona from draft in platform file (no subdirectory)", async () => {
270
286
  const filePath = path.join(tmpDir, "sub-session_draft.json");
271
287
  fs.writeFileSync(filePath, JSON.stringify({
272
288
  sessionId: "sub-session",
@@ -283,10 +299,13 @@ describe("handleCreatePersona", () => {
283
299
  sessionId: "sub-session",
284
300
  });
285
301
  assert.ok(result.content[0].text.includes("美妆种草机"));
286
- const subDir = path.join(skillsDir, "xiaohongshu");
287
- assert.ok(fs.existsSync(subDir));
288
- const files = fs.readdirSync(subDir);
289
- assert.ok(files.some(f => f.endsWith(".md")));
302
+ // Verify persona is stored in platform file, not in a subdirectory
303
+ const personas = await loadAllPersonas(skillsDir);
304
+ const persona = personas.find(p => p.meta.name === "美妆种草机");
305
+ assert.ok(persona);
306
+ assert.equal(persona.meta.tags.includes("小红书"), true);
307
+ // No subdirectory should be created
308
+ assert.ok(!fs.existsSync(path.join(skillsDir, "xiaohongshu")));
290
309
  });
291
310
  });
292
311
  //# sourceMappingURL=createPersonaTool.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createPersonaTool.test.js","sourceRoot":"","sources":["../../src/__tests__/createPersonaTool.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createPersonaTool.test.js","sourceRoot":"","sources":["../../src/__tests__/createPersonaTool.test.ts"],"names":[],"mappings":"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"}
@@ -98,12 +98,12 @@ describe("handleCreatePersonaWizard fallback state machine", () => {
98
98
  sessionId,
99
99
  userMessage: "已关注",
100
100
  });
101
- assert.ok(textOf(relationRecorded).includes("currentStep: stance"));
102
- const stanceRecorded = await handleCreatePersonaWizard(skillsDir, tmpDir, {
101
+ assert.ok(textOf(relationRecorded).includes("currentStep: perspective"));
102
+ const perspectiveRecorded = await handleCreatePersonaWizard(skillsDir, tmpDir, {
103
103
  sessionId,
104
104
  userMessage: "4",
105
105
  });
106
- assert.ok(textOf(stanceRecorded).includes("currentStep: finalConfirm"));
106
+ assert.ok(textOf(perspectiveRecorded).includes("currentStep: finalConfirm"));
107
107
  const modified = await handleCreatePersonaWizard(skillsDir, tmpDir, {
108
108
  sessionId,
109
109
  userMessage: "年龄段改成30-35岁",
@@ -1 +1 @@
1
- {"version":3,"file":"createPersonaWizard.test.js","sourceRoot":"","sources":["../../src/__tests__/createPersonaWizard.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createPersonaWizard.test.js","sourceRoot":"","sources":["../../src/__tests__/createPersonaWizard.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import * as fs from "fs";
4
4
  import * as path from "path";
5
5
  import * as os from "os";
6
6
  import { handleDeletePersonaWizard } from "../tools/deletePersonaWizardTool.js";
7
- import { invalidatePersonasCache } from "../utils/parser.js";
7
+ import { writePersonaFile, invalidatePersonasCache, loadPersonaById } from "../utils/parser.js";
8
8
  let skillsDir;
9
9
  let tmpDir;
10
10
  beforeEach(() => {
@@ -24,28 +24,21 @@ function extractSessionId(text) {
24
24
  assert.ok(match, `expected sessionId in response: ${text}`);
25
25
  return match[1];
26
26
  }
27
- function writePersona(id, name) {
28
- const filePath = path.join(skillsDir, `${id}.md`);
29
- const file = [
30
- "---",
31
- `id: ${id}`,
32
- `name: ${name}`,
33
- "name_en: Test Persona",
34
- "version: 1.0.0",
35
- "author: ai-generated",
36
- "tags:",
37
- " - test",
38
- `description: ${name} 的测试描述`,
39
- "---",
40
- "性格特质:直接。常用平台:小红书。盲区:无特定盲区。",
41
- ].join("\n");
42
- fs.writeFileSync(filePath, file, "utf-8");
27
+ async function personaExists(id) {
28
+ const persona = await loadPersonaById(skillsDir, id);
29
+ return persona !== null;
30
+ }
31
+ async function writePersona(id, name) {
32
+ const meta = {
33
+ id, name, name_en: "Test Persona", version: "1.0.0", author: "ai-generated",
34
+ tags: ["test"], description: `${name} 的测试描述`,
35
+ };
36
+ await writePersonaFile(skillsDir, meta, "性格特质:直接。常用平台:小红书。盲区:无特定盲区。");
43
37
  invalidatePersonasCache();
44
- return filePath;
45
38
  }
46
39
  describe("handleDeletePersonaWizard", () => {
47
40
  it("binds the selected persona to a session and does not delete before explicit confirmation", async () => {
48
- const filePath = writePersona("visual_reader", "视觉读者");
41
+ await writePersona("visual_reader", "视觉读者");
49
42
  const result = await handleDeletePersonaWizard(skillsDir, tmpDir, {
50
43
  userMessage: "删除视觉读者",
51
44
  });
@@ -53,10 +46,10 @@ describe("handleDeletePersonaWizard", () => {
53
46
  assert.ok(text.includes("视觉读者"));
54
47
  assert.ok(text.includes("确认删除"));
55
48
  assert.ok(text.includes("currentStep: confirmDelete"));
56
- assert.ok(fs.existsSync(filePath));
49
+ assert.ok(await personaExists("visual_reader"));
57
50
  });
58
51
  it("deletes only after the user confirms the bound persona name", async () => {
59
- const filePath = writePersona("visual_reader", "视觉读者");
52
+ await writePersona("visual_reader", "视觉读者");
60
53
  const started = await handleDeletePersonaWizard(skillsDir, tmpDir, {
61
54
  userMessage: "删除视觉读者",
62
55
  });
@@ -66,13 +59,13 @@ describe("handleDeletePersonaWizard", () => {
66
59
  userMessage: "确认删除别的角色",
67
60
  });
68
61
  assert.ok(textOf(wrongConfirm).includes("请回复完整确认语"));
69
- assert.ok(fs.existsSync(filePath));
62
+ assert.ok(await personaExists("visual_reader"));
70
63
  const deleted = await handleDeletePersonaWizard(skillsDir, tmpDir, {
71
64
  sessionId,
72
65
  userMessage: "确认删除视觉读者",
73
66
  });
74
67
  assert.ok(textOf(deleted).includes("已删除"));
75
- assert.ok(!fs.existsSync(filePath));
68
+ assert.ok(!(await personaExists("visual_reader")));
76
69
  });
77
70
  });
78
71
  //# sourceMappingURL=deletePersonaWizard.test.js.map