---
name: style-modeler
description: 从同一作者或公众号的文章样本中建立、验证或增量更新可复用的写作风格档案。用户要求风格建模、提取写作配方、解构文章、学习作者风格、创建或更新风格库时调用；如果用户只要求直接写文章而不需要建立风格档案，不调用本 skill。
---

# 风格建模专家

只根据用户提供或明确允许获取的样本建模。把作者身份用于样本分组和风格库检索，不把外部履历、既有印象或样本之外的观点写进风格档案。

## 0. 解析可写风格根目录

开始前必须执行：

```bash
python "${CLAUDE_SKILL_DIR}/scripts/manage_style_registry.py" resolve-root --workspace-root "."
```

把命令唯一输出记录为 `[风格根目录]`，后续档案、证据和登记表全部使用这个根目录：

- 在本仓库开发环境中返回 `claude-runtime/styles`，它是唯一源；完成后再运行同步脚本更新消费端镜像。
- 在插件安装到普通工作区时返回 `.claude/styles`，不得写入插件缓存。
- 禁止跳过解析后直接假定 `.claude/styles`，否则会造成运行时镜像漂移。

## 1. 收集样本并确认作者锚点

1. 接收本地文档或 URL。URL 先调用 `web-article-extractor`，将正文保存到 `docs/YYYY-MM-DD-文章标题.md`。
2. 批量 URL 按“导航 → 等待 → 提取 → 保存”的顺序串行处理；不要在同一页面上下文并发导航。
3. 从每篇样本的作者、公众号和来源 URL 提取作者锚点。
4. 在合并文本前核对全部锚点：
   - 作者锚点一致：继续建模。
   - 作者锚点不一致：按作者分组；无法可靠分组时停下，请用户确认是否真的要建立“混合风格”。
   - 作者未知：保留来源标识，不猜测作者。
5. 检索 `[风格根目录]/`：新作者新建档案；已存在的作者读取旧档案和旧证据账本，执行增量验证。

## 2. 先建立证据账本

在任何风格归纳前，将证据保存到 `[风格根目录]/_evidence/[风格名]_evidence.md`。每条记录包含：

| 字段 | 要求 |
|---|---|
| 观察现象 | 样本中具体出现的写法 |
| 原文证据 | 支撑判断的必要短摘录 |
| 出现位置 | 样本标题、编号或 URL |
| 功能判断 | 该写法在上下文中的作用 |
| 可复用规则 | 如何在新主题中复现 |
| 适用边界 | 什么时候适用或不适用 |

硬规则：

- 稳定特征至少要有 2 条证据，且来自至少 2 篇独立样本。
- 单篇样本只能产出“候选特征”，不能宣称是稳定风格。
- 不把样本主题等同于作者风格。
- 每条画像、判断和使用规则都必须能回指证据账本。
- 原文摘录只保留证明结论所需的最短片段，不把长段原文当模板堆入风格文件。

证据分级、增量更新和先验隔离规则见 [style-core-and-validation.md](references/style-core-and-validation.md)。

## 3. 运行量化指纹

先运行脚本，再写句长、段落、问句和标点结论：

```bash
python "${CLAUDE_SKILL_DIR}/scripts/style_fingerprint.py" docs/[样本1].md docs/[样本2].md
```

将结果写入风格档案的 `00b. 量化指纹`，并注明样本数。节奏描述必须与实测一致；句首词至少出现 3 次才可列入词汇指纹。

## 4. 提炼风格，而不是通用好文章公式

按 [15-dimensions.md](references/15-dimensions.md) 分析 15 个维度，并额外回答：

1. 作者面对新题目首先观察什么？
2. 作者会自动排除哪些角度、素材和建议？
3. 从现象到判断的论证发动机是什么？
4. 素材选择偏好和拒绝项是什么？
5. 情绪曲线和读者关系是什么？
6. 换一个新主题时，最小可复现配方是什么？
7. 多篇样本反复出现的实质判断和价值排序是什么？

对每条核心规则执行两道检查：

- **通用基线检查**：任何优秀写作者本来就会做的规则，移到“通用基线”，不算作者指纹。
- **库内区分检查**：与两个以上既有风格重复的规则降级，并写出与最相近风格的“区分开关”。

## 5. 做可证伪的仿写验证

### 5.1 陌生主题验证

1. 选择样本未覆盖的新主题，写 300–500 字短文。
2. 从切入角度、素材选择、论证推进、句式节奏、情绪与读者关系五项评分，每项 0–2 分。
3. 每个 2 分必须标注对应的证据账本条目；无法溯源按 0 分计。
4. 总分低于 8 分，返回风格内核修正。

### 5.2 多组独立盲测

1. 准备至少 3 组功能相近的“原文短段 + 仿写短段”，每组随机打乱 A/B。
2. 将每组分别交给不接触风格文件和作者身份的独立评审，只提供两段纯文本。
3. 允许评审回答“无法判断”；每次必须给出判断、置信度和有证据的破绽，不要求凑满固定数量。
4. 汇总而不是单次判定：
   - 至少 2 组判断错误或无法判断，且没有高置信度的“判断方式”破绽：通过。
   - 至少 2 组正确识别，或出现高置信度的判断方式破绽：回炉修正风格内核。
5. 用量化脚本复测仿写段；关键节奏指标偏离样本基线超过 30% 时不得通过。

盲测只接收纯文本，不使用工具、不读取文件、不继承本次建模上下文。将原始结果和汇总结论写入风格档案的验证附录。

## 6. 生成或更新风格档案

输出到 `[风格根目录]/[风格名].md`。文件必须包含 YAML Front Matter：

```yaml
---
author: "作者或公众号名"
source_count: 3
last_updated: 2026-07-18
---
```

完整结构使用 [style-output-template.md](references/style-output-template.md)。模板中的 01–15 必须与 15 维度参考一一对应；“使用说明”和验证结果作为不编号附录。

更新单个历史文件时，只处理当前目标，不批量改写整个风格库。先预览：

```bash
python "${CLAUDE_SKILL_DIR}/scripts/normalize_style_frontmatter.py" "[风格根目录]/[目标文件].md" --check --refresh-existing
```

确认预览范围正确后，去掉 `--check` 执行。脚本使用临时文件原子替换；不要对整个 `[风格根目录]` 静默执行 `--refresh-existing`。

### 6.1 登记状态生命周期

每次新建档案后必须先登记；已有档案重复执行是幂等的，不会把已验证状态静默降级：

```bash
python "${CLAUDE_SKILL_DIR}/scripts/manage_style_registry.py" register --style-root "[风格根目录]" --profile "[风格名].md"
```

新登记状态只能是 `legacy_unverified`。单篇样本、证据不足、陌生主题验证失败或盲测未通过时，到此停止，不得升级。

只有证据账本已落盘、跨样本门槛满足、陌生主题验证通过，且至少 3 组独立盲测按本 Skill 的规则汇总通过后，才能显式升级：

```bash
python "${CLAUDE_SKILL_DIR}/scripts/manage_style_registry.py" verify --style-root "[风格根目录]" --profile "[风格名].md" --evidence "_evidence/[风格名]_evidence.md" --blind-test-passed
```

`--blind-test-passed` 是人工语义门禁声明，禁止为了让命令通过而提前添加。登记脚本只校验文件、路径和显式声明，不替代跨样本与盲测判断。

无论最终保持 `legacy_unverified` 还是升级为 `verified`，如果 `[风格根目录]` 是 `claude-runtime/styles`，都必须在返回或停机前执行：

```bash
python -B "scripts/sync_claude_runtime.py"
```

## 完成条件

- 作者锚点已核对，未把不同作者样本意外混合。
- 证据账本已落盘，稳定特征满足跨样本门槛。
- 量化指标来自脚本实测。
- 15 个维度、风格内核、区分开关和适用边界完整。
- 至少 3 组独立盲测已汇总，失败项已反向修正。
- 风格档案 Front Matter、证据路径和更新时间正确。
- 风格档案、证据账本与 `style_registry.json` 登记状态一致；未通过验证时保持 `legacy_unverified`。
