写作与公文
多层级小说一致性同步:当某一抽象层级变更后需要传播到其他层级…
用于虚构写作项目,在 pitch、structure、scenes、entities、manuscript 等抽象层级之间做变更传播、一致性检查和冲突消解。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
多层级小说一致性同步:当某一抽象层级变更特定
解决思路
- 把每个故事元素同时映射到多个抽象层级;任一层变更后,更新其他层或将它们标记为可能不同步。
- 按 L1-L5 组织项目:L1 Pitch 放在 `pitch/`,产物为 `tagline.md`、`logline.md`、`synopsis.md`,粒度是故事本质。
- 按 L1-L5 组织项目:L2 Structure 放在 `structure/`,产物为 `outline.md`、`beats.md`、`act-*.md`,粒度是故事骨架。
- 按 L1-L5 组织项目:L3 Scenes 放在 `scenes/`,产物为 `scene-*.md`、`chapter-*.md`,粒度是故事节奏。
- 按 L1-L5 组织项目:L4 Entities 放在 `entities/`,产物为 `characters/`、`locations/`、`items/`、`timeline.md`,粒度是故事元素。
- 按 L1-L5 组织项目:L5 Manuscript 放在 `manuscript/`,产物为 `chapter-*.md` 的实际正文,粒度是故事表面。
- 使用“笨记录器 + 智能 LLM”架构:让文件监视守护进程只记录哪些文件何时改变,不做语义理解。
- 被调用时,读取自上次审查以来的变更日志。
- 被调用时,读取发生变更的文件当前内容。
- 被调用时,查找相关文件:通过 wiki-links、目录结构、显式引用。
- 被调用时,使用叙事理解识别当前不一致之处。
- 被调用时,向作者提出解决方案,供作者批准。
- 若不存在 `./story-state/`,视为 Z1,运行 `deno run --allow-read --allow-write scripts/init.ts` 创建 `story-state/`。
- Z1:按层级盘点现有文件。
- Z1:启动 watcher 守护进程。
- Z1:建立基线,当前所有内容按定义视为“同步”。
- Z2:查看变更日志,识别变更范围。
- Z2:读取已工作层级的文件,理解演化内容。
- Z2:与其他层级比较,寻找漂移。
- Z2:创建潜在不一致的优先级列表。
- Z2:从最关键的开始处理,通常先 L2 结构,再 L4 实体。
- Z3:明确识别根变更。
- Z3:按影响对受影响文件分级:BLOCKING 必须继续前更新,通常是结构元素;HIGH 应尽快更新,通常是角色一致性;DEFERRABLE 可等待,通常是正文润色。
- Z3:创建带顺序的传播计划。
- Z3:一次只处理一个层级,不要同时处理全部。
- Z3:在进入下一层前标记每个已解决项。
- Z4:显式映射冲突,例如 A 需要 B,B 需要非 A。
- Z4:判断这是真实故事问题还是感知问题。
- Z4:寻找造成死锁的隐藏假设。
- Z4:通常在比冲突出现处更高的层级解决。
- Z4:必要时升级到 story-sense 做结构诊断。
- Z5:对所有层级做全面审计。
- Z5:重读 pitch 层级文档,检查 synopsis 是否仍匹配实际故事。
- Z5:对照实体定义与其在场景中的出现。
- Z5:寻找从未被记录下来的隐式假设。
- Z5:用当前理解更新 `state.md`。
- Z6:决定刷新还是放弃追踪。
- Z6:若刷新,按 Z1 处理,从当前状态重新初始化。
- Z6:若放弃,归档 `story-state/`,在没有追踪的情况下工作。
- Z6:解决导致放弃的工作流摩擦。
- 诊断过程第1步:检查是否存在 `./story-state/`;若没有,提供初始化。
- 诊断过程第2步:读取 `./story-state/change-log.jsonl`;从 `./story-state/last-review.json` 获取 last-review 时间戳;筛选出自上次审查以来的变更。
- 诊断过程第3步:评估变更范围;若无变更,说明“未检测到变更。故事状态似乎是当前的。”;若仅一个目录变更,可能是 Z2;若多目录大量变更,可能是 Z3 或 Z5。
- 诊断过程第4步:对每个变更文件读取当前内容。
- 诊断过程第5步:对每个变更文件提取 wiki-links `[[entity-name]]`,检查同目录兄弟文件,检查相邻层级文件,例如 L2 structure 与 L3 scenes。
- 诊断过程第6步:分析不一致:角色属性与行为不匹配;大纲情节点未出现在场景;实体细节与正文描述矛盾;时间线不一致;主题偏离 pitch 文档。
- 诊断过程第7步:按严重程度报告发现:Conflicts 直接矛盾需解决;Drift 潜在不一致值得检查;Updates 建议的传播。
- 诊断过程第8步:作者审查后,用当前时间戳更新 `last-review.json`;用当前状态更新 `state.md` 仪表盘。
- 分析 L1 Pitch 变更时:检查 logline 是否仍抓住正在写的故事;主角核心冲突是否转移;类型承诺是否仍被兑现。
- 分析 L2 Structure 变更时:检查场景文件是否仍对齐大纲节拍;幕断点是否移动;中点是否仍是中点。
- 分析 L3 Scenes 变更时:检查场景是否仍完成其大纲目的;角色行为是否偏离定义;时间线是否仍成立。
- 分析 L4 Entities 变更时:检查角色属性是否与场景一致;地点细节是否与正文描述匹配;关系是否改变。
- 分析 L5 Manuscript 变更时:检查正文是否反映当前实体定义;对话是否匹配角色声音定义;描述的场景是否与地点实体一致。
- 使用 wiki-links 约定:文件用 `[[entity-name]]` 引用实体。
- wiki-link 示例:`[[marcus]]` 链接到 `entities/characters/marcus.md`;`[[the-apartment]]` 链接到 `entities/locations/the-apartment.md`;`[[act-2]]` 链接到 `structure/act-2.md`。
- 看到 wiki-link 时,把链接文件视为语义相关;一个变更可能需要审查另一个。
- 使用 frontmatter 约定声明显式层级和绑定,例如 `level: L4`、`entity: character/marcus`、`binds_to:` 下列出 `- L1.logline.protagonist`、`- L2.dark_moment.experiences`、`- L3.scene_47.speaker`。
- 如果 frontmatter 存在,使用它;如果不存在,从 wiki-links 和目录结构推断关系。
- 工具 `watcher.ts`:在后台运行以记录变更。启动命令:`deno run --allow-read --allow-write scripts/watcher.ts ./story-project`。
- 工具 `watcher.ts`:自定义日志位置命令:`deno run --allow-read --allow-write scripts/watcher.ts ./story-project --log ./custom/change-log.jsonl`。
- 工具 `init.ts`:为项目初始化 story-state 目录。当前目录命令:`deno run --allow-read --allow-write scripts/init.ts`。
- 工具 `init.ts`:指定项目命令:`deno run --allow-read --allow-write scripts/init.ts ./story-project`。
- 工具 `status.ts`:显示当前变更日志摘要。自上次审查以来命令:`deno run --allow-read scripts/status.ts ./story-project`。
- 工具 `status.ts`:显示全部变更命令:`deno run --allow-read scripts/status.ts ./story-project --all`。
- 工具 `status.ts`:JSON 输出命令:`deno run --allow-read scripts/status.ts ./story-project --json`。
- 持久化:维护 `story-state/` 目录,包含 `state.md`、`change-log.jsonl`、`last-review.json`、`concerns/`。
- 使用 `init.ts` 创建 story-state 结构;使用 `watcher.ts` 记录文件变更;使用 `status.ts` 生成当前状态仪表盘。
- 将状态仪表盘更新、变更日志条目、关注点跟踪、审查时间戳写入文件;将漂移讨论、解决方案建议、传播分析、逐层审查保留在对话中。
- 更新 `story-state/state.md` 时使用模板:项目名、Last Review 时间戳、Health Green/Yellow/Red、Level Summary 表,包含 L1-L5 的 Files/Status/Notes、Active Concerns、Recent Resolutions。
- 变更日志格式:`change-log.jsonl` 条目类似 `{"file": "entities/characters/marcus.md", "time": "2025-01-15T10:23:45Z", "kind": "modify"}`;审查时读取 `last-review.json` 时间戳之后的条目。
- 与其他技能集成:当 story-sense 诊断结构问题,尤其是 States 4-5 时,用 story-zoom 定位跨层不一致具体发生处。
- 与其他技能集成:当 story-zoom 发现看似根本的冲突,不只是文档漂移时,升级到 story-sense 做更深诊断。
- 与其他技能集成:来自 character-arc 的角色 lie/want/need 变更应触发 story-zoom 审查;这些会传播到角色出现的场景。
- 与其他技能集成:来自 scene-sequencing 的场景目标变更应触发 story-zoom 审查;场景目的连接结构。
- 与其他技能集成:在开始修订 pass 前,运行 story-zoom 审计;确保结构稳固后再打磨正文。
- 只呈现解决方案选项,不替作者决定哪个解决方案“正确”。
- 只聚焦结构/语义元素,不追踪琐碎变更;如果追踪没有帮助,就停止追踪。
- 不要求完美,草稿中一些不一致是正常的;不取代作者对自己故事的判断。
适用边界 · 注意事项
- 不适用于非小说或没有多抽象层级文件结构的项目。
- 不适用于 L2 结构尚未稳定、或不愿持续维护 `story-state/` 的项目,否则会提前追踪或产生陈旧圣经。
- 不适用于把文体和措辞的自然变化当冲突、或需要追踪每个词差异的场景。