# 核心角色当前快照反推规则（长篇导入）

> 仅用于 `story-import` 导入长篇。输出不是一份不断追加的角色历史，而是初始化事务里的 `character_snapshots`；`tracking_commit.py init` 会为每个核心角色生成 `追踪/角色状态/{角色名}.md`。

## 一、输入来源

只从已经落盘的拆书产物反推，不重读 `原文/`：

| 输入 | 用途 |
|---|---|
| `拆文库/{书名}/角色/{角色名}.md` | 身份、能力、目标、成长弧线、出场记录 |
| `拆文库/{书名}/角色/角色关系.md` | 截至最后完整章的关键关系 |
| `拆文库/{书名}/章节/第N章_摘要.md` | 最后位置、最新状态、已知信息与未结事项 |
| `拆文库/{书名}/剧情/*.md` | 阵营/身份转折、阶段目标和长期冲突 |
| 初始化事务中的伏笔与时间线候选 | 核对角色未结事项及其可知范围 |

## 二、追踪对象

只为主角、反派、核心配角建立独立快照。临时路人和只承担一次功能的角色不建文件。边界不清时优先不建，后续角色真正进入复用状态时再由逐章事务创建。

## 三、反推方法

对每个核心角色，以最后完整导入章 N 为截面，分别确定：

1. `identity`：截至 N 章实际成立的身份/职业，不写未来晋升计划。
2. `location`：最后落点或下一章开始前可确定的位置。
3. `goal`：角色当前正在追求的具体目标。
4. `state`：身体、情绪、名望、立场中会影响续写的当前状态；只写必要信息。
5. `abilities_resources`：当前确实掌握的能力、物品、权限、作品或人脉，最多 8 条。
6. `relationships`：与后续会复用角色的当前关系，最多 8 条。
7. `knowledge`：角色本人已经知道、且会影响其行为的信息，最多 8 条。作者真相不能误写成角色已知。
8. `open_threads`：角色相关的未结事项，最多 8 条；必须有已写正文证据，纯未来设计留在大纲。

若同一字段有多次变化，只取截至 N 章的当前值，不把变化史塞进快照。历史变化由后续 `逐章记录/第NNN章.md` 承担；导入旧章不补造这些记录。

## 四、初始化 JSON 形状

以下示例来自 demo《让你管账号，你高燃混剪炸全网》第 10 章：

```json
{
  "江晨": {
    "identity": "火箭军文工团宣传兵；军宣爆款创作者",
    "location": "火箭军文工团高层看片会",
    "goal": "完成五天百万粉任务，继续做出真正能打的军宣内容",
    "state": "专业团队重拍版反向坐实手机原版的价值，军内认可继续抬升",
    "abilities_resources": [
      "前世 MCN 爆款运营经验",
      "《中国军魂》伴奏",
      "大师级导演能力"
    ],
    "relationships": [
      "钟嘉嘉持续提供军报资源",
      "周薄森和张耀祖已明确认可其创作能力"
    ],
    "knowledge": [
      "《军报》采访稿已经过审",
      "高层决定继续采用《诸君，且听龙吟》手机原版"
    ],
    "open_threads": [
      "五天百万粉任务尚未结算",
      "钟嘉嘉所谓只猜对一半仍未解释"
    ]
  }
}
```

工具据此生成的文件固定包含：截至章节、身份、位置、当前目标、身心状态、能力与资源、关键关系、已知信息、未结事项。模型不得另写一套 Markdown 模板。

## 五、残稿与分批导入

- 最后一章是残稿：所有快照截至残稿之前的最后完整章；残稿中的动作、获得物、关系变化不得提前生效。
- 分批导入：快照只表示本次已导入范围的当前状态；扩大导入范围时重新执行一次完整导入，不在旧快照上追加历史段落。

## 六、质量检查

- [ ] 每个文件对应一个核心角色，无功能角色堆积
- [ ] 所有字段都是截至最后完整章的当前值
- [ ] 角色已知信息没有混入作者真相
- [ ] 未结事项都有正文证据，未来设计仍在大纲
- [ ] 单角色快照目标不超过 4096 字节；确有必要可放宽，但不得超过 8192 字节硬上限
- [ ] `tracking_commit.py check` 通过
