小说时间线约束核对
将不超过 20 个场景或 100 条事件整理为可追溯的故事时间约束。只核对事件时间,不评价质量、不续写,也不重新规划全书。
输入
提供 JSON 对象,含 events 数组;每项提供 id 和 chapter 或 scene。time 可为 HH:MM(24 小时制)、YYYY-MM-DD HH:MM[:SS],或相对对象 {"after":"E1","minutes":30};相对时间对象显式表示相对所指事件的分钟数。可提供 after、travel_minutes、from、to、age、character_id 与 flashback: true。同日年龄只在同一角色 ID 的事件之间比较;年龄事件缺少角色 ID 时不推断为同一人。行程只需在后续事件提供 after 与非负 travel_minutes;地点字段可补充语义,但不要求 kind、trip_id 或其他隐藏字段。同一出行仅在到达时间早于出发时间时按跨午夜计算;相同时间不能解释为次日。普通 after 必须严格晚于所指事件。作者明确标记的闪回保留其叙事位置,另列入故事时间排序。
没有时间依据或事件先后依据时,写入 missing_basis;不要从章节号推断日期。超过上限时,请作者指定本次核对的场景范围。
方法
- 抽取每一事件的原始时间证据和来源场景;区分明确时间、相对时间与未定。
- 按可比较的故事时间排列,保留闪回标记;不把章节顺序当作时间。
- 对输入顺序中相邻且未标闪回、也没有显式
after依赖的可比较事件核对倒序;按同一角色 ID 核对同日年龄变化,并核对行程所需时间。冲突须给出涉及事件与算式。 - 为每项冲突给出最小修订选项,指出至少一个必须核对或更正的明确时刻;只有来源支持时才更正行程时长。补充一段时间跳转说明不能改变两个明确时刻之间实际只有多少分钟;不替作者选择剧情。
输出格式
## 故事时间表
|故事时间|事件|章节/场景|依据|状态|
|---|---|---|---|---|
## 冲突
- `E1 → E2`:所给间隔 30 分钟,行程至少 120 分钟;缺少至少 90 分钟。
## 最小修订选项
- 核对并更正 E1 或 E2 的明确时刻;若行程时长有来源,再据来源更正所需分钟。仅补时间跳转说明不能消除明确时刻间只有 30 分钟的事实。
## 缺项与未定
- `E3`:没有日期、相对时间或顺序依据,故事时间为“未定”。
可运行的最小审计器:python3 scripts/audit_timeline.py fixtures/success-input.json。它输出结构化证据,供人工在 Markdown 交付中引用;输入最多 20 个不同场景且总计最多 100 条事件。事件的 after 顺序约束会独立核对,即使输入数组顺序不同;行程仅依据公开字段 after 与 travel_minutes 判断,from、to 可选,不要求额外类型或行程 ID。HH:MM 与绝对日期时间混用时不能合并成一条时间轴,相关事件标为未定。结构化日期与跨午夜行程可比较;年龄与多段行程仍应保留原始依据并人工复核。
