# 🧬 风格克隆引擎参考指南 — 8 维指纹深化手册

> **定位**: 本文是对 SKILL.md 中「风格克隆引擎」一节的深化与补充，不重复基础定义。适合在理解 v2.8 工作机制后，需要更详细的提取技术、校准协议、漂移处理、多档案管理等实操细节时查阅。

---

## 1. 8 维风格指纹详解

每维指纹都包含：**提取算法**、**输出格式**、**示例对比**。

---

### 1.1 句长分布

#### 提取方法

样本文本按句号、问号、感叹号、分号分割为句子（注意：中文的冒号、破折号一般不作为分句标志），计算：

```
平均句长 = 总字数 / 总句数
句长方差 = Σ(每句字数 - 平均句长)² / 总句数
短句占比 = 字数 ≤10 的句子数 / 总句数 × 100%
长句占比 = 字数 ≥40 的句子数 / 总句数 × 100%
```

#### Creator 实现（伪代码片段）

```python
def extract_sentence_stats(text: str) -> dict:
    # 中文分句：句号、问号、感叹号、分号、省略号
    sentences = re.split(r'[。！？；…]+', text)
    sentences = [s.strip() for s in sentences if len(s.strip()) >= 2]
    lengths = [len(s) for s in sentences]

    return {
        "avg_len": round(sum(lengths) / len(lengths), 1),
        "variance": round(np.var(lengths), 1),
        "short_pct": round(sum(1 for l in lengths if l <= 10) / len(lengths) * 100, 1),
        "long_pct": round(sum(1 for l in lengths if l >= 40) / len(lengths) * 100, 1),
    }
```

#### 示例对比

| 维度 | 短句爆炸型 | 长句论述型 | 参差呼吸型 |
|------|-----------|-----------|-----------|
| 平均句长 | 8.2 字 | 32.5 字 | 18.7 字 |
| 句长方差 | 12.3（极低） | 45.6（中等） | 98.2（极高） |
| 短句占比 | 72% | 5% | 30% |
| 典型特征 | 句句换行，像聊天记录 | 长篇复合句，像学术论文 | 长短交替，呼吸感强 |

**短句爆炸型判别依据**: 短句占比 >60% 且方差 <30。代表用户偏好口语化、高信息密度的表达。  
**参差呼吸型判别依据**: 方差 >80 且短句占比在 20%-45% 之间。代表用户有意识的节奏控制——用长句展开论述，用短句制造停顿。

#### 提取边界

- 样本 <500 字时「方差」不稳定，仅用「平均句长」和「短句占比」两个毛估维度
- 对话体（如小说对白）会拉低平均句长——需要标注「含对白」，句长维度置信度降级

---

### 1.2 连接词密度

#### 提取方法

扫描文本中的逻辑连接词，统计每千字数量。

**连接词检测清单**（中文核心连接词库）：

| 类别 | 词表 |
|------|------|
| 因果 | 因此、所以、因而、故、于是、从而、以致、因为…所以… |
| 转折 | 然而、但是、不过、却、可是、但、尽管如此、虽然…但… |
| 递进 | 此外、而且、甚至、进一步、不仅如此、更重要的是 |
| 并列 | 同时、另外、还有、既…又…、一方面…另一方面… |
| 条件 | 只要、除非、无论、如果…那么… |
| 顺序 | 首先…其次…最后…、第一…第二… |

```
连接词密度 = 匹配到的连接词总数 / 总字数 × 1000
类别偏好 = 各类别连接词数量占比
```

#### 示例对比

| 风格 | 密度（/千字） | 偏好类型 | 典型句子 |
|------|-------------|---------|---------|
| 逻辑流 | 8.2 | 因果+转折为主 | 「因此……然而……此外……」 |
| 跳接型 | 0.5 | 几乎不用 | 「我就是这么写的。不服你来。」 |
| 口语跳接 | 2.1 | 「不过」「所以」为主 | 「说白了……不过……所以……」 |

**跳接型判别依据**: 密度 <2/千字。这类作者依赖语义自然流转，而非机械连接词。Executor 要特别注意：不要自动添加「因此」「然而」来"理顺"原文。

#### 注入提示（Executor prompt 注入段）

```markdown
- 连接词策略: 每千字不超过 [密度值+1] 个。优先口语连接词「不过」「所以」「话说回来」，禁用「因此」「然而」「此外」等书面连接词每段开头。
```

---

### 1.3 语气颗粒度

#### 提取方法

语气是主观感最强的维度，提取策略为**多维打分 + 文本信号加权**。

```
正式度 1-10:  基于词汇正式程度 + 句长 + 是否使用尊称/敬语
幽默度 1-10:  基于是否使用口语梗、自嘲、夸张、反差句式
攻击性 1-10:  基于否定词密度 + 反问句密度 + 讽刺句式
```

**文本信号对照表**：

| 信号 | 正式度↑ | 幽默度↑ | 攻击性↑ |
|------|---------|---------|---------|
| 使用「您」「阁下」 | +2 | - | - |
| 使用「哈哈哈哈」「笑死」 | -2 | +2 | - |
| 反问句「难道……？」 | +1 | +1 | +2 |
| 自嘲「我这种菜鸟」 | -1 | +2 | - |
| 绝对化表达「绝对不行」「完全错误」 | +1 | - | +2 |
| 网络用语「破防了」「上头」 | -2 | +1 | ±0 |
| 学术/专业术语密度>30% | +3 | -1 | ±0 |

#### 示例对比

| 用户类型 | 正式度 | 幽默度 | 攻击性 | 典型段落 |
|---------|-------|-------|-------|---------|
| 学术写作者 | 8 | 1 | 1 | 「本研究采用定量分析方法，样本量为 N=200……」 |
| 科技博主 | 3 | 7 | 2 | 「刚入行时我也迷信过微服务，现在想起来——太年轻。」 |
| 评论区战神 | 2 | 3 | 8 | 「说这话的人怕是没写过一行代码吧？」 |

#### 提取边界

- 单篇样本无法准确提取攻击性——需要 ≥3 篇不同主题的样本
- 如果样本来自身份特定（如写甲方文案），标记「情境约束：面向客户」，语气维度降权 30%

---

### 1.4 标点偏好

#### 提取方法

对高频标点符号做每 500 字频次统计。

```
emoji/500字   = emoji 数量 / 总字数 × 500
破折号/500字  = 破折号(—)数量 / 总字数 × 500
省略号/500字  = 省略号(…)数量 / 总字数 × 500
分号/500字    = 分号(;)数量 / 总字数 × 500
感叹号/500字  = 感叹号(!)数量 / 总字数 × 500
问号/500字    = 问号(?)数量 / 总字数 × 500
引号密度      = 被引号包裹的字符数 / 总字数 × 100
```

#### 示例对比

| 风格 | emoji | 破折号 | 省略号 | 感叹号 | 分号 | 引号 |
|------|-------|--------|--------|--------|------|------|
| 社交媒体达人 | 6.2 | 1.1 | 0.5 | 3.8 | 0 | 4.2 |
| 学术写作者 | 0 | 0.3 | 0.1 | 0.2 | 1.8 | 8.5 |
| 文学青年 | 0 | 2.5 | 4.2 | 1.1 | 0.5 | 3.0 |

**特殊模式**:

- **零 emoji + 高引号(>5%)** = 大量引用他人话语，可能为评论/访谈风格
- **高省略号(>3/500) + 零分号** = 文艺/抒情倾向，说话喜欢「欲言又止」
- **高破折号(>2/500) + 零 emoji** = 喜欢用破折号作解释插入，偏文学写作

#### 注入示例

```markdown
- 标点约束: emoji 每 500 字 ≤1 个, 破折号 ≤0.5 个/500字,
  完全禁用分号(可用句号断句替代), 省略号不超 1 次/千字。
```

---

### 1.5 段落节奏

#### 提取方法

按空行或硬换行分割段落。阈值：`\n\n`（两个以上换行符）。

```
段落数量 = 分割出的段落总数
段长方差 = Σ(每段字数 - 平均段长)² / 段落数
单句段占比 = 字数 ≤20 的段落数 / 总段落数 × 100%
最长段字数 = max(各段字数)
中位段长 = 段长中位数
```

#### 示例对比

| 风格 | 段长方差 | 单句段占比 | 最长段 | 中位段长 | 呼吸感 |
|------|---------|-----------|--------|---------|--------|
| 稳定输出型 | 45（低） | 2% | 180 | 95 | 无——每段几乎等长 |
| 社交聊开型 | 320（高） | 35% | 280 | 55 | 强——长短穿插明显 |
| 媒体短文型 | 180（中） | 20% | 210 | 78 | 中等——偶有单句段 |

**段长方差的计算在样本 <10 段时不准确**，此时只使用单句段占比和中位段长作为参考。

#### 注入示例

```markdown
- 段落节奏: 目标段长方差 >150（强呼吸感）。允许单句段，
  长段不超过 200 字。长段后必须有短句段缓冲。
```

---

### 1.6 词汇指纹

#### 提取方法

词汇指纹包含三个子维度：**高频自用词**、**口头禅**、**禁用词**。

**高频自用词提取**：

```python
def extract_vocab_fingerprint(text: str, top_n: int = 20) -> dict:
    # 用 jieba 分词（中文），去掉停用词
    words = jieba.lcut(text)
    words = [w for w in words if w not in STOP_WORDS and len(w) >= 2]

    from collections import Counter
    freq = Counter(words).most_common(top_n)

    # 标记明显更口语化的词汇
    oral_markers = [w for w, c in freq if len(w) <= 3 and c >= 3]

    return {
        "top_words": freq,
        "oral_markers": oral_markers,
    }
```

**口头禅提取**：检测特定句式在全文中的重复出现模式

```
口头禅模式:
- 「说白了」出现在 3 个不同段落 → 标记为口头禅
- 「我的意思是」出现在 2 个不同上下文中 → 标记
- 特定手势词「那」「其实」「好吧」作为句首出现率 >5%
```

**禁用词不来自样本**，而是来自用户的明文声明或 MEMORY.md 黑名单。

#### 示例对比

| 用户 | 高频 Top-5 | 口头禅 | 特征描述 |
|------|-----------|--------|---------|
| 产品经理 | 产品、用户、需求、数据、体验 | 「说白了」「本质上」 | 理性拆解型 |
| 情感博主 | 我们、生活、时间、爱、自己 | 「你感受一下」「我懂」 | 共情互动型 |
| 技术咖 | 代码、问题、方案、版本、架构 | 「就这么简单」「这就很离谱」 | 直接解决问题型 |

#### 词汇指纹对抗 AI 化的核心机制

Executor 在低温阶段执行**词汇校准**：

```markdown
- 用户词汇指纹: 偏好使用「说白了」「有意思的是」「就这么简单」
- 必须规避与自己词汇指纹冲突的词: 用户样本零次出现的书面语词如
  「值得注意的是」「由此可见」「换言之」全部禁用
```

---

### 1.7 开头模式

#### 提取方法

取每篇文章的前 3 句（或前 100 字），分类标注。

```
K=6 分类体系:
- 故事型: 包含具体的人/时间/地点/事件
- 观点型: 「我觉得」「我认为」「说白了」等主观判断开头
- 数据型: 包含数字、百分比、统计量
- 反问型: 以问句开头（不包含设问的否句式）
- 场景型: 场景描写「窗外在下雨」「办公室里很安静」
- 引语型: 引用名人名言或他人话语
```

**置信度提升方法**：统计 ≥3 篇的开头分布，如果某类型的占比 >50%，该维度的置信度为高。

#### 示例对比

| 用户 | 开头分布 | 类型判断 |
|------|---------|---------|
| 博客主 A | 故事型 60%, 观点型 20%, 反问型 20% | 叙事驱动 |
| 咨询顾问 B | 数据型 70%, 观点型 20%, 引语型 10% | 证据驱动 |
| 生活博主 C | 场景型 40%, 故事型 30%, 反问型 30% | 感性与 hooks 混合 |

#### 注入示例

```markdown
- 开头策略: 偏好场景/故事切入，占 80% 以上。禁止以
  「在当今」「随着」等抽象背景开头。如以问句开头，
  必须是有趣/反常识的问题，而非设问式「你想过吗？」
```

---

### 1.8 结尾模式

#### 提取方法

取每篇文章的最后 2 句（或最后 50 字），分类标注。

```
K=5 分类体系:
- 戛然而止型: 信息传输完直接结束，无冗余表态
- 行动号召型(CTA): 「试试看」「关注我」「去买一个」
- 开放式: 「也许时间能给出答案」「你觉得呢？」
- 总结升华型: 「综上所述」「因此，我们要认识到……」
- 反问型: 以反问句结尾，留下思考空间
```

#### 示例对比

| 用户 | 结尾分布 | 类型判断 |
|------|---------|---------|
| 实用派写手 | 戛然而止 80%, CTA 20% | 讨厌啰嗦，信息给完就完 |
| 营销人 | CTA 50%, 反问型 30%, 开放型 20% | 追求读者互动 |
| 学生/学术新 | 总结升华 60%, 开放式 40% | 有总结强迫症（可能值得调教）|

**潜在『愿望—实际』矛盾**：用户有时候口头说自己喜欢「戛然而止」结尾，实际样本展示却有较多「总结升华」。这种时候——以样本为准，但标记矛盾供 Creator 后续确认。

#### 注入示例

```markdown
- 结尾: 偏好戛然而止（样本中 80% 无总结式结尾）。
  全文不得出现「总结」「综上所述」「总之」等结尾标识词。
  结尾句必须是全文中最后一句话提供的增量信息。
```

---

## 2. 样本质量评估

### 2.1 样本数量分级

| 等级 | 字数 | 可信度 | 对策 |
|------|------|--------|------|
| 🌟 完美 | ≥3000 字 ≥3 篇 | 高 (90%) | 8 维全量提取，所有维度置信度标记为「高」 |
| 👍 良好 | 1000-3000 字 ≥2 篇 | 中 (75%) | 8 维全量提取，词汇指纹 Top-10（非 Top-20），方差类指标标注「参考」 |
| ⚠️ 勉强 | 300-1000 字 | 低 (55%) | 只提取句长、语气颗粒度、开头/结尾模式，跳过方差和词汇 Top-20 |
| 🚫 不足 | <300 字 | 无法提取 | Creator 提示「样本太短，至少需要 300 字才能准确提取风格特征」 |

**多篇原则**: 如果用户只给一篇但字数充足（≥1500），可以提取，但在校准对话时标注「仅基于 1 篇样本，后续写作可进一步微调」。

### 2.2 样本多样性评估

除了字数，多样性同样重要。**三个检查维度**：

```
维度 A — 主题多样性：样本是否覆盖不同主题？
         ✅ 3 篇讲不同事 > ❌ 3 篇讲同一件事但不同角度
维度 B — 语态多样性：样本是否有叙述、议论、说明等不同句式？
         ✅ 有描述、有观点、有案例 > ❌ 全是个人感想
维度 C — 时长跨度：样本是否来自不同时期？
         ✅ 去年 + 今年 > ❌ 今年同一周写的
```

### 2.3 非标样本处理指南

| 样本类型 | 处理方式 | 警告 |
|---------|---------|------|
| 小说对白体 | 句长维度大幅失真，做 "去对白" 处理：只分析旁白和叙述部分 | 标注「含对白，句长偏低」 |
| 公文体（报告/公文） | 语气和句长几乎没个人风格，建议至少提供 1 篇非公文的个人写作 | 标注「文体受限，个人风格弱」 |
| 翻译体 | 原文可能有强烈的源语言痕迹，不宜直接当风格样本 | 建议要求用户提供中文原创 |
| 聊天记录 | 极短句、无结构、大量口语词，风格提取极度特殊 | 单独保存为「聊天风格档案」 |

---

## 3. 指纹校准对话协议

### 3.1 对话结构

Creator 完成 8 维提取后，**必须向用户展示指纹摘要并确认**。展示时遵循：

1. **先说结论，再列证据** — 先给用户一个整体的风格画像
2. **每维一句概括 + 一个具体例子** — 而不只是数据
3. **留 2 个反问缺口** — 让用户有空间调整

### 3.2 校准对话模板

```markdown
🧬 我已读完你的样本，以下是你的风格画像——

**整体印象**: [一句话概括，如「短句党，讲故事的高手，讨厌啰嗦结尾」]

**各维度速览**:
1. **句长**: 你平均每句 [X] 字，且 [Y]% 的句子不超过 15 字 —— 偏短句，利落
2. **连接词**: 你几乎不用「因此」「然而」这类书面连接词，跳跃自然的写法
3. **语气**: 正式度 [X/10]，幽默度 [Y/10] —— [如: 轻松但又不太闹腾]
4. **标点**: 你几乎不用 emoji，但喜欢用破折号和省略号 —— 有点文艺
5. **段落**: 段落长短不一，节奏感强，偶尔会扔个单句段
6. **词汇**: 你高频用「[词1]」「[词2]」「[词3]」—— 口语自然派
7. **开头**: 你 [X]% 的文章以故事/场景开头 —— 叙事驱动
8. **结尾**: [X]% 的文章戛然而止 —— 讨厌啰嗦

**请确认**:
- 以上哪个维度觉得不准？我可以调整 → [预留修改空间]
- 有没有你特别在意但我没抓到的风格特征？→ [补充缺口]

确认后，后续写作将自动注入这个风格指纹。
```

### 3.3 用户反馈后处理

| 用户反馈 | Creator 行动 |
|---------|-------------|
| 「挺准的，就这样」 | 确认 → 将指纹写入 MEMORY.md，标记「已校准」 |
| 「句长偏长/短了，我更倾向于……」 | 调整对应维度 → 再次出示摘要列 → 写入 |
| 「我觉得我不幽默啊」 | 幽默度下调 2 分 → 标注「用户自我认知 vs 文本分析偏差」→ 以用户确认为准 |
| 「我没样本里写的那么正式」 | 标记「情境约束：样本场景偏正式」→ 正式度下调 |
| 「有些不准，但我也说不上来哪里不对」 | 启动**无芯验证（见 7.3）**: 用当前指纹生成一段样文 → 用户评估 |

### 3.4 校准记录格式（MEMORY.md）

```markdown
### 校准历史
- 初始提取: 2026-05-18 → 句长 avg 12.3, 正式度 3, 开头故事型 60%
- 第一次校准: 2026-05-18 → 用户调低幽默度(7→5), 标点去掉了emoji约束
- 校准人确认: 用户签名「可以了」
- 当前状态: ✅ 已校准 (置信度: 80%)
```

---

## 4. Executor 双温注入技术细节

### 4.1 为什么高温不进行指纹对齐

**核心原因**: 风格对齐是一种「压制创意」的操作，与高温的目标完全矛盾。

| | 高温 (Temperature 0.7-0.8) | 低温 (Temperature 0.2-0.3) |
|---|---|---|
| **目标** | 内容丰富性、意外性、多样性 | 精确性、对齐度、规整度 |
| **指纹对齐** | ❌ 不执行 | ✅ 逐维对齐 |
| **逻辑** | 创意需要自由联想，对齐会扼杀 | 校准需要精控，对齐是核心任务 |
| **风险** | 对齐后内容趋同，两版没差异 | 不对齐则写作结果完全不像用户 |

**高温阶段的唯一约束**: 只受「写作规则」中与风格无关的部分约束（字数柔区、句式多样性、AI 痕迹轻度过滤）。风格指纹在高温阶段完全忽略。

### 4.2 低温阶段逐维对齐协议

低温阶段的 Executor prompt 注入格式（含在 Phase 3 任务中）：

```markdown
## 🧬 风格指纹——逐维对齐清单

执行校准顺序：句长 → 连接词 → 语气 → 标点 → 段落 → 词汇 → 开头 → 结尾

### [维度 1] 句长校准
- 目标 avg [X] 字
- 短句(≤15)占比 [Y]%
- 校准方法: 通读全文 → 标记每句字数 → 超长句拆分 / 过短句合并
- 通过标准: 统计结果在目标 ±15% 内

### [维度 2] 连接词校准
- 目标密度 [X] /千字
- 偏好类型: [口语/书面/跳接]
- 校准方法: 扫描 → 删除或替换超出的连接词 → 如果是跳接型则删除全部书面连接词
- 特别注意: 不要让删除连接词后的句子读起来不通顺——必要时用「所以/不过/其实」替代

### [维度 3] 语气校准
- 正式度 target [X/10]: 找出全文最正式/最随意的 3 个表达 → 拉向目标值
- 幽默度 target [Y/10]: 如果用户不幽默 → 删除「玩笑式自嘲」「夸张修辞」
- 攻击性 target [Z/10]: 如果用户低攻击性 → 替换所有强烈否定词为中性表述

### [维度 4] 标点校准
- emoji: 不超过 [X]/500字（可能为 0）
- 破折号: 不超过 [X]/500字
- 省略号: 不超过 [X]/500字
- 分号: [允许/禁止]

### [维度 5] 段落校准
- 目标段长方差 > [X]（或低方差稳定输出）
- 如果用户是高方差: 检查是否有相邻段落等长 → 合并或拆分调整
- 单句段: 如果用户偏好 → 确保全文有 ≥2 个单句段

### [维度 6] 词汇校准——核心对抗步骤
- 扫描全文 → 检查是否出现用户高频词（[Top-10 列表]）
- 禁用词汇扫描 → 全文搜索黑名单词，发现即替换
- 如果你自己的词汇指纹（Executor 自带）与用户冲突 → 强制覆盖为自己的输出习惯
- 三最检查：最长的三句话、最短的三句话、最学术的三个词是否需要调整

### [维度 7] 开头校准
- 如果原稿开头不是用户偏好的类型 → 重写开头
- 保留原稿的 info 骨架，但换用用户偏好的叙事包装

### [维度 8] 结尾校准
- 如果原稿结尾是「总结/升华」而用户偏好「戛然而止」→ 直接删掉最后一段
- 如果原稿结尾已经「戛然而止」而用户偏好「行动号召」→ 追加一句轻量 CTA
```

### 4.3 对齐失败检测

低温阶段对齐完成后，执行**后验检测**：

```python
def post_alignment_check(output: str, profile: dict) -> dict:
    checks = {}
    # 1. 句长校验
    stats = extract_sentence_stats(output)
    deviation = abs(stats["avg_len"] - profile["avg_len"]) / profile["avg_len"]
    checks["句长偏差"] = f"{deviation*100:.1f}%"  # 超过 20% 标记为失败

    # 2. 连接词密度
    conn_density = count_connectors(output) / len(output) * 1000
    checks["连接词密度"] = conn_density  # 超过 target+1 标记

    # 3. 词汇冲突检测
    forbidden_hits = [w for w in profile["forbidden"] if w in output]
    checks["禁用词命中"] = forbidden_hits  # >0 则标记

    # 4. 结尾检测
    last_50 = output[-50:]
    ending_keywords = ["综上所述","总之","因此","总而言之","展望未来","具有重要意义"]
    checks["结尾升华检测"] = any(kw in last_50 for kw in ending_keywords)

    return checks
```

如果任一检测项失败 → Creator 标记「校准失败，需要人工检查」→ 可将最新版本发回 Executor 做第 2 次低温校准（最多 1 次重试）。

---

## 5. 漂移追踪与更新

### 5.1 漂移类型

| 类型 | 原因 | 检测信号 | 对策 |
|------|------|---------|------|
| **自然漂移** | 作者文字风格随经历自然变化 | 连续 3 次写作「不像你」反馈 | 提示用户更新样本 |
| **情境漂移** | 不同写作场景导致风格变化（如写论文 vs 写朋友圈） | 按写作类型统计，某类型偏离基线 | 建立多档案（见第 6 节） |
| **临时偏转** | 单次写作受特定需求影响（如甲方要求正式） | 单次偏离但前后左右恢复 | 不触发漂移告警 |
| **退化漂移** | 样本太旧，当前风格已完全不同 | 用户反馈「我已经很久不这么写了」 | 强制要求新样本 |

### 5.2 漂移检测机制

每次写作执行后，Creator 做**渐进式漂移检测**（不扫描全量，只对比历史 + 增量）：

```markdown
## 📊 漂移检测报告 (增量)

类型标签: [博客文章]
对比区间: 最近 3 次写作 vs 克隆档案

| 维度 | 档案基值 | 最近 3 次均值 | 偏差 | 告警 |
|------|---------|--------------|------|------|
| 平均句长 | 12.3 | 15.1 | +22.7% | ⚠️ |
| 正式度 | 3 | 4.3 | +43% | ⚠️ |
| 连接词密度 | 1.2 | 2.8 | +133% | 🔴 |
| 开头类型 | 故事 60% | 观点 66% | 类型切换 | 🔴 |
| 结尾类型 | 戛然而止 70% | 总结 50% | 类型切换 | 🔴 |

🔴 红色标记: 偏差 >50% 或类型切换 → 触发漂移告警
⚠️ 黄色标记: 偏差 20-50% → 持续观察
```

### 5.3 漂移告警对话

当检测到🔴标记 ≥2 个时，Creator 发起漂移确认对话：

```
📈 我注意到你的写作风格近期有一些变化——

对比你的「克隆档案」和最近 3 次写作：
- 你的句子变长了（avg 12 ⟶ 15 字）
- 你开始用更多连接词了（原本几乎不用）
- 开头也更多以观点切入，而非故事

**这是有意为之吗？**
- ✅ 是我风格变了 → 更新克隆档案
- ❌ 不是，我还是原来的风格 → 我加强校准
- 🔄 只是最近在赶工/写特殊情况 → 不更新，后续观察

你选哪个？
```

### 5.4 样本更新协议

用户选择「更新」后：

```
Phase 0.5 (Style Clone Entry) 重放流程:
1. Creator 要求用户提供新的风格样本（≥500 字，最好 3 篇）
2. 提取新指纹
3. 出示旧 vs 新对比，标记变化维度
4. 确认后写入 MEMORY.md 旧档案降级为「历史档案」
5. 旧档案保留（可回滚），在 MEMORY.md 末尾追加:

### 历史档案
- 状态: 🗄️ 归档
- 创建: 2026-05-18 | 归档: 2026-07-02
- 摘要: 句长 12.3 / 正式度 3 / 故事开头 60% → 存档说明: 用户风格自然演变
```

---

## 6. 多档案管理

### 6.1 档案结构

用户可以为不同场景建立多个独立的风格克隆档案。MEMORY.md 中按以下结构组织：

```markdown
## 🧬 克隆档案总览

| 档案名 | 场景 | 样本来源 | 创建时间 | 最后使用 | 已写作次数 |
|--------|------|---------|---------|---------|-----------|
| default | 通用写作 | 3 篇博客 | 2026-05-18 | 2026-07-01 | 12 |
| work | 工作文档 | 5 篇周报/方案 | 2026-06-10 | 2026-06-28 | 4 |
| social | 朋友圈/社交媒体 | 10 条朋友圈 | 2026-06-15 | 2026-07-02 | 6 |
| academic | 论文/学术 | 2 篇课程论文 | 2026-06-20 | - | 1 |

---

## 🧬 档案: default (通用写作)

[8 维指纹完整数据]
[校准历史]
[漂移历史]
[写作次数统计]

---

## 🧬 档案: social (朋友圈/社交媒体)

[8 维指纹完整数据]
样本特点: 极短句(avg 6.2字)、emoji密集(8/500字)、高单句段占比(45%)
[校准历史]
[漂移历史]
[写作次数统计]
```

### 6.2 档案自动切换逻辑

当用户开启一次写作时，Creator 根据以下信号自动判断应使用哪个档案：

```
信号 1: 写作模板匹配 → 模板和档案名关联
   - 技术文档 → 查档案「work」
   - 社交媒体短文 → 查档案「social」
   - 毕业论文 → 查档案「academic」
   - 没有模板匹配 → 使用「default」

信号 2: 用户明确指定 → 覆盖自动判断
   - 「用朋友圈的风格写」→ 切到档案 social
   - 「用写周报的语气」→ 切到档案 work

信号 3: 无匹配 → fallback 到 default
   - 如果用户没有创建任何档案 → 提示创建
   - 如果写作类型无对应档案且无 default → 从零开始（无风格注入）

优先级: 信号 2 > 信号 1 > 信号 3
```

### 6.3 档案合并与分裂

**合并条件**：当两个档案在 ≥6 个维度上的差异 <15%，且用户确认「我觉得这两个差别不大」→ 自动合并：

```
合并前: work 和 default 几乎一致
合并后: 保留 default，work 标记为「default 别名: work」
        在 memo 中记录「work 档案于 YYYY-MM-DD 合并入 default」
```

**分裂条件**: default 使用过程中，用户某次说「这次用工作风格的，不要用我平时的语气」→ 分裂成两个，基于当前写作类型分入不同档案。

### 6.4 用户创建新档案的交互

```
👤 用户: 给我弄个工作用的风格档案
🧬 Creator: 好的。提供一些你平时写工作文档/周报/方案的文字吧
            最好 ≥3 篇，每篇 ≥300 字。如果没有现成的，你现在写一段也行。
（用户提供样本）
🧬 Creator: 提取完成！你的工作风格档案如下——
            [8 维摘要]
            和你的「default」档案相比，你的工作风格更正式（正式度 6 vs 3），
            句子更长（avg 22 vs 12），完全不用 emoji。
            准确吗？
👤 用户: 没错。
🧬 Creator: 已保存为档案「work」。后续写工作类内容会自动匹配这个风格。
```

---

## 7. 边界情况

### 7.1 样本太少（<300 字）

```
🧬 Creator: 样本只有 [N] 字，不够完整提取所有风格维度。
            目前能确认的是：[句长 avg X 字] + [语气轻度分析]。
            但更精细的维度（词汇指纹、段落节奏等）需要更多样本才能准确。

推荐方案:
1. 你再给 1-2 篇其他文章（推荐，更准）
2. 如果实在没有，我可以用已有信息做一个「弱克隆」
   ——写作时会标注「风格克隆置信度: 低」

选哪个？
```

**弱克隆策略**：只注入已确认的维度，其余维度由 Executor 自行决定，且不对齐。

```markdown
- 仅可确认的维度: 句长 avg 14.3, 正式度 5
- 未确认维度标注: 「⚠️ 样本不足未提取，由 Executor 自行判断」
- 全局标注: ⚠️ 本写作使用了弱克隆（仅 2/8 维对齐），如风格不匹配，提供更多样本后可优化
```

### 7.2 风格冲突（样本内部矛盾）

**检测**: 同一维度的值在不同样本之间差异过大。

**规则**:

```
冲突条件: 同一维度，不同样本的提取值差异 >50%
  例：样本 A 句长 avg 8.2，样本 B 句长 avg 24.5 → 句长冲突

处理策略:
1. 如果是「情境冲突」（A 写朋友圈，B 写周报）→ 分入不同档案
2. 如果是「时间冲突」（A 是 2025 年写的，B 是 2026 年写的）
   → 以时间最新的为准，旧样本降权
3. 如果是「无法解释的冲突」→ 询问用户:
   「样本（A）和样本（B）的风格差异很大。你是故意写了不同风格，
   还是其中一篇不太代表你的正常写法？」
```

### 7.3 用户不满意克隆效果

**三步诊断流程**：

```
第一步 — 诊断: 检查问题出在哪里
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
"不像我"
↓
Creator 拿出当前的指纹 → 对比输出文本 → 逐维检查
↓
- 如果是某个特定维度偏差大 → 局部修正
- 如果是 3+ 个维度偏差 → 无芯验证（见下方）
- 如果只是「感觉不对」但具体说不清 → 无芯验证 + 追问

第二步 — 无芯验证（Blind Validation）
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 从克隆档案生成一段 200-300 字的「样文」（无内容价值，只展示风格）
2. 让用户判断：「这像是你写的吗？」
3. 如果是 → 问题不在档案，在 Phase 2 规则（可能规则覆盖了风格注入）
4. 如果不是 → 问题在档案本身，校准

第三步 — 三种修复路径
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
A. 档案校准 → 「更像我了」
   - 用户提供更精确的样本
   - 手动调整冲突维度
   - 重新校准

B. 规则冲突修复 → 「像是规则压住了风格」
   - 检查 Phase 2 规则中是否有与风格冲突的约束
   - 例：规则说「正式度 8」但克隆档案「正式度 3」
   → Creator 询问：「本次写作的风格档案说你不正式（3/10），
     但写作规则要求正式（8/10），以哪个为准？」
   → 优先满足写作规则（本次需求），但标注「规则压制风格」

C. 放弃克隆 → 「这次不用我的风格」
   - 用户说「算了，就按平时 normal 的写」
   - 跳过指纹注入，走标准 Phase 1→5 流程
   - 但保留档案，不删除
```

### 7.4 克隆与配方共存

当用户同时启用风格克隆和历史配方时：

```
优先级: 风格克隆 > 配方 > 模板默认规则
解释:
- 风格指纹覆盖配方的语调/语气/词汇维度
- 配方的结构骨架（如 PAS 框架）仍然保留
- 如果配方的语调要求和风格冲突 → 以风格为主
例:
  配方推荐「商业文案 + 学术论文融合」(正式度 7)
  风格克隆档案「default」正式度 3
  → 结构用配方骨架，语气/词汇/句长用克隆档案
```

### 7.5 跨会话档案恢复

如果写作跨多个会话，新会话开始时 Creator 逐维恢复档案状态：

```
## 🧬 风格恢复检查点

- 当前激活档案: [档案名]
- 档案状态: ✅ 已校准 / ⚠️ 漂移告警
- 上一次写作注入设置:
  - 句长: avg 12.3 (已确认)
  - 正式度: 3 (已确认)
  ...
- 无芯验证结果: 上次写作结果已通过用户确认 ✅
- 本次是否继续使用: 是
- 默认: 沿用上一次的档案配置，除非用户指定新档案
```

---

## 附录 A：指纹提取质量记分卡

用于 Creator 判断本次克隆可信度：

| 评估项 | 高(1.0) | 中(0.6) | 低(0.3) |
|--------|--------|--------|--------|
| 样本字数 | ≥3000 | 1000-2999 | 300-999 |
| 样本篇数 | ≥3 | 2 | 1 |
| 主题多样性 | 3+ 不同主题 | 2 种主题 | 单一主题 |
| 校准确认 | 用户逐维确认 | 用户整体确认 | 用户没确认直接开始用 |
| 写作反馈一致性 | 连续 3+ 次「像你」 | 偶尔偏差 | 持续「不像你」 |

**整体置信度 = 各维度得分均值**

- ≥0.8: 高置信度，可直接注入
- 0.5-0.79: 中置信度，标注「弱克隆」
- <0.5: 低置信度，提示用户补充样本

---

## 附录 B：MEMORY.md 写入格式参考

克隆档案写入 MEMORY.md 的完整格式：

```markdown
## 🧬 克隆档案: [档案名]

### 基本信息
- 创建时间: YYYY-MM-DD HH:mm
- 场景描述: [适用场景说明]
- 样本来源: [N 篇文章，简述]
- 身份: [用户自定义名称]
- 被激活次数: [N]
- 最后校准: YYYY-MM-DD
- 当前状态: ✅ 已校准 / ⚠️ 漂移待确认 / 🗄️ 已归档

### 8 维指纹数据
| 维度 | 值 | 置信度 |
|------|----|--------|
| 句长分布 | avg [X], 方差 [Y], 短句占比 [Z]% | 高/中/低 |
| 连接词密度 | [X]/千字, 偏好 [类型] | 高/中/低 |
| 语气颗粒度 | 正式度 [X] 幽默度 [Y] 攻击性 [Z] | 高/中/低 |
| 标点偏好 | emoji [X]/500, 破折号 [Y], 省略号 [Z] | 高/中/低 |
| 段落节奏 | 方差 [X], 单句段占比 [Y]% | 高/中/低 |
| 词汇指纹 | Top-10: [词列表], 口头禅: [列表] | 高/中/低 |
| 开头模式 | [类型] [占比]%, [类型] [占比]% | 高/中/低 |
| 结尾模式 | [类型] [占比]%, [类型] [占比]% | 高/中/低 |

### 校准历史
- [日期]: 初始提取 — 来源: [样本描述]
- [日期]: [调整详情]

### 漂移历史
- [日期]: 无检测到漂移
- [日期]: [漂移检测结果 + 用户选择]

### 写作记录
| 日期 | 写作主题 | 匹配度 | 用户反馈 |
|------|---------|-------|---------|
| [日期] | [主题] | 高/中/低 | 满意/修正/不满意 |
```

---

> **版本记录**: v1.0 — 初始版本，随 writing-triadic v2.8 风格克隆引擎同步发布。  
> **关联文件**: 本指南与 [SKILL.md](../SKILL.md)「🧬 风格克隆引擎」节互补，与 [executor-prompt.md](executor-prompt.md)、「🧬 风格指纹对齐」协议联动。

---

## 附录 A: Executor 注入协议（已从 SKILL.md 移入）

在 Phase 3 Executor task 中追加风格指纹段:

```markdown
## 🧬 风格指纹对齐 (Style Fingerprint - 自动注入)

请对齐以下 8 维风格特征:
- 句长: 目标平均 12 字,80%句子 ≤15 字
- 连接词: 尽量不使用「因此/然而/此外」,用自然跳接
- 语气: 正式度 3/10,幽默度 7/10
- 标点: 不用 emoji,破折号 ≤1个/500字
- 段落: 段长方差高(长短参差),允许单句段
- 词汇: 可使用「说白了」「有意思的是」,禁用「值得注意的是」「综上所述」
- 开头: 偏好故事/场景切入
- 结尾: 戛然而止或反问,禁止总结升华

创意-校准双温分写约束:
- 第 1 遍(高温): 不刻意对齐指纹,自由释放内容
- 第 2 遍(低温): 逐维对齐以上 8 维指纹
```

## 附录 B: 风格克隆与 MEMORY.md（已从 SKILL.md 移入）

克隆档案独立存储,不与模板偏好混淆:

```markdown
## 🧬 克隆档案 (Style Clone Profile)

### 样本来源: 用户提供的 3 篇博客文章 (2026-05-18)
- 句长分布: 平均 12.3 字,短句(≤15)占比 78%
- 连接词密度: 1.2/千字(极低,跳接风格)
- 语气: 正式度 3,幽默度 7
- 标点: emoji 0,破折号 0.8/500字,省略号 2.1/500字
- 段落节奏: 方差高,单句段占 15%
- 词汇指纹: 「说白了」「有意思的是」「说白了就是」
- 热门开头: 故事(60%) > 场景(30%) > 观点(10%)
- 热门结尾: 戛然而止(70%) > 反问(20%) > 开放式(10%)

### 漂移历史
- 2026-05-20: 正式度从 3→4(技术文章增多)
- 2026-05-25: 幽默度从 7→5(学术写作任务影响)
```
