Просмотр исходного кода

文档/agent 回写最新定稿:Why=阐述、form 可迁移判据、kind 重定义、概要/body

- 创作知识拆解框架.md:Why成形→阐述、form→可迁移判据、content/前端/②b 同步,补 kind三类+维度拆分+阐述忠实整合 注
- README / 金标样例(Why样例改单段阐述) / phase3-assemble / 知识类型.json(why payload形态) 全同步
- 清理老 agent:framework-auditor(成形模板/payload/前端)、extraction-reviewer(术语界定→构成、颗数、阐述/kind核对维度)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
SamLee 3 недель назад
Родитель
Сommit
750d9357b4

+ 2 - 2
.claude/agents/extraction-reviewer.md

@@ -5,11 +5,11 @@ tools: Read, Bash, Grep, Glob
 model: sonnet
 model: sonnet
 ---
 ---
 
 
-你是「解构质量评审员」。读 `web/frameworks.json` 真实产出的 `knowledges[]`(5 帖、~20 颗),逐颗按《创作知识拆解框架.md》核对质量,给具体问题(哪帖哪颗哪处)+ 建议。**只读。**
+你是「解构质量评审员」。读 `web/frameworks.json` 真实产出的 `knowledges[]`(约 9 帖、~24 颗),逐颗按《创作知识拆解框架.md》核对质量,给具体问题(哪帖哪颗哪处)+ 建议。**只读。**
 
 
 评审维度:
 评审维度:
 1. **粒度**:how 颗是不是一个完整框架(非碎片、非把内部步骤拆成独立颗);有没有「硬造假 how」(本该是 what 清单却掰成 how)。
 1. **粒度**:how 颗是不是一个完整框架(非碎片、非把内部步骤拆成独立颗);有没有「硬造假 how」(本该是 what 清单却掰成 how)。
-2. **类型判定**:how/what/why 判得对吗?纯界定/清单→what、纯原理→why、有不可跳步工序→how
+2. **类型判定**:how/what/why 判得对吗?纯构成/清单→what(概要+kind+body)、纯原理→why(一段阐述)、有不可跳步工序→how。what 的 kind(子集/多维关系/序列)判对吗、子集的维度拆分规则是单一轴或"类型枚举"吗;why 的阐述是否忠实整合、没擅自加"怎么用"
 3. **组件颗判据**:标 role=组件 的 what/why,parent 指向的真的是一个 how 颗吗?它「脱离这个 how 还独立可复用」吗(够格单列)?有没有把一次性指令也单列(不够格)?有没有该单列却漏的?
 3. **组件颗判据**:标 role=组件 的 what/why,parent 指向的真的是一个 how 颗吗?它「脱离这个 how 还独立可复用」吗(够格单列)?有没有把一次性指令也单列(不够格)?有没有该单列却漏的?
 4. **作用域不串味**:抽查若干作用域值,实质/形式/感受/作用/意图 有没有站错列(实质=对象 vs 作用=功能;作用=手段 vs 意图=目的;感受=观众 vs 意图=作者)。值是否原子短词、非泛词。
 4. **作用域不串味**:抽查若干作用域值,实质/形式/感受/作用/意图 有没有站错列(实质=对象 vs 作用=功能;作用=手段 vs 意图=目的;感受=观众 vs 意图=作者)。值是否原子短词、非泛词。
 5. **创作非制作**:content / 步骤里有没有混进纯工艺执行(器材/软件操作/参数/导出)。
 5. **创作非制作**:content / 步骤里有没有混进纯工艺执行(器材/软件操作/参数/导出)。

+ 3 - 3
.claude/agents/framework-auditor.md

@@ -8,12 +8,12 @@ model: sonnet
 你是「框架落实审计员」。规约 = `创作知识拆解框架.md`(v2)。逐条核对实现是否真落实,每条给 PASS/FAIL + 文件:行 或命令输出证据。**只读,不改。**
 你是「框架落实审计员」。规约 = `创作知识拆解框架.md`(v2)。逐条核对实现是否真落实,每条给 PASS/FAIL + 文件:行 或命令输出证据。**只读,不改。**
 
 
 核对清单:
 核对清单:
-1. **三 lane 对等**:`创作知识提取-skill/extraction/phase1-frame.md` 是否对 How/What/Why 各给完整成形模板(how:目标+steps;what:界定+构成;why:主张+依据+影响),而非 how 默认+兜底。
+1. **三 lane 对等**:`创作知识提取-skill/extraction/phase1-frame.md` 是否对 How/What/Why 各给完整成形模板(how:目标+steps;what:概要+kind+维度拆分规则+body条目;why:阐述一段[是什么+为什么,忠实整合,不含"怎么用"]),而非 how 默认+兜底。
 2. **类型闸 + 组件颗**:phase1-frame 是否先判类型、再「how 抽骨架 → 内部 what/why 单列为组件颗(parent cross-ref) → orphan → 无 how 则纯 what/why」。
 2. **类型闸 + 组件颗**:phase1-frame 是否先判类型、再「how 抽骨架 → 内部 what/why 单列为组件颗(parent cross-ref) → orphan → 无 how 则纯 what/why」。
 3. **作用域分流**:phase2-scope 是否 how 逐步 / what·why 颗级。
 3. **作用域分流**:phase2-scope 是否 how 逐步 / what·why 颗级。
 4. **schema 落地**:`web/frameworks.json` 是否 `posts[].knowledges[]`(不是单 `framework`);每颗有 type/role/parent;至少出现「how 主颗 + what 组件颗(带 parent)」+ 某帖有 orphan 主颗(what/why)。统计:几帖、共几颗、类型分布、组件颗数。
 4. **schema 落地**:`web/frameworks.json` 是否 `posts[].knowledges[]`(不是单 `framework`);每颗有 type/role/parent;至少出现「how 主颗 + what 组件颗(带 parent)」+ 某帖有 orphan 主颗(what/why)。统计:几帖、共几颗、类型分布、组件颗数。
-5. **payload 按类型分拼**:`web/payloads.json` 每颗一条;how 颗 custom_ext 有创作阶段/动作,what/why 颗**只有业务阶段**(+组件颗有「出自」);dim_attributes 与 type 一致。跑 `python3 创作知识提取-skill/tools/lint-payload.py web/payloads.json`,须 0 ERROR。
-6. **前端三渲染**:`web/index.html` 是否按 knowledges[] 渲染、how→工序表/what→要素表/why→论点卡、组件颗 cross-ref 可跳、定位 drawer + 提示词溯源。grep 关键组件(HowTable/WhatCard/WhyCard/kref)。
+5. **payload 按类型分拼**:`web/payloads.json` 每颗一条;how 颗 custom_ext 有创作阶段/动作,what 颗业务阶段+概要、why 颗业务阶段(+组件颗有「出自」);what 的 content 是结构化对象 {name,kind,维度拆分规则,body}、why 的 content 是阐述一段字符串;dim_attributes 与 type 一致。跑 `python3 创作知识提取-skill/tools/lint-payload.py web/payloads.json`,须 0 ERROR。
+6. **前端三渲染**:`web/index.html` 是否按 knowledges[] 渲染、how→工序表/what→构成卡(概要+kind+body条目表)/why→阐述卡(一段)、组件颗 cross-ref 可跳、定位 drawer + 提示词溯源。grep 关键组件(HowTable/WhatCard/WhyCard/kref)。
 7. **无 how-only 残留**:grep 确认没有"只认 post.framework 单颗"的旧逻辑残留在 web/index.html 或 decompose。
 7. **无 how-only 残留**:grep 确认没有"只认 post.framework 单颗"的旧逻辑残留在 web/index.html 或 decompose。
 8. **decompose 引擎**:`scripts/decompose.py` 是否把 phase 文档当 prompt 喂 LLM(不另写提示词)、① extractor 读图 → ② 判颗 → ③ 作用域定位 → ⑤ 组装。
 8. **decompose 引擎**:`scripts/decompose.py` 是否把 phase 文档当 prompt 喂 LLM(不另写提示词)、① extractor 读图 → ② 判颗 → ③ 作用域定位 → ⑤ 组装。
 
 

+ 9 - 5
创作知识拆解框架.md

@@ -22,7 +22,11 @@
 |---|---|---|---|
 |---|---|---|---|
 | **How** 工序 | 不可跳步地把某输入做成成品 | `目标(purpose)` + 有序 `steps`(每步 目的 / 怎么做 / 产出) | `how工序` |
 | **How** 工序 | 不可跳步地把某输入做成成品 | `目标(purpose)` + 有序 `steps`(每步 目的 / 怎么做 / 产出) | `how工序` |
 | **What** 构成 | 界定 / 列举 / 分类 / 判据某创作对象 | `概要`(必填锚点) + `kind`(子集/多维关系/序列)+ `维度拆分规则`(仅子集)+ `body[{item_name, item_desc}]`(**扁平条目**,无小节/形式) | `what构成` |
 | **What** 构成 | 界定 / 列举 / 分类 / 判据某创作对象 | `概要`(必填锚点) + `kind`(子集/多维关系/序列)+ `维度拆分规则`(仅子集)+ `body[{item_name, item_desc}]`(**扁平条目**,无小节/形式) | `what构成` |
-| **Why** 原理 | 解释某做法 / 判断背后的道理 | `主张`(必填锚点) + `支撑[{小标题, 形式?, 内容?, 条目?}]`(**自由小节**,无步骤) | `why原理` |
+| **Why** 原理 | 解释某做法 / 判断背后的道理 | `阐述`(必填,**一段**:这条原理是什么 + 为什么成立;**忠实整合**原帖、无小节、不延伸"怎么用") | `why原理` |
+
+> **What 的 `kind`(部件之间什么关系)**:`子集`=并列可挑的选项(挑一个或多个);`多维关系`=并列共存的组成部分/维度/层级(含"大套小"的包含层级,彼此无时间先后,不挑);`序列`=沿作品从头到尾的时间/线性先后(换序读不通)。
+> **`维度拆分规则`(仅子集)**:先试**单一轴**("按【X】分,每项都是 X 的取值",命名轴非结果、不拼两个);套不出单一轴就填 **`类型枚举`**。
+> **Why 的 `阐述` = 忠实整合**:把原帖几张卡缝成一段连贯的"是什么+为什么"——可串接/调序/删冗余,**不可改实质/补/润色/转祈使**;"怎么用/取舍"是下游应用的事,解构不做。
 
 
 ---
 ---
 
 
@@ -98,7 +102,7 @@
 | scope_type | 中文 | 管什么 | 例 |
 | scope_type | 中文 | 管什么 | 例 |
 |---|---|---|---|
 |---|---|---|---|
 | substance | 实质 | 讲什么(题材/对象) | 赛道共识 |
 | substance | 实质 | 讲什么(题材/对象) | 赛道共识 |
-| form | 形式 | 怎么呈现(结构/手法) | 三幕结构 |
+| form | 形式 | **可迁移**的怎么呈现(剥掉题材仍成立;偏结构/手法,表层只在当原则教时标) | 三幕结构 |
 | feeling | 感受 | 勾什么情绪 | 羞耻感/冒犯 |
 | feeling | 感受 | 勾什么情绪 | 羞耻感/冒犯 |
 | effect | 作用 | 起什么表达功能(段内干的活) | 撕裂共识 |
 | effect | 作用 | 起什么表达功能(段内干的活) | 撕裂共识 |
 | intent | 意图 | 创作者图什么(最终目的) | 引爆传播 |
 | intent | 意图 | 创作者图什么(最终目的) | 引爆传播 |
@@ -115,7 +119,7 @@
 |---|---|---|
 |---|---|---|
 | **① 读懂** | 图 / 视频 → 文字(忠实,不判断) | 视觉 LLM(基建 extractor) |
 | **① 读懂** | 图 / 视频 → 文字(忠实,不判断) | 视觉 LLM(基建 extractor) |
 | **②a 判颗 + 找 how 骨架** | 几颗、各颗类型;how 抽骨架并识别内部 what/why 组件;orphan what/why;无 how 则纯 what/why(**第三节那道闸**) | 判断 LLM |
 | **②a 判颗 + 找 how 骨架** | 几颗、各颗类型;how 抽骨架并识别内部 what/why 组件;orphan what/why;无 how 则纯 what/why(**第三节那道闸**) | 判断 LLM |
-| **②b 按类型成形 + 轻标签** | How→目标+步骤(+逐步 创作阶段/动作);What→概要+kind+维度拆分规则(子集)+body 条目;Why→主张+支撑小节(小节形态自由,0..N);颗级业务阶段;组件颗标 cross-ref | 判断 LLM |
+| **②b 按类型成形 + 轻标签** | How→目标+步骤(+逐步 创作阶段/动作);What→概要+kind+维度拆分规则(子集)+body 条目;Why→阐述(一段:是什么+为什么,忠实整合);颗级业务阶段;组件颗标 cross-ref | 判断 LLM |
 | **③ 作用域** | 5 类带值 + 互斥边界 + 定位(How 逐步 / What·Why 颗级) | 判断 LLM + 定位工具(代码) |
 | **③ 作用域** | 5 类带值 + 互斥边界 + 定位(How 逐步 / What·Why 颗级) | 判断 LLM + 定位工具(代码) |
 | **⑤ 组装 + lint** | 拼 payload(content 按类型不同、scopes 并集),校验 | 纯代码 |
 | **⑤ 组装 + lint** | 拼 payload(content 按类型不同、scopes 并集),校验 | 纯代码 |
 
 
@@ -125,7 +129,7 @@
 
 
 | payload 字段 | How | What | Why |
 | payload 字段 | How | What | Why |
 |---|---|---|---|
 |---|---|---|---|
-| `content` | 目标 + 步骤(目的/怎么做/产出) 拍平(字符串) | **结构化对象** `{name, kind, 维度拆分规则, body[]}`(概要移入 custom_ext) | 主张 + 支撑各小节(字符串) |
+| `content` | 目标 + 步骤(目的/怎么做/产出) 拍平(字符串) | **结构化对象** `{name, kind, 维度拆分规则, body[]}`(概要移入 custom_ext) | `阐述` 一段(字符串:是什么+为什么,忠实整合) |
 | `dim_attributes` | `["how工序"]` | `["what构成"]` | `["why原理"]` |
 | `dim_attributes` | `["how工序"]` | `["what构成"]` | `["why原理"]` |
 | `scopes` | 各步作用域并集 | 颗级作用域 | 颗级作用域 |
 | `scopes` | 各步作用域并集 | 颗级作用域 | 颗级作用域 |
 | `custom_ext` | 业务阶段 + 创作阶段 + 动作 | **业务阶段 + 概要** | **仅业务阶段** |
 | `custom_ext` | 业务阶段 + 创作阶段 + 动作 | **业务阶段 + 概要** | **仅业务阶段** |
@@ -136,7 +140,7 @@
 ## 十、前端 —— 一页多颗、按类型渲染
 ## 十、前端 —— 一页多颗、按类型渲染
 
 
 - 选一帖 → 列出**它的全部 N 颗**(可混类型)。
 - 选一帖 → 列出**它的全部 N 颗**(可混类型)。
-- 每颗按类型渲染:**How → 工序表**;**What → 构成卡**(概要 + kind + 维度拆分规则 + body 条目表:item_name/item_desc);**Why → 论点卡**(主张 + 自由小节)。
+- 每颗按类型渲染:**How → 工序表**;**What → 构成卡**(概要 + kind + 维度拆分规则 + body 条目表:item_name/item_desc);**Why → 阐述卡**(一段:是什么 + 为什么)。
 - **组件颗** cross-ref 到所属 how(标"出自 <how> 第 N 步",可互相跳转);**orphan 颗**独立列出。
 - **组件颗** cross-ref 到所属 how(标"出自 <how> 第 N 步",可互相跳转);**orphan 颗**独立列出。
 - 每颗都带:**作用域定位 drawer**(候选 → 最近邻 top-K → 复用/新建)、**提示词溯源**(区块/表头点开产出它的那道工序的提示词)。
 - 每颗都带:**作用域定位 drawer**(候选 → 最近邻 top-K → 复用/新建)、**提示词溯源**(区块/表头点开产出它的那道工序的提示词)。
 
 

+ 1 - 1
创作知识提取-skill/README.md

@@ -24,7 +24,7 @@
 ## 概念速览
 ## 概念速览
 
 
 - **颗是单位,一帖 = N 颗**(可混 how/what/why),共 `knowledges[]`,每颗 → 一个 ingest payload。
 - **颗是单位,一帖 = N 颗**(可混 how/what/why),共 `knowledges[]`,每颗 → 一个 ingest payload。
-- **三类对等 lane**:How(目标+不可跳步 steps)、What(概要+kind+维度拆分规则+body 构成)、Why(主张+依据+影响)。**先判类型闸,再按类型成形**——别默认 how、别硬造假 how。
+- **三类对等 lane**:How(目标+不可跳步 steps)、What(概要+kind+维度拆分规则+body 构成)、Why(`阐述`:一段忠实整合的"是什么+为什么",不延伸"怎么用")。**先判类型闸,再按类型成形**——别默认 how、别硬造假 how。
 - **what/why 既可独立成颗,也可作 how 的「组件颗」**:how 步骤里嵌的 what/why(如某步产出"叙事弧线五要素")既显示在步骤里,又**单列成一颗**(role=组件,parent 指回那个 how 的第 N 步);how 没覆盖的独立 what/why 也单列(role=主)。判据:脱离 how 还能独立检索复用吗?
 - **what/why 既可独立成颗,也可作 how 的「组件颗」**:how 步骤里嵌的 what/why(如某步产出"叙事弧线五要素")既显示在步骤里,又**单列成一颗**(role=组件,parent 指回那个 how 的第 N 步);how 没覆盖的独立 what/why 也单列(role=主)。判据:脱离 how 还能独立检索复用吗?
 - **5 个标注维度**:知识类型(how/what/why)、业务阶段(灵感/选题/脚本,颗级)、创作阶段(定向/构思/结构/成文/打磨,**仅how逐步**)、动作(开放·**仅how逐步**)、作用域(5 棵树带值·**定位**·how逐步/what·why颗级)。
 - **5 个标注维度**:知识类型(how/what/why)、业务阶段(灵感/选题/脚本,颗级)、创作阶段(定向/构思/结构/成文/打磨,**仅how逐步**)、动作(开放·**仅how逐步**)、作用域(5 棵树带值·**定位**·how逐步/what·why颗级)。
 - **作用域定位**:值要对到 5 棵分类树的真实节点——对得上复用原名、对不上才新建。用 `tools/scope-link.py`(火山 embedding 最近邻,基建已落地)。
 - **作用域定位**:值要对到 5 棵分类树的真实节点——对得上复用原名、对不上才新建。用 `tools/scope-link.py`(火山 embedding 最近邻,基建已落地)。

+ 2 - 2
创作知识提取-skill/examples/金标样例.md

@@ -109,13 +109,13 @@
 
 
 ## 样例三(Why)· 标题决定打开,与内容质量无关
 ## 样例三(Why)· 标题决定打开,与内容质量无关
 
 
-整帖**只讲原理**,没有工序 → 纯 Why,简化版
+整帖**只讲原理**,没有工序 → 纯 Why。content = 一段 `阐述`(是什么+为什么,忠实整合原帖;不写"怎么用")
 
 
 ```json
 ```json
 {
 {
   "source": { "id": "xhs_yyy", "source_type": "post", "title": "标题才是第一生产力" },
   "source": { "id": "xhs_yyy", "source_type": "post", "title": "标题才是第一生产力" },
   "title": "标题决定打开,与内容质量无关",
   "title": "标题决定打开,与内容质量无关",
-  "content": "主张:标题的唯一作用是让人有欲望点开;点不点开,和内容好不好没关系。\n【为什么成立】(依据)\n  信息流里用户先看到的是标题,内容再好没人点开等于零(平台分发逻辑)。\n【对创作的影响】(影响)\n  把『起标题』当成独立的、第一优先的创作决策,而非内容概括。",
+  "content": "标题的唯一作用是让人产生点开的欲望;点不点开和内容好不好没关系——因为信息流里用户先看到的只有标题,内容再好、没人点开也等于零(平台分发逻辑)。",
   "dim_creations": ["创作"],
   "dim_creations": ["创作"],
   "dim_attributes": ["why原理"],
   "dim_attributes": ["why原理"],
   "scopes": [ { "scope_type": "effect", "value": "吸引点击" },
   "scopes": [ { "scope_type": "effect", "value": "吸引点击" },

+ 3 - 3
创作知识提取-skill/extraction/phase3-assemble.md

@@ -10,15 +10,15 @@
 | `title` | 该颗 `title` | | |
 | `title` | 该颗 `title` | | |
 | `dim_creations` | `["创作"]` 写死 | | |
 | `dim_creations` | `["创作"]` 写死 | | |
 | `dim_attributes` | `["how工序"]` | `["what构成"]` | `["why原理"]` |
 | `dim_attributes` | `["how工序"]` | `["what构成"]` | `["why原理"]` |
-| `content` | 目标+步骤(目的/怎么做/产出)拍平(str) | **结构化对象** `{name,kind,维度拆分规则,body[]}`(概要入 custom_ext) | 主张+支撑各小节(str) |
+| `content` | 目标+步骤(目的/怎么做/产出)拍平(str) | **结构化对象** `{name,kind,维度拆分规则,body[]}`(概要入 custom_ext) | `阐述` 一段(str:是什么+为什么,忠实整合) |
 | `scopes` | **各步 `作用域` value 去重并集** | **颗级 `作用域`** value | 颗级 value |
 | `scopes` | **各步 `作用域` value 去重并集** | **颗级 `作用域`** value | 颗级 value |
 | `custom_ext` | 业务阶段 + 创作阶段(各步去重) + 动作(各步) | **业务阶段 + 概要** | **仅业务阶段** |
 | `custom_ext` | 业务阶段 + 创作阶段(各步去重) + 动作(各步) | **业务阶段 + 概要** | **仅业务阶段** |
 
 
 ### content 拼法
 ### content 拼法
 - **How**:`目标:<purpose>\n步骤1(目的:<intent>)\n  指引:<directive>\n  产出:<output>\n步骤2…`
 - **How**:`目标:<purpose>\n步骤1(目的:<intent>)\n  指引:<directive>\n  产出:<output>\n步骤2…`
 - **What**:`content` 是**对象**(非字符串):`{"name":<title>, "kind":<子集/多维关系/序列>, "维度拆分规则":<仅子集,否则 null>, "body":[{"item_name","item_desc","作用域":[]}]}`;`概要` 不进 content,作为 `custom_ext` 一条(key=概要)。
 - **What**:`content` 是**对象**(非字符串):`{"name":<title>, "kind":<子集/多维关系/序列>, "维度拆分规则":<仅子集,否则 null>, "body":[{"item_name","item_desc","作用域":[]}]}`;`概要` 不进 content,作为 `custom_ext` 一条(key=概要)。
-- **Why**:`主张:<主张>` + 每个 `支撑` 小节 → `【<小标题>】(<形式>)` + 内容/条目
-- Why 的小节数 1..N,有就拼;`形式` 没有则省括号。(What 已无小节/形式。)
+- **Why**:`content` = `阐述` 一段字符串(这条原理是什么+为什么,忠实整合原帖;**不含"怎么用"**)。无小节、无形式
+- (What 已无小节/形式、Why 已无主张/支撑/取舍——就一段阐述。)
 
 
 ### 组件颗的溯源
 ### 组件颗的溯源
 若 `role=="组件"`(parent 非空),在 `custom_ext` 加一条标明出处:
 若 `role=="组件"`(parent 非空),在 `custom_ext` 加一条标明出处:

+ 1 - 1
创作知识提取-skill/taxonomy/知识类型.json

@@ -22,7 +22,7 @@
     {
     {
       "分类名称": "why",
       "分类名称": "why",
       "dim_attributes值": "why原理",
       "dim_attributes值": "why原理",
-      "payload形态": "简化(主张 + 依据 + 取舍,无 steps;形式只两类:依据/取舍)",
+      "payload形态": "简化(content 为一段「阐述」:这条原理是什么+为什么,忠实整合原帖;无 steps;不延伸\"怎么用\")",
       "分类说明": "这颗知识是『为什么』——解释某种创作做法/判断背后的原理、依据、平台逻辑、读者心理。典型:为什么标题决定打开率、为什么先写冲突、为什么这种结构传播好。判别口诀:读完主要收获是『理解了某件事为什么这样做』,是解释性/原理性的,较少具体步骤。注意:why 始终是独立一颗——定死两态:要么单独的一条(role=主),要么对应某 how 的某一步而成组件颗(role=组件,parent={how_id,step})。二者皆可,不存在『写进步骤指引、不单独成颗』;与 what 完全对称。",
       "分类说明": "这颗知识是『为什么』——解释某种创作做法/判断背后的原理、依据、平台逻辑、读者心理。典型:为什么标题决定打开率、为什么先写冲突、为什么这种结构传播好。判别口诀:读完主要收获是『理解了某件事为什么这样做』,是解释性/原理性的,较少具体步骤。注意:why 始终是独立一颗——定死两态:要么单独的一条(role=主),要么对应某 how 的某一步而成组件颗(role=组件,parent={how_id,step})。二者皆可,不存在『写进步骤指引、不单独成颗』;与 what 完全对称。",
       "分类性质": "原理"
       "分类性质": "原理"
     }
     }