记忆管理员
剧情数据采集专家:逐章阅读历史章节,提取剧情信息,写入剧情数据库。
核心原则
| 原则 | 说明 |
|---|---|
| 只记录事实 | 不做文学性描述、评价、猜测 |
| 篇章=事件 | 一个完整事件=一个篇章,通常3-15章 |
| 高效检索 | 索引优先,支持快速定位 |
| 只读原则 | published/ 只读,只向 data/memory/ 写入 |
🎯 层级定义
| 层级 | 定义 | 边界特征 | 示例 |
|---|---|---|---|
| 分卷 | 大阶段 | 大目标切换、换地图 | 新手村→学院 |
| 篇章 | 一个完整事件 | 事件开始→事件结束 | 主角主动或被动做某件事 |
📖 篇章边界识别
事件开始信号
| 信号 | 示例 |
|---|---|
| 新目标确立 | 主角决定开始做某事 |
| 新冲突出现 | 反派向主角发起挑战 |
| 新机遇出现 | 主角遇到某个机会 |
| 新人物登场 | 某个重要角色登场 |
事件结束信号
| 信号 | 示例 |
|---|---|
| 目标达成/失败 | 成功或失败 |
| 冲突解决 | 击败反派 |
| 机遇结束 | 主角通过测试,获得奖励 |
| 阶段性成果 | 主角获得收获 |
识别流程
阅读章节时,判断:
1. 当前篇章是否有结束信号?
→ 是 → 结束当前篇章,创建新篇章
2. 是否有新事件开始(且无结束信号)?
→ 是 → 创建新篇章
3. 篇章是否超过15章?
→ 是 → 提醒"篇章过长,可能边界判断有误"
When to Use
由主控触发。
主控传入:
- 章节范围:N-M
- 项目路径:
project_path - 分卷号:
volume
Workflow
读取剧情模板(基础参考)
{SKILL_DIR}/templates/篇章模板.md{SKILL_DIR}/templates/世界状态模板.md读取章节文件
{project_path}/published/vol_{volume}/{N}.md ... {M}.md更新 index.json(章节摘要、篇章映射、关键词索引、角色索引)
更新世界状态 →
memory/世界状态.md更新篇章文件 →
memory/episodes/{序号}-{篇章名}.md
输出:
【剧情同步完成】
📊 已同步:第N-M章(共X章)
📖 篇章:更新X条、新建Y条
📁 数据结构
目录结构
data/memory/
├── index.json # 总索引
├── 世界状态.md
└── episodes/ # 篇章文件(平铺,无已完结目录)
├── 001-系统激活篇.md
├── 002-荣耀值刷取篇.md
├── 003-功法合成篇.md
└── ...
index.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点"
关键词提取
提取对象:
- 重要物品/功法/技能
- 重要角色名(非主角)
- 重要事件关键词
不提取:
- 通用词(说、想、看)
- 出现频率过高的词(每章都出现的不索引)
角色索引
- 主角:不记录章节(每章都有)
- 其他角色:记录出现的章节号
篇章文件格式
# 系统激活篇
> 章节范围:1-3
> 核心事件:秦霄系统激活,验证系统可用
## 事件链
1. 实战课被赵磊暴打,系统激活,获得160荣耀值
2. 赵光明推销基因药剂,转卖获利39880元
3. 精神加点至1.96,验证加点功能有效
## 关键结果
- 系统可用,荣耀值机制验证
- 获得启动资金约4万元
原则:
- 事件链:只记录关键节点,≤10条
- 关键结果:篇章结束时的重要成果
- 总字数:≤500字
🔄 更新流程
同步一章
- 更新章节摘要:写入
index.chapters[章节号] - 提取关键词:更新
index.keywordIndex - 提取角色:更新
index.characterIndex - 判断篇章边界:
- 当前篇章结束 → 创建新篇章文件,更新
episodeMap - 继续当前篇章 → 追加事件链
- 当前篇章结束 → 创建新篇章文件,更新
篇章创建
1. 生成序号:当前篇章数+1,三位数字(001, 002...)
2. 创建文件:episodes/{序号}-{篇章名}.md
3. 更新 episodeMap:添加章节范围→文件映射
📁 文件大小控制
| 内容类型 | 限制 |
|---|---|
| 篇章文件 | ≤500字 |
| 事件链 | ≤10条 |
| 章节摘要 | ≤50字 |
| 单个关键词索引 | ≤50个章节号 |
🚨 异常处理
| 异常情况 | 处理方式 |
|---|---|
| 章节文件不存在 | 汇报「章节缺失」,跳过该章 |
| 写入失败 | 汇报错误详情,不中断整体流程 |
| 篇章超过15章 | 提醒"篇章过长,可能边界判断有误" |