# 文风协议

> **何时加载**：story-long-analyze Stage 6 执行前。下游写作 skill 直接读 `文风.md`，不加载本协议。

## 产物定义

`拆文库/{书名}/文风.md` 是整书级写作技法视图，聚合：

- 句长 / 标点 / 段落节奏（从原文采样统计）
- 对话潜台词模式 + 角色语气区分
- 章内 + 跨章情绪交替周期（看每章基调如何变化）
- `拆文报告.md` 已有的「写法技巧」「可借鉴套路」
- 4-6 段 300-500 字原文锚点片段（范例片段用）

## 文件路径

- **写**：`拆文库/{书名}/文风.md`（analyze 独占）
- **读**：story-import 同步到 `{项目}/对标/{书名}/文风.md`；story-long-write 读项目对标视图（回退拆文库）

## 字数预算

- **硬上限 ~4000 字**
- 描述部分（整体语感 + 对话技法 + 情绪交替模式 + 可借鉴技巧）≤ 1500 字
- 原文锚点片段 4-6 段 × 300-500 字 ≈ 1600-2400 字
- 不可模仿 + 生成记录 ≤ 100 字

## 模板

```markdown
# {书名} 文风

## 生成记录
- 参考资料：拆文报告.md、黄金三章深度拆解、章节摘要
- 抽样章节：第 {K1}/{K10}/{K20} 章（每章约 1000 字）
- 生成时间：{date}
- 适用对标书路径：拆文库/{书名}/
- 文风可用：是  # 若原文缺失或锚点不足，写“否：原因”

## 整体语感
- 句长分布：{由 `style-profile-generator.md` Step 4 的跨平台 Python 1-liner 在 3 章拼接样本上确定性测量——短句(<15字)占比 X%、中句(15-30)Y%、长句(>30)Z%、平均句长 N 字、标点密度 M%。一句概括语感。`confidence: high`（数据由脚本算出，不是抽样估计）。}
  - confidence: high | med | low
- 标点习惯：{破折号/省略号/句号/感叹号/分号 的高频用法。附 2-3 个原文短片段示例。}
  - confidence: high | med | low
- 段落节奏：{平均段长、单段单动作 vs 多动作堆叠、断行习惯。}
  - confidence: high | med | low

## 对话技法
- 潜台词模式：{2-3 种典型潜台词手法（问非所答 / 语气反差 / 信息隐瞒等），每种附 1 段原文示例。}
  - confidence: high | med | low
- 对话标签习惯：{说话动词多样性、动作替代说话标签的频率、对话与动作的穿插比例。}
- 角色语气区分：{主角和 1-2 个核心配角的口头禅/句式差异，引用原文样本句。}

## 情绪交替模式
- 章内基调切换：{统计章节内情节点基调序列——典型章节是否在 紧张↔轻松 或 热血↔温馨 之间切换、切换频率（每章 N 次）。}
  - confidence: high | med | low
- 跨章基调周期：{前 20 章「章基调」序列，识别“虐 3 章爽 1 章”之类周期。}
- 喜剧↔重击的转场手法：{对标书在 轻松→悲伤 锐角转场时用了什么手法，举 1-2 个原文锚点。}

## 可借鉴技巧（从 拆文报告.md 直接引用）
- 写法技巧 Top 5：
  1. {技巧名}：{一句话用法说明}
  2. ...
- 可借鉴套路 Top 3：
  1. {套路名}：{适用场景}
  2. ...

## 原文锚点片段

> 每片段 300-500 字，**用于 narrative-writer 写作时的范例片段**。从 `原文/原文.txt` 按章节分隔符切片。模仿手法、不抄字句。

### 片段 A — 基调：紧张
**出处**：第 {K} 章 第 {段号} 段（行 {L1}-{L2}）
**示范点**：{短句堆叠节奏 / 标点位置 / 一笔两用 等}

```
{300-500 字原文}
```

### 片段 B — 基调：悲伤/压抑
**出处**：第 {K} 章 第 {段号} 段（行 {L1}-{L2}）
**示范点**：{对话潜台词手法}

```
{300-500 字原文}
```

### 片段 C — 基调：轻松/搞笑
**出处**：第 {K} 章 第 {段号} 段（行 {L1}-{L2}）
**示范点**：{短句节奏 / 角色语气区分}

```
{300-500 字原文}
```

### 片段 D — 基调：热血/爽点
**出处**：第 {K} 章 第 {段号} 段（行 {L1}-{L2}）
**示范点**：{爽点铺放比 / 动作描写句长}

```
{300-500 字原文}
```

> 优先覆盖项目可能用到、且对标书中样本充足的基调：紧张、悲伤/压抑、轻松/温馨、热血。按拆文里实际分布挑 4-6 段；缺哪个基调就写“本书该基调样本不足，跳过”，不要编造。

## 不可模仿
- {对标书的明显缺陷或不适合当前项目的技法。可选段落，可空。}
```

## confidence 字段语义

| 值 | 触发条件 | 下游处理 |
|---|---|---|
| `high` | 数据直接可读（如基调序列从摘要 grep 得出） | narrative-writer 优先采纳，覆盖默认 Gate |
| `med` | 从样本归纳且样本充足（如看章节基调走向、对话潜台词整理） | narrative-writer 参考，与默认 Gate 协商 |
| `low` | 样本不足/原文缺失 | narrative-writer 让位回默认 Gate（不强制采纳） |

## 可用性语义

- `文风可用：是` → 文风可用于写作，narrative-writer 按 confidence 分级使用。
- `文风可用：否：{原因}` → 文风质量不足（例如原文缺失、锚点全是占位符）。story-explorer 读取时返回 `gaps.profile_degenerate: true`，narrative-writer 跳过文风，按默认 Gates 写作，避免被误导。
- 兼容旧文件：若旧 `文风.md` 出现旧版内部降级标记，story-explorer 也按“文风可用：否”处理。

## 覆盖与不可模仿原则

- **覆盖**：文风优先级排在 Gate D（句长拆短）、Gate B（句式去套路）、标点默认习惯之上——这些 Gate 是去 AI 味的**默认值**，文风有更具体的指令时文风赢。
- **不可覆盖（硬约束）**：banned-words / Gate F 章末禁升华 / 禁止万能比喻 / 禁止章末预告 / 字数下限——这些硬约束永远赢，即使文风示范了相反的用法。

精确决议表见 `.claude/agents/narrative-writer.md` 的“被调用协议”段。
