# 记忆管理员

> 逐章阅读历史章节，提取剧情信息，写入剧情数据库。 触发词：「同步剧情」「剧情同步」「同步记忆」。

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

---


# 记忆管理员

**剧情数据采集专家**：逐章阅读历史章节，提取剧情信息，写入剧情数据库。

## 核心原则

| 原则 | 说明 |
|------|------|
| 只记录事实 | 不做文学性描述、评价、猜测 |
| 篇章=事件 | 一个完整事件=一个篇章，通常3-15章 |
| 高效检索 | 索引优先，支持快速定位 |
| 只读原则 | published/ 只读，只向 data/memory/ 写入 |

---

## 🎯 层级定义

| 层级 | 定义 | 边界特征 | 示例 |
|------|------|----------|------|
| **分卷** | 大阶段 | 大目标切换、换地图 | 新手村→学院 |
| **篇章** | **一个完整事件** | 事件开始→事件结束 | 主角主动或被动做某件事 |

---

## 📖 篇章边界识别

### 事件开始信号

| 信号 | 示例 |
|------|------|
| 新目标确立 | 主角决定开始做某事 |
| 新冲突出现 | 反派向主角发起挑战 |
| 新机遇出现 | 主角遇到某个机会 |
| 新人物登场 | 某个重要角色登场 |

### 事件结束信号

| 信号 | 示例 |
|------|------|
| 目标达成/失败 | 成功或失败 |
| 冲突解决 | 击败反派 |
| 机遇结束 | 主角通过测试，获得奖励 |
| 阶段性成果 | 主角获得收获 |

### 识别流程

```
阅读章节时，判断：

1. 当前篇章是否有结束信号？
   → 是 → 结束当前篇章，创建新篇章
   
2. 是否有新事件开始（且无结束信号）？
   → 是 → 创建新篇章
   
3. 篇章是否超过15章？
   → 是 → 提醒"篇章过长，可能边界判断有误"
```

---

## When to Use

由主控触发。

**主控传入**：
- 章节范围：N-M
- 项目路径：`project_path`
- 分卷号：`volume`

## Workflow

1. 读取剧情模板（基础参考）

   > `{SKILL_DIR}/templates/篇章模板.md`
   > `{SKILL_DIR}/templates/世界状态模板.md`

2. 读取章节文件

   > `{project_path}/published/vol_{volume}/{N}.md ... {M}.md`

3. 更新 index.json（章节摘要、篇章映射、关键词索引、角色索引）

4. 更新世界状态 → `memory/世界状态.md`

5. 更新篇章文件 → `memory/episodes/{序号}-{篇章名}.md`

**输出**：

```
【剧情同步完成】
📊 已同步：第N-M章（共X章）
📖 篇章：更新X条、新建Y条
```

---

## 📁 数据结构

### 目录结构

```
data/memory/
├── index.json          # 总索引
├── 世界状态.md
└── episodes/           # 篇章文件（平铺，无已完结目录）
    ├── 001-系统激活篇.md
    ├── 002-荣耀值刷取篇.md
    ├── 003-功法合成篇.md
    └── ...
```

### index.json 结构

```json
{
  "syncedTo": 500,
  "lastSync": "日期",
  "totalEpisodes": 50,
  "novelType": "都市高武",
  
  "chapters": {
    "1": "系统激活，获得首批荣耀值160点",
    "2": "赵光明推销基因药剂，秦霄表面答应",
    "3": "转卖药剂得款，精神加点至1.96"
  },
  
  "episodeMap": {
    "1-3": "episodes/001-系统激活篇.md",
    "4-8": "episodes/002-荣耀值刷取篇.md",
    "9-15": "episodes/003-功法合成篇.md"
  },
  
  "keywordIndex": {
    "荣耀值": [1, 3, 5, 8, 10, 12, 15, 19, 23, 27, 30],
    "赵磊": [1, 9, 10, 20, 27, 30],
    "血肉大挪移": [20, 21, 22, 26, 27, 29]
  },
  
  "characterIndex": {
    "秦霄": "主角，见characters/profiles/秦霄.md",
    "林雅": [7, 21, 22, 23],
    "姜婉清": [24, 25]
  }
}
```

**字段说明**：

| 字段 | 用途 | 更新方式 |
|------|------|----------|
| `novelType` | 题材类型 | 首次识别时写入 |
| `mainlineIdentified` | 主线是否已识别 | 识别终极目标后设为true |
| chapters | 快速定位章节内容 | 每章更新，一行摘要 |
| episodeMap | 章节→篇章文件映射 | 篇章创建/结束时更新 |
| keywordIndex | 关键词→章节列表 | 每章提取关键词后更新 |
| characterIndex | 角色→相关章节 | 主角不记录章节，其他角色记录 |

---

## 提取规则

### 章节摘要（写入index.json）

- 一句话概括本章核心事件
- ≤50字
- 示例：`"系统激活，获得首批荣耀值160点"`

### 关键词提取

**提取对象**：
- 重要物品/功法/技能
- 重要角色名（非主角）
- 重要事件关键词

**不提取**：
- 通用词（说、想、看）
- 出现频率过高的词（每章都出现的不索引）

### 角色索引

- 主角：不记录章节（每章都有）
- 其他角色：记录出现的章节号

---

## 篇章文件格式

```markdown
# 系统激活篇

> 章节范围：1-3
> 核心事件：秦霄系统激活，验证系统可用

## 事件链
1. 实战课被赵磊暴打，系统激活，获得160荣耀值
2. 赵光明推销基因药剂，转卖获利39880元
3. 精神加点至1.96，验证加点功能有效

## 关键结果
- 系统可用，荣耀值机制验证
- 获得启动资金约4万元
```

**原则**：
- 事件链：只记录关键节点，≤10条
- 关键结果：篇章结束时的重要成果
- 总字数：≤500字

---

## 🔄 更新流程

### 同步一章

1. **更新章节摘要**：写入 `index.chapters[章节号]`
2. **提取关键词**：更新 `index.keywordIndex`
3. **提取角色**：更新 `index.characterIndex`
4. **判断篇章边界**：
   - 当前篇章结束 → 创建新篇章文件，更新 `episodeMap`
   - 继续当前篇章 → 追加事件链

### 篇章创建

```
1. 生成序号：当前篇章数+1，三位数字（001, 002...）
2. 创建文件：episodes/{序号}-{篇章名}.md
3. 更新 episodeMap：添加章节范围→文件映射
```

---

## 📁 文件大小控制

| 内容类型 | 限制 |
|----------|------|
| 篇章文件 | ≤500字 |
| 事件链 | ≤10条 |
| 章节摘要 | ≤50字 |
| 单个关键词索引 | ≤50个章节号 |

---

## 🚨 异常处理

| 异常情况 | 处理方式 |
|----------|----------|
| 章节文件不存在 | 汇报「章节缺失」，跳过该章 |
| 写入失败 | 汇报错误详情，不中断整体流程 |
| 篇章超过15章 | 提醒"篇章过长，可能边界判断有误" |

