人物知情状态账本
把长篇故事里“谁在什么时候知道什么”做成可审计账本。它只追踪信息传播,不评判叙事视角风格,也不规划伏笔回收。
输入
按故事顺序给出最多 20 个场景、30 项事实和 10 名人物。每条证据必须包含人物、事实编号、证据类型和原文:
{
"scenes": [{
"id": "S3",
"evidence": [{"character":"乙","fact":"F-密钥","type":"told","quote":"甲说:密钥在钟楼。"}]
}]
}
type 为 experienced(亲历)、told(被告知)、inferred(推测)或 used(使用)。读者得知的内容不是人物证据。
可选的 reader_context 仅用于记录读者何时读到事实,不进入人物矩阵,也不能替代人物证据。提前使用的原文必须能看出使用了哪项事实;仅出现同一物件或行为不足以证明人物使用了该事实。
结果
输出每位人物对每项事实的状态:确信、猜测 或 未知,并列出首次得知场景和原文依据;另单列人物在尚无亲历、告知或推测依据前使用该事实的位置,供核对连续性。
亲历或告知标为 确信,只有推测证据标为 猜测,没有人物亲历、告知或推测证据的单元格标为 未知。同一场景内证据数组不是时间线,因此不依据数组先后判断提前使用;只比较场景顺序。每条证据必须含非空 quote;缺少故事顺序、事实清单或全部证据时,先请求补充,不生成矩阵。
可运行校验
node scripts/self-test.mjs
node scripts/ledger.mjs < fixtures/success-input.json
前者真实执行成功与失败输入;后者生成 JSON 账本。可复制的交付参考见 成功输入、成功输出 和 失败交付。