# Enrich

> 升级当前 wiki 页面质量一档（stub→basic→standard→featured→premium）。诊断页面当前指标缺口，执行对应补充操作（扩写散文、补充引用、加节）。当用户说 /enrich PAGE 或 /enrich PAGE 目标档 时触发。

- Skill: `orangeviolin/enrich` (Agent Skill)
- Install (CLI): `npx skillmds@latest add orangeviolin/enrich`
- Raw SKILL.md: https://api.skillmd.com/api/skills/orangeviolin/enrich/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: OrangeViolin (https://skillmd.com/u/orangeviolin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/orangeviolin/enrich

---


# /enrich — 页面质量升级

## 用法

```
/enrich PAGE              → 升一档（当前质量 → 下一档）
/enrich PAGE standard     → 升至 standard
/enrich PAGE featured     → 升至 featured
```

## ⚠️ 散文质量强制规范

所有内容生成操作必须遵守 `ref/散文质量强制规范.md`：
- **禁令一**：每段 prose 最多使用 **1 个 `——`**
- **禁令二**：每段 prose 不得超过 **200 字**

违反上述禁令会被 `edit_page.py` 代码级硬拦截（退出码 7/8），不可绕过。

## 质量档位门槛

| 档位 | 散文字数 | h2 节 | PN 引注 | blockquote | wikilink | 图/公式 |
|------|---------|-------|---------|-----------|---------|---------|
| **stub** | < 100 | 0 | 0 | 0 | 任意 | 否 |
| **basic** | 100–299 | ≥ 1 | ≤ 1 | 0 | 任意 | 否 |
| **standard** | ≥ 300 | ≥ 2 | ≥ 2 | 0 | ≥ 3 | 否 |
| **featured** | ≥ 600 | ≥ 3 | ≥ 5 | ≥ 1 | ≥ 5 | 否 |
| **premium** | ≥ 1200 | ≥ 5 | ≥ 10 | ≥ 3 | ≥ 10 | 是 |

指标定义：
- **散文**：≥ 50 字、非列表/标题/表格的段落总字数
- **h2 节**：正文 `## ` 数量
- **PN 引注**：带段落编号的原文引用条数
- **blockquote**：来自 corpus_search.py 的 `>` 格式原文引用段数
- **图/公式**：frontmatter `image:` 字段或正文含 KaTeX `$...$`

## 执行步骤

### 第一步：诊断

读页面，统计：节数、散文字数、wikilink数、原文引用段数。与目标档门槛对比，列出缺口。

### 第二步：确定目标档

- 若用户未指定 → 当前档 +1
- 若已是 featured → 检查是否可升 premium

### 第三步：按缺口执行

| 缺口 | 操作 |
|------|------|
| **节不足** | 按页面 type 添加标准节（见下方模板） |
| **散文不足** | 扩写叙述性内容（历史背景、技术细节、影响） |
| **原文引用不足** | 运行 corpus_search.py 查找相关段落，以 blockquote 引用 |
| **wikilink不足** | 为人名/系统/概念添加 [[wikilink]] |
| **相关插图** | 检查是否已有 `:::image` 块或 frontmatter `image:` 字段；若无，按 PN 邻近从 images.json 查候选并嵌入（见下方插图步骤） |

**操作优先级**：先补原文引用（素材来源） → 再写散文 → 最后加节 → 检查插图。

### 插图检查与嵌入（images.json 不存在时跳过）

```bash
# 检查页面是否已有图片
grep -E ":::image|^image:" <页面文件> && echo "已有图片" || echo "无图片"

# 若无图片，且 images.json 存在，按页面关键 PN 查候选图片（最多 3 张）
python3 -c "
import json, os, sys
f = 'docs/wiki/images.json'
if not os.path.exists(f): sys.exit(0)
pn = '$PN'   # 页面最相关 PN，从 PN 引注中取第一个
imgs = json.load(open(f))
hits = [i for i in imgs if str(i.get('pn','')) == pn or str(i.get('chapter','')) == str(int(pn.split('.')[0]))][:3]
for img in hits:
    print(img.get('path',''), img.get('caption',''))
" 2>/dev/null
```

嵌入格式（路径使用 `images/` 前缀，RFC-memex-0044）：

```
:::image
src: images/<文件名>
alt: <图片说明>
:::
```

约束：每词条 1–3 张；只引用 `docs/wiki/images/` 已有文件；无 images.json 或目录为空时自动跳过。

### 原文引用格式与全文依据规则

**铁律：每句有据**。enrich 扩写的每一句话都必须有原文依据：

1. 先运行 `corpus_search.py` 收集相关段落
2. 扩写时，每个断言都必须标注其来源 PN
3. 允许对原文进行转述和拼接，但**不得添加原文没有的信息**
4. **逐句验证**：写完后，每个句子都能 traced back 到 corpus 中的某个位置

引用方式：
- **原文引用**：使用 blockquote + `（PN）`
- **转述/拼接**：使用 `（PN）` 标注来源
- **通用知识**（如"马铃薯是块茎作物"）：不加 PN，但必须是原文明确提到的内容

```bash
python3 wiki/scripts/butler/corpus_search.py "关键词" --max 5
```

**禁止捏造**：引用内容必须从 corpus_search.py 结果中复制，不得自行编写"原文"。

### 第四步：写入

通过 `edit_page.py --enrich` 写入修改（Append-Only 原则）：

```bash
cat <<'CONTENT' | python3 wiki/scripts/edit_page.py SLUG - --summary "enrich: stub→basic" --author enrich --enrich
[完整页面内容]
CONTENT
```

### 第五步：验证

确认 quality 已升至目标档。若未达到，检查哪个指标仍不足，继续补。

## 各类型标准节模板

### person（人物）
- `## 生平` — 出生/教育/职业经历
- `## 主要贡献` — 对AI发展的核心贡献
- `## 代表作品` — 重要论文/著作/系统
- `## 历史评价` — 同时代和后世的评价
- `## 相关人物` — 师承/合作/竞争关系

### concept（概念/技术）
- `## 背景与起源` — 提出的历史背景
- `## 核心思想` — 基本原理
- `## 发展历程` — 重要节点
- `## 代表成果` — 关键系统/论文/人物
- `## 影响与局限` — 对AI发展的影响和不足

### event（事件）
- `## 背景` — 时代背景
- `## 经过` — 事件详情
- `## 参与者` — 主要人物
- `## 影响与意义` — 历史意义

### system（系统/程序）
- `## 概述` — 是什么
- `## 开发背景` — 为何开发
- `## 技术原理` — 核心技术
- `## 历史影响` — 对AI发展的意义

### theory（理论）
- `## 基本内容` — 核心论点
- `## 提出背景` — 历史语境
- `## 技术实现` — 如何应用
- `## 批评与争议` — 反对意见

## 写作文风禁令

**❌ 严禁万能破折号链式文风。** 典型违规模式：

> X 是一种重要技术——它能够处理大规模数据——同时保持高效运算——并在多个领域广泛应用——对AI发展产生了深远影响。

这种"A——B——C——D"的无限串联是最常见的 AI 生成腔，必须消灭。

**修改方法**：
- 每个子句独立成句，用句号断开
- 因果/转折用"因此"、"然而"、"但"等连词
- 并列用逗号或分号，不用破折号
- `——` 只在修辞性插入和真正的语气转折时使用

## 禁止事项

- ❌ 禁止删除或替换已有章节（Append-Only）
- ❌ 禁止捏造原文引用
- ❌ **禁止编写无原文依据的断言**——每一句正文都必须能追溯到 corpus_search.py 的命中结果
- ❌ 禁止 git commit
- ❌ 禁止万能破折号链式文风（见上方"写作文风禁令"）

